§
    �Ÿj9  ã            	       ó&  — d Z ddlZddlmZ ddlmZmZmZ ddlmZm	Z	 ddl
mZ ddl
mZ ddlmZ ddlmZ ddlZddlZddlZ e¦   «         Zd	d
œdedefd„Zd	d
œdedededefd„Zddededefd„Zd„ Z G d„ de¦  «        Z G d„ de¦  «        ZdS )zfprompt-toolkit utilities

Everything in this module is a private API,
not to be used outside IPython.
é    N)Úwcwidth)ÚprovisionalcompleterÚcursor_to_positionÚ_deduplicate_completions)Ú	CompleterÚ
Completion)ÚLexer)ÚPygmentsLexer)Úpatch_stdouté   ©Ú	min_elideÚstringÚreturnc                ó¼  — |                       dd¦  «        } |                       dd¦  «        } t          | ¦  «        |k     r| S |                      d¦  «        }|                      t          j        ¦  «        }|d         dk    r|                     ¦   «          t          |¦  «        dk    r@d	                     |d
         |d         dd…         |d         dd…         |d         ¦  «        S t          |¦  «        dk    r`dt          j        z   dz   t          j        z   dz                        |d
         |d         dd…         |d         dd…         |d         ¦  «        S | S )a�  
    If a string is long enough, and has at least 3 dots,
    replace the middle part with ellipses.

    If a string naming a file is long enough, and has at least 3 slashes,
    replace the middle part with ellipses.

    If three consecutive dots, or two consecutive dots are encountered these are
    replaced by the equivalents HORIZONTAL ELLIPSIS or TWO DOT LEADER unicode
    equivalents
    z...õ   â€¦z..u   â€¥ú.éÿÿÿÿÚ é   u   {}.{}â€¦{}.{}r   é   Néþÿÿÿz{}u   {}â€¦{})ÚreplaceÚlenÚsplitÚosÚsepÚpopÚformat)r   r   Úobject_partsÚ
file_partss       úe/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/IPython/terminal/ptutils.pyÚ_elide_pointr#      sU  € ð �^Š^˜EÐ";Ñ<Ô<€FØ�^Š^˜DÐ!5Ñ6Ô6€FÝ
ˆ6�{„{�YÒÐØˆà—<’< Ñ$Ô$€LØ—’�bœfÑ%Ô%€JØ�"„~˜ÒÐØ�ŠÑÔÐå
ˆ<ÑÔ˜1ÒÐØ2×9Ò9Ø˜ŒOØ˜ŒO˜B˜Q˜BÔØ˜Ô˜R˜S˜SÔ!Ø˜Ôñ	
ô 
ð 	
õ 
ˆZ‰Œ˜1Ò	Ð	Ø•r”v‘Ð =Ñ=ÅÄÑFÈÑM×UÒUØ�qŒM˜: aœ=¨¨!¨Ô,¨j¸¬n¸R¸S¸SÔ.AÀ:ÈbÄ>ñ
ô 
ð 	
ð €Mó    Útypedr   c                óü   — t          | ¦  «        |k     r| S t          |¦  «        dz
  }|dk     r| S |                      |¦  «        r7t          | ¦  «        t          |¦  «        k    r| dd…         › d| |d…         › �S | S )zT
    Elide the middle of a long string if the beginning has already been typed.
    r   é   Nr   )r   Ú
startswith)r   r%   r   Úcut_how_muchs       r"   Ú_elide_typedr*   A   s�   € õ
 ˆ6�{„{�YÒÐØˆÝ�u‘:”:˜a‘<€LØ�aÒÐØˆØ×Ò˜ÑÔð M¥C¨¡K¤Kµ°U±´Ò$;Ð$;Ø˜˜!˜”*ÐLÐL°V¸L¸M¸MÔ5JÐLÐLÐLØ€Mr$   c                 óD   — t          t          | |¬¦  «        ||¬¦  «        S )Nr   )r*   r#   )r   r%   r   s      r"   Ú_elider,   O   s.   € ÝÝ�V yÐ1Ñ1Ô1Ø˜ð$ñ $ô $ð $r$   c                 ó‚   — |                       d¦  «        r)t          |¦  «        |k    r||         dk    r
| d d…         S | S )Nú=r   )Úendswithr   )ÚtextÚbodyÚoffsets      r"   Ú(_adjust_completion_text_based_on_contextr3   V   sG   € Ø‡}‚}�SÑÔð �c $™iœi¨&Ò0Ð0°T¸&´\ÀSÒ5HÐ5HØ�C�R�CŒyÐàˆr$   c                   óL   — e Zd ZdZdd„Zed„ ¦   «         Zd„ Zed„ ¦   «         Z	dS )ÚIPythonPTCompleterz8Adaptor to provide IPython completions to prompt_toolkitNc                 óH   — |€|€t          d¦  «        ‚|| _        || _        d S )Nz/Please pass shell=an InteractiveShell instance.)Ú	TypeErrorÚ_ipy_completerÚshell)ÚselfÚipy_completerr9   s      r"   Ú__init__zIPythonPTCompleter.__init___   s.   € Øˆ=˜]Ð2ÝÐMÑNÔNÐNØ+ˆÔØˆŒ
ˆ
ˆ
r$   c                 ó6   — | j         r| j         S | j        j        S )N)r8   r9   r   )r:   s    r"   r;   z IPythonPTCompleter.ipy_completere   s!   € àÔð 	(ØÔ&Ð&à”:Ô'Ð'r$   c              #   óH  K  — |j                              ¦   «         sd S t          ¦   «         5  t          ¦   «         5  |j        }|j        }|j        }|j        }t          |||¦  «        }	 |  	                    |||| j
        ¦  «        E d {V —† ne# t          $ rX}	 t          j        ¦   «         \  }	}
}t          j        |	|
|¦  «         n# t           $ r t#          d¦  «         Y nw xY wY d }~nd }~ww xY wd d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nz"Unrecoverable Error in completions)Úcurrent_lineÚstripr   r   r0   Úcursor_position_rowÚcursor_position_colÚcursor_positionr   Ú_get_completionsr;   Ú	ExceptionÚsysÚexc_infoÚ	tracebackÚprint_exceptionÚAttributeErrorÚprint)r:   ÚdocumentÚcomplete_eventr1   Ú
cursor_rowÚ
cursor_colrC   r2   ÚeÚexc_typeÚ	exc_valueÚexc_tbs               r"   Úget_completionsz"IPythonPTCompleter.get_completionsl   s  è è € ØÔ$×*Ò*Ñ,Ô,ð 	ØˆFõ
 ‰^Œ^ð 	@ð 	@Õ1Ñ3Ô3ð 	@ð 	@Ø”=ˆDØ!Ô5ˆJØ!Ô5ˆJØ&Ô6ˆOÝ'¨¨j¸*ÑEÔEˆFð@Ø×0Ò0°°v¸ÐPTÔPbÑcÔcÐcÐcÐcÐcÐcÐcÐcÐcøÝð @ð @ð @ð@Ý25´,±.´.Ñ/�H˜i¨ÝÔ-¨h¸	À6ÑJÔJÐJÐJøÝ%ð @ð @ð @ÝÐ>Ñ?Ô?Ð?Ð?Ð?ð@øøøøøøøøøøøøð	@øøøð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s|   ¬D».C?Á*#BÂC?Â
C0Â-CÃC+ÃC#	Ã C+Ã"C#	Ã#C+Ã&C?Ã+C0Ã0C?Ã3DÃ?D	ÄDÄD	ÄDÄDÄDc              #   óJ  K  — t          |dd¦  «        }t          | |                     | |¦  «        ¦  «        }|D �]g}|j        sŒt	          j        d|j        ¦  «        }t          |d         ¦  «        dk    rp||j        z   dk    rb| |j        dz
           }t	          j        d||z   ¦  «        }	t          |dd…         ¦  «        dk    rt          |	|j        |z
  dz
  ¬¦  «        V — Œ®|j        }
t          |j        | |¦  «        }|j
        dk    rOt          ||j        |z
  t          |
dz   | |j        |j        …         ¦  «        |j
        |j        z   ¬	¦  «        V — �Œ%t          ||j        |z
  t          |
| |j        |j        …         ¦  «        |j
        ¬	¦  «        V — �Œid
S )zT
        Private equivalent of get_completions() use only for unit_testing.
        ÚdebugFÚNFCr   r   )Ústart_positionÚfunctionz())rX   ÚdisplayÚdisplay_metaN)Úgetattrr   Úcompletionsr0   ÚunicodedataÚ	normalizer   Ústartr   r3   Útyper,   ÚendÚ	signature)r1   r2   rC   ÚipycrV   r]   Úcr0   Úchar_beforeÚ
fixed_textÚdisplay_textÚadjusted_texts               r"   rD   z#IPythonPTCompleter._get_completions‚   sW  è è € õ
 ˜˜g uÑ-Ô-ˆÝ.Ø�$×"Ò" 4¨Ñ0Ô0ñ2ô 2ˆàð 	Zñ 	ZˆAØ”6ð àÝÔ(¨°´Ñ7Ô7ˆDõ
 �t˜A”wÑÔ 1Ò$Ð$Ø" Q¤WÑ,¨qÒ0Ð0Ø"& q¤w°¡{Ô"3�KÝ!,Ô!6Ø˜{¨TÑ1ñ"3ô "3�Jõ ˜t A a CœyÑ)Ô)¨QÒ.Ð.Ý(¨ÀAÄGÈfÑDTÐWXÑDXÐYÑYÔYÐYÐYÐYØ ð œ6ˆLåDÀQÄVÈTÐSYÑZÔZˆMØŒv˜Ò#Ð#Ý  ¸q¼wÈÑ?OÕY_Ð`lÐmqÑ`qÐswÐxyÔxð  ABô  AFð  yFô  tGñ  ZHô  ZHð  WXô  W]ð  ^_ô  ^iñ  Wið  jñ  jô  jð  jð  jð  jñ  jå  ¸q¼wÈÑ?OÕY_Ð`lÐosÐtuÔt{Ð|}ô  }Bð  uBô  pCñ  ZDô  ZDð  STô  SYð  Zñ  Zô  Zð  Zð  Zð  Zñ  Zð?	Zð 	Zr$   )NN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r<   Úpropertyr;   rT   ÚstaticmethodrD   © r$   r"   r5   r5   ]   s{   € € € € € ØBÐBðð ð ð ð ð(ð (ñ „Xð(ð@ð @ð @ð, ð&Zð &Zñ „\ð&Zð &Zð &Zr$   r5   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚIPythonPTLexerz3
    Wrapper around PythonLexer and BashLexer.
    c           	      ó’  — t           }t          |j        ¦  «        | _        t          |j        ¦  «        | _        t          |j        ¦  «        t          |j        ¦  «        t          |j        ¦  «        t          |j        ¦  «        t          |j        ¦  «        t          |j	        ¦  «        t          |j
        ¦  «        dœ| _        d S )N)ÚHTMLÚhtmlÚ
