Ë
    *�£jd  ã                  óš  — d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	Z	ddl
mZmZmZ ddlZddlmZ ddlmZ ddlmc mZ dd	lmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& dd
l'm(Z(m)Z) ddl*m+Z+ ddl,m-Z- erddl.m/Z/ d.d„Z0d.d„Z1d.d„Z2d„ Z3d„ Z4 e4e2e1e0e(«      f	 	 	 d/d„Z5d„ Z6 e6e7«      Z8 e6e9«      Z: e;d„ d„  e<e«      D «       D «       «      Z=e=fd„Z> e;d„ e=D «       «      Z? e>ej€                  «      ZA e>ej„                  «      ZC e>ejˆ                  «      ZE e>ejŒ                  «      ZG e>ej�                  «      ZI e>ej”                  «      ZK e>ej˜                  «      ZM e>ejœ                  «      ZO e>ej                   «      ZQ e>ej¤                  «      ZS e>ej¨                  «      ZU e>ej                  «      ZV e>ej®                  «      ZX e;g d¢«      ZY e;g d¢«      ZZeCeAz  eSz  eUz  eVz  eXz  eGz  eZz  eYz
  Z[e?e[z
  eYz  Z\e[e\z  Z]de]› �Z^e]rJ e^«       ‚d0d„Z_ ed«      Z`d1d„Zad„ Zbe e%d œZcd!„ Zd eae[«       edec«       G d"„ d#ejÊ                  «      «       «       Zf e;g d$¢«      Zg e;eez   «      Zh eae[egz  eI e;g d%¢«      z  z
  «       G d&„ d'ef«      «       Zi eae[egz   e;d(g«      z  «       G d)„ d*ef«      «       Zj G d+„ d,«      Zkejeid-œZly)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                ó$   — | \  }}||dk(  rdfS |fS )a`  
    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      ú>C:\FundamentalWorkbench\vendor\pandas\core\computation\expr.pyÚ_rewrite_assignr)   7   s&   € ð �N€FˆFØ˜6 Sš=�4Ð4Ð4¨fÐ4Ð4ó    c                óž   — | \  }}|t         j                  k(  r2|dk(  rt         j                  dfS |dk(  rt         j                  dfS ||fS ||fS )aj  
    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   sY   € ð �N€FˆFØ”—‘ÒØ�SŠ=Ü—=‘= %Ð'Ð'Ø�sŠ]Ü—=‘= $Ð&Ð&Ø�vˆ~ÐØ�6ˆ>Ðr*   c                óp   — | \  }}|t         j                  k(  r|dk(  rt         j                  t        fS ||fS )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   s8   € ð( �N€FˆFØ”—‘Ò ¨3¢Ü�{‰{œIÐ%Ð%Ø�6ˆ>Ðr*   c                ó   ‡ ‡— ˆ ˆfd„S )z
    Compose 2 callables.
    c                 ó    •—  ‰ ‰| i |¤Ž«      S ©Nr#   )ÚargsÚkwargsÚfÚgs     €€r(   Ú<lambda>z_compose2.<locals>.<lambda>�   s   ø€ ¡1¡Q¨Ð%7°Ñ%7Ô#8r*   r#   )r<   r=   s   ``r(   Ú	_compose2r?   }   s   ù€ ô 9Ð8r*   c                 óL   — t        | «      dkD  sJ d«       ‚t        t        | «      S )z&
    Compose 2 or more callables.
    é   z.At least 2 callables must be passed to compose)Úlenr   r?   )Úfuncss    r(   Ú_composerD   „   s'   € ô ˆu‹:˜Š>ÐKÐKÓKˆ>Ü”)˜UÓ#Ð#r*   c                óv   ‡— t        ‰«      sJ d«       ‚t        j                  ˆfd„t        | «      D «       «      S )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  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr9   r#   )Ú.0Úxr<   s     €r(   Ú	<genexpr>z_preparse.<locals>.<genexpr>«   s   øè ø€ ð á(ˆAñ 	
ˆ!�Ù(ùs   ƒ)Úcallabler0   Ú
untokenizer   ©Úsourcer<   s    `r(   Ú	_preparserN   Œ   s<   ø€ ô< �AŒ;Ð,Ð,Ó,ˆ;Ü×Ñó ä  Ô(óó ð r*   c                ó   ‡ — ˆ fd„S )zO
    Factory for a type checking function of type ``t`` or tuple of types.
    c                ó0   •— t        | j                  ‰«      S r9   )Ú
isinstanceÚvalue)rH   Úts    €r(   r>   z_is_type.<locals>.<lambda>µ   s   ø€ ”Z §¡¨Ô+r*   r#   )rS   s   `r(   Ú_is_typerT   ±   s   ø€ ó ,Ð+r*   c              #  ót   K  — | ]0  }t        |t        «      rt        |t        j                  «      r|–— Œ2 y ­wr9   )rQ   ÚtypeÚ
issubclassÚastÚAST)rG   Únodes     r(   rI   rI   ½   s/   è ø€ ð á9ˆÜ�$œÔ¤*¨T´3·7±7Ô";ô 	Ù9ùs   ‚68c              #  ó<   K  — | ]  }t        t        |«      –— Œ y ­wr9   )ÚgetattrrX   )rG   Únames     r(   rI   rI   ¿   s   è ø€ Ð9±¨”œ˜d×#±ùs   ‚c                ó0   ‡ — ˆ fd„|D «       }t        |«      S )zE
    Filter out AST nodes that are subclasses of ``superclass``.
    c              3  óP   •K  — | ]  }t        |‰«      sŒ|j                  –— Œ y ­wr9   )rW   Ú__name__)rG   rZ   Ú
