ó
    Ñ]jÜ'  ã            	      ób  • S r SSKJr  SSKJr  SSKrSSKrSSKJr  SSK	r	SSK
r
SSKrSSKrSSKJr  SSKrSSKJr  SSKJr  \" S	5      r\" S
5      r " S S\\\4   5      r S   SS jjrSS jrSS jr\\R
                  SS\\\R:                  \R:                  S.rSS jr " S S5      r g)z
Module for scope operations
é    )Úannotations)ÚChainMapN)ÚStringIO)ÚTypeVar)Ú	Timestamp)ÚUndefinedVariableErrorÚ_KTÚ_VTc                  ó,   • \ rS rSrSrSS jrSS jrSrg)	ÚDeepChainMapé   zr
Variant of ChainMap that allows direct updates to inner scopes.

Only works when all passed mapping are mutable.
c                ób   • U R                    H  nX;   d  M
  X#U'     g    X R                   S   U'   g )Nr   )Úmaps)ÚselfÚkeyÚvalueÚmappings       ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/core/computation/scope.pyÚ__setitem__ÚDeepChainMap.__setitem__"   s1   € Ø—y”yˆGØ�~Ø$˜‘Ùñ !ð "�	‰	�!‰�SÒó    c                óP   • U R                    H  nX;   d  M
  X!	   g   [        U5      e)z4
Raises
------
KeyError
    If `key` doesn't exist.
N)r   ÚKeyError)r   r   r   s      r   Ú__delitem__ÚDeepChainMap.__delitem__)   s+   € ð —y”yˆGØ�~Ø�LÙñ !ô �s‹mÐr   © N)r   r	   r   r
   ÚreturnÚNone)r   r	   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__r   r   r   r   r      s   † ñô"÷r   r   ÚScopec                ó"   • [        U S-   UUUUS9$ )z.Ensure that we are grabbing the correct scope.é   )Úglobal_dictÚ
local_dictÚ	resolversÚtarget)r%   )Úlevelr(   r)   r*   r+   s        r   Úensure_scoper-   7   s$   € ô Ø�‰	ØØØØñð r   c                óT   •  [        U 5      n[        U5      $ ! [         a    U n Nf = f)zv
Replace a number with its hexadecimal representation. Used to tag
temporary variables with their calling scope's id.
)ÚordÚ	TypeErrorÚhex)ÚxÚhexins     r   Ú	_replacerr4   D   s2   € ðÜ�A“ˆô
 ˆu‹:Ðøô	 ó àŠðús   ‚ ˜'¦'c                ó¢   • [         R                  " S[        U 5      5      nSR                  U Vs/ s H  n[	        U5      PM     sn5      $ s  snf )z,Return the padded hexadecimal id of ``obj``.z@PÚ )ÚstructÚpackÚidÚjoinr4   )ÚobjÚpackedr2   s      r   Ú_raw_hex_idr=   T   s=   € ô �[Š[˜œr #›wÓ'€FØ�7‰7©&Ó1ª& Q”I˜a–L©&Ñ1Ó2Ð2ùÒ1s   °ATF)r   ÚdatetimeÚTrueÚFalseÚlistÚtupleÚinfÚInfc                ó^   • [        5       n[        R                  " XS9  UR                  5       $ )z”
Return a prettier version of obj.

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

