
    ri-:                     8   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z d dlmZ d dlmZ d dl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ej        d             Zej        d             Zej        d             Zej                             ej!         d           G d d                      Z"dS )    N)import_optional_dependency)option_context)	DataFrame)expressions)Versionc                      t          t          j                            d                              d          t          d          d          S )N   i'     ABCDfloat64columnsdtyper   nprandomdefault_rngstandard_normallist     s/var/www/html/pippo.cuttalo.com/services/trading/venv/lib/python3.11/site-packages/pandas/tests/test_expressions.py_framer      sF    
	a  00<<V   r   c                      t          t          j                            d                              d          t          d          d          S )Nr	   )d   r   r   r   r   r   r   r   r   _frame2r      sF    
	a  00::V   r   c                     t          | d         | d                             d          | d                             d          | d                             d          d          S 	NABfloat32Cint64Dint32)r    r!   r#   r%   r   astyper   s    r   _mixedr*   "   sd    ##I..##G,,##G,,		
 	
  r   c                     t          | d         | d                             d          | d                             d          | d                             d          d          S r   r'   r   s    r   _mixed2r-   .   sd    $$Y//$$W--$$W--		
 	
  r   c                      t          t          j                            d                              ddd          t          d          d          S )	Nr	      r   r
   sizer   r$   r   r   r   r   r   integersr   r   r   r   _integerr4   :   sM    
	a  ))!Sz)BBV   r   c                     | t           j                            d                              ddt          j        |                     z  S )Nr	   r   r0   )r   r   r   r3   shape)r4   s    r   _integer_integersr7   C   s>     bi++A..77128HCUCU7VVVVr   c                      t          t          j                            d                              ddd          t          d          d          S )	Nr	   r/   r   )e   r   r0   r   r$   r   r2   r   r   r   	_integer2r:   I   sM    
	a  ))!Sx)@@V   r   c                 6    | d                                          S Nr    to_numpyr)   s    r   _arrayr?   R       #;!!!r   c                 6    | d                                          S r<   r=   r,   s    r   _array2rB   W       3<  """r   c                 6    | d                                          S Nr%   r=   )r*   s    r   _array_mixedrF   \   r@   r   c                 6    | d                                          S rE   r=   )r-   s    r   _array_mixed2rH   a   rC   r   znot using numexpr)reasonc                      e Zd Zededefd            Zej        	                    dg d          ej        	                    dddg          ej        	                    dg d	          d
                                     Z
ej        	                    dg d          ej        	                    dddg          d                         Zd Zej                            d          ej        	                    dg d          ej        	                    dddg          d                                     Zej        	                    dddg          d             Zej        	                    dddg          ej        	                    dg d          d                         Zej        	                    dg d          d             Zej        	                    dg d          d             Zej        	                    d eg dg dgg d            eddgddggd!d"g           f eg d#g d$g d%gg d            eddgddgddggd!d"g           fg          d&             Zej        	                    dd	          ej        	                    d'd(          d)                         Zej        	                    d*g d+          ej        	                    d,d-d.g          d/                         Zd0S )1TestExpressionsflexopnamec                     |rfd}|_         nt          t                    }t          dd          5   || |          }d d d            n# 1 swxY w Y   t	          j                      || |          }||fS )Nc                 6     t          |           |          S )N)getattr)xyrM   s     r   <lambda>z)TestExpressions.call_op.<locals>.<lambda>k   s    0ga0033 r   compute.use_numexprF)__name__rP   operatorr   exprget_test_result)dfotherrL   rM   opexpectedresults      `   r   call_opzTestExpressions.call_oph   s     	+3333B BKK6**B1599 	% 	%r"e}}H	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	Bxs   AAAfixture)r4   r:   r7   r   r   r*   r-   TFarith)addsubmulmodtruedivfloordivc                    |                     |          }|                                5 }|                    t          dd           |                     ||||          \  }}	|dk    r%t          d |	j        j        D                       sJ t          j	        |	|           t          t          |j                            D ]h}
|                     |j        d d |
f         |j        d d |
f         ||          \  }}	|dk    r|	j        j        dk    sJ t          j	        |	|           i	 d d d            d S # 1 swxY w Y   d S )N_MIN_ELEMENTSr   re   c              3   ,   K   | ]}|j         d k    V  dS )fN)kind).0rQ   s     r   	<genexpr>z6TestExpressions.test_run_arithmetic.<locals>.<genexpr>   s(      IIQ16S=IIIIIIr   rj   )getfixturevaluecontextsetattrrW   r^   alldtypesvaluestmassert_equalrangelenr   ilocr   rk   )selfrequestr_   rL   r`   monkeypatchrY   mr]   r\   is              r   test_run_arithmeticz#TestExpressions.test_run_arithmeticx   s   " $$W--  "" 	2aIIdOQ///#||BD%@@FH	!!II(/2HIIIIIIIIOHf---3rz??++ 2 2#'<<GAAAqDM27111a4=$$ $  I%%#>.#5555&11112	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   DD::D>D>c                    |                     |          }|j        }t          dd          5  |dz   }ddd           n# 1 swxY w Y   |                                5 }	|	                    t
          dd           t          j        d           |                     ||||          \  }
}t          j                    }|s
J d            t          j
        ||
           t          t          |j                            D ]=}|j        dd|f         dz   }|                     |j        dd|f         ||d	           >	 ddd           dS # 1 swxY w Y   dS )
