Ë
    7;hÛ  ã                   ó¢   — d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddl	m
Z
mZ  edg d	¢«      Zd
„ Z	 ddee
e      fd„Zdd„Zddedefd„Zy)zToken-related utilitiesé    )Ú
namedtuple)ÚStringIO)Ú	iskeywordN)Ú	TokenInfo)ÚListÚOptionalÚToken)ÚtokenÚtextÚstartÚendÚlinec              #   ó|   K  — 	 t        j                  | «      D ]  }|–— Œ y# t         j                  $ r Y yw xY w­w)z'wrap generate_tkens to catch EOF errorsN)ÚtokenizeÚgenerate_tokensÚ
TokenError)Úreadliner
   s     úh/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/IPython/utils/tokenutil.pyr   r      s<   è ø€ ðÜ×-Ñ-¨hÖ7ˆEØ‹Kñ 8øä×Ñò áðüs   ‚<„# ¢<£9¶<¸9¹<Úextra_errors_to_catchc              #   óî  ‡	K  — g d¢}|�t        |t        «      sJ ‚||xs g z   }g }	 t        j                  | «      D ]  }|j	                  |«       |–— Œ y # t        j
                  $ r‡Š	t        ˆ	fd„|D «       «      rh|r6|d   j                  d   |d   j                  d   f}|}|d   j                  }ndx}}d}t        j                  t        j                  d|||«      –— n‚ Y d Š	‹	y d Š	‹	ww xY w­w)N)zunterminated string literalzinvalid non-printable characterz!after line continuation characterc              3   ó@   •K  — | ]  }|‰j                   d    v –— Œ y­w)r   N)Úargs)Ú.0ÚerrorÚexcs     €r   Ú	<genexpr>z/generate_tokens_catch_errors.<locals>.<genexpr>,   s   øè ø€ ÐA±¨ˆu˜Ÿ™ ™Ô#±ùs   ƒéÿÿÿÿr   )é   r   Ú )Ú
isinstanceÚlistr   r   Úappendr   Úanyr   r   r   r   Ú
ERRORTOKEN)
r   r   Údefault_errors_to_catchÚerrors_to_catchÚtokensr
   r   r   r   r   s
            @r   Úgenerate_tokens_catch_errorsr(      s   øè ø€ òÐð
 !Ð(¬JÐ7LÌdÔ,SÐSÐSØ-Ð1FÒ1LÈ"ÑM€Oà €FðÜ×-Ñ-¨hÖ7ˆEØ�M‰M˜%Ô Ø‹Kñ 8øô ×Ñò ÜÓA±ÓAÔAÙØ˜r™
×(Ñ(¨Ñ+¨V°B©Z¯^©^¸AÑ->Ð>�Ø�Ø˜b‘z—‘‘à$Ð$�˜Ø�Ü×$Ñ$¤X×%8Ñ%8¸"¸eÀSÈ$ÓOÓOð ô Pûðüs/   ƒ$C5¨/A ÁC5ÁC2Á+A=C-Ã(C5Ã-C2Ã2C5c                 ó¢   — d}| j                  d«      }|D ]2  }|t        |«      z   }|j                  d«      s|dz  }||kD  r ||fS |}Œ4 d}||fS )a¨  Return the line in a cell at a given cursor position

    Used for calling line-based APIs that don't support multi-line input, yet.

    Parameters
    ----------
    cell : str
        multiline block of text
    cursor_pos : integer
        the cursor position

    Returns
    -------
    (line, offset): (string, integer)
        The line with the current cursor, and the character offset of the start of the line.
    r   TÚ
r   r   )Ú
splitlinesÚlenÚendswith)ÚcellÚ
cursor_posÚoffsetÚlinesr   Únext_offsets         r   Úline_at_cursorr3   :   sv   € ð" €FØ�O‰O˜DÓ!€EÛˆØœs 4›yÑ(ˆØ�}‰}˜TÔ"ð ˜1ÑˆKØ˜Ò#Øð �&ˆ>Ðð ‰ð ð ˆØ�&ˆ>Ðó    r.   r/   c                 ó.  — g }g }g }ddi}t        t        | «      j                  «      D �]Û  }t        |Ž }|j                  \  }}	|j
                  \  }
}|
dz   |vrN|j                  j                  d«      }t        ||dz   «      D ]!  \  }}||vsŒ||dz
     t        |«      z   ||<   Œ# ||   }|	dk(  r|dz   n|}||	z   |k\  r �nD|j                  t        j                  k(  rt        |j                  «      sj|rL|rJ|d   j                  t        j                  k(  r*|d   j                  dk(  r|d   ›d|j                  ›�|d<   n£|j!                  |j                  «       n‡|j                  t        j                  k(  rj|j                  dk(  r|r|j#                  d«       |j                  dk(  r|r|j!                  |d   «       n"|j                  dk(  r|r|j#                  d«       |j!                  |«       ||
   |z   |kD  s�ŒÜ n |r|d   S |r|d   S y	)
av  Get the token at a given cursor

    Used for introspection.

    Function calls are prioritized, so the token for the callable will be returned
    if the cursor is anywhere inside the call.

    Parameters
    ----------
    cell : str
        A block of Python code
    cursor_pos : int
        The location of the cursor in the block where the token should be found
    r   r   Tr   Ú.Ú=Ú(Ú)r   )r   r   r   r	   r   r   r   r+   Ú	enumerater,   r
   r   ÚNAMEr   r   ÚOPr"   Úpop)r.   r/   Únamesr'   Ú
call_namesÚoffsetsÚtupÚtokÚ
start_lineÚ	start_colÚend_lineÚend_colr1   Úlinenor   r0   Úboundarys                    r   Útoken_at_cursorrI   \   sõ  € ð €EØ€FØ€Jà�!ˆf€GÜœx¨›~×6Ñ6×7ˆä�Sˆkˆð !$§	¡	Ñˆ
�IØŸG™GÑˆ�'Ø�a‰<˜wÑ&à—H‘H×'Ñ'¨Ó-ˆEÜ )¨%°¸a±Ö @‘�˜Ø Ò(Ø&-¨f°Q©hÑ&7¼#¸d»)Ñ&C�G˜F’Oð !Að ˜Ñ$ˆà%.°!¢^�: ’>¸ˆØ�IÑ Ò)ò à�9‰9œŸ™Ò%¬i¸¿¹Ô.AÙ™ F¨2¡J×$4Ñ$4¼¿¹Ò$CÈÈrÉ
ÏÉÐ[^ÒH^Ø',¨R£y°#·(²(Ð;��b’	à—‘˜SŸX™XÕ&Ø�Y‰Yœ(Ÿ+™+Ò%Ø�x‰x˜3Š¡5à—	‘	˜"”Ø�x‰x˜3Š¡5à×!Ñ! %¨¡)Õ,Ø—‘˜S’¡ZØ—‘˜rÔ"à�‰�cÔà�8Ñ˜wÑ&¨Ô3áðS 8ñV Ø˜"‰~ÐÙ	Ø�R‰yÐàr4   )N)r   )Ú__doc__Úcollectionsr   Úior   Úkeywordr   r   r   Útypingr   r   r	   r   Ústrr(   r3   ÚintrI   © r4   r   Ú<module>rR      sh   ðÙ õ
 #Ý Ý ã Ý ß !ñ 	�7ÒEÓF€òð <@ñØ%-¨d°3©iÑ%8óó>ñDD˜#ð D¨3ô Dr4   