superclasss     €r(   rI   z _filter_nodes.<locals>.<genexpr>È   s   øè ø€ ÐV©I D¼ÀDÈ*Õ9U�$—-•-©Iùs   ƒ&•&)Ú	frozenset)ra   Ú	all_nodesÚ
node_namess   `  r(   Ú_filter_nodesre   Ä   s   ø€ ó W©IÓV€JÜ�ZÓ Ð r*   c              #  ó4   K  — | ]  }|j                   –— Œ y ­wr9   )r`   ©rG   rH   s     r(   rI   rI   Ì   s   è ø€ Ð;±
¨1˜AŸJ�J±
ùó   ‚)ÚAssignÚModuleÚExpr)ÚYieldÚGeneratorExpÚIfExpÚDictCompÚSetCompÚReprÚLambdaÚSetrY   ÚIsÚIsNotz$cannot both support and not support c                ó   ‡ — ˆ fd„}|S )zV
    Return a function that raises a NotImplementedError with a passed node name.
    c                ó"   •— t        d‰› d�«      ‚)NÚ'z' nodes are not implemented)ÚNotImplementedError)Úselfr:   r;   Ú	node_names      €r(   r<   z _node_not_implemented.<locals>.f
  s   ø€ Ü! A i [Ð0KÐ"LÓMÐMr*   r#   )r{   r<   s   ` r(   Ú_node_not_implementedr|     s   ø€ ô
Nð €Hr*   Ú_Tc                ó   ‡ — dˆ fd„}|S )z‹
    Decorator to disallow certain nodes from parsing. Raises a
    NotImplementedError instead.

    Returns
    -------
    callable
    c                óŠ   •— d| _         ‰D ]5  }t        |«      }d|› �}| xj                   |fz  c_         t        | ||«       Œ7 | S )Nr#   Úvisit_)Úunsupported_nodesr|   Úsetattr)ÚclsrZ   Ú
new_methodr]   Únodess       €r(   Ú
disallowedzdisallow.<locals>.disallowed   sP   ø€ à "ˆÔÛˆ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                ó   ‡ ‡— ˆ ˆfd„}|S )zw
    Return a function to create an op class with its symbol already passed.

    Returns
    -------
    callable
    c                ó$   •— t        ‰‰g|¢­i |¤ŽS )z’
        Return a partial function with an Op subclass with an operator already passed.

        Returns
        -------
        callable
        )r   )rz   rZ   r:   r;   Úop_classÚ	op_symbols       €€r(   r<   z_op_maker.<locals>.f7  s   ø€ ô �x Ð<¨TÒ<°VÑ<Ð<r*   r#   )rŒ   r�   r<   s   `` r(   Ú	_op_makerrŽ   .  s   ù€ õ=ð €Hr*   )ÚbinaryÚunaryc                ó   ‡ — ˆ fd„}|S )z9
    Decorator to add default implementation of ops.
    c                óÊ   •— ‰j                  «       D ]N  \  }}t        | |› d�«      }t        | |› d�«      }|D ]&  }||   }|€Œt        ||«      }t        | d|› �|«       Œ( ŒP | S )NÚ_opsÚ_op_nodes_mapr€   )Úitemsr\   rŽ   r‚   )	rƒ   Úop_attr_namerŒ   ÚopsÚops_mapÚopÚop_nodeÚmade_opÚ