z
        tests solely that the result is the same whether or not numexpr is
        enabled.  Need to test whether the function does the correct thing
        elsewhere.
        rT   Fr/   Nrh   r   Tz Did not use numexpr as expected.ra   )rn   rU   r   ro   rp   rW   set_test_moder^   rX   rt   ru   rv   rw   r   rx   )ry   rz   r_   rL   comparison_opr{   rY   r`   rZ   r|   r]   r\   used_numexprr}   binary_comps                  r   test_run_binaryzTestExpressions.test_run_binary   s   & $$W--&1599 	 	FE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   "" 	FaIIdOQ///t$$$#||BtUCCFH/11LCC!CCCCOHf---3rz??++ F F#jA.2RWQQQT]KuEEEEF	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs"   ?AACEEEc                    t           j                            d                              d          }t           j                            d                              d          }t	          j        t          j        d ||d          }|rJ t	          j        t          j        d||d          }|rJ t	          j        t          j        d||d          }|sJ d S )Nr	   iAB r   evaluate+)r   r   r   r   rW   _can_use_numexprrV   ra   )ry   arrayarray2r]   s       r   test_invalidzTestExpressions.test_invalid   s    	%%a((88CC&&q))99#>> &x|T5%TT &x|S&&*UU &x|S%TTr   z2ignore:invalid value encountered in:RuntimeWarningzopname,op_str))ra   r   )rb   -)rc   *)re   /)pow**zleft_fix,right_fix)r?   rB   )rF   rH   c                 R   |                     |          }|                     |          }d }t          dd          5   |||||           d d d            n# 1 swxY w Y   t          j        d            |||||           t          j                      |||||           d S )Nc                 &   |dk    rt          j        |           } t          t          |          }t	          j        || | d          }t	          j        || | d          }t          j        ||           t	          j        ||||d          }|rJ d S )Nr   Tuse_numexprFr   )	r   absrP   rV   rW   r   rt   assert_numpy_array_equalr   )leftrightrM   op_strr[   r]   r\   s          r   testitz/TestExpressions.test_binary_ops.<locals>.testit   s    vd||6**B ]2tTtDDDF}RtGGGH'999*2vueZPPFr   rT   Fr/   rn   r   rW   set_numexpr_threads)	ry   rz   rM   r   left_fix	right_fixr   r   r   s	            r   test_binary_opszTestExpressions.test_binary_ops   s    &&x00''	22	 	 	 1599 	0 	0F4///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	 ###tUFF+++ """tUFF+++++s   AA Ac                 H   |                     |          |                     |          fd}t          dd          5   |             d d d            n# 1 swxY w Y   t          j        d            |             t          j                      |             d S )Nc                      dz   } dz   }}t          j        || d          }t          j        || d          }t          j        ||           t          j        |||d          }|rJ d S )Nr/   Tr   Fr   )rW   r   rt   r   r   )f12f22r[   r]   r\   r   r   r   s        r   r   z3TestExpressions.test_comparison_ops.<locals>.testit   s    (C!)CB]2tSdCCCF}RsFFFH'999*2r5#zJJFr   rT   Fr/   r   )ry   rz   r   r   r   r   r   r   s     `   @@r   test_comparison_opsz#TestExpressions.test_comparison_ops   s     &&x00''	22	 	 	 	 	 	 	 1599 	 	FHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ### """s   AA #A cond)r   r   r*   r-   c                    |                     |          fd}t          dd          5   |             d d d            n# 1 swxY w Y   t          j        d            |             t          j                      |             d S )Nc                  2   t          j        j        t           j                  } |                                t          j        | j        j        dz             }t          j        | j        j        dz             }t          j	        ||           d S )N)r   r/   )
r   emptyr6   bool_fillrW   wherers   rt   r   )cr]   r\   r   rY   s      r   r   z*TestExpressions.test_where.<locals>.testit  sy    222AFF4LLLZ29bi!m<<Fx29bi!m<<H'99999r   rT   Fr/   r   )ry   rz   r   r_   r   rY   s     `  @r   
test_wherezTestExpressions.test_where  s     $$W--	: 	: 	: 	: 	: 	: 1599 	 	FHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ### """s   AA	A	zop_str,opname))r   re   )z//rf   )r   r   c                 v   t          t          j                            d                              d          dk    t          j                            d                              d          dk    d          }d| d}t	          t
          |          }t          j        |          }t          j	        t          |          5   |||           d d d            n# 1 swxY w Y   t          j	        t          |          5   ||j        |j                   d d d            n# 1 swxY w Y   t          j	        t          |          5   ||j        d           d d d            n# 1 swxY w Y   t          j	        t          |          5   |d	|j                   d d d            n# 1 swxY w Y   t          j	        t          |          5   |d	|           d d d            n# 1 swxY w Y   t          j	        t          |          5   ||d           d d d            d S # 1 swxY w Y   d S )
