+
    ÏÜ³j  ã                  óÌ   € R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	t	^ RI
t
^ RIHt ]'       d	   ^ RIHtHt ^dtR R	 ltR
 R ltR R lt ! R R]4      tR R ltR R ltR# )z6
:func:`~pandas.eval` source string parsing functions
)Úannotations)ÚEnum)ÚStringIO)Ú	iskeywordN)ÚTYPE_CHECKING)ÚHashableÚIteratorc               ó    € V ^8„  d   QhRRRR/# )é   ÚnameÚstrÚreturn© )Úformats   "Ú`/home/luca/screen-checking/.venv/lib/python3.14/site-packages/pandas/core/computation/parsing.pyÚ__annotate__r      s   € ÷ 7ñ 7¨ð 7°ñ 7ó    c                óB  € V P                  4       '       d   \        V 4      '       g   V # R V  4       pRP                  R V 4       4      p \        P                  P                  4        UUu/ uF!  w  r#VR\        P                  V,           R2bK#  	  pppVP                  RRRRRR	R
RRRRRRRRRRRRR/
4       RP                  V  Uu. uF  q$P                  W"4      NK  	  up4      p RV  2p V P                  4       '       g   \        RV  R24      hV # u uppi u upi )aF  
Create valid Python identifiers from any string.

Check if name contains any special characters. If it contains any
special characters, the special characters will be replaced by
a special string and a prefix is added.

Raises
------
SyntaxError
    If the returned name is not a Python valid identifier, raise an exception.
c           	   3  óv   "  € T F/  pVR P                  R VP                  RR4       4       4      3x € K1  	  R# 5i)Ú c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5i)N)Úchr)Ú.0Úbs   & r   Ú	<genexpr>Ú;create_valid_python_identifier.<locals>.<genexpr>.<genexpr>+   s   é € ÐJÑ$I˜q”C˜—F�FÓ$Iùs   ‚ÚasciiÚbackslashreplaceN)ÚjoinÚencode)r   Úcs   & r   r   Ú1create_valid_python_identifier.<locals>.<genexpr>*   s7   é € ð áˆAð 
ˆB�G‰GÑJ A§H¡H¨WÐ6HÔ$IÓJÓJÕKÛùs   ‚79r   c              3  óZ   "  € T F!  w  rTP                  R W8w  d   RMR4      x € K#  	  R# 5i)Ú\Ú	_UNICODE_Ú_BACKSLASH_N)Úreplace)r   r    Ú	c_escapeds   &  r   r   r!   .   s/   é € ð á‰LˆAð 	×Ñ˜$¨q¬~¡À=×QÐQÛùs   ‚)+Ú_Ú Ú?Ú_QUESTIONMARK_Ú!Ú_EXCLAMATIONMARK_Ú$Ú_DOLLARSIGN_u   â‚¬Ú
_EUROSIGN_ô   Â°Ú_DEGREESIGN_Ú'Ú_SINGLEQUOTE_Ú"Ú_DOUBLEQUOTE_Ú#Ú_HASH_Ú`Ú
_BACKTICK_ÚBACKTICK_QUOTED_STRING_zCould not convert 'z' to a valid Python identifier.)Úisidentifierr   r   ÚtokenizeÚEXACT_TOKEN_TYPESÚitemsÚtokenÚtok_nameÚupdateÚgetÚSyntaxError)r   ÚgenÚcharÚtokvalÚspecial_characters_replacementss   &    r   Úcreate_valid_python_identifierrI      sL  € ð ×Ñ×Ò¤9¨T§?¢?Øˆñáó€Cð �7‰7ñ áóó €Dô &×7Ñ7×=Ñ=Ô?ô'á?‰LˆDð 	�”%—.‘. Õ(Ð)¨Ð+Ò+Ù?ð $ñ 'ð $×*Ñ*à�ØÐ!ØÐ$Ø�Ø�<Ø�.Ø�Ø�Ø�Ø�ð	
ôð �7‰7ÑPTÓUÑPTÈ×7Ñ7¸ÖCÑPTÑUÓV€DØ$ T FÐ+€Dà×Ñ×ÒÜÐ/°¨vÐ5TÐUÓVÐVà€Kùó3'ùò& Vs   Á,'DÃ
Dc               ó    € V ^8„  d   QhRRRR/# )r
   Útokztuple[int, str]r   r   )r   s   "r   r   r   R   s   € ÷ ñ  Oð ¸ñ r   c                ó\   € V w  rV\         8X  d   \        P                  \        V4      3# W3# )a  
