+
    xȇid                    V   R t ^ RIHt ^ RIt^ RIHtHt ^ RIHt ^ RI	t	^ RI
HtHtHt ^ RIt^ RIHt ^ RIHt ^ RIHu Ht ^ RIHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t& ^ R	I'H(t(H)t) ^ R
I*H+t+ ^ RI,H-t- ]'       d   ^ RI.H/t/ R R lt0R R lt1R R lt2R t3R t4]4! ]2]1]0](4      3R R llt5R t6]6! ]74      t8]6! ]94      t:];! R R ]<! ]4       4        4       4      t=]=3R lt>];! R ]= 4       4      t?]>! ]P                  4      tA]>! ]P                  4      tC]>! ]P                  4      tE]>! ]P                  4      tG]>! ]P                  4      tI]>! ]P                  4      tK]>! ]P                  4      tM]>! ]P                  4      tO]>! ]P                  4      tQ]>! ]P                  4      tS]>! ]P                  4      tU]>! ]P                  4      tV]>! ]P                  4      tX];! . R1O4      tY];! . R2O4      tZ]C]A,          ]S,          ]U,          ]V,          ]X,          ]G,          ]Z,          ]Y,
          t[]?][,
          ]Y,          t\][]\,          t]R]] 2t^]]'       d   Q ]^4       hR R lt_]! R 4      t`R! R" ltaR# tbR$] R%]%/tcR& td]a! ][4      ]d! ]c4       ! R' R(]P                  4      4       4       tf];! . R3O4      tg];! ]],           4      th]a! ][]g,          ]I];! . R4O4      ,          ,
          4       ! R) R*]f4      4       ti]a! ][]g,          ];! R+.4      ,          4       ! R, R-]f4      4       tj ! R. R4      tkR/]jR0]i/tlR# )5z
:func:`~pandas.eval` parsers.
)annotationsN)partialreduce	iskeyword)TYPE_CHECKINGClassVarTypeVar)UndefinedVariableError)is_string_dtype)ARITH_OPS_SYMSBOOL_OPS_SYMSCMP_OPS_SYMS	LOCAL_TAGMATHOPS
REDUCTIONSUNARY_OPS_SYMSBinOpConstantFuncNodeOpTermUnaryOpis_term)clean_backtick_quoted_tokstokenize_string)Scope)printing)Callablec                    V ^8  d   QhRRRR/#    tokztuple[int, str]return )formats   "l/Users/max/.openclaw/workspace/postharvest/venv/lib/python3.14/site-packages/pandas/core/computation/expr.py__annotate__r'   7   s     5 5 5_ 5    c                $    V w  rYR8X  d   R3# T3# )a4  
Rewrite the assignment operator for PyTables expressions that use ``=``
as a substitute for ``==``.

Parameters
----------
tok : tuple of int, str
    ints correspond to the all caps constants in the tokenize module

Returns
-------
tuple of int, str
    Either the input or token or the replacement values