Nr	   
         ?abz
operator 'z!' not implemented for bool dtypesmatchTF)r   r   r   r   rP   rV   reescapepytestraisesNotImplementedErrorr   r   )ry   r   rM   rY   msgrj   err_msgs          r   !test_bool_ops_raise_on_arithmeticz1TestExpressions.test_bool_ops_raise_on_arithmetic"  s    Y**1--44R883>Y**1--44R883> 
 
 E6DDDHf%%)C..].g>>> 	 	Ab"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AbdBDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AbdDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AeRTNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AeRLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	Ab$KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sl   CC"%C"D''D+.D+E++E/2E/F//F36F3G..G25G2H..H25H2))r   ra   )r   rc   )r   rb   c                    d}t          t          j                            d                              |          dk    t          j                            d                              |          dk    d          }dddd}d	d
dd}t	          t
          |          }t	          t
          |||                            }	|dk    rd S d}
t          dd          }|r0|dv r,t          |j                  t          d          k     rt          nd }|
                                5 }|                    t          dd           t          dd          5  t          j        ||
          5   |||          } |	||          }t          j        ||           d d d            n# 1 swxY w Y   t          j        ||
          5   ||j        |j                  } |	|j        |j                  }t          j        ||           d d d            n# 1 swxY w Y   t          j        ||
          5   ||j        d          } |	|j        d          }t          j        ||           d d d            n# 1 swxY w Y   t          j        ||
          5   |d|j                  } |	d|j                  }t          j        ||           d d d            n# 1 swxY w Y   t          j        ||
          5   |d|          } |	d|          }t          j        ||           d d d            n# 1 swxY w Y   t          j        ||
          5   ||d          } |	|d          }t          j        ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r	   r   r   |&^)r   r   r   or_and_xor)r   r   r   r   z$operator is not supported by numexprnumexprignore)errors>   r   r   z2.13.1rh      rT   Tr   F)r   r   r   r   rP   rV   r   r   __version__UserWarningro   rp   rW   r   rt   assert_produces_warningassert_frame_equalr   r   assert_series_equal)ry   r   rM   r{   nrY   subs	sub_funcsrj   fer   newarningr|   res                   r    test_bool_ops_warn_on_arithmeticz0TestExpressions.test_bool_ops_warn_on_arithmeticC  s    Y**1--44Q77#=Y**1--44Q77#= 
 
 s--f599	Hf%%Xyf677S==F4'	(CCC *$$'''(*;*;;; K  	   "" 	0aIIdOQ/// 5t<< 0 0/sCCC 0 0"b		A2r

A)!Q///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 /sCCC 1 1"$A24A*1a0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 /sCCC 1 1"$A24A*1a0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 /sCCC 1 1%A5"$A*1a0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 /sCCC 0 0%A5"A)!Q///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 /sCCC 0 0"dA2tA)!Q///0 0 0 0 0 0 0 0 0 0 0 0 0 0 050 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s  "-N>N&&.F N& F$$N&'F$(N&AHN&HN&HN&08I4(N&4I88N&;I8<N&8KN&KN& K!N&:.L4(N&4L88N&;L8<N&.NN&NN&NN&N>&N*	*N>-N*	.N>>OOztest_input,expected)r   r/   r	   aa)r   r   r   r   )r   r   r   )r      r	   r   )r   r   r	   r   )r   r/   r/   bbc                     |j         d d ddgf                             |j         d d ddgf                   }t          j        ||           d S )Nr   r   )locr   rt   r   )ry   
test_inputr\   r]   s       r   test_bool_ops_column_name_dtypez/TestExpressions.test_bool_ops_column_name_dtype  sX    . C> 1255jnQQQgEV6WXX
fh/////r   axis)r   r/   c                    |}|dk    r|j         dd d f         }n|j         d d df         }|                                5 }|                    t          dd           t	          ||          }t          dd          5   |||          }	d d d            n# 1 swxY w Y    |||          }
t          j        |	|
           d d d            d S # 1 swxY w Y   d S )Nr/   r   rh   rT   F)r   )rx   ro   rp   rW   rP   r   rt   r   )ry   r   r`   r   r{   rY   rZ   r|   op_funcr\   r]   s              r   test_frame_series_axisz&TestExpressions.test_frame_series_axis  su    199GAqqqDMEEGAAAqDME  "" 		4aIIdOQ///b%((G 5u== 5 5"75t4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 WU...F!(F333		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4s6    =C=BCB	CB	%CCCr[   )__mod____rmod____floordiv____rfloordiv__scalarr   c                    |                                 5 }|                    t          dd           t          j        dd          } ||          }t          ||          } ||          }	t          dd          5   ||          }
