Ë
    7;h9  ã            	       ó  — 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y)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                ó  — | j                  dd«      } | j                  dd«      } t        | «      |k  r| S | j                  d«      }| j                  t        j                  «      }|d   dk(  r|j                  «        t        |«      dkD  r&d	j                  |d
   |d   dd |d   dd |d   «      S t        |«      dkD  rNdt        j                  z   dz   t        j                  z   dz   j                  |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       úi/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/IPython/terminal/ptutils.pyÚ_elide_pointr#      s$  € ð �^‰^˜EÐ";Ó<€FØ�^‰^˜DÐ!5Ó6€FÜ
ˆ6ƒ{�YÒØˆà—<‘< Ó$€LØ—‘œbŸf™fÓ%€JØ�"�~˜ÒØ�‰Ôä
ˆ<Ó˜1ÒØ2×9Ñ9Ø˜‰OØ˜‰O˜B˜QÐØ˜Ñ˜R˜SÐ!Ø˜Ñó	
ð 	
ô 
ˆZ‹˜1Ò	Ø”r—v‘v‘Ð =Ñ=ÄÇÁÑFÈÑM×UÑUØ�q‰M˜: a™=¨¨!Ð,¨j¸©n¸R¸SÐ.AÀ:ÈbÁ>ó
ð 	
ð €Mó    Útypedr   c                óº   — t        | «      |k  r| S t        |«      dz
  }|dk  r| S | j                  |«      r$t        | «      t        |«      kD  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   sq   € ô
 ˆ6ƒ{�YÒØˆÜ�u“:˜a‘<€LØ�aÒØˆØ×Ñ˜Ô¤C¨£K´°U³Ò$;Ø˜˜!�*�Ð4°V¸L¸MÐ5JÐ4KÐLÐLØ€Mr$   c                 ó4   — t        t        | |¬«      ||¬«      S )Nr   )r*   r#   )r   r%   r   s      r"   Ú_elider,   O   s   € ÜÜ�V yÔ1Ø˜ô$ð $r$   c                 ó^   — | j                  d«      rt        |«      |kD  r||   dk(  r| d d S | S )NÚ=r   )Úendswithr   )ÚtextÚbodyÚoffsets      r"   Ú(_adjust_completion_text_based_on_contextr3   V   s5   € Ø‡}�}�SÔœc $›i¨&Ò0°T¸&±\ÀSÒ5HØ�C�RˆyÐàˆr$   c                   ó>   — e Zd ZdZdd„Zed„ «       Zd„ Zed„ «       Z	y)ÚIPythonPTCompleterz8Adaptor to provide IPython completions to prompt_toolkitNc                 ó>   — |€|€t        d«      ‚|| _        || _        y )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Ø+ˆÔØˆ�
r$   c                 ó^   — | j                   r| j                   S | j                  j                  S )N)r8   r9   r   )r:   s    r"   r;   z IPythonPTCompleter.ipy_completere   s'   € à×ÒØ×&Ñ&Ð&à—:‘:×'Ñ'Ð'r$   c              #   óL  K  — |j                   j                  «       sy t        «       5  t        «       5  |j                  }|j
                  }|j                  }|j                  }t        |||«      }	 | j                  |||| j                  «      E d {  –—†  d d d «       d d d «       y 7 Œ# t        $ rU}	 t        j                  «       \  }	}
}t        j                  |	|
|«       n# t         $ r t#        d«       Y nw xY wY d }~Œld }~ww xY w# 1 sw Y   ŒuxY w# 1 sw Y   y xY w­w)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ù   è ø€ Ø×$Ñ$×*Ñ*Ô,Øô
 �^Ô1Õ3Ø—=‘=ˆDØ!×5Ñ5ˆJØ!×5Ñ5ˆJØ&×6Ñ6ˆOÜ'¨¨j¸*ÓEˆFð@Ø×0Ñ0°°v¸ÐPT×PbÑPbÓc×cÐc÷ 4�^ˆ^ð dùÜò @ð@Ü25·,±,³.Ñ/�H˜i¨Ü×-Ñ-¨h¸	À6ÕJøÜ%ò @ÜÐ>Ö?ð@ÿûð	@ú÷ 4Ð3ú�^ˆ^üs‡   ‚&D$¨D³>DÁ2!B+ÂB)ÂB+ÂDÂ 	D$Â)B+Â+	D	Â5/C%Ã$DÃ%C<	Ã9DÃ;C<	Ã<DÃ?DÄD	Ä	DÄD	ÄDÄD!ÄD$c              #   ót  K  — t        |dd«      }t        | |j                  | |«      «      }|D �]…  }|j                  sŒt	        j
                  d|j                  «      }t        |d   «      dk(  rn||j                  z   dkD  r\| |j                  dz
     }t	        j
                  d||z   «      }	t        |dd «      dk(  r t        |	|j                  |z
  dz
  ¬«      –— Œ°|j                  }