===r$   r"   toknumtokvals   &  r&   _rewrite_assignr/   7   s"     NFS=444f44r(   c                    V ^8  d   QhRRRR/# r    r$   )r%   s   "r&   r'   r'   J   s      ?  r(   c                    V w  rV\         P                  8X  d6   VR8X  d   \         P                  R3# VR8X  d   \         P                  R3# W3# W3# )a>  
Replace ``&`` with ``and`` and ``|`` with ``or`` so that bitwise
precedence is changed to boolean precedence.

Parameters
----------
tok : tuple of int, str
    ints correspond to the all caps constants in the tokenize module

Returns
-------
tuple of int, str
    Either the input or token or the replacement values
&and|or)tokenizeOPNAMEr,   s   &  r&   _replace_booleansr9   J   sS     NFS===%''s]==$&&~>r(   c                    V ^8  d   QhRRRR/# r    r$   )r%   s   "r&   r'   r'   c   s       _ r(   c                t    V w  rV\         P                  8X  d   VR8X  d   \         P                  \        3# W3# )a  
Replace local variables with a syntactically valid name.

Parameters
----------
tok : tuple of int, str
    ints correspond to the all caps constants in the tokenize module

Returns
-------
tuple of int, str
    Either the input or token or the replacement values

Notes
-----
This is somewhat of a hack in that we rewrite a string such as ``'@a'`` as
``'__pd_eval_local_a'`` by telling the tokenizer that ``__pd_eval_local_``
is a ``tokenize.OP`` and to replace the ``'@'`` symbol with it.
@)r6   r7   r   r,   s   &  r&   _replace_localsr=   c   s4    ( NF3{{I%%>r(   c                   a a V V3R l# )z
Compose 2 callables.
c                     < S! S! V / VB 4      # Nr$   )argskwargsfgs   *,r&   <lambda>_compose2.<locals>.<lambda>   s    1Q%7%7#8r(   r$   )rC   rD   s   ffr&   	_compose2rG   }   s     98r(   c                 P    \        V 4      ^8  g   Q R4       h\        \        V 4      # )z
Compose 2 or more callables.
z.At least 2 callables must be passed to compose)lenr   rG   )funcss   *r&   _composerK      s'     u:>KKK>)U##r(   c                    V ^8  d   QhRRRR/# )r!   sourcestrr#   r$   )r%   s   "r&   r'   r'      s     " ""
 	"r(   c                   a \        S4      '       g   Q R4       h\        P                  ! V3R l\        V 4       4       4      # )a  
Compose a collection of tokenization functions.

Parameters
----------
source : str
    A Python source code string
f : callable
    This takes a tuple of (toknum, tokval) as its argument and returns a
    tuple with the same structure but possibly different elements. Defaults
    to the composition of ``_rewrite_assign``, ``_replace_booleans``, and
    ``_replace_locals``.

Returns
-------
str
    Valid Python source code

Notes
-----
The `f` parameter can be any callable that takes *and* returns input of the
form ``(toknum, tokval)``, where ``toknum`` is one of the constants from
the ``tokenize`` module and ``tokval`` is a string.
zf must be callablec              3  4   <"   T F  pS! V4      x  K  	  R # 5ir@   r$   ).0xrC   s   & r&   	<genexpr>_preparse.<locals>.<genexpr>   s      (A 	
!(s   )callabler6   
untokenizer   rM   rC   s   &fr&   	_preparserX      s>    < A;;,,,;  (  r(   c                   a  V 3R l# )zG
Factory for a type checking function of type ``t`` or tuple of types.
c                0   < \        V P                  S4      # r@   )
isinstancevalue)rR   ts   &r&   rE   _is_type.<locals>.<lambda>   s    Z+r(   r$   )r]   s   fr&   _is_typer_      s     ,+r(   c              #     "   T FA  p\        V\        4      '       g   K  \        V\        P                  4      '       g   K=  Vx  KC  	  R # 5ir@   )r[   type
issubclassastAST)rQ   nodes   & r&   rS   rS      s6      9$ 	",T377"; 	D9s   AA
Ac              #  B   "   T F  p\        \        V4      x  K  	  R # 5ir@   )getattrrc   )rQ   names   & r&   rS   rS      s     9d##s   c                2   a  V 3R lV 4       p\        V4      # )z=
Filter out AST nodes that are subclasses of ``superclass``.
c              3  d   <"   T F%  p\        VS4      '       g   K  VP                  x  K'  	  R # 5ir@   )rb   __name__)rQ   re   
superclasss   & r&   rS    _filter_nodes.<locals>.<genexpr>   s      VIDD*9U-$--Is   00)	frozenset)rl   	all_nodes
node_namess   f& r&   _filter_nodesrq      s     WIVJZ  r(   c              #  8   "   T F  qP                   x  K  	  R # 5ir@   )rk   rQ   rR   s   & r&   rS   rS      s     ;
1JJ
   Exprz$cannot both support and not support c                    V ^8  d   QhRRRR/# )r!   	node_namerN   r#   zCallable[..., None]r$   )r%   s   "r&   r'   r'     s      S -@ r(   c                   a  V 3R lpV# )zN
Return a function that raises a NotImplementedError with a passed node name.
c                "   < \        R S R24      h)'z' nodes are not implemented)NotImplementedError)selfrA   rB   rw   s   &*,r&   rC    _node_not_implemented.<locals>.f
  s    !Ai[0K"LMMr(   r$   )rw   rC   s   f r&   _node_not_implementedr~     s    
N Hr(   _Tc                    V ^8  d   QhRRRR/# )r!   nodeszset[str]r#   zCallable[[type[_T]], type[_T]]r$   )r%   s   "r&   r'   r'     s      H !? r(   c                   a  R V 3R llpV# )zs
Decorator to disallow certain nodes from parsing. Raises a
NotImplementedError instead.

Returns
-------
callable
c                    V ^8  d   QhRRRR/# )r!   clsztype[_T]r#   r$   )r%   s   "r&   r'   disallow.<locals>.__annotate__   s     	 	 	X 	r(   c                   < RV n         S F9  p\        V4      pR V 2pV ;P                   V3,          un         \        WV4       K;  	  V # )visit_r$   )unsupported_nodesr~   setattr)r   re   
new_methodrh   r   s   &   r&   
disalloweddisallow.<locals>.disallowed   sN     "D.t4JD6?D!!dW,!Cz*  
r(   r$   )r   r   s   f r&   disallowr     s    	 	 r(   c                   a a V V3R lpV# )zc
Return a function to create an op class with its symbol already passed.

Returns
-------
callable
c                $   < \        SS.VO5/ VB # )zj
Return a partial function with an Op subclass with an operator already passed.

Returns
-------
callable
)r   )r|   re   rA   rB   op_class	op_symbols   &&*,r&   rC   _op_maker.<locals>.f7  s     x<T<V<<r(   r$   )r   r   rC   s   ff r&   	_op_makerr   .  s    = Hr(   binaryunaryc                   a  V 3R lpV# )z1
Decorator to add default implementation of ops.
c                   < SP                  4        FS  w  r\        W R 24      p\        W R24      pV F,  pWE,          pVf   K  \        W%4      p\        V RV 2V4       K.  	  KU  	  V # )_ops_op_nodes_mapr   )itemsrg   r   r   )	r   op_attr_namer   opsops_mapopop_nodemade_op
op_classess	   &       r&   rC   add_ops.<locals>.fL  sv    &0&6&6&8"L#t45Cc^=#ABG!+&'5GC6'!3W=	  '9 
r(   r$   )r   rC   s   f r&   add_opsr   G  s    
	 Hr(   c                  T   ] tR tRt$ Rt]tR]R&   ]t	R]R&   ]
],           ],           tR0t]! ]! ]]RR7      4      t]tR1t]! ]! ]]RR7      4      t]P.                  ]P0                  ]P2                  ]P4                  ]P0                  ]P0                  ]P4                  ]P4                  /tR]R	&   ]3R
 R lltR tR tR t R t!R2R lt"R t#R t$R3R lt%R t&R t'R R lt(R R lt)R R lt*R R lt+R R  lt,R! R" lt-]-t.R# t/R$ R% lt0R& R' lt1R( t2R) t3R4R* lt4R+ t5R, t6R- t7R. t8R/t9R# )5BaseExprVisitoriZ  z
