
    .ic9                       d dl mZ d dlZd dlZd dlZd dlmZ d dlZ	d dl
mZ d dlmZ d dlmZmZmZmZ ej(                  d        Zej(                  d        Zej(                  d        Zej(                  d	        Zej(                  d
        Zej(                  d        Zej(                  d        Zej(                  d        Z G d dej:                        Zd Zd Z d Z!d Z"d Z# G d de      Z$ G d de$      Z%e%jM                          d Z'ejP                  jS                  ddg dg dfdg dg d fg      d!        Z*d" Z+d# Z,d$ Z-d% Z.d& Z/d' Z0d( Z1d) Z2d* Z3d+ Z4y),    )annotationsN)Pandas4Warning)base)DecimalArrayDecimalDtype	make_data
to_decimalc                     t               S N)r        i/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/extension/decimal/test_decimal.pydtyper      s
    >r   c                 *    t        t        d            S )N
   )r   r   r   r   r   datar      s    	"&&r   c                 v    t        t        d      D  cg c]  } t        j                  d       c}       S c c} w )Nr      )r   rangedecimalDecimal)_s    r   data_for_twosr      s(    U2Y?+?@@?s   6c                 h    t        t        j                  d      t        j                  d      g      S )NNaN   r   r   r   r   r   r   data_missingr   $   s$    /1CDEEr   c                     t        t        j                  d      t        j                  d      t        j                  d      g      S )N120r   r   r   r   data_for_sortingr#   )   s4    		ws3W__S5IJ r   c                     t        t        j                  d      t        j                  d      t        j                  d      g      S )Nr    r   r"   r   r   r   r   data_missing_for_sortingr%   0   s4    		wu5ws7KL r   c                     d S )Nc                F    | j                         xr |j                         S r   )is_nan)xys     r   <lambda>zna_cmp.<locals>.<lambda>9   s    
1qxxz r   r   r   r   r   na_cmpr,   7   s    11r   c            
         t        j                  d      } t        j                  d      }t        j                  d      }t        j                  d      }t        | | ||||| |g      S )N1.0z0.02.0r   )r   r   r   )bacnas       r   data_for_groupingr4   <   sV    AAA		BAr2q!Q233r   c                      e Zd Z	 	 	 	 ddZddZd fdZ fdZ fdZd Zd Z	d Z
 fd	Z fd
Z fdZ fdZ fdZej"                  j%                  d       fd       Zd Zej"                  j%                  d      ej"                  j+                  dej.                  ej0                  ej2                  g       fd              Z xZS )TestDecimalArrayc                     y r   r   )selfop_nameobjothers       r   _get_expected_exceptionz(TestDecimalArray._get_expected_exceptionF   s     r   c                    |dv ryy)N)kurtsemFTr   )r8   serr9   s      r   _supports_reductionz$TestDecimalArray._supports_reductionK   s    o%r   c                    |dk(  rt         |   |||      S  t        ||      |      } t        t        j                  |      |             }t        j                  ||       y )Ncount)skipna)supercheck_reducegetattrnpasarraytmassert_almost_equal)r8   r@   r9   rD   resultexpected	__class__s         r   rF   zTestDecimalArray.check_reduceP   s[    g7'Wf==*WS'*&9F8wrzz#8:H""684r   c                    |dv r5t         j                  j                  t              }|j	                  |       t
        |   |||       y )N)r>   skewr?   medianraises)pytestmarkxfailNotImplementedErrorapplymarkerrE   test_reduce_series_numeric)r8   r   all_numeric_reductionsrD   requestrU   rN   s         r   rY   z+TestDecimalArray.test_reduce_series_numericX   sD    !%FF;;$$,?$@D%*41GPr   c                    |}|dv r5t         j                  j                  t              }|j	                  |       t
        |   |||      S )N)rP   rQ   rR   )rT   rU   rV   rW   rX   rE   test_reduce_frame)r8   r   rZ   rD   r[   r9   rU   rN   s          r   r]   z"TestDecimalArray.test_reduce_frame^   sL    (((;;$$,?$@D%w(/EvNNr   c                V    t        j                  |      }| j                  |||d       y )N      ?)pdSeries_compare_other)r8   r   comparison_opr@   s       r   test_compare_scalarz$TestDecimalArray.test_compare_scalarf   s#    iioC}c:r   c           
     Z   t        j                  |      }t        j                  j	                  d      j                  g dt        |            }t        j                  |      |D cg c]!  }t        j                  t        d|            # c}z  }| j                  ||||       y c c}w )Nr   )r   r   g       @)r`   ra   rH   randomdefault_rngchoicelenr   r   powrb   )r8   r   rc   r@   alterir;   s          r   test_compare_arrayz#TestDecimalArray.test_compare_arrayj   sz    iio		%%a(//