op_classess	           €r(   r<   zadd_ops.<locals>.fL  s€   ø€ Ø&0×&6Ñ&6Ö&8Ñ"ˆL˜(Ü˜# , ¨tÐ4Ó5ˆCÜ˜c l ^°=Ð#AÓBˆGÛ�Ø! "™+�ØÑ&Ü'¨°"Ó5�GÜ˜C 6¨'¨Ð!3°WÕ=ñ	 ð '9ð ˆ
r*   r#   )rœ   r<   s   ` r(   Úadd_opsr�   G  s   ø€ ô
	ð €Hr*   c                  ó  — e Zd ZU dZeZded<   eZded<   e	e
z   ez   ZdZ e eeed¬«      «      ZeZdZ e eeed¬«      «      Zej,                  ej.                  ej0                  ej2                  ej.                  ej.                  ej2                  ej2                  iZd	ed
<   efd'd„Zd„ Zd„ Zd„ Zd„ Z d(d„Z!d„ Z"d„ Z#	 	 d)d„Z$d„ Z%d„ Z&d*d„Z'd*d„Z(d*d„Z)d*d„Z*d*d„Z+d*d„Z,e,Z-d„ Z.d*d„Z/d+d„Z0d „ Z1d!„ Z2d,d"„Z3d#„ Z4d$„ Z5d%„ Z6d&„ Z7y)-ÚBaseExprVisitorzÌ
    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                óJ   — || _         || _        || _        || _        d | _        y r9   )ÚenvÚengineÚparserÚ	preparserÚassigner)rz   r¼   r½   r¾   r¿   s        r(   Ú__init__zBaseExprVisitor.__init__‘  s%   € ØˆŒØˆŒØˆŒØ"ˆŒØˆ�r*   c                ód  — t        |t        «      r:| j                  |«      }	 t        j                  t        j
                  |«      «      }dt        |«      j                  › �}t        | |«      } ||fi |¤ŽS # t        $ r.}t        d„ |j                  «       D «       «      rd|_	        |‚d }~ww xY w)Nc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr9   r   rg   s     r(   rI   z(BaseExprVisitor.visit.<locals>.<genexpr>ž  s   è ø€ Ð;©]¨”y —|©]ùs   ‚z4Python keyword not valid identifier in numexpr queryr€   )rQ   Ústrr¿   rX   Úfix_missing_locationsÚparseÚSyntaxErrorÚanyÚsplitÚmsgrV   r`   r\   )rz   rZ   r;   ÚcleanÚeÚmethodÚvisitors          r(   ÚvisitzBaseExprVisitor.visit˜  sŸ   € Ü�dœCÔ Ø—N‘N 4Ó(ˆEðÜ×0Ñ0´·±¸5Ó1AÓB�ð œ$˜t›*×-Ñ-Ð.Ð/ˆÜ˜$ Ó'ˆÙ�tÑ&˜vÑ&Ð&øô ò ÜÑ;¨U¯[©[¬]Ó;Ô;ØR�A”EØ�ûðús   £(A8 Á8	B/Â)B*Â*B/c                óŒ   — t        |j                  «      dk7  rt        d«      ‚|j                  d   } | j                  |fi |¤ŽS )NrA   z#only a single expression is allowedr   )rB   ÚbodyrÇ   rÏ   )rz   rZ   r;   Úexprs       r(   Úvisit_ModulezBaseExprVisitor.visit_Module¦  sA   € Üˆt�y‰y‹>˜QÒÜÐCÓDÐDØ�y‰y˜‰|ˆØˆt�z‰z˜$Ñ) &Ñ)Ð)r*   c                ó<   —  | j                   |j                  fi |¤ŽS r9   ©rÏ   rR   ©rz   rZ   r;   s      r(   Ú
visit_ExprzBaseExprVisitor.visit_Expr¬  s   € Øˆt�z‰z˜$Ÿ*™*Ñ/¨Ñ/Ð/r*   c                óB  — |j                   }t        |«      }t        |«      rçt        |«      rÜ|| j                  v rÎt	        t
        ||f«      \  }}t	        t        ||f«      \  }}	|s|s|s|	r | j                  |   «       }|	rB| j                  j                  |j                  g«      }