Custom ast walker. Parsers of other engines should subclass this class
if necessary.

Parameters
----------
env : Scope
engine : str
parser : str
preparser : callable
zClassVar[type[Term]]
const_type	term_typeTstrictztuple[str, ...]r   c                   V ^8  d   QhRR/# r!   r#   Noner$   )r%   s   "r&   r'   BaseExprVisitor.__annotate__  s      D r(   c                	D    Wn         W n        W0n        W@n        R V n        R # r@   )envengineparser	preparserassigner)r|   r   r   r   r   s   &&&&&r&   __init__BaseExprVisitor.__init__  s    "r(   c                	   \        V\        4      '       d=   V P                  V4      p \        P                  ! \        P
                  ! V4      4      pR\        V4      P                   2p\        W4      pV! V3/ VB #   \         de   p\        ;QJ d*    R  TP                  4        4       F  '       g   K   RM	  RM! R  TP                  4        4       4      '       d   RTn	        ThRp?ii ; i)c              3  8   "   T F  p\        V4      x  K  	  R # 5ir@   r   rs   s   & r&   rS   (BaseExprVisitor.visit.<locals>.<genexpr>  s     ;]y||]rt   TFz4Python keyword not valid identifier in numexpr queryNr   )r[   rN   r   rc   fix_missing_locationsparseSyntaxErroranysplitmsgra   rk   rg   )r|   re   rB   cleanemethodvisitors   &&,    r&   visitBaseExprVisitor.visit  s    dC  NN4(E0051AB $t*--./$'t&v&&  3;U[[];333;U[[];;;RAEs#   *A? ?C.
