Ë
    KæõiÐ  ã            	       óò   — d dl Z d dlZd dlmZ d dlmZ d dlmZmZ dZ	 G d„ de«      Z
dded	ed
dfd„Z	 ddeeef   deded
efd„Zd
e
fd„Z G d„ de«      Ze G d„ de«      «       Zd
efd„Zdded
efd„Zy)é    N)Úliteral_eval)Útotal_ordering)Ú
NamedTupleÚUnion)ÚÚÚÚÚô   Â…u   â€¨u   â€©c                   ó,   — e Zd ZU eed<   eed<   eed<   y)ÚVersionÚmajorÚminorÚmicroN©Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__© ó    ú\/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/parso/utils.pyr   r      s   … ØƒJØƒJØ„Jr   r   ÚstringÚkeependsÚreturnz	list[str]c                 ó¾  — |r¨| j                  d«      }g }t        |«      D ]%  \  }}	 |d   }|t        v sŒ|j                  |«       Œ' t        |«      D ]  }	 ||   ||dz      z   ||<   ||dz   = Œ | j                  d«      s| j                  d«      s| dk(  r|j                  d«       |S t        j                  d| «      S # t        $ r Y Œ«w xY w# t        $ r Y Œ‡w xY w)a¯  
    Intended for Python code. In contrast to Python's :py:meth:`str.splitlines`,
    looks at form feeds and other special characters as normal text. Just
    splits ``\n`` and ``\r\n``.
    Also different: Returns ``[""]`` for an empty string input.

    In Python 2.7 form feeds are used as normal characters when using
    str.splitlines. However in Python 3 somewhere there was a decision to split
    also on form feeds.
    Téÿÿÿÿé   Ú
ÚÚ z
\n|\r\n|\r)	Ú
splitlinesÚ	enumerateÚ_NON_LINE_BREAKSÚappendÚ
IndexErrorÚreversedÚendswithÚreÚsplit)r   r   ÚlstÚmergeÚiÚlineÚlast_chrÚindexs           r   Úsplit_linesr3      s÷   € ñ Ø×Ñ Ó%ˆð ˆÜ  –~‰GˆAˆtð$Ø ™8�ð Ô/Ò/Ø—L‘L •Oð &ô ˜e–_ˆEðØ  ™Z¨#¨e°a©i©.Ñ8��E‘
Ø˜ ™	‘Nð %ð �?‰?˜4Ô  F§O¡O°DÔ$9¸VÀrº\Ø�J‰J�rŒNØˆ
ä�x‰x˜ vÓ.Ð.øô- ò Ùðûô ò ñ ðús#   ¨CÁCÃ	CÃCÃ	CÃCÚsourceÚencodingÚerrorsc                 ó¤   ‡ ‡— ˆˆ fd„}t        ‰ t        «      r‰ S  |«       Š	 t        ‰ ‰|«      S # t        $ r |dk(  rt        ‰ d|«      cY S ‚ w xY w)aM  
    Checks for unicode BOMs and PEP 263 encoding declarations. Then returns a
    unicode object like in :py:meth:`bytes.decode`.

    :param encoding: See :py:meth:`bytes.decode` documentation.
    :param errors: See :py:meth:`bytes.decode` documentation. ``errors`` can be
        ``'strict'``, ``'replace'`` or ``'ignore'``.
    c                  ó  •— t        d«      } ‰j                  | «      ryt        j                  d‰«      j	                  d«      }t        j
                  d|«      }|r0|j	                  d«      }t        |t        «      st        |dd«      }|S ‰S )	zà
        For the implementation of encoding definitions in Python, look at:
        - http://www.python.org/dev/peps/pep-0263/
        - http://docs.python.org/2/reference/lexical_analysis.html#encoding-declarations
        zb'\xef\xbb\xbf'úutf-8s   (?:[^\r\n]*(?:\r\n|\r|\n)){0,2}r   s   coding[=:]\s*([-\w.]+)r    ÚasciiÚreplace)r   Ú