| j                  |
| j                  «      }|rB| j                  j                  |j                  g«      }
| j                  |
| j                  «      }| j                  |«      }||||fS r9   )r™   rV   r   Úrewrite_mapÚmapÚ_is_listÚ_is_strr¼   Úadd_tmprR   r¡   rÏ   )rz   rZ   ÚleftÚrightÚop_instanceÚop_typeÚ	left_listÚ
right_listÚleft_strÚ	right_strr]   r™   s               r(   Ú_rewrite_membership_opz&BaseExprVisitor._rewrite_membership_op¯  sü   € à—g‘gˆÜ�{Ó#ˆô �4Œ=œW Uœ^°¸4×;KÑ;KÑ0KÜ$'¬°4¸°-Ó$@Ñ!ˆI�zÜ"%¤g°°e¨}Ó"=ÑˆH�iñ ™J©(±iØ7˜d×.Ñ.¨wÑ7Ó9�ñ Ø—x‘x×'Ñ'¨¯©¨Ó6�ØŸ™ t¨T¯X©XÓ6�áØ—x‘x×'Ñ'¨¯©¨Ó5�Ø—~‘~ d¨D¯H©HÓ5�à�Z‰Z˜Ó$ˆØ�;  eÐ+Ð+r*   Nc                óº   — |€| j                  |j                  d¬«      }|€| j                  |j                  d¬«      }| j                  |||«      \  }}}}||||fS )NrÞ   )Úsiderß   )rÏ   rÞ   rß   ræ   )rz   rZ   rÞ   rß   r™   rŒ   s         r(   Ú_maybe_transform_eq_nez&BaseExprVisitor._maybe_transform_eq_neÊ  sd   € Øˆ<Ø—:‘:˜dŸi™i¨f�:Ó5ˆDØˆ=Ø—J‘J˜tŸz™z°�JÓ8ˆEØ$(×$?Ñ$?ÀÀdÈEÓ$RÑ!ˆˆH�d˜EØ�8˜T 5Ð(Ð(r*   c                ól  — t        j                  t         j                  «      }|j                  r{t	        |d«      ro|j                  sc|j
                  |k(  rT| j                  j                  t        j                  |j                  «      «      }| j                  || j                  «      }|j                  r{t	        |d«      ro|j                  sc|j
                  |k(  rT| j                  j                  t        j                  |j                  «      «      }| j                  || j                  «      }||fS )NrR   )