*C)7(C) 	C))C.c                	    \        VP                  4      ^8w  d   \        R4      hVP                  ^ ,          pV P                  ! V3/ VB # )   z#only a single expression is allowed)rI   bodyr   r   )r|   re   rB   exprs   &&, r&   visit_ModuleBaseExprVisitor.visit_Module  s?    tyy>QCDDyy|zz$)&))r(   c                	<    V P                   ! VP                  3/ VB # r@   r   r\   r|   re   rB   s   &&,r&   
visit_ExprBaseExprVisitor.visit_Expr  s    zz$**///r(   c                	   VP                   p\        V4      p\        V4      '       Ed   \        V4      '       Ed   WPP                  9   d   \	        \
        W#34      w  rg\	        \        W#34      w  rV'       g   V'       g   V'       g	   V	'       d   V P                  V,          ! 4       pV	'       dB   V P                  P                  VP                  .4      p
V P                  WP                  4      pV'       dB   V P                  P                  VP                  .4      p
V P                  WP                  4      pV P                  V4      pWW#3# r@   )r   ra   r   rewrite_mapmap_is_list_is_strr   add_tmpr\   r   r   )r|   re   leftrightop_instanceop_type	left_list
right_listleft_str	right_strrh   r   s   &&&&        r&   _rewrite_membership_op&BaseExprVisitor._rewrite_membership_op  s    gg{# 4==WU^^;K;K0K$'4-$@!I"%g}"=H J(i"..w79 xx''6tXX6xx''5~~dHH5ZZ$++r(   Nc                	    Vf   V P                  VP                  RR7      pVf   V P                  VP                  RR7      pV P                  WV4      w  rEr#WEW#3# )Nr   )sider   )r   r   r   r   )r|   re   r   r   r   r   s   &&&&  r&   _maybe_transform_eq_ne&BaseExprVisitor._maybe_transform_eq_ne  sZ    <::diif:5D=JJtzzJ8E$($?$?E$R!dT((r(   c                	   \         P                  ! \         P                  4      pVP                  '       d   \	        VR 4      '       dx   VP                  '       gf   VP
                  V8X  dU   V P                  P                  \         P                  ! VP                  4      4      pV P                  W@P                  4      pVP                  '       d   \	        VR 4      '       dx   VP                  '       gf   VP
                  V8X  dU   V P                  P                  \         P                  ! VP                  4      4      pV P                  W@P                  4      pW3# )r\   )
npdtypefloat32	is_scalarhasattrreturn_typer   r   r\   r   )r|   r   r   f32rh   s   &&&  r&   _maybe_downcast_constants)BaseExprVisitor._maybe_downcast_constants  s    hhrzz"NNNg&&OOO!!S( 88##BJJtzz$:;D>>$1DOOOw''NNN  C' 88##BJJu{{$;<DNN42E{r(   c                	|    VP                  V P                  V P                  V P                  V P                  V4      # r@   )evaluater   r   r   r   )r|   binopeval_in_pythons   &&&r&   _maybe_evalBaseExprVisitor._maybe_eval  s0     ~~HHdkk4;;
 	
r(   c           	     	   V! W44      pVP                   '       d4   \        R VP                   RVP                   RVP                   R24      hV P                  R8w  dW   VP                  \
        9   d   \        VRR4      '       g   \        VRR4      '       d   V P                  WpP                  4      # VP                  V9   d   V P                  Wu4      # V P                  R8w  d}   \        VRR4      \        8X  gO   \        \        VRR4      4      '       g3   \        VRR4      \        8X  g   \        \        VRR4      4      '       d   V P                  WuV,           4      # V# )	z unsupported operand type(s) for z: 'z' and 'rz   pytablesis_datetimeFr   N)has_invalid_return_type	TypeErrorr   ra   r   r   rg   r   