t        |j                  | |«      }|j                  dk(  r[t        ||j                  |z
  t        |
dz   | |j                  |j                   «      |j                  |j                  z   ¬	«      –— �Œ=t        ||j                  |z
  t        |
| |j                  |j                   «      |j                  ¬	«      –— �Œˆ y
­w)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‚   sô  è ø€ ô
 ˜˜g uÓ-ˆÜ.Ø�$×"Ñ" 4¨Ó0ó2ˆäˆAØ—6’6àÜ×(Ñ(¨°·±Ó7ˆDô
 �t˜A‘wÓ 1Ò$Ø" Q§W¡WÑ,¨qÒ0Ø"& q§w¡w°¡{Ñ"3�KÜ!,×!6Ñ!6Ø˜{¨TÑ1ó"3�Jô ˜t A a˜yÓ)¨QÒ.Ü(¨ÀAÇGÁGÈfÑDTÐWXÑDXÔYÒYØ ð Ÿ6™6ˆLäDÀQÇVÁVÈTÐSYÓZˆMØ�v‰v˜Ò#Ü  ¸q¿w¹wÈÑ?OÔY_Ð`lÐmqÑ`qÐswÐxy×xÑxð  AB÷  AFñ  AFð  tGó  ZHð  WX÷  W]ñ  W]ð  ^_÷  ^iñ  ^iñ  Wiô  jô  jä  ¸q¿w¹wÈÑ?OÔY_Ð`lÐosÐtu×t{Ñt{Ð|}÷  }Bñ  }Bð  pCó  ZDð  ST÷  SYñ  SYô  Zô  Zñ? ùs   ‚F6F8)NN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r<   Úpropertyr;   rT   ÚstaticmethodrD   © r$   r"   r5   r5   ]   s:   „ ÙBóð ñ(ó ð(ò@ð, ñ&Zó ñ&Zr$   r5   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú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œ| _        y )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ˆÔÜ(¨¯©Ó5ˆÔô " !§+¡+Ó.Ü! !§+¡+Ó.Ü'¨×(9Ñ(9Ó:Ü × 1Ñ 1Ó2Ü! !§+¡+Ó.Ü! !§+¡+Ó.Ü" 1§:¡:Ó.ñ
ˆÕr$   c                 ód  — |j                   j                  «       }| j                  }|j                  d«      s|j                  d«      r| j                  }nK|j                  d«      r:| j
                  j                  «       D ]  \  }}|j                  d|z   «      sŒ|} n |j                  |«      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à�_‰_˜TÔ"Ø ×-Ñ-×3Ñ3Ö5‘��qØ—?‘? 4¨%¡<Õ0Ø�EÙð 6ð
 ×!Ñ! (Ó+Ð+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å )Û 	Û 
Û á“xÐ à*,ò #˜ð #¨só #ðJ :<ò ˜ð  3ð °Sð ¸có ñ$�#ð $˜Sð $°ó $òôLZ˜ô LZô\!,�Uõ !,r$   