ÚnpÚdtypeÚfloat32Ú	is_scalarÚhasattrÚreturn_typer¼   rÝ   rR   r¡   )rz   rÞ   rß   Úf32r]   s        r(   Ú_maybe_downcast_constantsz)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à�Uˆ{Ðr*   c                ó|   — |j                  | j                  | j                  | j                  | j                  |«      S r9   )Úevaluater¼   r½   r¾   r¡   )rz   ÚbinopÚeval_in_pythons      r(   Ú_maybe_evalzBaseExprVisitor._maybe_evalé  s0   € ð �~‰~Ø�H‰H�d—k‘k 4§;¡;°·±Àó
ð 	
r*   c           	     ót  —  |||«      }|j                   r3t        d|j                  › d|j                  › d|j                  › d�«      ‚| j                  dk7  rH|j                  t
        v rt        |dd«      st        |dd«      r| j                  || j                  «      S |j                  |v r| j                  ||«      S | j                  dk7  rit        |dd «      t        k(  s@t        t        |dd «      «      s*t        |dd «      t        k(  st        t        |dd «      «      r| j                  |||z   «      S |S )	Nz unsupported operand type(s) for z: 'z' and 'rx   ÚpytablesÚis_datetimeFrð   )Úhas_invalid_return_typeÚ	TypeErrorr™   rV   r½   r   r\   r÷   Ú
binary_opsÚobjectr   )rz   r™   rŒ   ÚlhsÚrhsrö   Úmaybe_eval_in_pythonÚress           r(   Ú_maybe_evaluate_binopz%BaseExprVisitor._maybe_evaluate_binopô  s(  € ñ ��c‹lˆà×&Ò&ÜØ2°3·6±6°(ð ;Ø—H‘H�:˜W S§X¡X J¨að1óð ð
 �;‰;˜*Ò$Ø�V‰V”|Ñ#¬°°]ÀEÔ(JÜ�s˜M¨5Ô1ð ×#Ñ# C¨¯©Ó9Ð9à�6‰6�^Ñ#à×#Ñ# C¨Ó8Ð8Ø�[‰[˜JÒ&ä˜˜]¨DÓ1´VÒ;Ü"¤7¨3°¸tÓ#DÔEÜ˜3 ¨tÓ4¼Ò>Ü"¤7¨3°¸tÓ#DÔEð ×'Ñ'¨¨^Ð>RÑ-RÓSÐSØˆ
r*   c                ó€   — | j                  |«      \  }}}}| j                  ||«      \  }}| j                  ||||«      S r9   )ré   rò   r  )rz   rZ   r;   r™   rŒ   rÞ   rß   s          r(   Úvisit_BinOpzBaseExprVisitor.visit_BinOp  sH   € Ø$(×$?Ñ$?ÀÓ$EÑ!ˆˆH�d˜EØ×4Ñ4°T¸5ÓA‰ˆˆeØ×)Ñ)¨"¨h¸¸eÓDÐDr*   c                ó~   — | j                  |j                  «      }| j                  |j                  «      } ||«      S r9   )rÏ   r™   Úoperand)rz   rZ   r;   r™   r  s        r(   Úvisit_UnaryOpzBaseExprVisitor.visit_UnaryOp!  s0   € Ø�Z‰Z˜Ÿ™Ó ˆØ—*‘*˜TŸ\™\Ó*ˆÙ�'‹{Ðr*   c                óR   —  | j                   |j                  | j                  fi |¤ŽS r9   )r¡   Úidr¼   rÖ   s      r(   Ú
visit_NamezBaseExprVisitor.visit_Name&  s"   € Øˆt�~‰~˜dŸg™g t§x¡xÑ:°6Ñ:Ð:r*   c                óN   — | j                  |j                  | j                  «      S r9   ©r    rR   r¼   rÖ   s      r(   Úvisit_NameConstantz"BaseExprVisitor.visit_NameConstant*  ó   € Ø�‰˜tŸz™z¨4¯8©8Ó4Ð4r*   c                óN   — | j                  |j                  | j                  «      S r9   r  rÖ   s      r(   Ú	visit_NumzBaseExprVisitor.visit_Num.  r  r*   c                óN   — | j                  |j                  | j                  «      S r9   r  rÖ   s      r(   Úvisit_ConstantzBaseExprVisitor.visit_Constant1  r  r*   c                ó„   — | j                   j                  |j                  «      }| j                  || j                   «      S r9   )r¼   rÝ   Úsr¡   )rz   rZ   r;   r]   s       r(   Ú	visit_StrzBaseExprVisitor.visit_Str5  s/   € Ø�x‰x×Ñ §¡Ó'ˆØ�~‰~˜d D§H¡HÓ-Ð-r*   c           	     óè   — | j                   j                  |j                  D �cg c]#  } | j                  |«      | j                   «      ‘Œ% c}«      }| j	                  || j                   «      S c c}w r9   )r¼   rÝ   ÚeltsrÏ   r¡   )rz   rZ   r;   rÌ   r]   s        r(   Ú
visit_ListzBaseExprVisitor.visit_List9  sW   € Ø�x‰x×ÑÀ$Ç)Â)Ó LÁ)¸Q  §¡¨A£¨t¯x©xÕ!8À)Ñ LÓMˆØ�~‰~˜d D§H¡HÓ-Ð-ùò !Ms   ¤(A/c                ó8   — | j                  |j                  «      S )zdf.index[4]rÕ   rÖ   s      r(   Úvisit_IndexzBaseExprVisitor.visit_Index?  s   € à�z‰z˜$Ÿ*™*Ó%Ð%r*   c                óÚ  — ddl m} | j                  |j                  «      }| j                  |j                  «      } ||| j
                  | j                  | j                  ¬«      }	 |j                  |   }| j
                  j                  |«      }	| j                  |	| j
                  ¬«      S # t        $ r2  ||| j
                  | j                  | j                  ¬«      }||   }Y Œrw xY w)Nr   )Úeval)Ú