d d d            n# 1 swxY w Y   t          j        |	|
           t          |          D ]g\  }}|t          k    r|	j        |df         }n|	|         }	  t          t          |          |          |          }
||
k    sJ X# t          $ r Y dw xY w	 d d d            d S # 1 swxY w Y   d S )Nrh   r   i2   rT   F)ro   rp   rW   r   arangerP   r   rt   ru   	enumerater   rx   intZeroDivisionError)ry   r[   box_with_arrayr   r{   r|   dataobjmethodr]   r\   r}   elemscalar_results                 r   ,test_python_semantics_with_numexpr_installedz<TestExpressions.test_python_semantics_with_numexpr_installed  s      "" 	5aIIdOQ///9S"%%D .&&CS"%%FVF^^F   5u== * *!6&>>* * * * * * * * * * * * * * * OFH--- %T?? 
5 
54!Y..$*K1$5MM$*1IM55ws4yy"55f==H )H44444 )   D
5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s[   A(D:=B	D:B	D:B	AD:-&D	D:
D)&D:(D))D::D>D>N)rU   
__module____qualname__staticmethodboolstrr^   r   markparametrizer~   r   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   rK   rK   f   s          s       \  [	
 	
 	
  [VdE]33[DDD 2 2  43  2$ [	
 	
 	
  [VdE]33F F 43 F2    [ TUU[SSS  [46WX , , 	  VU,4 [46WX   2 [VdE]33[Y(R(R(RSS  TS 43$ [NNN   < [CCC ;0 ;0 ;0z [ 	$__ooo6@X@X@X   	E5>E5>:S'NSSS	 	$__oooG444   	U^eU^eU^D 'N  		
 *0 0+ *0
 [D  [VV,,4 4 -, 4( [	
 	
 	
  [XAw//5 5 0/ 5 5 5r   rK   )#rV   r   numpyr   r   pandas.compat._optionalr   pandasr   pandas._testing_testingrt   pandas.core.apir   pandas.core.computationr   rW   pandas.util.versionr   r_   r   r   r*   r-   r4   r7   r:   r?   rB   rF   rH   r   skipifUSE_NUMEXPRrK   r   r   r   <module>r     s@    				      > > > > > > ! ! ! ! ! !       % % % % % % 7 7 7 7 7 7 ' ' ' ' ' '                W W W
    " " " # # # " " " # # # ((1DEEt5 t5 t5 t5 t5 t5 t5 FEt5 t5 t5r   