Ë
    u™ãjQ  ã                  ó  — 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 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<   y)z)
Engine classes for :func:`~pandas.eval`
é    )ÚannotationsN)ÚTYPE_CHECKING)ÚNumExprClobberingError)Úalign_termsÚreconstruct_object)Únormalize_numexpr_result)ÚMATHOPSÚ
REDUCTIONS)Úprinting)ÚExprc                ó°   — | j                   }|t        z  }|r:dj                  |D �cg c]  }t        |«      ‘Œ c}«      }t	        d| › d|› d�«      ‚yc c}w )z…
    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        új/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/core/computation/engines.pyÚ_check_ne_builtin_clashr      s_   € ð �J‰J€EØ”lÑ"€GáØ�I‰I¨Ö0 1”t˜A•wÒ0Ó1ˆÜ$Ø'¨ vÐ-GÈÀsÈ!ÐLó
ð 	
ð ùÚ0s   §Ac                  ób   — 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y)ÚAbstractEnginez/Object serving as a base class for all engines.Fc                ó<   — || _         d | _        d | _        d | _        y ©N)r   Úaligned_axesÚresult_typeÚresult_name)Úselfr   s     r   Ú__init__zAbstractEngine.__init__6   s!   € ØˆŒ	Ø ˆÔØˆÔØˆÕó    c                ó@   — 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   € ô ×$Ñ$ T§Y¡YÓ/Ð/r"   c                ó4  — | j                   s2t        | j                  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.evaluateD   s}   € ð ×ÒÜDOØ—	‘	—‘óEÑAˆDÔ˜dÔ/°Ô1Að
 �n‰nÓˆÜ!Ø×ÑØØ×ÑØ�I‰I�O‰O×'Ñ'Ø×Ñó
ð 	
r"   c                ó>   — | j                   d uxr | j                  d uS r   )r   r   r%   s    r   r(   zAbstractEngine._is_aligned_   s#   € à× Ñ ¨Ð,ÒM°×1AÑ1AÈÐ1MÐMr"   c                 ó   — y)zy
        Return an evaluated expression.

        Notes
        -----
        Must be implemented by subclasses.
        N© r%   s    r   r*   zAbstractEngine._evaluatec   s   � r"   N©ÚreturnÚNone)r2   Ústr)r2   Úobject)r2   Úbool)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úhas_neg_fracr!   r&   r-   Úpropertyr(   ÚabcÚabstractmethodr*   r0   r"   r   r   r   1   sI   „ Ù9à€Ló ó0ó
ð6 òNó ðNð 	×Ññó ñr"   r   )Ú	metaclassc                  ó   — e Zd ZdZdZd„ Zy)ÚNumExprEnginezNumExpr engine classTc                óÐ   — dd l }| j                  «       }| j                  j                  }|j                  }t        | j                  «       t        |j                  ||¬«      «      S )Nr   )Ú
local_dict)Únumexprr&   r   ÚenvÚ
full_scoper   r   r-   )r    Úner   rE   Úscopes        r   r*   zNumExprEngine._evaluates   sL   € Ûð �L‰L‹Nˆà�i‰i�m‰mˆØ—‘ˆÜ §	¡	Ô*Ü'¨¯©°AÀ%¨Ó(HÓIÐIr"   N)r7   r8   r9   r:   r;   r*   r0   r"   r   rA   rA   n   s   „ Ùà€Ló	Jr"   rA   c                  ó"   — e Zd ZdZdZd„ Zdd„Zy)ÚPythonEnginezS
    Evaluate an expression in Python space.

    Mostly for testing purposes.
    Fc                ó"   — | j                  «       S r   )r   r%   s    r   r-   zPythonEngine.evaluateˆ   s   € Ø�y‰y‹{Ðr"   c                 ó   — y r   r0   r%   s    r   r*   zPythonEngine._evaluate‹   s   € Ør"   Nr1   )r7   r8   r9   r:   r;   r-   r*   r0   r"   r   rJ   rJ      s   „ ñð €Lòôr"   rJ   )rD   Úpythonzdict[str, type[AbstractEngine]]ÚENGINES)r   r   r2   r3   )r:   Ú
__future__r   r=   Útypingr   Úpandas.errorsr   Úpandas.core.computation.alignr   r   Ú#pandas.core.computation.expressionsr   Úpandas.core.computation.opsr	   r
   Úpandas.io.formatsr   Úpandas.core.computation.exprr   Ú	frozensetr   r   ÚABCMetar   rA   rJ   rN   Ú__annotations__r0   r"   r   ú<module>rZ      s‰   ðòõ #ã 
Ý  å 0÷õ I÷õ
 'áÝ1á˜ :Ñ-Ó.€ó
ô&:˜sŸ{™{õ :ôzJ�Nô Jô"�>ô ð" Øñ,€Ð	(ô r"   