
    Mh9                       S r SSKJr  SSKJr  SSKJr  SSKrSSKJrJ	r	J
r
  SSKrSSKJr  SSKJrJr  SSKJs  Jr  SS	KJrJr  SS
KJr  SSKJrJr  \(       a  SSKJrJ r   Sr!Sr"Sr#\"\#-   r$Sr% " S S5      r& " S S\&5      r'SSSS.r( " S S5      r)S r*S r+Sr,\RZ                  \R\                  \R^                  \R`                  \Rb                  \Rd                  \*\+4r3\4" \5" \,\35      5      r6Sr7\Rp                  \Rr                  \Rp                  \Rr                  4r:\4" \5" \7\:5      5      r;Sr<\Rz                  \R|                  \R~                  \R                  \R                  \R                  \R                  4rD\4" \5" \<\D5      5      rES rF\R                  \R                  \R                  4rG\4" \5" \F\G5      5      rH0 rI\6\;\E4 H  rJ\IR                  \J5        M     S,S! jrL " S" S#\)5      rMS,S$ jrNS%rO\R                  \R                  \R                  \R                  4rS\4" \5" \O\S5      5      rT " S& S'\)5      rU " S( S)\)5      rV " S* S+5      rWg)-z
Operator classes for eval.
    )annotations)datetime)partialN)TYPE_CHECKINGCallableLiteral)	Timestamp)is_list_like	is_scalar)ensure_decodedresult_type_many)DEFAULT_GLOBALS)pprint_thingpprint_thing_encoded)IterableIterator)sumprodminmax)sincosexplogexpm1log1psqrtsinhcoshtanharcsinarccosarctanarccosharcsinharctanhabslog10floorceil)arctan2__pd_eval_local_c                  0  ^  \ rS rSr% SU 4S jjrS\S'   SSS jjr\SS j5       rSS jr	S r
SS	 jrS
 rSS jr\SS j5       r\S 5       r\r\SS j5       r\SS j5       r\S 5       r\R(                  SS j5       r\S 5       r\SS j5       rSrU =r$ )TermK   c                j   > [        U[        5      (       d  [        OU n[        [        U]  nU" U5      $ N)
isinstancestrConstantsuperr.   __new__)clsnameenvsideencodingklasssupr_new	__class__s          M/var/www/html/env/lib/python3.13/site-packages/pandas/core/computation/ops.pyr6   Term.__new__L   s,     *4 5 53u-    boolis_localc                    Xl         X l        X0l        [        U5      nUR	                  [
        5      =(       d	    U[        ;   U l        U R                  5       U l	        X@l
        g r1   )_namer9   r:   r3   
startswith	LOCAL_TAGr   rC   _resolve_name_valuer;   )selfr8   r9   r:   r;   tnames         r?   __init__Term.__init__T   sK    
	D	((3Ou7O((* rA   c                B    U R                   R                  [        S5      $ )N )r8   replacerG   rJ   s    r?   
local_nameTerm.local_name^   s    yy  B//rA   c                ,    [        U R                  5      $ r1   )r   r8   rQ   s    r?   __repr__Term.__repr__b   s    DII&&rA   c                    U R                   $ r1   valuerJ   argskwargss      r?   __call__Term.__call__e       zzrA   c                    U $ r1    rZ   s      r?   evaluateTerm.evaluateh   s    rA   c                   [        U R                  5      nU R                  nXR                  R                  ;   a.  [        U R                  R                  U   [        5      (       a  SnU R                  R                  XS9nU R                  U5        [        US5      (       a  UR                  S:  a  [        S5      eU$ )NF)rC   ndim   z?N-dimensional objects, where N > 2, are not supported with eval)r3   rR   rC   r9   scoper2   typeresolveupdatehasattrre   NotImplementedError)rJ   rR   rC   ress       r?   rH   Term._resolve_namek   s    )
=='JHHNN:&-
 -
 Hhhz=C3CHHqL%Q  
rA   c                    U R                   n[        U[        5      (       a$  U R                  R	                  U R
                  X!S9  Xl        g)z
search order for local (i.e., @variable) variables:

scope, key_variable
[('locals', 'local_name'),
 ('globals', 'local_name'),
 ('locals', 'key'),
 ('globals', 'key')]
)	new_valueN)r8   r2   r3   r9   swapkeyrR   rY   )rJ   rY   keys      r?   rj   Term.update|   s<     ii c3HHT__cC
rA   c                ,    [        U R                  5      $ r1   )r   rI   rQ   s    r?   r   Term.is_scalar   s    %%rA   c                     U R                   R                  R                  $ ! [         aA     U R                   R                  s $ ! [         a    [	        U R                   5      s s $ f = ff = fr1   )rI   valuesdtypeAttributeErrorrh   rQ   s    r?   rh   	Term.type   s_    		);;%%+++ 	)){{(((! )DKK(()		)s,   " 
A-AA-A)$A-(A))A-c                x    [        U 5      R                   S[        U R                  5       SU R                    S3$ )Nz(name=z, type=))rh   __name__reprr8   rQ   s    r?   rawTerm.raw   s3    t*%%&fT$))_,=WTYYKqQQrA   c                     U R                   R                   n[        U[        [        R
                  45      $ ! [         a    U R                   n N8f = fr1   )rh   ry   
issubclassr   np
datetime64rJ   ts     r?   is_datetimeTerm.is_datetime   sF    			A !h677  			A	   8 AAc                    U R                   $ r1   rI   rQ   s    r?   rY   
Term.value   s    {{rA   c                    Xl         g r1   r   )rJ   rp   s     r?   rY   r      s    rA   c                    U R                   $ r1   rE   rQ   s    r?   r8   	Term.name       zzrA   c                .    U R                   R                  $ r1   )rI   re   rQ   s    r?   re   	Term.ndim   s    {{rA   )rE   rI   r;   r9   rC   r:   rY   )NNreturnNoner   r3   )r   r.   r   rB   )r   int)r}   
__module____qualname____firstlineno__r6   __annotations__rL   propertyrR   rU   r]   rb   rH   rj   r   rh   return_typer   r   rY   setterr8   re   __static_attributes____classcell__r>   s   @r?   r.   r.   K   s     N! 0 0'"$ & & 
) 
) KR R 8 8   \\         rA   r.   c                  4    \ rS rSrS r\S 5       rSS jrSrg)r4      c                    U R                   $ r1   r   rQ   s    r?   rH   Constant._resolve_name   r_   rA   c                    U R                   $ r1   rX   rQ   s    r?   r8   Constant.name   r   rA   c                ,    [        U R                  5      $ r1   )r~   r8   rQ   s    r?   rU   Constant.__repr__   s     DIIrA   ra   Nr   )	r}   r   r   r   rH   r   r8   rU   r   ra   rA   r?   r4   r4      s       rA   r4   ~&|)notandorc                      \ rS rSr% SrS\S'   SSS jjrSS jrSS jr\	S	 5       r
\	SS
 j5       r\	S 5       r\	SS j5       r\	SS j5       rSrg)Op   z&
Hold an operator of arbitrary arity.
r3   opNc                P    [         R                  X5      U l        X l        X0l        g r1   )_bool_op_mapgetr   operandsr;   )rJ   r   r   r;   s       r?   rL   Op.__init__   s    ""2*  rA   c                ,    [        U R                  5      $ r1   )iterr   rQ   s    r?   __iter__Op.__iter__   s    DMM""rA   c                x    S U R                    5       n[        SU R                   S3R                  U5      5      $ )zG
Print a generic n-ary operator and its operands using infix notation.
c              3  @   #    U  H  nS [        U5       S3v   M     g7f)(r|   N)r   ).0oprs     r?   	<genexpr>Op.__repr__.<locals>.<genexpr>   s     E}Q|C()+}s    )r   r   r   join)rJ   pareneds     r?   rU   Op.__repr__   s5    
 Ft}}EayN//899rA   c                    U R                   [        [        -   ;   a  [        R                  $ [        S [        R                  " U 5       5       6 $ )Nc              3  8   #    U  H  oR                   v   M     g 7fr1   rh   r   terms     r?   r   !Op.return_type.<locals>.<genexpr>   s     !J8I))8I   )r   CMP_OPS_SYMSBOOL_OPS_SYMSr   bool_r   comflattenrQ   s    r?   r   Op.return_type   s8     77|m3488O!JD8I!JKKrA   c                    U R                   n[        [        R                  " S5      /5      nU R                  [
        :H  =(       a    X-
  $ )Nobject)operand_types	frozensetr   rx   r   r   )rJ   typesobj_dtype_sets      r?   has_invalid_return_typeOp.has_invalid_return_type   s<    ""!288H#5"676)Ce.CCrA   c                N    [        S [        R                  " U 5       5       5      $ )Nc              3  8   #    U  H  oR                   v   M     g 7fr1   r   r   s     r?   r   #Op.operand_types.<locals>.<genexpr>   s     A/@t/@r   )r   r   r   rQ   s    r?   r   Op.operand_types   s    As{{4/@AAArA   c                :    [        S U R                   5       5      $ )Nc              3  8   #    U  H  oR                   v   M     g 7fr1   )r   )r   operands     r?   r   Op.is_scalar.<locals>.<genexpr>   s     BM$$Mr   )allr   rQ   s    r?   r   Op.is_scalar   s    BDMMBBBrA   c                     U R                   R                  n[        U[        [
        R                  45      $ ! [         a    U R                   n N8f = fr1   )r   rh   ry   r   r   r   r   r   s     r?   r   Op.is_datetime   sL    	!  %%A !h677  	!  A	!r   )r;   r   r   r1   )r   r3   r   zIterable[Term | Op]r   r   )r   r   r   r   )r}   r   r   r   __doc__r   rL   r   rU   r   r   r   r   r   r   r   ra   rA   r?   r   r      s     	G!
#: L L D D
 B B C C 8 8rA   r   c                     U R                  U5      $ ! [         a;    [        U 5      (       a$   UR                  U 5      s $ ! [         a     Of = fX;   s $ f = f)zT
Compute the vectorized membership of ``x in y`` if possible, otherwise
use Python.
isinry   r
   xys     r?   _inr     sY    
vvay ??vvay ! vs1    AAA
AAAAAc                     U R                  U5      ) $ ! [         a<    [        U 5      (       a%   UR                  U 5      ) s $ ! [         a     Of = fX;  s $ f = f)zX
Compute the vectorized membership of ``x not in y`` if possible,
otherwise use Python.
r   r   s     r?   _not_inr     s^    
q	z ??q	z!! zs2    AA A
AAAAA)><z>=z<=z==z!=inznot in)r   r   r   r   )+-*/**//%)r   r   r   c                "    [        U [        5      $ r1   )r2   r.   )objs    r?   is_termr  O  s    c4  rA   c                  P   ^  \ rS rSrSrS	U 4S jjrS rS
S jrSS jrS r	Sr
U =r$ )BinOpiS  zl
Hold a binary operator and its operands.

Parameters
----------
op : str
lhs : Term or Op
rhs : Term or Op
c                2  > [         TU ]  XU45        X l        X0l        U R	                  5         U R                  5          [        U   U l        g ! [         a=  n[        [        R                  5       5      n[        S[        U5       SU 35      UeS nAff = f)NzInvalid binary operator , valid operators are )r5   rL   lhsrhs_disallow_scalar_only_bool_opsconvert_values_binary_ops_dictfuncKeyErrorlistkeys
ValueErrorr~   )rJ   r   r  r  errr  r>   s         r?   rL   BinOp.__init__^  s    3Z(++-	(,DI 	(--/0D*48*4J4&Q	s    A 
B8BBc                h    U R                  U5      nU R                  U5      nU R                  X#5      $ )z
Recursively evaluate an expression in Python space.

Parameters
----------
env : Scope

Returns
-------
object
    The result of an evaluated expression.
)r  r  r  )rJ   r9   leftrights       r?   r]   BinOp.__call__p  s-     xx}yy%%rA   c                J   US:X  a	  U " U5      nO~U R                   R                  UUUUUS9nU R                  R                  UUUUUS9nU R                  U;   a'  U R	                  UR
                  UR
                  5      nOSSKJn	  U	" XX#S9nUR                  U5      n
U" XS9$ )a  
Evaluate a binary operation *before* being passed to the engine.

Parameters
----------
env : Scope
engine : str
parser : str
term_type : type
eval_in_python : list

Returns
-------
term_type
    The "pre-evaluated" expression as an instance of ``term_type``
python)engineparser	term_typeeval_in_pythonr   )eval)
local_dictr  r  )r9   )	r  rb   r  r   r  rY   pandas.core.computation.evalr  add_tmp)rJ   r9   r  r  r  r  rm   r  r  r  r8   s              r?   rb   BinOp.evaluate  s    " Xs)C 88$$#- % D HH%%#- & E ww.(ii

EKK8=4N{{3''rA   c                @  ^  U 4S jnT R                   T R                  p2[        U5      (       a  UR                  (       a  [        U5      (       a  UR                  (       a|  UR
                  n[        U[        [        45      (       a  U" U5      n[        [        U5      5      nUR                  b  UR                  S5      nT R                  R                  U5        [        U5      (       a  UR                  (       a  [        U5      (       a  UR                  (       a}  UR
                  n[        U[        [        45      (       a  U" U5      n[        [        U5      5      nUR                  b  UR                  S5      nT R                   R                  U5        ggggg)z;
Convert datetimes to a comparable value in an expression.
c                l   > TR                   b  [        [        TR                   S9nO[        nU" U 5      $ )N)r;   )r;   r   r   r   )rY   encoderrJ   s     r?   	stringify'BinOp.convert_values.<locals>.stringify  s-    }}(!"6O&5>!rA   NUTC)r  r  r  r   r   rY   r2   r   floatr	   r   tz
tz_convertrj   )rJ   r$  r  r  vs   `    r?   r	  BinOp.convert_values  s   
	" 88TXXS3<<COO		A!c5\**aL.+,AttLL'HHOOA3<<COO		A!c5\**aL.+,AttLL'HHOOA BOO<rA   c                   U R                   nU R                  nUR                  n[        USU5      nUR                  n[        USU5      nUR                  (       d  UR                  (       ak  U R
                  [        ;   aV  [        U[        [        R                  45      (       a%  [        U[        [        R                  45      (       d  [        S5      eg g g )Nrh   z$cannot evaluate scalar only bool ops)r  r  r   getattrr   r   _bool_ops_dictr   rB   r   r   rl   )rJ   r  r  rhs_rtlhs_rts        r?   r  $BinOp._disallow_scalar_only_bool_ops  s    hhhh 00]]cmm>) vbhh'788"6D"((+;<< &&LMM	 =	 * ,rA   )r  r  r  )r   r3   r   r   )r  r3   r   )r}   r   r   r   r   rL   r]   rb   r	  r  r   r   r   s   @r?   r  r  S  s*    $&&/(bBN NrA   r  c                r    [        [        R                  " U 5      R                  [        R                  5      $ r1   )r   r   rx   rh   number)rx   s    r?   	isnumericr4    s!    bhhuo**BII66rA   )r   r   r   r   c                  X   ^  \ rS rSrSrSU 4S jjrS	S jrS
S jr\SS j5       r	Sr
U =r$ )UnaryOpi  a  
Hold a unary operator and its operands.

Parameters
----------
op : str
    The token used to represent the operator.
operand : Term or Op
    The Term or Op operand to the operator.

Raises
------
ValueError
    * If no function associated with the passed operator token is found.
c                   > [         TU ]  X45        X l         [        U   U l        g ! [
         a$  n[        S[        U5       S[         35      UeS nAff = f)NzInvalid unary operator r  )	r5   rL   r   _unary_ops_dictr  r  r  r~   UNARY_OPS_SYMS)rJ   r   r   r  r>   s       r?   rL   UnaryOp.__init__  se    Z(	'+DI 	)$r( 4''5&68 	s   ( 
AAAc                F    U R                  U5      nU R                  U5      $ r1   )r   r  )rJ   r9   r   s      r?   r]   UnaryOp.__call__  s    ,,s#yy!!rA   c                L    [        U R                   SU R                   S35      $ )Nr   r|   )r   r   r   rQ   s    r?   rU   UnaryOp.__repr__  s"    twwiqa899rA   c                `   U R                   nUR                  [        R                  " S5      :X  a  [        R                  " S5      $ [	        U[
        5      (       a>  UR                  [        ;   d  UR                  [        ;   a  [        R                  " S5      $ [        R                  " S5      $ )NrB   r   )	r   r   r   rx   r2   r   r   _cmp_ops_dictr.  )rJ   r   s     r?   r   UnaryOp.return_type  sr    ,,"((6"2288F##gr""JJ-'7::+G88F##xxrA   )r  r   )r   zLiteral['+', '-', '~', 'not']r   r   r   MathCallr   )r   znp.dtype)r}   r   r   r   r   rL   r]   rU   r   r   r   r   r   s   @r?   r6  r6    s+     
"
:  rA   r6  c                  <   ^  \ rS rSrSU 4S jjrS rSS jrSrU =r$ )rC  i%  c                F   > [         TU ]  UR                  U5        Xl        g r1   )r5   rL   r8   r  )rJ   r  r[   r>   s      r?   rL   MathCall.__init__&  s    D)	rA   c                    U R                    Vs/ s H
  o"" U5      PM     nnU R                  R                  " U6 $ s  snf r1   )r   r  )rJ   r9   r   r   s       r?   r]   MathCall.__call__*  s6    &*mm4mBsGm4yy~~x(( 5s   ;c                    [        [        U R                  5      n[        U R                   SSR                  U5       S35      $ )Nr   ,r|   )mapr3   r   r   r   r   )rJ   r   s     r?   rU   MathCall.__repr__/  s8    sDMM*twwiq();(<A>??rA   )r  r   r   )	r}   r   r   r   rL   r]   rU   r   r   r   s   @r?   rC  rC  %  s    )
@ @rA   rC  c                  (    \ rS rSrSS jrSS jrSrg)FuncNodei4  c                l    U[         ;  a  [        SU S35      eXl        [        [        U5      U l        g )N"z" is not a supported function)MATHOPSr  r8   r-  r   r  )rJ   r8   s     r?   rL   FuncNode.__init__5  s2    wq&CDEE	B%	rA   c                    [        X5      $ r1   )rC  )rJ   r[   s     r?   r]   FuncNode.__call__;  s    ##rA   )r  r8   N)r8   r3   r   r   rB  )r}   r   r   r   rL   r]   r   ra   rA   r?   rN  rN  4  s    &$rA   rN  r   )Xr   
__future__r   r   	functoolsr   operatortypingr   r   r   numpyr   pandas._libs.tslibsr	   pandas.core.dtypes.commonr
   r   pandas.core.commoncorecommonr   pandas.core.computation.commonr   r   pandas.core.computation.scoper   pandas.io.formats.printingr   r   collections.abcr   r   
REDUCTIONS_unary_math_ops_binary_math_opsrQ  rG   r.   r4   r   r   r   r   r   gtltgeleeqne_cmp_ops_funcsdictzipr@  r   and_or__bool_ops_funcsr.  ARITH_OPS_SYMSaddsubmultruedivpowfloordivmod_arith_ops_funcs_arith_ops_dictSPECIAL_CASE_ARITH_OPS_SYMS_special_case_arith_ops_funcs_special_case_arith_ops_dictr
  drj   r  r  r4  r9  posneginvert_unary_ops_funcsr8  r6  rC  rN  ra   rA   r?   <module>r     sg   #      )
 !   :
 
 +
,   
,
, 	q  q ht  3c238 38l   BKKKKKKKKKKKK	 S~67'==(,,x||Lc-9:6LLLLLLLLLL  s>+;<=/ !)x/@/@(,, O ##%BC    
	9AA 
:!UNB UNp7 (LL(,,Q s>+;<=.b .b@r @$ $rA   