CIF		$"OA7??3sA;#?"OOC}e< #Ps   (&B(c           	        |}t        j                  |      }t        j                         }|j                  t        j
                     }|j                  t        j                     }d|j                  t        j
                  <   d|j                  t        j                  <   t        j                  |D cg c]  }t        |dz         c}      }	| j                  |||	       d|vr| j                  |||dz         | j                  ||d       | j                  ||d       ||j                  t        j
                  <   ||j                  t        j                  <   y c c}w )Nr   d   modr      )	r`   ra   r   
getcontexttrapsDivisionByZeroInvalidOperationintcheck_opname)
r8   r   all_arithmetic_operatorsr9   r@   contextdivbyzerotrapinvalidoptrapdr;   s
             r   test_arith_series_with_arrayz-TestDecimalArray.test_arith_series_with_arrayr   s   *iio$$&g&<&<=g&>&>?01g,,-23g../ 		6A3q3w<67#w.c7C!G4#w*#w*0=g,,-2?g../ 7s   3Ec                    d}t        j                  t        |d      5  t        |   |       d d d        y # 1 sw Y   y xY wNz,ExtensionArray.fillna added a 'copy' keywordF)matchcheck_stacklevel)rJ   assert_produces_warningr   rE   test_fillna_framer8   r   msgrN   s      r   r   z"TestDecimalArray.test_fillna_frame   sA    <''#
 	4 G%l3	4 	4 	4	   9Ac                    d}t        j                  t        |d      5  t        |   |       d d d        y # 1 sw Y   y xY wr   )rJ   r   DeprecationWarningrE   test_fillna_seriesr   s      r   r   z#TestDecimalArray.test_fillna_series   sA    <''cE
 	5 G&|4	5 	5 	5r   c                    d}t        j                  t        |      5  t        |   |       d d d        y # 1 sw Y   y xY w)Nz4conversion from NoneType to Decimal is not supported)r   )rT   rS   	TypeErrorrE   test_fillna_with_noner   s      r   r   z&TestDecimalArray.test_fillna_with_none   s;     E]]9C0 	8G),7	8 	8 	8s	   8Ac                    d}t        j                  t        |d      5  t        |   |       d d d        y # 1 sw Y   y xY wr   )rJ   r   r   rE   test_fillna_limit_framer   s      r   r   z(TestDecimalArray.test_fillna_limit_frame   sA    <''cE
 	: G+L9	: 	: 	:r   c                    d}t        j                  t        |d      5  t        |   |       d d d        y # 1 sw Y   y xY wr   )rJ   r   r   rE   test_fillna_limit_seriesr   s      r   r   z)TestDecimalArray.test_fillna_limit_series   sA    <''cE
 	; G,\:	; 	; 	;r   zcopy keyword is missing)reasonc                $    t         |   |       y r   )rE   test_fillna_readonly)r8   r   rN   s     r   r   z%TestDecimalArray.test_fillna_readonly   s    $\2r   c                    t        j                  |      }|j                  j                  t	        |      v sJ dt	        |      v sJ y )Nz	Decimal: )r`   ra   r   namerepr)r8   r   r@   s      r   test_series_reprz!TestDecimalArray.test_series_repr   s=     iiozz$s)+++d3i'''r   z%Inconsistent array-vs-scalar behaviorufuncc                &    t         |   ||       y r   )rE   #test_unary_ufunc_dunder_equivalence)r8   r   r   rN   s      r   r   z4TestDecimalArray.test_unary_ufunc_dunder_equivalence   s     	3D%@r   )r9   strreturnz4type[Exception] | tuple[type[Exception], ...] | None)r@   	pd.Seriesr9   r   r   bool)r@   r   r9   r   rD   r   )__name__
__module____qualname__r<   rA   rF   rY   r]   rd   rn   r~   r   r   r   r   r   rT   rU   rV   r   r   parametrizerH   positivenegativeabsr   __classcell__)rN   s   @r   r6   r6   E   s    	=

5QO;=@,458:; [[783 93( [[EF[[Wr{{BKK&HIA J GAr   r6   c                 N   t        t        j                  d      t        j                  d      g      } | j                  ddgdt        j                  d            }t        t        j                  d      t        j                  d      g      }t	        j
                  ||       y )Nr.   r/   r   rf   Tz-1.0)
allow_fill
fill_value)r   r   r   takerJ   assert_extension_array_equalarrrL   rM   s      r    test_take_na_value_other_decimalr      su    
.0FG
HCXXq"g$7??6;RXSFW__U3W__V5LMNH##FH5r   c                 2   t               } t        j                  g d|       }t        t	        j
                  d      t	        j
                  d      t	        j
                  d      g|       }t        j                  |      }t        j                  ||       y )N)r   r   r   r   r   r   r   )r   r`   ra   r   r   r   rJ   assert_series_equal)r   r@   r   exps       r   6test_series_constructor_coerce_data_to_extension_dtyper      sj    NE
))IU
+C
		W__Q/1CDC ))C.C3$r   c                 \   t        t        j                  d      g      } t        j                  | t                     }t        j                  |       }t        j                  ||       t        j                  | d      }t        j                  dg      }t        j                  ||       y )N10.0r   int64r   )r   r   r   r`   ra   r   rJ   r   r   s      r   "test_series_constructor_with_dtyper      sv    
/0
1CYYs,.1Fyy~H68,YYs'*Fyy"H68,r   c                    t        t        j                  d      g      } t        j                  d| it                     }t        j                  d| i      }t        j                  ||       t        t        j                  d      g      } t        j                  d| id      }t        j                  ddgi      }t        j                  ||       y )Nr   Ar   r   r   )r   r   r   r`   	DataFramer   rJ   assert_frame_equalr   s      r   %test_dataframe_constructor_with_dtyper      s    
/0
1C\\3*LN;F||S#J'H&(+
/0
1C\\3*G4F||S2$K(H&(+r   c                r   t        j                  t        t        j                  d      g      d      }t        j
                         }d|_         | |      }|j                  t        |            }| t         j                  u r|d   }|j                  j                  j                  |j                  k(  sJ y )Nr   r1   )r   rr   )r`   ra   r   r   r   Contextprecastyper   r   r   rz   )frame_or_seriesr   ctxrL   s       r   test_astype_dispatchesr      s    
 99\7??1#5"67cBD
//
CCH4 D[[c*+F",,&<<$$000r   c                  (    e Zd ZdZedddd       Zy)DecimalArrayWithoutFromSequencez:Helper class for testing error handling in _from_sequence.NF)r   copyc                   t        d      )NzFor the test)KeyError)clsscalarsr   r   s       r   _from_sequencez.DecimalArrayWithoutFromSequence._from_sequence   s    ~&&r   )r   r   r   __doc__classmethodr   r   r   r   r   r      s    D.2 ' 'r   r   c                      e Zd Zed        Zy)DecimalArrayWithoutCoercionc                (    | j                  |d      S )NF)coerce_to_dtype)_create_method)r   ops     r   _create_arithmetic_methodz5DecimalArrayWithoutCoercion._create_arithmetic_method  s    !!"e!<<r   N)r   r   r   r   r   r   r   r   r   r     s    = =r   r   c                    t        t        j                  d      t        j                  d      g      } | | z   }t        j                  t        j                  d      t        j                  d      gd      }t        j                  ||       y )Nr.   r/   z4.0objectr   )r   r   r   rH   arrayrJ   assert_numpy_array_equalr   s      r   $test_scalar_ops_from_sequence_raisesr     sj     &wu'=wu?U&V
WC3YFxx		!78H 1r   z#reverse, expected_div, expected_modF)r   r   r   r   )r   r   r   r   T)r   r   r   r   )r   r   r   r   c                    t        g d      }| rt        d|      \  }}nt        |d      \  }}t        |      }t        |      }t        j                  ||       t        j                  ||       y )N)r   r         r   )r	   divmodrJ   r   )reverseexpected_divexpected_modr   divrq   s         r   test_divmod_arrayr     sc     \
"C!S>S#q>Sl+Ll+L##C6##C6r   c                   | d d }t        j                  |t        dd            }t        j                  |      }t        j                  t        j                  |      t        dd            }t        j                  ||       y )Nrr   r      index)r`   ra   r   rH   r   rJ   r   )r   r1   srL   rM   s        r   test_ufunc_fallbackr   +  s^    RaA
		!5A;'AVVAYFyy%1+6H68,r   c                     t        g d      } t        j                  |       }t        t        j                  | j                              }t	        j
                  ||       y Nr   r   r   )r	   rH   r   _datarJ   r   )r1   rL   rM   s      r   test_array_ufuncr   3  s?    9AVVAYF"&&/*H##FH5r   c                    t        g d      } t        j                  |       }t        j                  |      }t        j                  t        t        j                  | j
                                    }t        j                  ||       y r   )r	   r`   ra   rH   r   r   rJ   r   r1   r   rL   rM   s       r   test_array_ufunc_seriesr   :  sU    9A
		!AVVAYFyyBFF177O45H68,r   c                 >   t        g d      } t        j                  |       }t        j                  |t        j                  d            }t        j                  t        j                  | t        j                  d                  }t        j                  ||       y )Nr   r   )	r	   r`   ra   rH   addr   r   rJ   r   r   s       r   $test_array_ufunc_series_scalar_otherr   B  sd    9A
		!AVVAwq)*Fyy7??1#567H68,r   c                 8   t        g d      } t        j                  |       }t        j                  t        g d            }t        j                  ||       }t        j                  | |      }t        j                  ||       t        j                  ||       y )Nr   )r   r      )r	   r`   ra   rH   r   rJ   r   )r1   r   rM   r1r2s        r   test_array_ufunc_series_deferr   K  sj    9A
		!AyyI./H	1B	1B2x(2x(r   c                 
   t        d      } t        j                  g dg dt        |       d      }t        j                  t        | d   | d   g            }|j                  d      d   j                  d	       }t        j                  ||d
       |d   j                  |d         j                  d       }t        j                  ||d
       t        j                  t        | d   | d   | d   g      t        j                  j                  g d            }|j                  ddg      d   j                  d       }t        j                  ||d
       |d   j                  |d   |d   g      j                  d       }t        j                  ||d
       t        j                  ddgt        | d   | d   g      d      }|j                  d      j                  d       }t        j                  ||d
       y )Nrr   r   r   r   r   r   )r   r   r   r   r   )id1id2decimalsr   r   r   r   c                     | j                   d   S Nr   ilocr)   s    r   r+   z"test_groupby_agg.<locals>.<lambda>b  s     r   Fcheck_namesc                     | j                   d   S r   r  r  s    r   r+   z"test_groupby_agg.<locals>.<lambda>d  s    QVVAY r   r   )r   r   )r   r   )r   r   r   r   c                     | j                   d   S r   r  r  s    r   r+   z"test_groupby_agg.<locals>.<lambda>l  s    !&&) r   c                     | j                   d   S r   r  r  s    r   r+   z"test_groupby_agg.<locals>.<lambda>n  s    !&&QR) r   )r   r   c                     | j                   d   S r   r  r  s    r   r+   z"test_groupby_agg.<locals>.<lambda>s  s    QVVAY r   )r   r`   r   r   ra   r	   groupbyaggrJ   r   
MultiIndexfrom_tuplesr   )r   dfrM   rL   s       r   test_groupby_aggr  W  s    Q<D	\RVEWX
B
 yyT!Wd1g$678HZZz*../BCF68?
^##BuI.223FGF68? yyDGT!Wd1g./mm''(@AH ZZ'
3778KLF68?
^##RY5	$:;??@STF68? ||QF
DGTRSWCU8VWXHZZ""#67F&(>r   c                |   d }| j                  t        d|d       t        d      }t        j                  g dt        |      d      }t        j
                  t        |d   |d	   z   |d
   z   |d   |d   z   g            }|j                  d      d   j                  d       }t        j                  ||d       t        j
                  t        |            }t        j                  g dt        j                        }|j                  |      j                  d       }t        j                  ||d       y )Nc                R    t        j                  t        j                  |             S r   )rH   sumr   )r8   s    r   DecimalArray__my_sumz8test_groupby_agg_ea_method.<locals>.DecimalArray__my_sum{  s    vvbhhtn%%r   my_sumFraisingrr   r   )idr   r   r   r   r   r   r  r   c                6    | j                   j                         S r   valuesr  r  s    r   r+   z,test_groupby_agg_ea_method.<locals>.<lambda>  s    8I r   r  r   c                6    | j                   j                         S r   r  r  s    r   r+   z,test_groupby_agg_ea_method.<locals>.<lambda>  s    ahhoo.? r   )setattrr   r   r`   r   ra   r	   r  r  rJ   r   rH   r   r   )monkeypatchr  r   r  rM   rL   r   groupers           r   test_groupby_agg_ea_methodr   w  s   & h0DeTQ<D	_,t:LM	NByyT!WtAw%6a%@$q'DQRGBS$TUVHZZj)--.IJF68?
		,t$%Ahhbhh7GYYw##$?@F68?r   c                @   d
d}| j                  t        d|d       t        d      }t        j                  t        |            }t        j
                  |t        t        |            d      }||dkD      ||dkD      |j                  d    |j                  d	    y )Nc                    t        d      )Nz0tried to convert a DecimalArray to a numpy array)	Exception)r8   r   s     r   DecimalArray__array__z;test_indexing_no_materialize.<locals>.DecimalArray__array__  s    JKKr   	__array__Fr  r   )r1   r0   r_   r   )r   r1   r   )	r  r   r   r`   ra   r   r   rj   at)r  r$  r   r   r  s        r   test_indexing_no_materializer'    s    
L k3HRWXR=D
		,t$%A	AE#a&M2	3B a#gJq3wKDDGEE&Mr   c                    t        j                  d      t        j                  d      g} t        j                  t        j                  d      t        j                  d      gd      }t	        j                  | d      }|j                  d	      }t        j                  ||       t	        j                  |      j                  d	      }t        j                  ||       y )
Nz1.1111z2.2222z1.11z2.22r   r   r   r   )r   )	r   r   rH   r   r`   to_numpyrJ   r   ra   )r  rM   r1   rL   s       r   test_to_numpy_keywordr*    s    ooh')BCFxx		 '//&"9:(H 	y)AZZZ#F1YYq\""A".F1r   c                    t        j                  dt        j                  d      t        j                  d      gid      } | j	                  t                     }d| j                  d<   t        j                  dt        j                  d      t        j                  d      git                     }t        j                  |j                  |j                         y )Nr1   r   r   r   r   r   r  )
r`   r   r   r   r   r   r  rJ   assert_equalr  )r  df2rM   s      r   test_array_copy_on_writer.    s    	sW__Q/1CDEX	VB
))LN
#CBGGDM||	wq!7??1#567|~H OOCJJ0r   )5
__future__r   r   numpyrH   rT   pandas.errorsr   pandasr`   pandas._testing_testingrJ   pandas.tests.extensionr   $pandas.tests.extension.decimal.arrayr   r   r   r	   fixturer   r   r   r   r#   r%   r,   r4   ExtensionTestsr6   r   r   r   r   r   r   r   _add_arithmetic_opsr   rU   r   r   r   r   r   r   r   r  r   r'  r*  r.  r   r   r   <module>r:     s   "    (   '    ' ' A A F F     2 2 4 4wAt** wAt6	%-
,1&'l '="A =  / / 12 )\<(4|*LM7	7-6--	)?@@**21r   