ó
    Ñ]jd  ã                  ó¾  • S r SSKJr  SSKrSSKJr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  SSKJs  Jr  SS	KJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&  SS
K'J(r(J)r)  SSK*J+r+  SSK,J-r-  \(       a  SSK.J/r/  S.S jr0S.S jr1S.S jr2S r3S r4\4" \2\1\0\(5      4   S/S jjr5S r6\6" \75      r8\6" \95      r:\;" S S \<" \5       5        5       5      r=\=4S jr>\;" S \= 5       5      r?\>" \R€                  5      rA\>" \R„                  5      rC\>" \Rˆ                  5      rE\>" \RŒ                  5      rG\>" \R�                  5      rI\>" \R”                  5      rK\>" \R˜                  5      rM\>" \Rœ                  5      rO\>" \R                   5      rQ\>" \R¤                  5      rS\>" \R¨                  5      rU\>" \R                  5      rV\>" \R®                  5      rX\;" / SQ5      rY\;" / SQ5      rZ\C\A-  \S-  \U-  \V-  \X-  \G-  \Z-  \Y-
  r[\?\[-
  \Y-  r\\[\\-  r]S\] 3r^\](       a   \^5       eS0S jr_\" S5      r`S1S jraS rb\ \%S .rcS! rd\a" \[5      \d" \c5       " S" S#\RÊ                  5      5       5       rf\;" / S$Q5      rg\;" \\-   5      rh\a" \[\g-  \I\;" / S%Q5      -  -
  5       " S& S'\f5      5       ri\a" \[\g-  \;" S(/5      -  5       " S) S*\f5      5       rj " S+ S,5      rk\j\iS-.rlg)2z
: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                ó"   • U u  pXS:X  a  S4$ U4$ )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
Ú=ú==© ©ÚtokÚtoknumÚtokvals      ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/core/computation/expr.pyÚ_rewrite_assignr)   7   s"   € ð �N€FØ S›=�4Ð4Ð4¨fÐ4Ð4ó    c                óž   • U u  pU[         R                  :X  a3  US:X  a  [         R                  S4$ US:X  a  [         R                  S4$ X4$ X4$ )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_booleansr3   J   sS   € ð �N€FØ”—‘ÓØ�S‹=Ü—=‘= %Ð'Ð'Ø�s‹]Ü—=‘= $Ð&Ð&Øˆ~ÐØˆ>Ðr*   c                óp   • U u  pU[         R                  :X  a  US:X  a  [         R                  [        4$ X4$ )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.
Ú@)r0   r1   r   r$   s      r(   Ú_replace_localsr6   c   s4   € ð( �N€FØ”—‘Ó ¨3£Ü�{‰{œIÐ%Ð%Øˆ>Ðr*   c                ó   ^ ^• U U4S j$ )z
Compose 2 callables.
c                 ó    >• T" T" U 0 UD65      $ ©Nr#   )ÚargsÚkwargsÚfÚgs     €€r(   Ú<lambda>Ú_compose2.<locals>.<lambda>�   s   ø€ ¡1¡Q¨Ð%7°Ñ%7Ô#8r*   r#   )r<   r=   s   ``r(   Ú	_compose2r@   }   s   ù€ õ 9Ð8r*   c                 óN   • [        U 5      S:”  d   S5       e[        [        U 5      $ )z
Compose 2 or more callables.
é   z.At least 2 callables must be passed to compose)Úlenr   r@   )Úfuncss    r(   Ú_composerE   „   s'   € ô ˆu‹:˜‹>ÐKÐKÓKˆ>Ü”)˜UÓ#Ð#r*   c                ó„   ^• [        T5      (       d   S5       e[        R                  " U4S j[        U 5       5       5      $ )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   >#   • U  H  nT" U5      v •  M     g 7fr9   r#   )Ú.0Úxr<   s     €r(   Ú	<genexpr>Ú_preparse.<locals>.<genexpr>«   s   øé € ð â(ˆAñ 	
ˆ!�ˆÚ(ùs   ƒ)Úcallabler0   Ú
untokenizer   ©Úsourcer<   s    `r(   Ú	_preparserP   Œ   s>   ø€ ô< �A�;‰;Ð,Ð,Ó,ˆ;Ü×Òô ä  Ô(óó ð r*   c                ó   ^ • U 4S j$ )zG
Factory for a type checking function of type ``t`` or tuple of types.
c                ó0   >• [        U R                  T5      $ r9   )Ú
isinstanceÚvalue)rI   Úts    €r(   r>   Ú_is_type.<locals>.<lambda>µ   s   ø€ ”Z §¡¨Ô+r*   r#   )rU   s   `r(   Ú_is_typerW   ±   s   ø€ ô ,Ð+r*   c              #  ó–   #   • U  H?  n[        U[        5      (       d  M  [        U[        R                  5      (       d  M;  Uv •  MA     g 7fr9   )rS   ÚtypeÚ
issubclassÚastÚAST)rH   Únodes     r(   rJ   rJ   ½   s6   é € ð â9ˆÜ�$œ×ó 	ä",¨T´3·7±7×";÷ 	�DÚ9ùs   ‚A	ŸA	Á 	A	c              #  óB   #   • U  H  n[        [        U5      v •  M     g 7fr9   )Úgetattrr[   )rH   Únames     r(   rJ   rJ   ¿   s   é € Ð9²¨”œ˜d×#Ð#²ùs   ‚c                ó2   ^ • U 4S jU 5       n[        U5      $ )z=
Filter out AST nodes that are subclasses of ``superclass``.
c              3  ób   >#   • U  H$  n[        UT5      (       d  M  UR                  v •  M&     g 7fr9   )rZ   Ú__name__)rH   r]   Ú
superclasss     €r(   rJ   Ú _filter_nodes.<locals>.<genexpr>È   s    øé € ÐVªI D¼ÀDÈ*×9U“-�$—-–-ªIùs   ƒ/œ/)Ú	frozenset)rd   Ú	all_nodesÚ
node_namess   `  r(   Ú_filter_nodesri   Ä   s   ø€ ô W©IÓV€JÜ�ZÓ Ð r*   c              #  ó8   #   • U  H  oR                   v •  M     g 7fr9   )rc   ©rH   rI   s     r(   rJ   rJ   Ì   s   é € Ð;²
¨1ŸJžJ²
ùó   ‚)ÚAssignÚModuleÚExpr)ÚYieldÚGeneratorExpÚIfExpÚDictCompÚSetCompÚReprÚLambdaÚSetr\   ÚIsÚIsNotz$cannot both support and not support c                ó   ^ • U 4S jnU$ )zN
Return a function that raises a NotImplementedError with a passed node name.
c                ó"   >• [        ST S35      e)NÚ'z' nodes are not implemented)ÚNotImplementedError)Úselfr:   r;   Ú	node_names      €r(   r<   Ú _node_not_implemented.<locals>.f
  s   ø€ Ü! A i [Ð0KÐ"LÓMÐMr*   r#   )r   r<   s   ` r(   Ú_node_not_implementedr�     s   ø€ õ
Nð €Hr*   Ú_Tc                ó   ^ • SU 4S jjnU$ )zs
Decorator to disallow certain nodes from parsing. Raises a
NotImplementedError instead.

Returns
-------
callable
c                óŒ   >• SU l         T H5  n[        U5      nSU 3nU =R                   U4-  sl         [        XU5        M7     U $ )Nr#   Úvisit_)Úunsupported_nodesr�   Úsetattr)Úclsr]   Ú
new_methodr`   Únodess       €r(   Ú
disallowedÚdisallow.<locals>.disallowed   sN   ø€ à "ˆÔÛˆDÜ.¨tÓ4ˆJØ˜D˜6�?ˆDà×!Ò! d WÑ,Õ!Ü�C˜zÖ*ñ ð ˆ
r*   )rˆ   útype[_T]Úreturnr�   r#   )rŠ   r‹   s   ` r(   Údisallowr�     s   ø€ ÷	ð Ðr*   c                ó   ^ ^• U U4S jnU$ )zc
Return a function to create an op class with its symbol already passed.

Returns
-------
callable
c                ó$   >• [        TT/UQ70 UD6$ )zj
Return a partial function with an Op subclass with an operator already passed.

Returns
-------
callable
)r   )r~   r]   r:   r;   Úop_classÚ	op_symbols       €€r(   r<   Ú_op_maker.<locals>.f7  s   ø€ ô �x Ð<¨TÒ<°VÑ<Ð<r*   r#   )r’   r“   r<   s   `` r(   Ú	_op_makerr•   .  s   ù€ ö=ð €Hr*   )ÚbinaryÚunaryc                ó   ^ • U 4S jnU$ )z1
Decorator to add default implementation of ops.
c                óÌ   >• TR                  5        HN  u  p[        X S35      n[        X S35      nU H'  nXE   nUc  M  [        X%5      n[        U SU 3U5        M)     MP     U $ )NÚ_opsÚ_op_nodes_mapr…   )Úitemsr_   r•   r‡   )	rˆ   Úop_attr_namer’   ÚopsÚops_mapÚopÚop_nodeÚmade_opÚ
op_classess	           €r(   r<   Úadd_ops.<locals>.fL  sv   ø€ Ø&0×&6Ñ&6Ö&8Ñ"ˆLÜ˜# ¨tÐ4Ó5ˆCÜ˜c ^°=Ð#AÓBˆGÛ�Ø!™+�ØÓ&Ü'¨Ó5�GÜ˜C 6¨'¨Ð!3°WÖ=ó	 ñ '9ð ˆ
r*   r#   )r£   r<   s   ` r(   Úadd_opsr¥   G  s   ø€ õ
	ð €Hr*   c                  ó(  • \ rS rSr% Sr\rS\S'   \r	S\S'   \
\-   \-   rSr\" \" \\SS95      r\rS	r\" \" \\SS95      r\R.                  \R0                  \R2                  \R4                  \R0                  \R0                  \R4                  \R4                  0rS
\S'   \4S)S jjrS rS rS r S r!S*S jr"S r#S r$  S+S jr%S r&S r'S,S jr(S,S jr)S,S jr*S,S jr+S,S jr,S,S jr-\-r.S r/S,S jr0S-S  jr1S! r2S" r3S.S# jr4S$ r5S% r6S& r7S' r8S(r9g)/Ú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_type)ÚGtÚLtÚGtEÚLtEÚEqÚNotEqÚInÚNotInÚBitAndÚBitOrÚAndÚOrÚAddÚSubÚMultÚDivÚPowÚFloorDivÚModT©Ústrict)ÚUAddÚUSubÚInvertÚNotztuple[str, ...]r†   c                óB   • Xl         X l        X0l        X@l        S U l        g r9   )ÚenvÚengineÚparserÚ	preparserÚassigner)r~   rÄ   rÅ   rÆ   rÇ   s        r(   Ú__init__ÚBaseExprVisitor.__init__‘  s   € ØŒØŒØŒØ"ŒØˆ�r*   c                ó|  • [        U[        5      (       a<  U R                  U5      n [        R                  " [        R
                  " U5      5      nS[        U5      R                   3n[        X5      nU" U40 UD6$ ! [         a3  n[        S UR                  5        5       5      (       a  SUl	        UeS nAff = f)Nc              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr9   r   rk   s     r(   rJ   Ú(BaseExprVisitor.visit.<locals>.<genexpr>ž  s   é € Ð;ª]¨”y —|�|ª]ùrl   z4Python keyword not valid identifier in numexpr queryr…   )rS   ÚstrrÇ   r[   Úfix_missing_locationsÚparseÚSyntaxErrorÚanyÚsplitÚmsgrY   rc   r_   )r~   r]   r;   ÚcleanÚeÚmethodÚvisitors          r(   ÚvisitÚBaseExprVisitor.visit˜  s£   € Ü�dœC× Ñ Ø—N‘N 4Ó(ˆEðÜ×0Ò0´·²¸5Ó1AÓB�ð œ$˜t›*×-Ñ-Ð.Ð/ˆÜ˜$Ó'ˆÙ�tÑ&˜vÑ&Ð&øô ó ÜÑ;¨U¯[©[¬]Ó;×;Ñ;ØR�A”EØ�ûðús   ¨*A> Á>
B;Â.B6Â6B;c                óŽ   • [        UR                  5      S:w  a  [        S5      eUR                  S   nU R                  " U40 UD6$ )NrB   z#only a single expression is allowedr   )rC   ÚbodyrÑ   rÙ   )r~   r]   r;   Úexprs       r(   Úvisit_ModuleÚBaseExprVisitor.visit_Module¦  s?   € Üˆt�y‰y‹>˜QÓÜÐCÓDÐDØ�y‰y˜‰|ˆØ�zŠz˜$Ñ) &Ñ)Ð)r*   c                ó<   • U R                   " UR                  40 UD6$ r9   ©rÙ   rT   ©r~   r]   r;   s      r(   Ú
visit_ExprÚBaseExprVisitor.visit_Expr¬  s   € Ø�zŠz˜$Ÿ*™*Ñ/¨Ñ/Ð/r*   c                ó†  • UR                   n[        U5      n[        U5      (       Ga  [        U5      (       aõ  XPR                  ;   aæ  [	        [
        X#45      u  pg[	        [        X#45      u  p‰U(       d  U(       d  U(       d  U	(       a  U R                  U   " 5       nU	(       aA  U R                  R                  UR                  /5      n
U R                  X R                  5      nU(       aA  U R                  R                  UR                  /5      n
U R                  X R                  5      nU R                  U5      nX´X#4$ r9   )r    rY   r   Úrewrite_mapÚmapÚ_is_listÚ_is_strrÄ   Úadd_tmprT   r©   rÙ   )r~   r]   ÚleftÚrightÚop_instanceÚop_typeÚ	left_listÚ
right_listÚleft_strÚ	right_strr`   r    s               r(   Ú_rewrite_membership_opÚ&BaseExprVisitor._rewrite_membership_op¯  sì   € à—g‘gˆÜ�{Ó#ˆô �4�=Š=œW UŸ^™^°×;KÑ;KÓ0KÜ$'¬°4°-Ó$@Ñ!ˆIÜ"%¤g°¨}Ó"=ÑˆHö žJ®(¶iØ"×.Ñ.¨wÒ7Ó9�ö Ø—x‘x×'Ñ'¨¯©¨Ó6�ØŸ™ t¯X©XÓ6�æØ—x‘x×'Ñ'¨¯©¨Ó5�Ø—~‘~ d¯H©HÓ5�à�Z‰Z˜Ó$ˆØ Ð+Ð+r*   Nc                ó¨   • Uc  U R                  UR                  SS9nUc  U R                  UR                  SS9nU R                  XU5      u  pEp#XEX#4$ )Nrë   )Úsiderì   )rÙ   rë   rì   ró   )r~   r]   rë   rì   r    r’   s         r(   Ú_maybe_transform_eq_neÚ&BaseExprVisitor._maybe_transform_eq_neÊ  sZ   € Ø‰<Ø—:‘:˜dŸi™i¨f�:Ð5ˆDØ‰=Ø—J‘J˜tŸz™z°�JÐ8ˆEØ$(×$?Ñ$?ÀÈEÓ$RÑ!ˆ�dØ˜TÐ(Ð(r*   c                ó¬  • [         R                  " [         R                  5      nUR                  (       a†  [	        US5      (       au  UR                  (       dd  UR
                  U:X  aT  U R                  R                  [         R                  " UR                  5      5      nU R                  X@R                  5      nUR                  (       a†  [	        US5      (       au  UR                  (       dd  UR
                  U:X  aT  U R                  R                  [         R                  " UR                  5      5      nU R                  X@R                  5      nX4$ )NrT   )
ÚnpÚdtypeÚfloat32Ú	is_scalarÚhasattrÚreturn_typerÄ   rê   rT   r©   )r~   rë   rì   Úf32r`   s        r(   Ú_maybe_downcast_constantsÚ)BaseExprVisitor._maybe_downcast_constantsÒ  sØ   € Ü�hŠh”r—z‘zÓ"ˆà�N�NÜ˜˜g×&Ñ&Ø—O—OØ×!Ñ! SÓ(ð —8‘8×#Ñ#¤B§J¢J¨t¯z©zÓ$:Ó;ˆDØ—>‘> $¯©Ó1ˆDà�O�OÜ˜˜w×'Ñ'Ø—N—NØ× Ñ  CÓ'ð —8‘8×#Ñ#¤B§J¢J¨u¯{©{Ó$;Ó<ˆDØ—N‘N 4¯©Ó2ˆEàˆ{Ðr*   c                ó|   • UR                  U R                  U R                  U R                  U R                  U5      $ r9   )ÚevaluaterÄ   rÅ   rÆ   r©   )r~   ÚbinopÚeval_in_pythons      r(   Ú_maybe_evalÚBaseExprVisitor._maybe_evalé  s0   € ð �~‰~Ø�H‰H�d—k‘k 4§;¡;°·±Àó
ð 	
r*   c           	     ó®  • U" X45      nUR                   (       a3  [        SUR                   SUR                   SUR                   S35      eU R                  S:w  aS  UR                  [
        ;   a  [        USS5      (       d  [        USS5      (       a  U R                  XpR                  5      $ UR                  U;   a  U R                  Xu5      $ U R                  S:w  at  [        USS 5      [        :X  dK  [        [        USS 5      5      (       d0  [        USS 5      [        :X  d  [        [        USS 5      5      (       a  U R                  XuU-   5      $ U$ )	Nz unsupported operand type(s) for z: 'z' and 'r|   ÚpytablesÚis_datetimeFrÿ   )Úhas_invalid_return_typeÚ	TypeErrorr    rY   rÅ   r   r_   r  Ú
binary_opsÚobjectr   )r~   r    r’   ÚlhsÚrhsr  Úmaybe_eval_in_pythonÚress           r(   Ú_maybe_evaluate_binopÚ%BaseExprVisitor._maybe_evaluate_binopô  s,  € ñ �‹lˆà×&×&ÜØ2°3·6±6°(ð ;Ø—H‘H�:˜W S§X¡X J¨að1óð ð
 �;‰;˜*Ó$Ø�V‰V”|Ó#¬°°]ÀE×(JÑ(JÜ�s˜M¨5×1Ñ1ð ×#Ñ# C¯©Ó9Ð9à�6‰6�^Ó#à×#Ñ# CÓ8Ð8Ø�[‰[˜JÓ&ä˜˜]¨DÓ1´VÓ;Ü"¤7¨3°¸tÓ#D×EÑEÜ˜3 ¨tÓ4¼Ó>Ü"¤7¨3°¸tÓ#D×EÑEð ×'Ñ'¨Ð>RÑ-RÓSÐSØˆ
r*   c                ót   • U R                  U5      u  p4pVU R                  XV5      u  pVU R                  X4XV5      $ r9   )r÷   r  r  )r~   r]   r;   r    r’   rë   rì   s          r(   Úvisit_BinOpÚBaseExprVisitor.visit_BinOp  s<   € Ø$(×$?Ñ$?ÀÓ$EÑ!ˆ�dØ×4Ñ4°TÓA‰ˆØ×)Ñ)¨"¸ÓDÐDr*   c                ó~   • U R                  UR                  5      nU R                  UR                  5      nU" U5      $ r9   )rÙ   r    Úoperand)r~   r]   r;   r    r  s        r(   Úvisit_UnaryOpÚBaseExprVisitor.visit_UnaryOp!  s0   € Ø�Z‰Z˜Ÿ™Ó ˆØ—*‘*˜TŸ\™\Ó*ˆÙ�'‹{Ðr*   c                óR   • U R                   " UR                  U R                  40 UD6$ r9   )r©   ÚidrÄ   râ   s      r(   Ú
visit_NameÚBaseExprVisitor.visit_Name&  s    € Ø�~Š~˜dŸg™g t§x¡xÑ:°6Ñ:Ð:r*   c                óN   • U R                  UR                  U R                  5      $ r9   ©r¨   rT   rÄ   râ   s      r(   Úvisit_NameConstantÚ"BaseExprVisitor.visit_NameConstant*  ó   € Ø�‰˜tŸz™z¨4¯8©8Ó4Ð4r*   c                óN   • U R                  UR                  U R                  5      $ r9   r"  râ   s      r(   Ú	visit_NumÚBaseExprVisitor.visit_Num.  r%  r*   c                óN   • U R                  UR                  U R                  5      $ r9   r"  râ   s      r(   Úvisit_ConstantÚBaseExprVisitor.visit_Constant1  r%  r*   c                ó‚   • U R                   R                  UR                  5      nU R                  X0R                   5      $ r9   )rÄ   rê   Úsr©   )r~   r]   r;   r`   s       r(   Ú	visit_StrÚBaseExprVisitor.visit_Str5  s-   € Ø�x‰x×Ñ §¡Ó'ˆØ�~‰~˜d§H¡HÓ-Ð-r*   c                óê   • U R                   R                  UR                   Vs/ s H#  o0R                  U5      " U R                   5      PM%     sn5      nU R	                  X@R                   5      $ s  snf r9   )rÄ   rê   ÚeltsrÙ   r©   )r~   r]   r;   rÖ   r`   s        r(   Ú
visit_ListÚBaseExprVisitor.visit_List9  sQ   € Ø�x‰x×ÑÀ$Ç)Â)Ó LÂ)¸Q§¡¨A¤¨t¯x©xÖ!8Á)Ñ LÓMˆØ�~‰~˜d§H¡HÓ-Ð-ùò !Ms   ¤*A0c                ó8   • U R                  UR                  5      $ )zdf.index[4]rá   râ   s      r(   Úvisit_IndexÚBaseExprVisitor.visit_Index?  s   € à�z‰z˜$Ÿ*™*Ó%Ð%r*   c                óÂ  • SSK Jn  U R                  UR                  5      nU R                  UR                  5      nU" XPR
                  U R                  U R                  S9n UR                  U   nU R
                  R                  U5      n	U R                  X�R
                  S9$ ! [         a-    U" X@R
                  U R                  U R                  S9nX†   n Njf = f)Nr   )Úeval)Ú
local_dictrÅ   rÆ   )rÄ   )Úpandasr8  rÙ   rT   ÚslicerÄ   rÅ   rÆ   ÚAttributeErrorrê   r©   )
r~   r]   r;   Úpd_evalrT   ÚslobjÚresultÚvr  r`   s
             r(   Úvisit_SubscriptÚBaseExprVisitor.visit_SubscriptC  s»   € Ý*à—
‘
˜4Ÿ:™:Ó&ˆØ—
‘
˜4Ÿ:™:Ó&ˆÙØŸh™h¨t¯{©{À4Ç;Á;ñ
ˆð	à—‘˜FÑ#ˆAð �x‰x×Ñ Ó"ˆØ�~‰~˜d¯©ˆ~Ð1Ð1øô ó 	áØ§(¡(°4·;±;ÀtÇ{Á{ñˆCð ‘ŠAð	ús   Á$B' Â'4CÃCc                ó  • UR                   nUb  U R                  U5      R                  nUR                  nUb  U R                  U5      R                  nUR                  nUb  U R                  U5      R                  n[        X4U5      $ )zdf.index[slice(4,6)])ÚlowerrÙ   rT   ÚupperÚstepr;  )r~   r]   r;   rD  rE  rF  s         r(   Úvisit_SliceÚBaseExprVisitor.visit_SliceW  sx   € à—
‘
ˆØÑØ—J‘J˜uÓ%×+Ñ+ˆEØ—
‘
ˆØÑØ—J‘J˜uÓ%×+Ñ+ˆEØ�y‰yˆØÑØ—:‘:˜dÓ#×)Ñ)ˆDä�U 4Ó(Ð(r*   c                ó  • [        UR                  5      S:w  a  [        S5      e[        UR                  S   [        R
                  5      (       d  [        S5      eU R                  R                  c  [        S5      e U R                  " UR                  S   40 UD6n[        USU5      U l        U R                  c  [        S5      eU R                  " UR                  40 UD6$ ! [         a    UR                  S   R                  n Nlf = f)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

rB   z#can only assign a single expressionr   z5left hand side of an assignment must be a single namez%cannot assign without a target objectr`   z@left hand side of an assignment must be a single resolvable name)rC   ÚtargetsrÑ   rS   r[   ÚNamerÄ   ÚtargetÚ
ValueErrorrÙ   r   r  r_   rÈ   rT   )r~   r]   r;   rÈ   s       r(   Úvisit_AssignÚBaseExprVisitor.visit_Assigne  sê   € ô ˆt�|‰|Ó Ó!ÜÐCÓDÐDÜ˜$Ÿ,™, q™/¬3¯8©8×4Ñ4ÜÐUÓVÐVØ�8‰8�?‰?Ñ"ÜÐDÓEÐEð	*Ø—z’z $§,¡,¨q¡/Ñ<°VÑ<ˆHô   ¨&°(Ó;ˆŒØ�=‰=Ñ ÜØRóð ð �zŠz˜$Ÿ*™*Ñ/¨Ñ/Ð/øô &ó 	*Ø—|‘| A‘×)Ñ)ŠHð	*ús   Á? C& Ã&#DÄDc                óT  • UR                   nUR                  nUR                  n[        U[        R
                  5      (       aƒ  U R                  U5      n[        US5      (       a  UR                  nOU" U R                  5      n [        Xs5      nU R                  R                  U5      n	U R                  X�R                  5      $ [        S[!        U5      R"                   35      e! [         a5    [        U[        R                  5      (       a  UR                  U:X  a  Us $ e f = f)NrT   zInvalid Attribute context )ÚattrrT   ÚctxrS   r[   ÚLoadrÙ   rþ   rÄ   r_   rê   r©   r<  rK  r  rM  rY   rc   )
r~   r]   r;   rQ  rT   rR  Úvisited_valueÚresolvedr@  r`   s
             r(   Úvisit_AttributeÚBaseExprVisitor.visit_Attributeƒ  sí   € Ø�y‰yˆØ—
‘
ˆà�h‰hˆÜ�cœ3Ÿ8™8×$Ñ$à ŸJ™J uÓ-ˆMÜ�} g×.Ñ.Ø(×.Ñ.‘á(¨¯©Ó2�ðÜ˜HÓ+�Ø—x‘x×'Ñ'¨Ó*�Ø—~‘~ d¯H©HÓ5Ð5ô Ð5´d¸3³i×6HÑ6HÐ5IÐJÓKÐKøô "ó ä˜e¤S§X¡X×.Ñ.°5·8±8¸tÓ3CØ#’OØð	ús   ÂA C( Ã(;D'Ä%D'c                óz  • [        UR                  [        R                  5      (       a6  UR                  R                  S:w  a  U R                  UR                  5      nOP[        UR                  [        R                  5      (       d  [        S5      e U R                  UR                  5      nUc"  [        SUR                  R                   35      e[        US5      (       a  UR                  n[        U[        5      (       aY  UR                   Vs/ s H  oPR                  U5      PM     nnUR                   (       a  [        SUR"                   S35      eU" U6 $ UR                   Vs/ s H#  oPR                  U5      " U R$                  5      PM%     nnUR                    H�  n[        U[        R&                  5      (       d#  [        SUR                  R                   S35      eUR(                  (       d  MX  U R                  UR                  5      " U R$                  5      X7R(                  '   M‘     U R$                  R+                  U" U0 UD65      nU R-                  X€R$                  S	9$ ! [         a3     [        UR                  R                  5      n GNð! [         a    e f = ff = fs  snf s  snf )
NÚ__call__z"Only named functions are supportedzInvalid function call rT   z
Function "z$" does not support keyword argumentsz keyword error in function call 'r|   )r`   rÄ   )rS   Úfuncr[   Ú	AttributerQ  rV  rK  r  rÙ   r   r   r  rM  rþ   rT   r:   Úkeywordsr`   rÄ   ÚkeywordÚargrê   r©   )	r~   r]   rö   r;   r  r^  Únew_argsÚkeyr`   s	            r(   Ú
visit_CallÚBaseExprVisitor.visit_Call›  s  € Ü�d—i‘i¤§¡×/Ñ/°D·I±I·N±NÀjÓ4PØ×&Ñ& t§y¡yÓ1‰CÜ˜DŸI™I¤s§x¡x×0Ñ0ÜÐ@ÓAÐAðØ—j‘j §¡Ó+�ð ‰;äØ(¨¯©¯©¨Ð7óð ô �3˜× Ñ Ø—)‘)ˆCä�cœ8×$Ñ$Ø37·9²9Ó=²9¨CŸ
™
 3ž±9ˆHÐ=à�}�}ÜØ  §¡ 
Ð*NÐOóð ñ ˜�>Ð!ð >B¿YºYÓGºY°cŸ
™
 3œ¨¯©Ö1¹YˆHÐGà—}”}�Ü! #¤s§{¡{×3Ñ3ô %Ø:¸4¿9¹9¿<¹<¸.ÈÐJóð ð —7—7‘7Ø&*§j¡j°·±Ô&;¸D¿H¹HÓ&E�FŸ7™7“Oñ %ð —8‘8×#Ñ#¡C¨Ð$<°VÑ$<Ó=ˆDØ—>‘> t·±�>Ð:Ð:øôS *ó ðÜ" 4§9¡9§<¡<Ó0“CøÜ!ó àðúð	üò" >ùò Hs*   ÂI3 ÄJ3Å.*J8É3
J0É>J Ê J,Ê,J0c                ó   • U$ r9   r#   )r~   r    s     r(   Útranslate_InÚBaseExprVisitor.translate_InÎ  s   € Øˆ	r*   c           
     ó  • UR                   nUR                  n[        U5      S:X  aG  U R                  US   5      n[        R
                  " XQR                  US   S9nU R                  U5      $ UR                  n/ n[        X4SS9 HM  u  pYU R                  [        R                  " U	/XpR                  U5      /S95      n
U	nUR                  U
5        MO     U R                  [        R                  " [        R                  " 5       US95      $ )NrB   r   )r    rë   rì   Tr½   )Úcomparatorsrë   rž   )r    Úvalues)rž   rg  rC   rd  r[   r   rë   rÙ   ÚzipÚCompareÚappendÚBoolOpr´   )r~   r]   r;   rž   Úcompsr    r  rë   rh  ÚcompÚnew_nodes              r(   Úvisit_CompareÚBaseExprVisitor.visit_CompareÑ  sã   € Ø�h‰hˆØ× Ñ ˆô ˆu‹:˜‹?Ø×"Ñ" 3 q¡6Ó*ˆBÜ—I’I ¯)©)¸5À¹8ÑDˆEØ—:‘:˜eÓ$Ð$ð �y‰yˆØˆÜ˜C¨tÔ4‰HˆBØ—z‘zÜ—’¨¨°T×@QÑ@QÐRTÓ@UÐ?VÑWóˆHð ˆDØ�M‰M˜(Ö#ñ 5ð �z‰zœ#Ÿ*š*¬¯ª«	¸&ÑAÓBÐBr*   c                ó^   • [        U[        [        45      (       a  U$ U R                  U5      $ r9   )rS   r   r   rÙ   )r~   Úbops     r(   Ú_try_visit_binopÚ BaseExprVisitor._try_visit_binopæ  s&   € Ü�cœB¤˜:×&Ñ&ØˆJØ�z‰z˜#‹Ðr*   c                óB   ^ ^• UU 4S jnTR                   n[        X45      $ )Nc                ó¬   >• TR                  U 5      nTR                  U5      nTR                  TX#5      u  pEp#TR                  UTR                  X#5      $ r9   )rt  r÷   r  r    )rI   Úyr  r  r    r’   r]   r~   s         €€r(   rØ   Ú-BaseExprVisitor.visit_BoolOp.<locals>.visitorì  sS   ø€ Ø×'Ñ'¨Ó*ˆCØ×'Ñ'¨Ó*ˆCà%)×%@Ñ%@ÀÀsÓ%PÑ"ˆB˜#Ø×-Ñ-¨b°$·'±'¸3ÓDÐDr*   )rh  r   )r~   r]   r;   rØ   Úoperandss   ``   r(   Úvisit_BoolOpÚBaseExprVisitor.visit_BoolOpë  s   ù€ ö	Eð —;‘;ˆÜ�gÓ(Ð(r*   )rÈ   rÅ   rÄ   rÆ   rÇ   ©rŽ   ÚNone)NN))Úinznot in)r"   z!=Ú<Ú>z<=z>=)rŽ   r   )rŽ   r;  r9   ):rc   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r¨   Ú__annotations__r   r©   r   r   r   r  Úbinary_op_nodesÚdictri  Úbinary_op_nodes_mapr   Ú	unary_opsÚunary_op_nodesÚunary_op_nodes_mapr[   r®   r°   r¯   r±   ræ   rP   rÉ   rÙ   rÞ   rã   ró   r÷   r  r  r  r  r  r  r#  r'  r*  r.  r2  Úvisit_Tupler5  rA  rG  rN  rV  ra  rd  rp  rt  r{  Ú__static_attributes__r#   r*   r(   r§   r§   Z  sL  ‡ ñ
ð (0€JÐ$Ó/Ø&*€IÐ#Ó*à Ñ-°Ñ>€Jð€Oñ* ™s :¨ÀtÑLÓMÐà€IØ4€NÙ™c )¨^ÀDÑIÓJÐð 	�‰�—‘Ø�	‰	�3—9‘9Ø�‰�—‘Ø�	‰	�3—9‘9ð	€Kð 'Ó&à6?ö ò'ò*ò0ò,ô6)òò.	
ð" (Ø?ô&òPEò
ô
;ô5ô5ô5ô.ô.ð €Kò&ô2ô()ò0ò<Lô01;òfòCò*õ
	)r*   r§   )ÚDictrl  r°   r±   )rl  r[  r°   r±   ÚTuplec                  óN   ^ • \ rS rSr\" \\" \\\	5      S94 SU 4S jjjr
SrU =r$ )ÚPandasExprVisitoriû  )r<   c                ó&   >• [         TU ]  XX45        g r9   ©ÚsuperrÉ   ©r~   rÄ   rÅ   rÆ   rÇ   Ú	__class__s        €r(   rÉ   ÚPandasExprVisitor.__init__   s   ø€ ô 	‰Ñ˜ fÕ8r*   r#   r}  )rc   r‚  rƒ  r„  r   rP   rE   r6   r3   r   rÉ   rŽ  Ú__classcell__©r—  s   @r(   r’  r’  û  s2   ø† ñ ØÙ�Ð(9Ð;UÓVñ
ð
9ð 
÷
9ö 
9r*   r’  rÂ   c                  ó:   ^ • \ rS rSrSS j4 SU 4S jjjrSrU =r$ )ÚPythonExprVisitori  c                ó   • U $ r9   r#   rN   s     r(   r>   ÚPythonExprVisitor.<lambda>  s   € ÁFr*   c                ó"   >• [         TU ]  XX4S9  g )N)rÇ   r”  r–  s        €r(   rÉ   ÚPythonExprVisitor.__init__  s   ø€ ô 	‰Ñ˜ fÐÒBr*   r#   r9   r}  )rc   r‚  rƒ  r„  rÉ   rŽ  r™  rš  s   @r(   rœ  rœ    s   ø† ó .KðCà	÷Cö Cr*   rœ  c                  ó    • \ rS rSr% SrS\S'   S\S'   S\S'       S         SS	 jjr\S
 5       rS r	SS jr
SS jrS r\S 5       rSrg)ro   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Ä   rÎ   rÅ   rÆ   Nc                óî   • Xl         U=(       d    [        US-   S9U l        X l        X0l        [
        U   " U R                  U R                  U R                  5      U l        U R                  5       U l        g )NrB   )Úlevel)	rÝ   r   rÄ   rÅ   rÆ   ÚPARSERSÚ_visitorrÐ   Úterms)r~   rÝ   rÅ   rÆ   rÄ   r£  s         r(   rÉ   ÚExpr.__init__&  sU   € ð Œ	Ø×0œ% e¨a¡iÑ0ˆŒØŒØŒÜ š¨¯©°$·+±+¸t¿{¹{ÓKˆŒØ—Z‘Z“\ˆ�
r*   c                ó0   • [        U R                  SS 5      $ )NrÈ   )r_   r¥  ©r~   s    r(   rÈ   ÚExpr.assigner5  s   € ä�t—}‘} j°$Ó7Ð7r*   c                ó8   • U R                  U R                  5      $ r9   )r¦  rÄ   r©  s    r(   rY  ÚExpr.__call__9  s   € Ø�z‰z˜$Ÿ(™(Ó#Ð#r*   c                óB   • [         R                  " U R                  5      $ r9   )r   Úpprint_thingr¦  r©  s    r(   Ú__repr__ÚExpr.__repr__<  s   € Ü×$Ò$ T§Z¡ZÓ0Ð0r*   c                ó,   • [        U R                  5      $ r9   )rC   rÝ   r©  s    r(   Ú__len__ÚExpr.__len__?  s   € Ü�4—9‘9‹~Ðr*   c                óL   • U R                   R                  U R                  5      $ )z
Parse an expression.
)r¥  rÙ   rÝ   r©  s    r(   rÐ   Ú
Expr.parseB  s   € ð �}‰}×"Ñ" 4§9¡9Ó-Ð-r*   c                óÖ   • [        U R                  5      (       a   [        U R                  R                  /5      $ [        S [        R
                  " U R                  5       5       5      $ )z!
Get the names in an expression.
c              3  ó8   #   • U  H  oR                   v •  M     g 7fr9   )r`   )rH   Úterms     r(   rJ   ÚExpr.names.<locals>.<genexpr>O  s   é € ÐGÒ/F tŸžÒ/Fùrl   )r   r¦  rf   r`   ÚcomÚflattenr©  s    r(   ÚnamesÚ
Expr.namesH  sG   € ô
 �4—:‘:×ÑÜ˜dŸj™jŸo™oÐ.Ó/Ð/ÜÑG¬s¯{ª{¸4¿:¹:Ô/FÓGÓGÐGr*   )r¥  rÅ   rÄ   rÝ   rÆ   r¦  )Únumexprr:  Nr   )
rÅ   rÎ   rÆ   rÎ   rÄ   zScope | Noner£  ÚintrŽ   r~  )rŽ   rÎ   )rŽ   r¿  )rc   r‚  rƒ  r„  r…  r†  rÉ   ÚpropertyrÈ   rY  r¯  r²  rÐ   r¼  rŽ  r#   r*   r(   ro   ro     s›   ‡ ñ
ð 
ƒJØƒKØƒKð
  ØØ Øð"ð ð"ð ð	"ð
 ð"ð ð"ð 
õ"ð ñ8ó ð8ò$ô1ôò.ð ñHó óHr*   ro   )Úpythonr:  )r%   útuple[int, str]rŽ   rÂ  )rO   rÎ   rŽ   rÎ   )r   rÎ   rŽ   zCallable[..., None])rŠ   zset[str]rŽ   zCallable[[type[_T]], type[_T]])mr…  Ú
__future__r   r[   Ú	functoolsr   r   r]  r   r0   Ú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)   r3   r6   r@   rE   rP   rW   Úlistrè   rÎ   ré   rf   ÚdirÚ
_all_nodesri   Ú_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œ  ro   r¤  r#   r*   r(   Ú<module>r÷     su  ðñõ #ã 
÷õ Û ÷ñ ó å 0å 5ç  Ð  ÷÷ ÷ ÷ ÷ õ 0å &æÝ(ô5ô&ô2ò49ò$ñ ØÐ*¨OÐ=Wóð"Øð"ð
 	õ"òJ,ñ �D‹>€Ù
�3‹-€ñ ñ á9±°C´Ô9óó €
ð )3ô !ñ Ñ;±
Ó;Ó;€Ù˜3Ÿ7™7Ó#€
Ù˜CŸH™HÓ%€Ù˜CŸH™HÓ%€Ù# C×$4Ñ$4Ó5Ð Ù˜cŸj™jÓ)€Ù §¡Ó-€Ù §¡Ó,€Ù˜cŸi™iÓ(€Ù$ S×%6Ñ%6Ó7Ð Ù˜s×0Ñ0Ó1€Ù  §¡Ó/Ð Ù˜sŸ{™{Ó+€Ù˜SŸY™YÓ'€ñ Ò6Ó7€ñ $òóÐ ð$ Øñàñð ñð ñ	ð
 ñð ñð ñð ñ	Ð ð )Ð+=Ñ=ÀÑNÐ Ø!Ð$9Ñ9€Ø	-¨l¨^Ð<€ÞÐ ˜Ó Ðôñ ˆTƒ]€ôò0ð, ¨Ñ1€òñ& 
Ð
ÓÙˆÓôX)�c—o‘oó X)ó ó ðX)ñv "Ò"CÓDÐ Ù$ Z°'Ñ%9Ó:Ð ñ 
ØÐ/Ñ/Ø‘yÒ!PÓQÑQñSóô9˜ó 9ó	ð9ñ 
Ð
Ð4Ñ
4±yÀ%ÀÓ7IÑ
IÓJôC˜ó Có KðC÷:Hñ :Hðz 'Ð2CÑ
D�r*   