Returns
-------
str
    Pretty print object repr
)Ústream)r   ÚpprintÚgetvalue)r;   Úsios     r   Ú_get_pretty_stringrJ   g   s#   € ô ‹*€CÜ
‡M‚M�#Ò"Ø�<‰<‹>Ðr   c                  óÜ   • \ rS rSr% Sr/ SQrS\S'   S\S'   S\S'   S	\S
'    S   SS jjrSS jr\	SS j5       r
SS jrSSS jjrSS jrSS jrSS jr\	SS j5       r\	SS j5       rSrg) r%   éz   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,   r   rM   r*   ÚdictrN   Nc                ó~  • US-   U l         [        [        R                  5       5      U l        XPl        [        U[        5      (       a^  U R                  R                  UR                  5        UR
                  b  UR
                  U l        U R                  UR                   5        [        R                  " U R                   5      n U R                  R                  Ub  UOUR                  R                  5       5      n[        U5      U l        [        U[        5      (       dH  U R                  R                  Ub  UOUR                  R                  5       5      n[        U5      U l        A[        U[        5      (       a"  U[        UR                   R"                  5      -  n[        U6 U l        0 U l        g ! Af = f)Nr'   )r,   r   ÚDEFAULT_GLOBALSÚcopyrM   r+   Ú
isinstancer%   ÚupdateÚ_updateÚsysÚ	_getframeÚ	new_childÚ	f_globalsÚf_localsrB   r*   r   rN   )	r   r,   r(   r)   r*   r+   ÚframeÚscope_globalÚscope_locals	            r   Ú__init__ÚScope.__init__•   sZ  € ð ˜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Ñ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%F9 Æ9F<c                óî   • [        [        U R                  R                  5       5      5      n[        [        U R                  R                  5       5      5      n[        U 5      R                   SU SU S3$ )Nz(scope=z, resolvers=Ú))rJ   rA   rM   Úkeysr*   Útyper   )r   Ú
scope_keysÚres_keyss      r   Ú__repr__ÚScope.__repr__½   s\   € Ü'¬¨T¯Z©Z¯_©_Ó->Ó(?Ó@ˆ
Ü%¤d¨4¯>©>×+>Ñ+>Ó+@Ó&AÓBˆÜ�t“*×%Ñ%Ð& g¨j¨\¸ÀhÀZÈqÐQÐQr   c                ó>   • [        [        U R                  5      5      $ )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_resolversÚScope.has_resolversÂ   s   € ô ”C˜Ÿ™Ó'Ó(Ð(r   c                ó>  •  U(       a  U R                   U   $ U R                  (       a  U R                  U   $ U(       d  U R                  (       a   eU R                   U   $ ! [         a1     U R                  U   s $ ! [         a  n[        X5      UeSnAff = ff = f)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)rM   rm   r*   r   rN   r   )r   r   Úis_localÚerrs       r   ÚresolveÚ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ÂBÂBÂBc                ó  • U R                   (       a.  U R                  R                  U R                  R                  -   nOU R                  R                  nUR	                  U R
                  5        U H  nX;   d  M
  X5U'     g   g)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)rm   r*   r   rM   ÚappendrN   )r   Úold_keyÚnew_keyÚ	new_valuer   r   s         r   ÚswapkeyÚScope.swapkey÷   sa   € ð ××Ø—>‘>×&Ñ&¨¯©¯©Ñ8‰Dà—:‘:—?‘?ˆDà�‰�D—J‘JÔãˆGØÕ!Ø#,˜Ñ Ùò r   c                óÖ   • [         R                  " X!5      nU HG  u  nu  n        n [        USU 35      n[        U R                  R                  U5      5      U l        AMI     g! Af = f)aA  
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   rM   rY   )r   ÚstackÚscopesÚ	variablesrM   r\   Ú_Úds           r   Ú	_get_varsÚScope._get_vars  sn   € ô ×%Ò% fÓ4ˆ	Û-6Ñ)ˆEÑ)�E˜1˜a  A qðÜ˜E R¨ w <Ó0�Ü)¨$¯*©*×*>Ñ*>¸qÓ*AÓB�”
ò
 ò .7øñ ús   §8A%Á%A(c                ó„   • US-   n[         R                  " 5       n U R                  USU S/S9  USS2	 Ag! USS2	 Af = f)z[
Update the current scope by going back `level` levels.

Parameters
----------
level : int
r'   NÚlocals)r�   )Úinspectr€   r…   )r   r,   Úslr€   s       r   rV   ÚScope._update'  sJ   € ð �Q‰Yˆô
 —’“ˆð	 Ø�N‰N˜5  "˜:¨x¨jˆNÑ9à’a�™%ø�’a�™%ús   œ7 ·?c                óÆ   • [        U5      R                   SU R                   S[        U 5       3nX R                  ;  d   eXR                  U'   X R                  ;   d   eU$ )zÓ
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.
rƒ   )rd   r   Úntempsr=   rN   )r   r   Únames      r   Úadd_tmpÚScope.add_tmp;  sd   € ô �u“+×&Ñ&Ð' q¨¯©¨°Q´{À4Ó7HÐ6IÐJˆð Ÿ:™:Ó%Ð%Ð%Ø �
‰
�4ÑØ—z‘zÓ!Ð!Ð!ð ˆr   c                ó,   • [        U R                  5      $ )z/The number of temporary variables in this scope)rk   rN   rl   s    r   r�   ÚScope.ntempsS  s   € ô �4—:‘:‹Ðr   c                ó„   • U R                   /U R                  R                  QU R                  R                  Qn[	        U6 $ )z™
Return the full scope for use with passing to engines transparently
as a mapping.

Returns
-------
vars : DeepChainMap
    All variables in this scope.
)rN   r*   r   rM   r   )r   r   s     r   Ú
full_scopeÚScope.full_scopeX  s7   € ð —
‘
ÐC˜TŸ^™^×0Ñ0ÐC°4·:±:·?±?ÐCˆÜ˜TÐ"Ð"r   ©NNr   N)r,   rO   r   r   ©r   Ústr)r   rj   )r   r˜   rp   rj   )N)rv   r˜   rw   r˜   r   r   )r�   z	list[str]r   r   )r   rO   )r   r   )r   r    r!   r"   r#   Ú	__slots__Ú__annotations__r_   rg   Úpropertyrm   rr   ry   r…   rV   r�   r�   r”   r$   r   r   r   r%   r%   z   sŸ   ‡ ñò( C€IØƒJØÓØÓØƒKð SWð&Øð&à	õ&ôPRð
 ó)ó ð)ô%EöNô2ô. ô(ð0 óó ðð ó#ó ó#r   r–   )r,   rO   r   r%   r—   )!r#   Ú
__future__r   Úcollectionsr   r>   r‰   Úior   r}   rG   r7   rW   Útypingr   ÚnumpyÚnpÚpandas._libs.tslibsr   Úpandas.errorsr   r	   r
   r   r-   r4   r=   rA   rB   rC   rR   rJ   r%   r   r   r   Ú<module>r¤      sÀ   ðñõ #å  Û Û Ý Û Û Û Û 
Ý ã å )Ý 0áˆeƒn€Ùˆeƒn€ô�8˜C ˜HÑ%ô ð: IMð
Øð
à
õ
ôô 3ð Ø×!Ñ!ØØØØØ�6‰6Ø�6‰6ñ	€ô÷&j#ò j#r   