
    I j                       % S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	J
r
  SSKJrJr  SSKJr  \(       a  SS	KJr  \" \\-   5      rSS
 jr " S S\R*                  S9r " S S\5      r " S S\5      r\\S.rS\S'   g)z)
Engine classes for :func:`~pandas.eval`
    )annotationsN)TYPE_CHECKING)NumExprClobberingError)align_termsreconstruct_object)MATHOPS
REDUCTIONS)printing)Exprc                    U R                   nU[        -  nU(       a=  SR                  U Vs/ s H  n[        U5      PM     sn5      n[	        SU  SU S35      egs  snf )zm
Attempt to prevent foot-shooting in a helpful way.

Parameters
----------
expr : Expr
    Terms can contain
z, zVariables in expression "z" overlap with builtins: ()N)names_ne_builtinsjoinreprr   )exprr   overlapxss        p/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pandas/core/computation/engines.py_check_ne_builtin_clashr      sc     JJEl"GII01tAw01$'v-Gs!L
 	
 0s   Ac                  r    \ rS rSrSrSrSS jrSS jrSS jr\	SS j5       r
\R                  S 5       rS	rg
)AbstractEngine0   z/Object serving as a base class for all engines.Fc                :    Xl         S U l        S U l        S U l        g N)r   aligned_axesresult_typeresult_name)selfr   s     r   __init__AbstractEngine.__init__5   s    	     c                B    [         R                  " U R                  5      $ )zW
Convert an expression for evaluation.

Defaults to return the expression as a string.
)r
   pprint_thingr   r    s    r   convertAbstractEngine.convert;   s     $$TYY//r#   c                >   U R                   (       d2  [        U R                  R                  5      u  U l        U l        U l        U R                  5       n[        U R                  UU R
                  U R                  R                  R                  U R                  5      $ )z
Run the engine on the expression.

This method performs alignment which is necessary no matter what engine
is being used, thus its implementation is in the base class.

Returns
-------
object
    The result of the passed expression.
)
_is_alignedr   r   termsr   r   r   	_evaluater   return_type)r    ress     r   evaluateAbstractEngine.evaluateC   s}     DO		EADd/1A
 nn!IIOO''
 	
r#   c                H    U R                   S L=(       a    U R                  S L$ r   )r   r   r&   s    r   r*   AbstractEngine._is_aligned^   s#      ,M1A1A1MMr#   c                    g)z
Return an evaluated expression.

Parameters
----------
env : Scope
    The local and global environment in which to evaluate an
    expression.

Notes
-----
Must be implemented by subclasses.
N r&   s    r   r,   AbstractEngine._evaluateb   s    r#   )r   r   r   r   NreturnNone)r7   str)r7   object)r7   bool)__name__
__module____qualname____firstlineno____doc__has_neg_fracr!   r'   r/   propertyr*   abcabstractmethodr,   __static_attributes__r4   r#   r   r   r   0   sI    9L 0
6 N N 	 r#   r   )	metaclassc                  "    \ rS rSrSrSrS rSrg)NumExprEngines   zNumExpr engine classTc                    SS K nU R                  5       nU R                  R                  nUR                  n[        U R                  5        UR                  X$S9$ )Nr   )
local_dict)numexprr'   r   env
full_scoper   r/   )r    ner   rM   scopes        r   r,   NumExprEngine._evaluatex   sE     LLNiimm		*{{1{//r#   r4   N)r<   r=   r>   r?   r@   rA   r,   rE   r4   r#   r   rH   rH   s   s    L	0r#   rH   c                  ,    \ rS rSrSrSrS rSS jrSrg)	PythonEngine   zG
Evaluate an expression in Python space.

Mostly for testing purposes.
Fc                "    U R                  5       $ r   )r   r&   s    r   r/   PythonEngine.evaluate   s    yy{r#   c                    g r   r4   r&   s    r   r,   PythonEngine._evaluate   s    r#   r4   Nr6   )	r<   r=   r>   r?   r@   rA   r/   r,   rE   r4   r#   r   rS   rS      s     Lr#   rS   )rL   pythonzdict[str, type[AbstractEngine]]ENGINES)r   r   r7   r8   )r@   
__future__r   rC   typingr   pandas.errorsr   pandas.core.computation.alignr   r   pandas.core.computation.opsr   r	   pandas.io.formatsr
   pandas.core.computation.exprr   	frozensetr   r   ABCMetar   rH   rS   rZ   __annotations__r4   r#   r   <module>re      s    # 
   0
 '1:-.
&@s{{ @F0N 0"> " ,	( r#   