startswithr+   ÚmatchÚgroupÚsearchÚ
isinstanceÚstr)Ú	byte_markÚfirst_two_linesÚpossible_encodingÚer5   r4   s       €€r   Údetect_encodingz0python_bytes_to_unicode.<locals>.detect_encodingT   sŠ   ø€ ô !Ð!3Ó4ˆ	Ø×Ñ˜YÔ'àäŸ(™(Ð#FÈÓO×UÑUÐVWÓXˆÜŸI™IÐ&@Ø&5ó7ÐáØ!×'Ñ'¨Ó*ˆAÜ˜a¤Ô%Ü˜˜7 IÓ.�ØˆHð ˆOr   r;   r9   )r@   rA   ÚLookupError)r4   r5   r6   rF   s   ``  r   Úpython_bytes_to_unicoderH   I   s`   ù€ õô. �&œ#ÔàˆáÓ €Hð
ä�6˜8 VÓ,Ð,øÜò Ø�YÒô
 �v˜w¨Ó/Ò/Øðús   £0 °AÁAc            	      ó®   — ddl m}  t        j                  d| «      }t	        t        |«      D ��cg c]  \  }}|dk(  r|n
t        |«      ‘Œ c}}Ž S c c}}w )z`
    Returns a namedtuple of parso's version, similar to Python's
    ``sys.version_info``.
    r   )Ú__version__z
[a-z]+|\d+é   )ÚparsorJ   r+   Úfindallr   r%   r   )rJ   Útuplr/   Úxs       r   Úversion_inforP   }   sK   € õ
 "Ü�:‰:�m [Ó1€DÜ¼À4¼ÔI¹±°°A˜!˜qš&‘Q¤c¨!£fÑ,¸ÒIÐJÐJùÓIs   °A
c                   ó"   — e Zd ZU eed<   eed<   y)Ú_PythonVersionInfor   r   Nr   r   r   r   rR   rR   ‡   s   … ØƒJØ„Jr   rR   c                   ó.   ‡ — e Zd Zˆ fd„Zˆ fd„Zd„ Zˆ xZS )ÚPythonVersionInfoc                 óÚ   •— t        |t        «      r4t        |«      dk7  rt        d«      ‚| j                  | j
                  f|kD  S t        ‰| �  |«       | j                  | j
                  fS ©Né   z'Can only compare to tuples of length 2.)r@   ÚtupleÚlenÚ
ValueErrorr   r   ÚsuperÚ__gt__©ÚselfÚotherÚ	__class__s     €r   r\   zPythonVersionInfo.__gt__Ž   s[   ø€ Ü�eœUÔ#Ü�5‹z˜QŠÜ Ð!JÓKÐKØ—J‘J §
¡
Ð+¨eÑ3Ð3Ü‰‰�uÔà—
‘
˜DŸJ™JÐ'Ð'r   c                 ó¬   •— t        |t        «      r4t        |«      dk7  rt        d«      ‚| j                  | j
                  f|k(  S t        ‰| �  |«       y rV   )r@   rX   rY   rZ   r   r   r[   Ú__eq__r]   s     €r   rb   zPythonVersionInfo.__eq__—   sH   ø€ Ü�eœUÔ#Ü�5‹z˜QŠÜ Ð!JÓKÐKØ—J‘J §
¡
Ð+¨uÑ4Ð4Ü‰‰�uÕr   c                 ó&   — | j                  |«       S ©N)rb   )r^   r_   s     r   Ú__ne__zPythonVersionInfo.__ne__ž   s   € Ø—;‘;˜uÓ%Ð%Ð%r   )r   r   r   r\   rb   re   Ú__classcell__)r`   s   @r   rT   rT   Œ   s   ø„ ô(ôö&r   rT   c                 ó  — t        j                  d| «      }|€t        d«      ‚t        |j	                  d«      «      }|j	                  d«      }|€|dk(  rd}n|dk(  rd}nt        d«      ‚t        |«      }t        ||«      S )	Nz-(\d+)(?:\.(\d{1,2})(?:\.\d+)?)?((a|b|rc)\d)?$zNThe given version is not in the right format. Use something like "3.8" or "3".r    rW   Ú7rK   Ú6z7Sorry, no support yet for those fancy new/old versions.)r+   r=   rZ   r   r>   ÚNotImplementedErrorrT   )Úversionr=   r   r   s       r   Ú_parse_versionrl   ¢   sŒ   € Ü�H‰HÐEÀwÓO€EØ€}Üð <ó =ð 	=ô �—‘˜A“Ó€EØ�K‰K˜‹N€EØ€}ð �AŠ:Ø‰EØ�aŠZØ‰Eä%Ð&_Ó`Ð`Ü�‹J€EÜ˜U EÓ*Ð*r   rk   c                 ó~   — | €dt         j                  dd z  } t        | t        «      st	        d«      ‚t        | «      S )z«
    Checks for a valid version number (e.g. `3.8` or `3.10.1` or `3`) and
    returns a corresponding version info that is always two characters long in
    decimal.
    Nz%s.%srW   z#version must be a string like "3.8")ÚsysrP   r@   rA   Ú	TypeErrorrl   )rk   s    r   Úparse_version_stringrp   ·   sA   € ð €ØœC×,Ñ,¨R¨aÐ0Ñ0ˆÜ�gœsÔ#ÜÐ=Ó>Ð>ä˜'Ó"Ð"r   )F)r9   Ústrictrd   )r+   rn   Úastr   Ú	functoolsr   Útypingr   r   r&   r   rA   Úboolr3   ÚbytesrH   rP   rR   rT   rl   rp   r   r   r   Ú<module>rw      sÐ   ðÛ 	Û 
Ý Ý $ß $ð

Ð ôˆjô ñ)/˜ð )/ tð )/¸ó )/ðZ GOñ1Ø�#�u�*Ñð1Ø),ð1Ø@Cð1àó1ðhK�gó Kô˜ô ð
 ô&Ð*ó &ó ð&ð*+Ð0ó +ñ*# #ð #Ð1Bô #r   