binary_opsobjectr   )r|   r   r   lhsrhsr   maybe_eval_in_pythonress   &&&&&&& r&   _maybe_evaluate_binop%BaseExprVisitor._maybe_evaluate_binop  s/    l&&&2366( ;HH:WSXXJa1 
 ;;*$VV|#]E(J(JsM511 ##C9966^###C88[[J&]D1V;"73t#DEE3t4>"73t#DEE ''>R-RSS
r(   c                	t    V P                  V4      w  r4rVV P                  WV4      w  rVV P                  W4WV4      # r@   )r   r   r   )r|   re   rB   r   r   r   r   s   &&,    r&   visit_BinOpBaseExprVisitor.visit_BinOp  s<    $($?$?$E!d44TA))"DDr(   c                	~    V P                  VP                  4      pV P                  VP                  4      pV! V4      # r@   )r   r   operand)r|   re   rB   r   r  s   &&,  r&   visit_UnaryOpBaseExprVisitor.visit_UnaryOp!  s0    ZZ **T\\*'{r(   c                   V ^8  d   QhRR/# r!   r#   r   r$   )r%   s   "r&   r'   r   &  s     ; ;D ;r(   c                	R    V P                   ! VP                  V P                  3/ VB # r@   )r   idr   r   s   &&,r&   
visit_NameBaseExprVisitor.visit_Name&  s     ~~dggtxx:6::r(   c                   V ^8  d   QhRR/# r	  r$   )r%   s   "r&   r'   r   *  s     5 5D 5r(   c                	N    V P                  VP                  V P                  4      # r@   r   r\   r   r   s   &&,r&   visit_NameConstant"BaseExprVisitor.visit_NameConstant*      tzz48844r(   c                   V ^8  d   QhRR/# r	  r$   )r%   s   "r&   r'   r   .  s     5 54 5r(   c                	N    V P                  VP                  V P                  4      # r@   r  r   s   &&,r&   	visit_NumBaseExprVisitor.visit_Num.  r  r(   c                   V ^8  d   QhRR/# r	  r$   )r%   s   "r&   r'   r   1  s     5 5 5r(   c                	N    V P                  VP                  V P                  4      # r@   r  r   s   &&,r&   visit_ConstantBaseExprVisitor.visit_Constant1  r  r(   c                   V ^8  d   QhRR/# r	  r$   )r%   s   "r&   r'   r   5  s     . .4 .r(   c                	    V P                   P                  VP                  4      pV P                  W0P                   4      # r@   )r   r   sr   )r|   re   rB   rh   s   &&, r&   	visit_StrBaseExprVisitor.visit_Str5  s-    xx'~~dHH--r(   c                   V ^8  d   QhRR/# r	  r$   )r%   s   "r&   r'   r   9  s     . .D .r(   c                	    V P                   P                  VP                   Uu. uF#  q0P                  V4      ! V P                   4      NK%  	  up4      pV P	                  W@P                   4      # u upi r@   )r   r   eltsr   r   )r|   re   rB   r   rh   s   &&,  r&   
visit_ListBaseExprVisitor.visit_List9  sQ    xx$)) L)QAtxx!8) LM~~dHH-- !Ms   )A/c                8    V P                  VP                  4      # )zdf.index[4]r   r   s   &&,r&   visit_IndexBaseExprVisitor.visit_Index?  s    zz$**%%r(   c                   V ^8  d   QhRR/# r	  r$   )r%   s   "r&   r'   r   C  s     2 2 2r(   c                	   ^ RI Hp V P                  VP                  4      pV P                  VP                  4      pV! WPP
                  V P                  V P                  R7      p VP                  V,          pV P
                  P                  V4      p	V P                  WP
                  R7      #   \         d5    T! Y@P
                  T P                  T P                  R7      pY,          p Lui ; i)    )eval)
local_dictr   r   )r   )pandasr,  r   r\   slicer   r   r   AttributeErrorr   r   )
r|   re   rB   pd_evalr\   slobjresultvr   rh   s
   &&,       r&   visit_SubscriptBaseExprVisitor.visit_SubscriptC  s    *

4::&

