§
    ŒŸjÐ  ã            	       ó  — 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dS )é    N)Úliteral_eval)Útotal_ordering)Ú
NamedTupleÚUnion)úúúúúõ   Â…u   â€¨u   â€©c                   ó.   — e Zd ZU eed<   eed<   eed<   dS )ÚVersionÚmajorÚminorÚmicroN©Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__© ó    úX/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/parso/utils.pyr   r      s+   € € € € € € Ø€J€J�JØ€J€J�JØ€J€J�J€J€Jr   r   FÚstringÚkeependsÚreturnz	list[str]c                 ó  — |rê|                       d¦  «        }g }t          |¦  «        D ]<\  }}	 |d         }|t          v r|                     |¦  «         Œ-# t          $ r Y Œ9w xY wt          |¦  «        D ]0}	 ||         ||dz            z   ||<   ||dz   = Œ!# t          $ r Y Œ-w xY w|                      d¦  «        s|                      d¦  «        s| dk    r|                     d¦  «         |S t          j        d| ¦  «        S )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      sI  € ð ð /Ø×Ò Ñ%Ô%ˆð ˆÝ  ‘~”~ð 	$ð 	$‰GˆAˆtð$Ø œ8�ð Õ/Ð/Ð/Ø—L’L ‘O”O�Oøøõ	 ð ð ð Ø�ðøøøõ ˜e‘_”_ð 	ð 	ˆEðØ  œZ¨#¨e°a©i¬.Ñ8��E‘
Ø˜ ™	�N�NøÝð ð ð ð �ðøøøð �?Š?˜4Ñ Ô ð 	 F§O¢O°DÑ$9Ô$9ð 	¸VÀrº\¸\Ø�JŠJ�r‰NŒNˆNØˆ
åŒx˜ vÑ.Ô.Ð.s#   ¯AÁ
A#Á"A#Á8BÂ
B#Â"B#úutf-8ÚstrictÚ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                  óL  •— t          d¦  «        } ‰                     | ¦  «        rdS t          j        d‰¦  «                             d¦  «        }t          j        d|¦  «        }|r=|                     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'r4   s   (?:[^\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Úer7   r6   s       €€r   Údetect_encodingz0python_bytes_to_unicode.<locals>.detect_encodingT   s±   ø€ õ !Ð!3Ñ4Ô4ˆ	Ø×Ò˜YÑ'Ô'ð 	à�7åœ(Ð#FÈÑOÔO×UÒUÐVWÑXÔXˆÝœIÐ&@Ø&5ñ7ô 7Ðàð 	Ø!×'Ò'¨Ñ*Ô*ˆAÝ˜a¥Ñ%Ô%ð /Ý˜˜7 IÑ.Ô.�ØˆHð ˆOr   r<   r4   )rA   rB   ÚLookupError)r6   r7   r8   rG   s   ``  r   Úpython_bytes_to_unicoderI   I   s¢   øø€ ðð ð ð ð ð õ. �&�#ÑÔð àˆàˆÑ Ô €Hð
å�6˜8 VÑ,Ô,Ð,øÝð ð ð Ø�YÒÐõ
 �v˜w¨Ñ/Ô/Ð/Ð/Ð/Øðøøøs   «< ¼!A!ÁA!c                  óx   — ddl m}  t          j        d| ¦  «        }t	          d„ t          |¦  «        D ¦   «         Ž S )z`
    Returns a namedtuple of parso's version, similar to Python's
    ``sys.version_info``.
    r   )Ú__version__z
[a-z]+|\d+c                 óB   — g | ]\  }}|d k    r|nt          |¦  «        ‘ŒS )é   )r   )Ú.0r/   Úxs      r   ú
<listcomp>z version_info.<locals>.<listcomp>„   s.   € ÐIÐIÐI±°°A˜!˜qš&˜&�Q�Q¥c¨!¡f¤fÐIÐIÐIr   )ÚparsorK   r+   Úfindallr   r%   )rK   Útupls     r   Úversion_inforT   }   sG   € ð
 "Ð!Ð!Ð!Ð!Ð!ÝŒ:�m [Ñ1Ô1€DÝÐIÐI½À4¹¼ÐIÑIÔIÐJÐJr   c                   ó$   — e Zd ZU eed<   eed<   dS )Ú_PythonVersionInfor   r   Nr   r   r   r   rV   rV   ‡   s"   € € € € € € Ø€J€J�JØ€J€J�J€J€Jr   rV   c                   ó.   ‡ — e Zd Zˆ fd„Zˆ fd„Zd„ Zˆ xZS )ÚPythonVersionInfoc                 óô   •— t          |t          ¦  «        r4t          |¦  «        dk    rt          d¦  «        ‚| j        | j        f|k    S t          ¦   «                              |¦  «         | j        | j        fS ©Né   z'Can only compare to tuples of length 2.)rA   ÚtupleÚlenÚ
ValueErrorr   r   ÚsuperÚ__gt__©ÚselfÚotherÚ	__class__s     €r   r`   zPythonVersionInfo.__gt__Ž   sl   ø€ Ý�e�UÑ#Ô#ð 	4Ý�5‰zŒz˜QŠˆÝ Ð!JÑKÔKÐKØ”J ¤
Ð+¨eÒ3Ð3Ý‰Œ�Š�uÑÔÐà”
˜DœJÐ'Ð'r   c                 óÜ   •— t          |t          ¦  «        r4t          |¦  «        dk    rt          d¦  «        ‚| j        | j        f|k    S t          ¦   «                              |¦  «         d S rZ   )rA   r\   r]   r^   r   r   r_   Ú__eq__ra   s     €r   rf   zPythonVersionInfo.__eq__—   sc   ø€ Ý�e�UÑ#Ô#ð 	5Ý�5‰zŒz˜QŠˆÝ Ð!JÑKÔKÐKØ”J ¤
Ð+¨uÒ4Ð4Ý‰Œ�Š�uÑÔÐÐÐr   c                 ó.   — |                       |¦  «         S ©N)rf   )rb   rc   s     r   Ú__ne__zPythonVersionInfo.__ne__ž   s   € Ø—;’;˜uÑ%Ô%Ð%Ð%r   )r   r   r   r`   rf   ri   Ú__classcell__)rd   s   @r   rX   rX   Œ   s`   ø€ € € € € ð(ð (ð (ð (ð (ðð ð ð ð ð&ð &ð &ð &ð &ð &ð &r   rX   c                 ó@  — t          j        d| ¦  «        }|€t          d¦  «        ‚t          |                     d¦  «        ¦  «        }|                     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    r[   Ú7rM   Ú6z7Sorry, no support yet for those fancy new/old versions.)r+   r>   r^   r   r?   ÚNotImplementedErrorrX   )Úversionr>   r   r   s       r   Ú_parse_versionrp   ¢   s©   € ÝŒHÐEÀwÑOÔO€EØ€}Ýð <ñ =ô =ð 	=õ �—’˜A‘”ÑÔ€EØ�KŠK˜‰NŒN€EØ€}ð �AŠ:ˆ:ØˆEˆEØ�aŠZˆZØˆEˆEå%Ð&_Ñ`Ô`Ð`Ý�‰JŒJ€EÝ˜U EÑ*Ô*Ð*r   ro   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.%sr[   z#version must be a string like "3.8")ÚsysrT   rA   rB   Ú	TypeErrorrp   )ro   s    r   Úparse_version_stringrt   ·   sN   € ð €Ø�CÔ,¨R¨a¨RÔ0Ñ0ˆÝ�g�sÑ#Ô#ð ?ÝÐ=Ñ>Ô>Ð>å˜'Ñ"Ô"Ð"r   )F)r4   r5   rh   )r+   rr   Úastr   Ú	functoolsr   Útypingr   r   r&   r   rB   Úboolr3   ÚbytesrI   rT   rV   rX   rp   rt   r   r   r   ú<module>rz      sÍ  ðØ 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $ð

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