Clean up a column name if surrounded by backticks.

Backtick quoted string are indicated by a certain tokval value. If a string
is a backtick quoted token it will processed by
:func:`_create_valid_python_identifier` so that the parser can find this
string when the query is executed.
In this case the tok will get the NAME tokval.

Parameters
----------
tok : tuple of int, str
    ints correspond to the all caps constants in the tokenize module

Returns
-------
tok : Tuple[int, str]
    Either the input or token or the replacement values
)ÚBACKTICK_QUOTED_STRINGr=   ÚNAMErI   )rK   ÚtoknumrG   s   &  r   Úclean_backtick_quoted_toksrP   R   s1   € ð( �N€FØÔ'Ô'Ü�}‰}Ô<¸VÓDÐDÐDØˆ>Ðr   c               ó    € V ^8„  d   QhRRRR/# )r
   r   r   r   r   )r   s   "r   r   r   l   s   € ÷ ñ ˜Hð ¨ñ r   c                óÖ   €  \        V \        4      '       d   V P                  RR4      MT p \        RV  R24      p\	        V4      ^,          p\        V4      #   \         d    T u # i ; i)aµ  
Function to emulate the cleaning of a backtick quoted name.

The purpose for this function is to see what happens to the name of
identifier if it goes to the process of being parsed a Python code
inside a backtick quoted string and than being cleaned
(removed of any special characters).

Parameters
----------
name : hashable
    Name to be cleaned.

Returns
-------
name : hashable
    Returns the name after tokenizing and cleaning.
r9   z``)Ú
isinstancer   r&   Útokenize_stringÚnextrI   rD   )r   Ú	tokenizedrG   s   &  r   Úclean_column_namerW   l   sd   € ð&ä*4°T¼3×*?Ò*?ˆt�|‰|˜C Ô&ÀTˆä# a¨ v¨Q KÓ0ˆ	Ü�i“ Õ#ˆÜ-¨fÓ5Ð5øÜô ØŠðús   ‚AA ÁA(Á'A(c                  ó&   € ] tR t^Št^ t^t^t^tRtR# )Ú
ParseStater   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚDEFAULTÚIN_BACKTICKÚIN_SINGLE_QUOTEÚIN_DOUBLE_QUOTEÚ__static_attributes__r   r   r   rY   rY   Š   s   † Ø€GØ€KØ€OØ„Or   rY   c               ó    € V ^8„  d   QhRRRR/# )r
   Úsr   r   zlist[tuple[bool, str]]r   )r   s   "r   r   r   ‘   s   € ÷ Kñ K˜#ð KÐ"8ñ Kr   c                óâ  € . p. p^ p\         P                  pV\        V 4      8  Ed   W,          pT;R8X  Ed"    V\         P                  8X  dI   V'       d#   VP                  RRP	                  V4      34       V.pV^,          p\         P
                  pK€  V\         P
                  8X  Ed|   V\        V 4      ^,
          8w  d   W^,           ,          MRpVR8X  d.   VP                  V4       VP                  V4       V^,          pKò  VP                  V4       VP                  RRP	                  V4      34       . pV^,          p\         P                  pEKC  ;R8X  db    V\         P                  8X  d   \         P                  pM V\         P                  8X  dŒ   W^,
          ,          R8w  dx   \         P                  pMfR8X  da   V\         P                  8X  d   \         P                  pM:V\         P                  8X  d&   W^,
          ,          R8w  d   \         P                  p VP                  V4       V^,          pEK.  V'       d#   VP                  RRP	                  V4      34       V# )	a‚  