javascriptÚjsÚperlÚrubyÚlatex)Úpygments_lexersr
   ÚPython3LexerÚpython_lexerÚ	BashLexerÚshell_lexerÚ	HtmlLexerÚJavascriptLexerÚ	PerlLexerÚ	RubyLexerÚTexLexerÚmagic_lexers)r:   Úls     r"   r<   zIPythonPTLexer.__init__¯   sŸ   € ÝˆÝ)¨!¬.Ñ9Ô9ˆÔÝ(¨¬Ñ5Ô5ˆÔõ " !¤+Ñ.Ô.Ý! !¤+Ñ.Ô.Ý'¨Ô(9Ñ:Ô:Ý Ô 1Ñ2Ô2Ý! !¤+Ñ.Ô.Ý! !¤+Ñ.Ô.Ý" 1¤:Ñ.Ô.ð
ð 
ˆÔÐÐr$   c                 óp  — |j                              ¦   «         }| j        }|                     d¦  «        s|                     d¦  «        r| j        }nP|                     d¦  «        r;| j                             ¦   «         D ]!\  }}|                     d|z   ¦  «        r|} nŒ"|                     |¦  «        S )Nú!z%%bashz%%)r0   Úlstripr}   r(   r   r…   ÚitemsÚlex_document)r:   rL   r0   ÚlexerÚmagicr†   s         r"   r‹   zIPythonPTLexer.lex_document¾   sÁ   € ØŒ}×#Ò#Ñ%Ô%ˆàÔ!ˆà�?Š?˜3ÑÔð 	 4§?¢?°8Ñ#<Ô#<ð 	ØÔ$ˆEˆEà�_Š_˜TÑ"Ô"ð 	Ø Ô-×3Ò3Ñ5Ô5ð ð ‘��qØ—?’? 4¨%¡<Ñ0Ô0ð Ø�EØ�Eðð ×!Ò! (Ñ+Ô+Ð+r$   N)rj   rk   rl   rm   r<   r‹   rp   r$   r"   rr   rr   «   s<   € € € € € ðð ð
ð 
ð 
ð,ð ,ð ,ð ,ð ,r$   rr   )r   )rm   r^   r   ÚIPython.core.completerr   r   r   Úprompt_toolkit.completionr   r   Úprompt_toolkit.lexersr	   r
   Úprompt_toolkit.patch_stdoutr   Úpygments.lexersÚlexersr{   r   rF   rH   ÚobjectÚ_completion_sentinelÚstrr#   Úintr*   r,   r3   r5   rr   rp   r$   r"   ú<module>r˜      s  ððð ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø /Ð /Ð /Ð /Ð /Ð /Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à )Ð )Ð )Ð )Ð )Ð )Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð à�v‘x”xÐ à*,ð #ð #ð #˜ð #¨sð #ð #ð #ð #ðJ :<ð ð ð ˜ð  3ð °Sð ¸cð ð ð ð ð$ð $�#ð $˜Sð $°ð $ð $ð $ð $ðð ð ðLZð LZð LZð LZð LZ˜ñ LZô LZð LZð\!,ð !,ð !,ð !,ð !,�Uñ !,ô !,ð !,ð !,ð !,r$   