4::&hht{{4;;
	F#A xx"~~d~11  	((4;;t{{C A	s   'B1 1<C0/C0c                   V ^8  d   QhRR/# )r!   r#   r/  r$   )r%   s   "r&   r'   r   W  s     ) )U )r(   c                   VP                   pVe   V P                  V4      P                  pVP                  pVe   V P                  V4      P                  pVP                  pVe   V P                  V4      P                  p\        W4V4      # )zdf.index[slice(4,6)])lowerr   r\   upperstepr/  )r|   re   rB   r9  r:  r;  s   &&,   r&   visit_SliceBaseExprVisitor.visit_SliceW  sx    

JJu%++E

JJu%++Eyy::d#))DU4((r(   c                @   \        VP                  4      ^8w  d   \        R4      h\        VP                  ^ ,          \        P
                  4      '       g   \        R4      hV P                  P                  f   \        R4      h V P                  ! VP                  ^ ,          3/ VB p\        VRV4      V n        V P                  f   \        R4      hV P                  ! VP                  3/ VB #   \         d!    TP                  ^ ,          P                  p Lri ; i)z
support a single assignment node, like

c = a + b

set the assigner at the top level, must be a Name node which
might or might not exist in the resolvers

z#can only assign a single expressionz5left hand side of an assignment must be a single namez%cannot assign without a target objectrh   z@left hand side of an assignment must be a single resolvable name)rI   targetsr   r[   rc   Namer   target
ValueErrorr   r
   r  rg   r   r\   )r|   re   rB   r   s   &&, r&   visit_AssignBaseExprVisitor.visit_Assigne  s     t||!CDD$,,q/38844UVV88??"DEE	*zz$,,q/<V<H  &(;== R  zz$**/// & 	*||A))H	*s   $C2 2(DDc                	^   VP                   pVP                  pVP                  p\        V\        P
                  4      '       d   V P                  V4      p\        VR 4      '       d   VP                  pMV! V P                  4      p \        Ws4      pV P                  P                  V4      p	V P                  WP                  4      # \        R\!        V4      P"                   24      h  \         d8    \        T\        P                  4      '       d   TP                  T8X  d   Tu # h i ; i)r\   zInvalid Attribute context )attrr\   ctxr[   rc   Loadr   r   r   rg   r   r   r0  r@  r  rB  ra   rk   )
r|   re   rB   rF  r\   rG  visited_valueresolvedr4  rh   s
   &&,       r&   visit_AttributeBaseExprVisitor.visit_Attribute  s    yy

hhc388$$ JJu-M}g..(..(2H+xx''*~~dHH55 5d3i6H6H5IJKK " eSXX..588t3C#O	s   A C* *>D,*D,c                	   \        VP                  \        P                  4      '       d8   VP                  P                  R 8w  d   V P                  VP                  4      pMQ\        VP                  \        P                  4      '       g   \        R4      h V P                  VP                  4      pVf#   \        RVP                  P                   24      h\        VR4      '       d   VP                  p\        V\        4      '       d[   VP                   Uu. uF  qPP                  V4      NK  	  ppVP                   '       d   \        RVP"                   R24      hV! V!  # VP                   Uu. uF#  qPP                  V4      ! V P$                  4      NK%  	  ppVP                    F  p\        V\        P&                  4      '       g$   \        RVP                  P                   R24      hVP(                  '       g   KZ  V P                  VP                  4      ! V P$                  4      W7P(                  &   K  	  V P$                  P+                  V! V/ VB 4      pV P-                  WP$                  R7      #   \         d5     \        TP                  P                  4      p EL  \         d    h i ; ii ; iu upi u upi )	__call__z"Only named functions are supportedzInvalid function call r\   z
Function "z$" does not support keyword argumentsz keyword error in function call 'rz   )rh   r   )r[   funcrc   	AttributerF  rK  r@  r   r   r
   r   r  rB  r   r\   rA   keywordsrh   r   keywordargr   r   )	r|   re   r   rB   r   rS  new_argskeyrh   s	   &&&,     r&   
visit_CallBaseExprVisitor.visit_Call  s    dii//DIINNj4P&&tyy1CDIIsxx00@AAjj+ ;(7  3  ))Cc8$$3799=9C

39H=}}} 
*NO  >! >BYYGYc

31YHG}}!#s{{33 %:499<<.J  777&*jj&;DHH&EF77O % 88##C$<V$<=D>>t>::S * "499<<0C! 	" > Hs*   I> K 5)K>J=
J,,J99J=c                	    V# r@   r$   )r|   r   s   &&r&   translate_InBaseExprVisitor.translate_In  s    	r(   c           
     	H   VP                   pVP                  p\        V4      ^8X  dS   V P                  V^ ,          4      p\        P
                  ! WQP                  V^ ,          R7      pV P                  V4      # VP                  p. p\        W4RR7       FP  w  rYV P                  \        P                  ! V	.WpP                  V4      .R7      4      p
