
    Pi                       U d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZmZ ddlmZ erdd	lmZ  eeez             ZddZ G d dej                  Z G d de          Z G d de          ZeedZded<   dS )z)
Engine classes for :func:`~pandas.eval`
    )annotationsN)TYPE_CHECKING)NumExprClobberingError)align_termsreconstruct_object)MATHOPS
REDUCTIONS)printing)Exprexprr   returnNonec                    | j         }|t          z  }|r5d                    d |D                       }t          d|  d| d          dS )z
    Attempt to prevent foot-shooting in a helpful way.

    Parameters
    ----------
    expr : Expr
        Terms can contain
    z, c                ,    g | ]}t          |          S  )repr).0xs     s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/core/computation/engines.py
<listcomp>z+_check_ne_builtin_clash.<locals>.<listcomp>*   s    0001tAww000    zVariables in expression "z" overlap with builtins: ()N)names_ne_builtinsjoinr   )r   r   overlapss       r   _check_ne_builtin_clashr      so     JEl"G 
II0000011$LLLLLL
 
 	

 
r   c                  f    e Zd ZdZdZddZddZdd	Zedd            Z	e
j        d             ZdS )AbstractEnginez/Object serving as a base class for all engines.Fr   r   c                >    || _         d | _        d | _        d | _        d S N)r   aligned_axesresult_typeresult_name)selfr   s     r   __init__zAbstractEngine.__init__5   s'    	 r   strc                4    t          j        | j                  S )zo
        Convert an expression for evaluation.

        Defaults to return the expression as a string.
        )r
   pprint_thingr   r&   s    r   convertzAbstractEngine.convert;   s     $TY///r   objectc                    | j         s,t          | j        j                  \  | _        | _        | _        |                                 }t          | j        || j        | j        j        j	        | j                  S )a*  
        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   evaluatezAbstractEngine.evaluateC   sy      	DO	E EADd/1A
 nn!IO'
 
 	
r   boolc                &    | j         d uo| j        d uS r"   )r#   r$   r+   s    r   r/   zAbstractEngine._is_aligned^   s     ,M1A1MMr   c                    dS )a  
        Return an evaluated expression.

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

        Notes
        -----
        Must be implemented by subclasses.
        Nr   r+   s    r   r1   zAbstractEngine._evaluateb   s      r   Nr   r   )r   r(   )r   r-   )r   r5   )__name__
__module____qualname____doc__has_neg_fracr'   r,   r4   propertyr/   abcabstractmethodr1   r   r   r   r    r    0   s        99L       0 0 0 0
 
 
 
6 N N N XN 	    r   r    )	metaclassc                      e Zd ZdZdZd ZdS )NumExprEnginezNumExpr engine classTc                    dd l }|                                 }| j        j        }|j        }t          | j                   |                    ||          S )Nr   )
local_dict)numexprr,   r   env
full_scoper   r4   )r&   ner   rG   scopes        r   r1   zNumExprEngine._evaluatex   sS     LLNNim	***{{1{///r   N)r9   r:   r;   r<   r=   r1   r   r   r   rC   rC   s   s.        L	0 	0 	0 	0 	0r   rC   c                  $    e Zd ZdZdZd ZddZdS )	PythonEnginezS
    Evaluate an expression in Python space.

    Mostly for testing purposes.
    Fc                *    |                                  S r"   )r   r+   s    r   r4   zPythonEngine.evaluate   s    yy{{r   r   r   c                    d S r"   r   r+   s    r   r1   zPythonEngine._evaluate   s    r   Nr8   )r9   r:   r;   r<   r=   r4   r1   r   r   r   rL   rL      sH          L       r   rL   )rF   pythonzdict[str, type[AbstractEngine]]ENGINES)r   r   r   r   )r<   
__future__r   r?   typingr   pandas.errorsr   pandas.core.computation.alignr   r   pandas.core.computation.opsr   r	   pandas.io.formatsr
   pandas.core.computation.exprr   	frozensetr   r   ABCMetar    rC   rL   rP   __annotations__r   r   r   <module>r[      s     # " " " " " 



             0 0 0 0 0 0              
 ' & & & & & 2111111y:-..
 
 
 
&@ @ @ @ @s{ @ @ @ @F0 0 0 0 0N 0 0 0"    >   " , ,      r   