+
    xȇi                        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   "o/Users/max/.openclaw/workspace/postharvest/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$IqCFF$Is   asciibackslashreplaceN)joinencode)r   cs   & r   r   1create_valid_python_identifier.<locals>.<genexpr>*   s7      A 
BGGJAHHW6H$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/      LA 	$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    9T??C 77  D &77==?'?LD 	%..()++? $ ' $**!$<.	
 77PTUPT77CPTUVD$TF+D/v5TUVVK3'& 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    ( NF''}}<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    &*4T3*?*?t||C&T#avQK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MV\         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"VFFA","8"8K J$:$::-.#a&1*_a%4I C'd+i0Q  d+"))4*AB!#Q&0&8&8 *"4"44","<"<K!Z%?%??aAhRVFV","4"4K*"4"44","<"<K!Z%?%??aAhRVFV","4"4K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) " +9Qr?; .Hs   ')N)r   rm   r   readliner=   generate_tokens)ro   line_readertoken_generatorrO   rG   r(   s   &     r   rT   rT      sg       WW  .@-G F 6"++K..{;O#21an $3s   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   