T	pVP                  V
4       KR  	  V P                  \        P                  ! \        P                  ! 4       VR7      4      # )r   )r   r   r   Tr   )comparatorsr   r   )r   values)r   r\  rI   rY  rc   r   r   r   zipCompareappendBoolOpAnd)r|   re   rB   r   compsr   r   r   r]  compnew_nodes   &&,        r&   visit_CompareBaseExprVisitor.visit_Compare  s    hh   u:?""3q6*BII))58DE::e$$ yyCt4HBzzT@Q@QRT@U?VWH DMM(# 5 zz#**	&ABBr(   c                	`    \        V\        \        34      '       d   V# V P                  V4      # r@   )r[   r   r   r   )r|   bops   &&r&   _try_visit_binop BaseExprVisitor._try_visit_binop  s&    cB:&&Jzz#r(   c                	B   a a VV 3R  lpSP                   p\        W44      # )c                   < SP                  V 4      pSP                  V4      pSP                  SW#4      w  rEr#SP                  VSP                  W#4      # r@   )rj  r   r   r   )rR   yr   r   r   r   re   r|   s   &&    r&   r   -BaseExprVisitor.visit_BoolOp.<locals>.visitor  sS    ''*C''*C%)%@%@s%P"B#--b$''3DDr(   )r]  r   )r|   re   rB   r   operandss   ff,  r&   visit_BoolOpBaseExprVisitor.visit_BoolOp  s    	E ;;g((r(   )r   r   r   r   r   )GtLtGtELtEEqNotEqInNotInBitAndBitOrrb  OrAddSubMultDivPowFloorDivMod)UAddUSubInvertNot)NN))inznot in)r+   z!=<>z<=z>=r@   ):rk   
__module____qualname____firstlineno____doc__r   r   __annotations__r   r   r   r   r   r   binary_op_nodesdictr^  binary_op_nodes_mapr   	unary_opsunary_op_nodesunary_op_nodes_maprc   rw  ry  rx  rz  r   rX   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r$  visit_Tupler'  r5  r<  rC  rK  rV  rY  rf  rj  rq  __static_attributes__r$   r(   r&   r   r   Z  sD   
 (0J$/&*I#*->JO* s:tLMI4Nc)^DIJ 			399		399	K '&6? '*0,6).	
&PE

;555.. K&2()0<L01;fC*
	)r(   r   c                  T   a  ] tR tRt]! ]]! ]]]	4      R7      3R V 3R lllt
RtV ;t# )PandasExprVisitori  )rC   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   PandasExprVisitor.__annotate__   s     
9 
9 

9r(   c                	(   < \         SV `  WW44       R # r@   superr   r|   r   r   r   r   	__class__s   &&&&&r&   r   PandasExprVisitor.__init__   s     	f8r(   r$   )rk   r  r  r  r   rX   rK   r=   r9   r   r   r  __classcell__r  s   @r&   r  r    s-     (9;UV

9 
9 
9r(   r  r  c                  :   a  ] tR tRtRR l3R V 3R llltRtV ;t# )PythonExprVisitori  c                	    V # r@   r$   rW   s   &&r&   rE   PythonExprVisitor.<lambda>  s    Fr(   c                   V ^8  d   QhRR/# r   r$   )r%   s   "r&   r'   PythonExprVisitor.__annotate__  s     C C	Cr(   c                	*   < \         SV `  WW4R 7       R# ))r   Nr  r  s   &&&&&r&   r   PythonExprVisitor.__init__  s     	fBr(   r$   r@   )rk   r  r  r  r   r  r  r  s   @r&   r  r    s     .KC C Cr(   r  c                      ] tR tRt$ RtR]R&   R]R&   R]R&   RR	 R
 llt]R 4       tR t	R R lt
R R ltR t]R 4       tRtR# )ru   i  z
Object encapsulating an expression.

Parameters
----------
expr : str
engine : str, optional, default 'numexpr'
parser : str, optional, default 'pandas'
env : Scope, optional, default None
level : int, optional, default 2
r   r   rN   r   r   Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r!   r   rN   r   r   zScope | Nonelevelintr#   r   r$   )r%   s   "r&   r'   Expr.__annotate__&  s>     " " " 	"
 " " 
