Ë
    u™ãj#'  ã            	      ó\  — d Z ddlmZ ddlmZ ddlZddlZddlmZ ddl	Z	ddl
Z
ddlZddlZddlmZmZ ddlZddlmZ ddlmZ  ed	«      Z ed
«      Z G d„ deeef   «      Z	 d	 	 	 dd„Zdd„Zdd„Zeej
                  ddeeej<                  ej<                  dœZdd„Z  G d„ d«      Z!y)z
Module for scope operations
é    )Úannotations)ÚChainMapN)ÚStringIO)ÚAnyÚTypeVar)Ú	Timestamp)ÚUndefinedVariableErrorÚ_KTÚ_VTc                  ó    — e Zd ZdZdd„Zdd„Zy)ÚDeepChainMapz~
    Variant of ChainMap that allows direct updates to inner scopes.

    Only works when all passed mapping are mutable.
    c                ó`   — | j                   D ]  }||v sŒ|||<    y  || j                   d   |<   y )Nr   )Úmaps)ÚselfÚkeyÚvalueÚmappings       úh/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/core/computation/scope.pyÚ__setitem__zDeepChainMap.__setitem__%   s<   € Ø—y‘yò 	ˆGØ�gŠ~Ø$�˜‘Ùð	ð "ˆ�	‰	�!‰�SÒó    c                óL   — | j                   D ]  }||v sŒ||=  y t        |«      ‚)z\
        Raises
        ------
        KeyError
            If `key` doesn't exist.
        N)r   ÚKeyError)r   r   r   s      r   Ú__delitem__zDeepChainMap.__delitem__,   s4   € ð —y‘yò 	ˆGØ�gŠ~Ø˜C�LÙð	ô �s‹mÐr   N)r   r
   r   r   ÚreturnÚNone)r   r
   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r      s   „ ñó"ôr   r   ÚScopec                ó(   — t        | dz   ||||¬«      S )z.Ensure that we are grabbing the correct scope.é   )Úglobal_dictÚ
local_dictÚ	resolversÚtarget)r!   )Úlevelr$   r%   r&   r'   s        r   Úensure_scoper)   :   s$   € ô Ø�‰	ØØØØôð r   c                óf   — 	 t        | «      }t        |«      S # t        $ r | }Y t        |«      S w xY w)z‚
    Replace a number with its hexadecimal representation. Used to tag
    temporary variables with their calling scope's id.
    )ÚordÚ	TypeErrorÚhex)ÚxÚhexins     r   Ú	_replacerr0   G   s<   € ðÜ�A“ˆô
 ˆu‹:Ðøô	 ò à‰äˆu‹:Ðð	ús   ‚ ˜0¯0c                óš   — t        j                  dt        | «      «      }dj                  |D �cg c]  }t	        |«      ‘Œ c}«      S c c}w )z,Return the padded hexadecimal id of ``obj``.z@PÚ )ÚstructÚpackÚidÚjoinr0   )ÚobjÚpackedr.   s      r   Ú_raw_hex_idr9   W   s9   € ô �[‰[˜œr #›wÓ'€FØ�7‰7¨&Ö1 Q”I˜a•LÒ1Ó2Ð2ùÒ1s   ¯ATF)r   ÚdatetimeÚTrueÚFalseÚlistÚtupleÚinfÚInfc                ód   — t        «       }t        j                  | |¬«       |j                  «       S )z¼
    Return a prettier version of obj.

    Parameters
    ----------
    obj : object
        Object to pretty print

    Returns
    -------
    str
        Pretty print object repr
    )Ústream)r   ÚpprintÚgetvalue)r7   Úsios     r   Ú_get_pretty_stringrF   j   s%   € ô ‹*€CÜ
‡M�M�#˜cÕ"Ø�<‰<‹>Ðr   c                  ó¼   — e Zd ZU dZg d¢Zded<   ded<   ded<   ded	<   	 d	 	 	 dd„Zdd„Zedd„«       Z	dd„Z
ddd„Zdd„Zdd„Zdd„Zedd„«       Zedd„«       Zy
)r!   aÒ  
    Object to hold scope, with a few bells to deal with some custom syntax
    and contexts added by pandas.

    Parameters
    ----------
    level : int
    global_dict : dict or None, optional, default None
    local_dict : dict or Scope or None, optional, default None
    resolvers : list-like or None, optional, default None
    target : object

    Attributes
    ----------
    level : int
    scope : DeepChainMap
    target : object
    temps : dict
    )r(   r&   Úscoper'   ÚtempsÚintr(   úDeepChainMap[str, Any]rH   r&   zdict[str, Any]rI   Nc                óZ  — |dz   | _         t        t        j                  «       «      | _        || _        t        |t        «      r]| j                  j                  |j                  «       |j
                  �|j
                  | _        | j                  |j                   «       t        j                  | j                   «      }	 | j                  j                  |�|n|j                  j                  «       «      }t        |«      | _        t        |t        «      sG| j                  j                  |�|n|j                  j                  «       «      }t        |«      | _        ~t        |t        «      r"|t        |j                   j"                  «      z  }t        |Ž | _        i | _        y # ~w xY w)Nr#   )r(   r   ÚDEFAULT_GLOBALSÚcopyrH   r'   Ú
isinstancer!   ÚupdateÚ_updateÚsysÚ	_getframeÚ	new_childÚ	f_globalsÚf_localsr>   r&   r   rI   )	r   r(   r$   r%   r&   r'   ÚframeÚscope_globalÚscope_locals	            r   Ú__init__zScope.__init__˜   sS  € ð ˜Q‘YˆŒ
ô "¤/×"6Ñ"6Ó"8Ó9ˆŒ
ØˆŒä�j¤%Ô(Ø�J‰J×Ñ˜j×.Ñ.Ô/Ø× Ñ Ð,Ø(×/Ñ/�”Ø�L‰L˜×)Ñ)Ô*ä—‘˜dŸj™jÓ)ˆð	ð  Ÿ:™:×/Ñ/Ø +Ð 7‘¸U¿_¹_×RÑRÓTóˆLô & lÓ3ˆDŒJÜ˜j¬%Ô0Ø"Ÿj™j×2Ñ2Ø#-Ð#9‘Z¸u¿~¹~×SÑSÓUó�ô *¨+Ó6�”
àô �j¤%Ô(Øœ˜z×3Ñ3×8Ñ8Ó9Ñ9ˆIÜ% yÐ1ˆŒØˆ�
øñ ús   ÃBF' Æ'F*c                óî   — t        t        | j                  j                  «       «      «      }t        t        | j                  j                  «       «      «      }t        | «      j                  › d|› d|› d�S )Nz(scope=z, resolvers=ú))rF   r=   rH   Úkeysr&   Útyper   )r   Ú
scope_keysÚres_keyss      r   Ú__repr__zScope.__repr__À   s\   € Ü'¬¨T¯Z©Z¯_©_Ó->Ó(?Ó@ˆ
Ü%¤d¨4¯>©>×+>Ñ+>Ó+@Ó&AÓBˆÜ�t“*×%Ñ%Ð& g¨j¨\¸ÀhÀZÈqÐQÐQr   c                ó>   — t        t        | j                  «      «      S )zõ
        Return whether we have any extra scope.

        For example, DataFrames pass Their columns as resolvers during calls to
        ``DataFrame.eval()`` and ``DataFrame.query()``.

        Returns
        -------
        hr : bool
        )ÚboolÚlenr&   ©r   s    r   Úhas_resolverszScope.has_resolversÅ   s   € ô ”C˜Ÿ™Ó'Ó(Ð(r   c                ó  — 	 |r| j                   |   S | j                  r| j                  |   S |s| j                  rJ ‚| j                   |   S # t        $ r1 	 | j                  |   cY S # t        $ r}t        ||«      |‚d}~ww xY ww xY w)a†  
        Resolve a variable name in a possibly local context.

        Parameters
        ----------
        key : str
            A variable name
        is_local : bool
            Flag indicating whether the variable is local or not (prefixed with
            the '@' symbol)

        Returns
        -------
        value : object
            The value of a particular variable
        N)rH   rf   r&   r   rI   r	   )r   r   Úis_localÚerrs       r   ÚresolvezScope.resolveÓ   sœ   € ð"	EáØ—z‘z #‘Ð&ð ×!Ò!Ø—~‘~ cÑ*Ð*ñ  ¨×(:Ò(:Ð:Ð:Ø—:‘:˜c‘?Ð"øÜò 	EðEð —z‘z #‘Ò&øÜò EÜ,¨S°(Ó;ÀÐDûðEúð	Eús9   ‚A “A ®A Á	BÁA(Á%BÁ(	BÁ1A>Á>BÂBc                óþ   — | j                   r.| j                  j                  | j                  j                  z   }n| j                  j                  }|j	                  | j
                  «       |D ]  }||v sŒ|||<    y y)a]  
        Replace a variable name, with a potentially new value.

        Parameters
        ----------
        old_key : str
            Current variable name to replace
        new_key : str
            New variable name to replace `old_key` with
        new_value : object
            Value to be replaced along with the possible renaming
        N)rf   r&   r   rH   ÚappendrI   )r   Úold_keyÚnew_keyÚ	new_valuer   r   s         r   ÚswapkeyzScope.swapkeyú   sj   € ð ×ÒØ—>‘>×&Ñ&¨¯©¯©Ñ8‰Dà—:‘:—?‘?ˆDà�‰�D—J‘JÔàò 	ˆGØ˜'Ò!Ø#,�˜Ñ Ùñ	r   c                óÂ   — t        j                  ||«      }|D ]D  \  }\  }}}}}}t        |d|› �«      }t        | j                  j                  |«      «      | _        ŒF y)a‰  
        Get specifically scoped variables from a list of stack frames.

        Parameters
        ----------
        stack : list
            A list of stack frames as returned by ``inspect.stack()``
        scopes : sequence of strings
            A sequence containing valid stack frame attribute names that
            evaluate to a dictionary. For example, ('locals', 'globals')
        Úf_N)Ú	itertoolsÚproductÚgetattrr   rH   rT   )r   ÚstackÚscopesÚ	variablesrH   rW   Ú_Úds           r   Ú	_get_varszScope._get_vars  sd   € ô ×%Ñ% f¨eÓ4ˆ	Ø-6ò 	?Ñ)ˆEÑ)�E˜1˜a  A qÜ˜  E 7˜|Ó,ˆAÜ% d§j¡j×&:Ñ&:¸1Ó&=Ó>ˆD�Jñ	?r   c                óˆ   — |dz   }t        j                  «       }	 | j                  |d| dg¬«       |dd…= ~y# |dd…= ~w xY w)zƒ
        Update the current scope by going back `level` levels.

        Parameters
        ----------
        level : int
        r#   NÚlocals)rw   )Úinspectrv   r{   )r   r(   Úslrv   s       r   rQ   zScope._update$  sJ   € ð �Q‰Yˆô
 —‘“ˆð	 Ø�N‰N˜5  "˜:¨x¨jˆNÔ9à’a�™%ø�’a�™%ús	   ›9 ¹Ac                óÄ   — t        |«      j                  › d| j                  › dt        | «      › �}|| j                  vsJ ‚|| j                  |<   || j                  v sJ ‚|S )a#  
        Add a temporary variable to the scope.

        Parameters
        ----------
        value : object
            An arbitrary object to be assigned to a temporary variable.

        Returns
        -------
        str
            The name of the temporary variable created.
        ry   )r^   r   Úntempsr9   rI   )r   r   Únames      r   Úadd_tmpzScope.add_tmp8  sj   € ô �u“+×&Ñ&Ð' q¨¯©¨°Q´{À4Ó7HÐ6IÐJˆð ˜4Ÿ:™:Ñ%Ð%Ð%Ø ˆ�
‰
�4ÑØ�t—z‘zÑ!Ð!Ð!ð ˆr   c                ó,   — t        | j                  «      S )z/The number of temporary variables in this scope)rd   rI   re   s    r   r�   zScope.ntempsP  s   € ô �4—:‘:‹Ðr   c                ó„   — | j                   g| j                  j                  ¢| j                  j                  ¢}t	        |Ž S )zÑ
        Return the full scope for use with passing to engines transparently
        as a mapping.

        Returns
        -------
        vars : DeepChainMap
            All variables in this scope.
        )rI   r&   r   rH   r   )r   r   s     r   Ú
full_scopezScope.full_scopeU  s7   € ð —
‘
ÐC˜TŸ^™^×0Ñ0ÐC°4·:±:·?±?ÐCˆÜ˜TÐ"Ð"r   ©NNr    N)r(   rJ   r   r   ©r   Ústr)r   rc   )r   r‰   rh   rc   )N)rm   r‰   rn   r‰   r   r   )rw   z	list[str]r   r   )r   rJ   )r   rK   )r   r   r   r   Ú	__slots__Ú__annotations__rZ   ra   Úpropertyrf   rj   rp   r{   rQ   rƒ   r�   r†   r    r   r   r!   r!   }   s    … ñò( C€IØƒJØ!Ó!Ø%Ó%ØÓð SWð&Øð&à	ó&óPRð
 ò)ó ð)ó%EôNó2?ó" ó(ð0 òó ðð ò#ó ñ#r   r‡   )r(   rJ   r   r!   rˆ   )"r   Ú
__future__r   Úcollectionsr   r:   r~   Úior   rs   rC   r3   rR   Útypingr   r   ÚnumpyÚnpÚpandas._libs.tslibsr   Úpandas.errorsr	   r
   r   r   r)   r0   r9   r=   r>   r?   rM   rF   r!   r    r   r   ú<module>r•      sÄ   ðñõ #å  Û Û Ý Û Û Û Û 
÷ó
 å )Ý 0áˆeƒn€Ùˆeƒn€ô�8˜C ˜HÑ%ô ð: IMð
Øð
à
ó
óó 3ð Ø×!Ñ!ØØØØØ�6‰6Ø�6‰6ñ	€ó÷&d#ò d#r   