local_dictr½   r¾   )r¼   )Úpandasr  rÏ   rR   Úslicer¼   r½   r¾   ÚAttributeErrorrÝ   r¡   )
rz   rZ   r;   Úpd_evalrR   ÚslobjÚresultÚvrÿ   r]   s
             r(   Úvisit_SubscriptzBaseExprVisitor.visit_SubscriptC  sÃ   € Ý*à—
‘
˜4Ÿ:™:Ó&ˆØ—
‘
˜4Ÿ:™:Ó&ˆÙØ˜dŸh™h¨t¯{©{À4Ç;Á;ô
ˆð	à—‘˜FÑ#ˆAð �x‰x×Ñ Ó"ˆØ�~‰~˜d¨¯©ˆ~Ó1Ð1øô ò 	áØ $§(¡(°4·;±;ÀtÇ{Á{ôˆCð �F‘ŠAð	ús   Á(B/ Â/8C*Ã)C*c                ó  — |j                   }|�| j                  |«      j                  }|j                  }|�| j                  |«      j                  }|j                  }|�| j                  |«      j                  }t        |||«      S )zdf.index[slice(4,6)])ÚlowerrÏ   rR   ÚupperÚstepr   )rz   rZ   r;   r(  r)  r*  s         r(   Úvisit_SlicezBaseExprVisitor.visit_SliceW  sz   € à—
‘
ˆØÐØ—J‘J˜uÓ%×+Ñ+ˆEØ—
‘
ˆØÐØ—J‘J˜uÓ%×+Ñ+ˆEØ�y‰yˆØÐØ—:‘:˜dÓ#×)Ñ)ˆDä�U˜E 4Ó(Ð(r*   c                ó  — t        |j                  «      dk7  rt        d«      ‚t        |j                  d   t        j
                  «      st        d«      ‚| j                  j                  €t        d«      ‚	  | j                  |j                  d   fi |¤Ž}t        |d|«      | _        | j                  €t        d«      ‚ | j                  |j                  fi |¤ŽS # t        $ r |j                  d   j                  }Y Œjw xY w)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

        rA   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)rB   ÚtargetsrÇ   rQ   rX   ÚNamer¼   ÚtargetÚ
ValueErrorrÏ   r   r
  r\   rÀ   rR   )rz   rZ   r;   rÀ   s       r(   Úvisit_AssignzBaseExprVisitor.visit_Assigne  së   € ô ˆt�|‰|Ó Ò!ÜÐCÓDÐDÜ˜$Ÿ,™, q™/¬3¯8©8Ô4ÜÐUÓVÐVØ�8‰8�?‰?Ð"ÜÐDÓEÐEð	*Ø!�t—z‘z $§,¡,¨q¡/Ñ<°VÑ<ˆHô   ¨&°(Ó;ˆŒØ�=‰=Ð ÜØRóð ð ˆt�z‰z˜$Ÿ*™*Ñ/¨Ñ/Ð/øô &ò 	*Ø—|‘| A‘×)Ñ)ŠHð	*ús   Á8 C Ã"DÄDc                ó6  — |j                   }|j                  }|j                  }t        |t        j
                  «      r€| j                  |«      }t        |d«      r|j                  }n || j                  «      }	 t        ||«      }| j                  j                  |«      }	| j                  |	| j                  «      S t        dt!        |«      j"                  › �«      ‚# t        $ r/ t        |t        j                  «      r|j                  |k(  r|cY S ‚ w xY w)NrR   zInvalid Attribute context )ÚattrrR   ÚctxrQ   rX   ÚLoadrÏ   rï   r¼   r\   rÝ   r¡   r!  r.  r
  r0  rV   r`   )
rz   rZ   r;   r3  rR   r4  Úvisited_valueÚresolvedr%  r]   s
             r(   Úvisit_AttributezBaseExprVisitor.visit_Attributeƒ  sè   € Ø�y‰yˆØ—
‘
ˆà�h‰hˆÜ�cœ3Ÿ8™8Ô$à ŸJ™J uÓ-ˆMÜ�} gÔ.Ø(×.Ñ.‘á(¨¯©Ó2�ðÜ˜H dÓ+�Ø—x‘x×'Ñ'¨Ó*�Ø—~‘~ d¨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  Ã 4DÄDc                ó*  — t        |j                  t        j                  «      r5|j                  j                  dk7  r| j                  |j                  «      }nKt        |j                  t        j                  «      st        d«      ‚	 | j                  |j                  «      }|€"t        d|j                  j                  › �«      ‚t        |d«      r|j                  }t        |t        «      rR|j                  D �cg c]  }| j                  |«      ‘Œ }}|j                   rt        d|j"                  › d�«      ‚ ||Ž S |j                  D �cg c]#  } | j                  |«      | j$                  «      ‘Œ% }}|j                   D ]„  }t        |t        j&                  «      s#t        d|j                  j                  › d�«      ‚|j(                  sŒM | j                  |j                  «      | j$                  «      ||j(                  <   Œ† | j$                  j+                   ||i |¤Ž«      }| j-                  || j$                  ¬	«      S # t        $ r3 	 t        |j                  j                  «      }n# t        $ r ‚ w xY wY �Œâw xY wc c}w c c}w )
NÚ__call__z"Only named functions are supportedzInvalid function call rR   z
Function "z$" does not support keyword argumentsz keyword error in function call 'rx   )r]   r¼   )rQ   ÚfuncrX   Ú	Attributer3  r8  r.  rü   rÏ   r   r   r
  r0  rï   rR   r:   Úkeywordsr]   r¼   ÚkeywordÚargrÝ   r¡   )	rz   rZ   rè   r;   r  r?  Únew_argsÚkeyr]   s	            r(   Ú
visit_Callz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ÜÐ@Ó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ô %Ø:¸4¿9¹9¿<¹<¸.ÈÐJóð ð —7“7Ø&; d§j¡j°·±Ó&;¸D¿H¹HÓ&E�F˜3Ÿ7™7’Oð %ð —8‘8×#Ñ#¡C¨Ð$<°VÑ$<Ó=ˆDØ—>‘> t°·±�>Ó:Ð:øôS *ò ðÜ" 4§9¡9§<¡<Ó0‘CøÜ!ò àðúò ðüò" >ùò Hs6   Â
I Ã?JÅ(JÉ	JÉI6É5JÉ6JÊJÊJc                ó   — |S r9   r#   )rz   r™   s     r(   Útranslate_InzBaseExprVisitor.translate_InÎ  s   € Øˆ	r*   c           
     ó0  — |j                   }|j                  }t        |«      dk(  rJ| j                  |d   «      }t	        j
                  ||j                  |d   ¬«      }| j                  |«      S |j                  }g }t        ||d¬«      D ]P  \  }}	| j                  t	        j                  |	g|| j                  |«      g¬«      «      }
|	}|j                  |
«       ŒR | j                  t	        j                  t	        j                  «       |¬«      «      S )NrA   r   )r™   rÞ   rß   Trµ   )ÚcomparatorsrÞ   r—   )r™   Úvalues)r—   rF  rB   rD  rX   r   rÞ   rÏ   ÚzipÚCompareÚappendÚBoolOpr¬   )rz   rZ   r;   r—   Úcompsr™   rõ   rÞ   rG  ÚcompÚnew_nodes              r(   Úvisit_Comparez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                óT   — t        |t        t        f«      r|S | j                  |«      S r9   )rQ   r   r   rÏ   )rz   Úbops     r(   Ú_try_visit_binopz BaseExprVisitor._try_visit_binopæ  s#   € Ü�cœB¤˜:Ô&ØˆJØ�z‰z˜#‹Ðr*   c                óB   ‡ ‡— ˆˆ fd„}‰j                   }t        ||«      S )Nc                ó´   •— ‰j                  | «      }‰j                  |«      }‰j                  ‰||«      \  }}}}‰j                  |‰j                  ||«      S r9   )rR  ré   r  r™   )rH   Úyrÿ   r   r™   rŒ   rZ   rz   s         €€r(   rÎ   z-BaseExprVisitor.visit_BoolOp.<locals>.visitorì  s[   ø€ Ø×'Ñ'¨Ó*ˆCØ×'Ñ'¨Ó*ˆCà%)×%@Ñ%@ÀÀsÈCÓ%PÑ"ˆB�˜#˜sØ×-Ñ-¨b°$·'±'¸3ÀÓDÐDr*   )rG  r   )rz   rZ   r;   rÎ   Úoperandss   ``   r(   Úvisit_BoolOpzBaseExprVisitor.visit_BoolOpë  s!   ù€ õ	Eð —;‘;ˆÜ�g˜xÓ(Ð(r*   ©rˆ   ÚNone)NN))Úinznot in)r"   z!=Ú<Ú>z<=z>=)rˆ   r   )rˆ   r   r9   )8r`   Ú
__module__Ú__qualname__Ú__doc__r   r    Ú__annotations__r   r¡   r   r   r   rý   Úbinary_op_nodesÚdictrH  Úbinary_op_nodes_mapr   Ú	unary_opsÚunary_op_nodesÚunary_op_nodes_maprX   r¦   r¨   r§   r©   rÙ   rN   rÁ   rÏ   rÓ   r×   ræ   ré   rò   r÷   r  r  r  r  r  r  r  r  r  Úvisit_Tupler  r&  r+  r1  r8  rB  rD  rO  rR  rW  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Ÿ   )ÚDictrK  r¨   r©   )rK  r<  r¨   r©   ÚTuplec                  óF   ‡ — e Zd Z ee eeee«      ¬«      f	 dˆ fd„Z	ˆ xZ
S )ÚPandasExprVisitor)r<   c                ó*   •— t         ‰| �  ||||«       y r9   ©ÚsuperrÁ   ©rz   r¼   r½   r¾   r¿   Ú	__class__s        €r(   rÁ   zPandasExprVisitor.__init__   s   ø€ ô 	‰Ñ˜˜f f¨iÕ8r*   rX  )r`   r]  r^  r   rN   rD   r6   r3   r   rÁ   Ú__classcell__©rp  s   @r(   rk  rk  û  s2   ø„ ñ ØÙ�Ð(9Ð;UÓVô
ð
9ð 
÷
9ñ 
9r*   rk  rº   c                  ó*   ‡ — e Zd Zdd„f	 dˆ fd„Zˆ xZS )ÚPythonExprVisitorc                ó   — | S r9   r#   rL   s     r(   r>   zPythonExprVisitor.<lambda>  s   € ÁFr*   c                ó,   •— t         ‰| �  ||||¬«       y )N)r¿   rm  ro  s        €r(   rÁ   zPythonExprVisitor.__init__  s   ø€ ô 	‰Ñ˜˜f f¸	ÐÕBr*   r9   rX  )r`   r]  r^  rÁ   rq  rr  s   @r(   rt  rt    s   ø„ ò .KðCà	÷Cñ Cr*   rt  c                  ó�   — e Zd ZU dZded<   ded<   ded<   	 	 	 	 d	 	 	 	 	 	 	 	 	 dd„Zed	„ «       Zd
„ Zdd„Z	dd„Z
d„ Zed„ «       Zy)rk   a  
    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s t        |dz   ¬«      | _        || _        || _        t        |   | j                  | j                  | j                  «      | _        | j                  «       | _        y )NrA   )Úlevel)	rÒ   r   r¼   r½   r¾   ÚPARSERSÚ_visitorrÆ   Úterms)rz   rÒ   r½   r¾   r¼   ry  s         r(   rÁ   zExpr.__init__&  s[   € ð ˆŒ	ØÒ0œ% e¨a¡iÔ0ˆŒØˆŒØˆŒÜ ™¨¯©°$·+±+¸t¿{¹{ÓKˆŒØ—Z‘Z“\ˆ�
r*   c                ó0   — t        | j                  dd «      S )NrÀ   )r\   r{  ©rz   s    r(   rÀ   zExpr.assigner5  s   € ä�t—}‘} j°$Ó7Ð7r*   c                ó8   — | j                  | j                  «      S r9   )r|  r¼   r~  s    r(   r:  zExpr.__call__9  s   € Ø�z‰z˜$Ÿ(™(Ó#Ð#r*   c                ó@   — t        j                  | j                  «      S r9   )r   Úpprint_thingr|  r~  s    r(   Ú__repr__zExpr.__repr__<  s   € Ü×$Ñ$ T§Z¡ZÓ0Ð0r*   c                ó,   — t        | j                  «      S r9   )rB   rÒ   r~  s    r(   Ú__len__zExpr.__len__?  s   € Ü�4—9‘9‹~Ðr*   c                óL   — | j                   j                  | j                  «      S )z&
        Parse an expression.
        )r{  rÏ   rÒ   r~  s    r(   rÆ   z
Expr.parseB  s   € ð �}‰}×"Ñ" 4§9¡9Ó-Ð-r*   c                óÊ   — t        | j                  «      r t        | j                  j                  g«      S t        d„ t	        j
                  | j                  «      D «       «      S )z1
        Get the names in an expression.
        c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr9   )r]   )rG   Úterms     r(   rI   zExpr.names.<locals>.<genexpr>O  s   è ø€ ÐGÑ/F t˜Ÿ�Ñ/Fùrh   )r   r|  rb   r]   ÚcomÚflattenr~  s    r(   Únamesz
Expr.namesH  sD   € ô
 �4—:‘:ÔÜ˜dŸj™jŸo™oÐ.Ó/Ð/ÜÑG¬s¯{©{¸4¿:¹:Ô/FÓGÓGÐGr*   )Únumexprr  Nr   )
r½   rÄ   r¾   rÄ   r¼   zScope | Nonery  Úintrˆ   rY  )rˆ   rÄ   )rˆ   r�  )r`   r]  r^  r_  r`  rÁ   ÚpropertyrÀ   r:  r‚  r„  rÆ   r‹  r#   r*   r(   rk   rk     s›   … ñ
ð 
ƒJØƒKØƒKð
  ØØ Øð"ð ð"ð ð	"ð
 ð"ð ð"ð 
ó"ð ñ8ó ð8ò$ó1óò.ð ñHó ñHr*   rk   )Úpythonr  )r%   útuple[int, str]rˆ   r�  )rM   rÄ   rˆ   rÄ   )r{   rÄ   rˆ   zCallable[..., None])r…   zset[str]rˆ   zCallable[[type[_T]], type[_T]])mr_  Ú
__future__r   rX   Ú	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?   rD   rN   rT   ÚlistrÛ   rÄ   rÜ   rb   ÚdirÚ
_all_nodesre   Ú_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_callsrk  rt  rk   rz  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*   