"r(   c                	   Wn         T;'       g    \        V^,           R7      V n        W n        W0n        \
        V,          ! V P                  V P                  V P                  4      V n        V P                  4       V n        R# )r   )r  N)	r   r   r   r   r   PARSERS_visitorr   terms)r|   r   r   r   r   r  s   &&&&&&r&   r   Expr.__init__&  sX     	00%eai0$++t{{KZZ\
r(   c                	0    \        V P                  R R4      # )r   N)rg   r  r|   s   &r&   r   Expr.assigner5  s    t}}j$77r(   c                	8    V P                  V P                  4      # r@   )r  r   r  s   &r&   rN  Expr.__call__9  s    zz$((##r(   c                   V ^8  d   QhRR/# )r!   r#   rN   r$   )r%   s   "r&   r'   r  <  s     1 1# 1r(   c                	B    \         P                  ! V P                  4      # r@   )r   pprint_thingr  r  s   &r&   __repr__Expr.__repr__<  s    $$TZZ00r(   c                   V ^8  d   QhRR/# )r!   r#   r  r$   )r%   s   "r&   r'   r  ?  s       r(   c                	,    \        V P                  4      # r@   )rI   r   r  s   &r&   __len__Expr.__len__?  s    499~r(   c                L    V P                   P                  V P                  4      # )z
Parse an expression.
)r  r   r   r  s   &r&   r   
Expr.parseB  s     }}""499--r(   c                    \        V P                  4      '       d!   \        V P                  P                  .4      # \        R \        P
                  ! V P                  4       4       4      # )z!
Get the names in an expression.
c              3  8   "   T F  qP                   x  K  	  R # 5ir@   )rh   )rQ   terms   & r&   rS   Expr.names.<locals>.<genexpr>O  s     G/Ft/Frt   )r   r  rn   rh   comflattenr  s   &r&   names
Expr.namesH  sG    
 4::djjoo.//Gs{{4::/FGGGr(   )r  r   r   r   r   r  )numexprr.  Nr+  )rk   r  r  r  r  r  r   propertyr   rN  r  r  r   r  r  r$   r(   r&   ru   ru     s[    
 
JKK" 8 8$1. H Hr(   pythonr.  )AssignModuleru   )YieldGeneratorExpIfExpDictCompSetCompReprLambdaSetrd   IsIsNot)Dictra  ry  rz  )ra  rP  ry  rz  Tuple)mr  
__future__r   rc   	functoolsr   r   rR  r   r6   typingr   r   r	   numpyr   pandas.errorsr
   pandas.core.dtypes.commonr   pandas.core.commoncorecommonr  pandas.core.computation.opsr   r   r   r   r   r   r   r   r   r   r   r   r   r   pandas.core.computation.parsingr   r   pandas.core.computation.scoper   pandas.io.formatsr   collections.abcr   r/   r9   r=   rG   rK   rX   r_   listr   rN   r   rn   dir
_all_nodesrq   _all_node_namesmod
_mod_nodesstmt_stmt_nodesr   _expr_nodesexpr_context_expr_context_nodesboolop_boolop_nodesoperator_operator_nodesunaryop_unary_op_nodescmpop_cmp_op_nodescomprehension_comprehension_nodesexcepthandler_handler_nodes	arguments_arguments_nodes_keyword_nodesalias_alias_nodes_hacked_nodes_unsupported_expr_nodes_unsupported_nodes_base_supported_nodesintersection_msgr~   r   r   r   _op_classesr   NodeVisitorr   _python_not_supported_numexpr_supported_callsr  r  ru   r  r$   r(   r&   <module>r     sl   # 
     0 5         0 &(5&249$ *O=W"J, D>
3-  9C9 
 )3 ! ;
;;377#
CHH%CHH%#C$4$45 cjj)-,cii($S%6%67 s001 / s{{+SYY' 67 $ $   	
    	  )+==N !$99	-l^<   T]0, 1& 

X)coo X)  X)v ""CD $Z'%9:  
//y!PQQS9 9	9 

4
4y%7I
IJC C KC:H :Hz &2C
Dr(   