Splits a str into substrings along backtick characters (`).

Disregards backticks inside quotes.

Parameters
----------
s : str
    The Python source code string.

Returns
-------
substrings: list[tuple[bool, str]]
    List of tuples, where each tuple has two elements:
    The first is a boolean indicating if the substring is backtick-quoted.
    The second is the actual substring.
r9   Fr   NTr3   r#   r5   )rY   r^   ÚlenÚappendr   r_   r`   ra   )rd   Ú
substringsÚsubstrÚiÚparse_staterF   Ú	next_chars   &      r   Ú_split_by_backtickrm   ‘   sÙ  € ð$ €JØ€FØ	€AÜ×$Ñ$€KØ
Œc�!‹f�*Ø�tˆàßá¤*×"4Ñ"4Ô4ßØ"×)Ñ)¨5°"·'±'¸&³/Ð*BÔCà"˜V�FØ˜•F�AÜ",×"8Ñ"8�KÙà ¤J×$:Ñ$:Õ:à-.´#°a³&¸1µ*¬_  a¥%¦À4�IØ  CÔ'ØŸ™ dÔ+ØŸ™ iÔ0Ø˜Q�˜Ù ð Ÿ™ dÔ+Ø"×)Ñ)¨4°·±¸³Ð*AÔBà!#˜Ø˜Q�˜Ü&0×&8Ñ&8˜Ú Þá¤*×"4Ñ"4Ô4Ü",×"<Ñ"<‘Kà!¤Z×%?Ñ%?Ô?ÀaÈAÍÅhÐRVÔFVÜ",×"4Ñ"4‘KÝà¤*×"4Ñ"4Ô4Ü",×"<Ñ"<‘Kà!¤Z×%?Ñ%?Ô?ÀaÈAÍÅhÐRVÔFVÜ",×"4Ñ"4‘KØ�‰�dÔØ	ˆQ�‹çØ×Ñ˜5 "§'¡'¨&£/Ð2Ô3àÐr   c               ó    € V ^8„  d   QhRRRR/# )r
   Úsourcer   r   zIterator[tuple[int, str]]r   )r   s   "r   r   r   ß   s   € ÷ ñ ˜Cð Ð$=ñ r   c              #  óÌ   "  € RP                  R \        V 4       4       4      p \        V 4      P                  p\        P
                  ! V4      pV F  w  r4  pW43x € K  	  R# 5i)zü
Tokenize a Python source code string.

Parameters
----------
source : str
    The Python source code string.

Returns
-------
tok_generator : Iterator[Tuple[int, str]]
    An iterator yielding all tokens with only toknum and tokval (Tuple[ing, str]).
r   c              3  óV   "  € T F  w  rV'       d   \        V^R 4      MTx € K!  	  R# 5i)é   Néÿÿÿÿ)rI   )r   Úis_backtick_quotedÚ	substrings   &  r   r   Ú"tokenize_string.<locals>.<genexpr>ï   s9   é € ð ñ .HÑ)Ð÷ "ô +¨9°Q°r¨?Ô;àôó .Hùs   ‚')N)r   rm   r   Úreadliner=   Úgenerate_tokens)ro   Úline_readerÚtoken_generatorrO   rG   r(   s   &     r   rT   rT   ß   sg   é € ð  �W‰Wñ ô .@ÀÔ-Góó €Fô ˜6Ó"×+Ñ+€KÜ×.Ò.¨{Ó;€Oã#2Ñˆ˜˜1˜aØˆnÔó $3ùs   ‚A"A$)Ú__doc__Ú
__future__r   Úenumr   Úior   Úkeywordr   r@   r=   Útypingr   Úcollections.abcr   r   rM   rI   rP   rW   rY   rm   rT   r   r   r   Ú<module>r‚      sY   ðñõ #å Ý Ý Û Û Ý  ç÷ð Ð õ7õtõ4ô<�ô õK÷\r   