ó
    Ñ]jƒ  ã                   ó  • S r SSKrSSKJr  SSKJrJrJr  SSKJrJ	r	  SSK
Jr  SSK
Jr  SSKJr  SS	KJr  SSKJr  SSKrSSKrSSKr\" 5       rS
\S\4S jrS
\S\S\S\4S jrS
\S\S\4S jrS r " S S\5      r " S S\5      r g)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)Úget_ipythonÚstringÚreturnc                ó&  • U R                  SS5      n U R                  SS5      n [        U 5      U:  a  U $ U R                  S5      nU R                  [        R                  5      nUS   S:X  a  UR                  5         [        U5      S:”  a&  S	R                  US
   US   SS US   SS US   5      $ [        U5      S:”  aN  S[        R                  -   S-   [        R                  -   S-   R                  US
   US   SS US   SS US   5      $ U $ )ao  
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   Ú	min_elideÚobject_partsÚ
file_partss       ÚU/home/mande/repo/quber/.venv/lib/python3.13/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                óÈ   • [        U 5      U:  a  U $ [        U5      S-
  nUS:  a  U $ U R                  U5      (       a$  [        U 5      [        U5      :”  a  U SS  SXS  3$ U $ )zL
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)   E   sr   € ô
 ˆ6ƒ{�YÓØˆÜ�u“:˜a‘<€LØ�aÓØˆØ×Ñ˜×Ñ¤C¨£K´°U³Ó$;Ø˜˜!�*�Ð4°V¸MÐ5JÐ4KÐLÐLØ€Mr#   c                 ó$   • [        [        XS9XS9$ )N©r   )r)   r"   )r   r$   r   s      r!   Ú_elider,   T   s   € ÜÜ�VÑ1Øñ$ð $r#   c                 ój   • U R                  S5      (       a  [        U5      U:”  a  X   S:X  a  U S S $ U $ )NÚ=r   )Úendswithr   )ÚtextÚbodyÚoffsets      r!   Ú(_adjust_completion_text_based_on_contextr3   [   s6   € Ø‡}�}�S×Ñœc $›i¨&Ó0°T±\ÀSÓ5HØ�C�RˆyÐàˆr#   c                   ó>   • \ rS rSrSrS	S jr\S 5       rS rS r	Sr
g)
ÚIPythonPTCompleteréb   z8Adaptor to provide IPython completions to prompt_toolkitNc                 ó>   • Uc  Uc  [        S5      eXl        X l        g )Nz/Please pass shell=an InteractiveShell instance.)Ú	TypeErrorÚ_ipy_completerÚshell)ÚselfÚipy_completerr:   s      r!   Ú__init__ÚIPythonPTCompleter.__init__d   s#   € Ø‰=˜]Ñ2ÜÐMÓNÐNØ+ÔØ�
r#   c                 óh   • U R                   (       a  U R                   $ U R                  R                  $ )N)r9   r:   r   )r;   s    r!   r<   Ú IPythonPTCompleter.ipy_completerj   s'   € à××Ø×&Ñ&Ð&à—:‘:×'Ñ'Ð'r#   c              #   ón  #   • UR                   R                  5       (       d  g [        5          [        5          UR                  nUR
                  nUR                  nUR                  n[        X4U5      n U R                  X7X`R                  5       S h  v•N   S S S 5        S S S 5        g  N! [         aY  n [        R                  " 5       u  pšn[        R                  " XšU5         S nANR! [          a    [#        S5          S nANmf = fS nAff = f! , (       d  f       N= f! , (       d  f       g = f7f)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_colrF   r2   ÚeÚexc_typeÚ	exc_valueÚexc_tbs               r!   Úget_completionsÚ"IPythonPTCompleter.get_completionsq   sõ   é € Ø×$Ñ$×*Ñ*×,Ñ,Øô
 �^Ô1Õ3Ø—=‘=ˆDØ!×5Ñ5ˆJØ!×5Ñ5ˆJØ&×6Ñ6ˆOÜ'¨¸*ÓEˆFð@Ø×0Ñ0°¸×PbÑPbÓc×cÐc÷ 4�^ˆ^ñ døÜó @ð@Ü25·,²,³.Ñ/�H¨Ü×-Ò-¨hÀ6×JÑJøÜ%ó @ÜÐ>×?Ò?ð@þð	@ú÷ 4Õ3ú�^�^üs‡   ‚+D5­D$¸=DÁ6B-ÂB+ÂB-ÂD$Â"	D5Â+B-Â-
DÂ8/C,Ã'DÃ,D	ÄDÄDÄD	ÄDÄDÄDÄ
D!	ÄD$Ä$
D2Ä.D5c              #   ó¶  #   • [        USS5      n[        XR                  X5      5      nU GH§  nUR                  (       d  M  [        R
                  " SUR                  5      n[        US   5      S:X  ak  X7R                  -   S:”  aY  XR                  S-
     n	[        R
                  " SX˜-   5      n
[        USS 5      S:X  a  [        X§R                  U-
  S-
  S9v •  Mµ  UR                  n[        UR                  X5      nU R                  c  SOU R                  R                  nUR                  S	:X  aW  [        UUR                  U-
  [        US
-   XR                  UR                   US9UR                  UR                  -   S9v •  GMc  [        UUR                  U-
  [        UXR                  UR                   US9UR                  S9v •  GMª     g7f)zD
Private equivalent of get_completions() use only for unit_testing.
ÚdebugFÚNFCr   r   )Ústart_positionNé   Úfunctionz()r+   )r\   ÚdisplayÚdisplay_meta)Úgetattrr   Úcompletionsr0   ÚunicodedataÚ	normalizer   Ústartr   r3   r:   r   Útyper,   ÚendÚ	signature)r;   r1   r2   rF   ÚipycrZ   rb   Úcr0   Úchar_beforeÚ
fixed_textÚdisplay_textÚadjusted_textr   s                 r!   rG   Ú#IPythonPTCompleter._get_completions‡   s°  é € ô ˜˜g uÓ-ˆÜ.Ø×"Ñ" 4Ó0ó2ˆäˆAØ—6—6áÜ×(Ò(¨°·±Ó7ˆDô
 �t˜A‘wÓ 1Ó$Ø"§W¡WÑ,¨qÓ0Ø"&§w¡w°¡{Ñ"3�KÜ!,×!6Ò!6Ø˜{Ñ1ó"3�Jô ˜t A a˜yÓ)¨QÓ.Ü(¨ÇGÁGÈfÑDTÐWXÑDXÑYÒYÙ ð Ÿ6™6ˆLäDØ—‘˜óˆMð #Ÿj™jÑ0™°d·j±j×6JÑ6JˆIØ�v‰v˜Ó#Ü Ø!Ø#$§7¡7¨VÑ#3Ü"Ø$ tÑ+ØŸW™W q§u¡uÐ-Ø"+ñð
 "#§¡¨!¯+©+Ñ!5ñ	õ 	ô !Ø!Ø#$§7¡7¨VÑ#3Ü"Ø$ØŸW™W q§u¡uÐ-Ø"+ñð
 "#§¡ñ	õ 	òW ùs   ‚GG)r9   r:   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r=   Úpropertyr<   rW   rG   Ú__static_attributes__© r#   r!   r5   r5   b   s)   † ÙBôð ñ(ó ð(ò@õ,;r#   r5   c                   ó$   • \ rS rSrSrS rS rSrg)ÚIPythonPTLexeréÅ   z+
Wrapper around PythonLexer and BashLexer.
c           	      ó   • [         n[        UR                  5      U l        [        UR                  5      U l        [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      S.U l        g )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=   ÚIPythonPTLexer.__init__É   s�   € ÜˆÜ)¨!¯.©.Ó9ˆÔÜ(¨¯©Ó5ˆÔô " !§+¡+Ó.Ü! !§+¡+Ó.Ü'¨×(9Ñ(9Ó:Ü × 1Ñ 1Ó2Ü! !§+¡+Ó.Ü! !§+¡+Ó.Ü" 1§:¡:Ó.ñ
ˆÕr#   c                 óŽ  • UR                   R                  5       nU R                  nUR                  S5      (       d  UR                  S5      (       a  U R                  nOVUR                  S5      (       a@  U R
                  R                  5        H"  u  pEUR                  SU-   5      (       d  M   Un  O   UR                  U5      $ )NÚ!z%%bashz%%)r0   Úlstripr…   r'   r‡   r�   ÚitemsÚlex_document)r;   rO   r0   ÚlexerÚmagicrŽ   s         r!   r”   ÚIPythonPTLexer.lex_documentØ   sŸ   € Ø�}‰}×#Ñ#Ó%ˆà×!Ñ!ˆà�?‰?˜3×Ñ 4§?¡?°8×#<Ñ#<Ø×$Ñ$‰Eà�_‰_˜T×"Ñ"Ø ×-Ñ-×3Ñ3Ö5‘�Ø—?‘? 4¨%¡<×0Ó0Ø�EÙñ 6ð
 ×!Ñ! (Ó+Ð+r#   )r�   r…   r‡   N)rp   rq   rr   rs   rt   r=   r”   rv   rw   r#   r!   ry   ry   Å   s   † ñò
õ,r#   ry   )!rt   rc   r   ÚIPython.core.completerr   r   r   Úprompt_toolkit.completionr   r   Úprompt_toolkit.lexersr	   r
   Úprompt_toolkit.patch_stdoutr   ÚIPython.core.getipythonr   Úpygments.lexersÚlexersrƒ   r   rI   rK   ÚobjectÚ_completion_sentinelÚstrr"   Úintr)   r,   r3   r5   ry   rw   r#   r!   Ú<module>r£      s²   ðñó Ý ÷ñ ÷ <Ý 'Ý /Ý 4Ý /õ *Û 	Û 
Û á“xÐ ð#˜ð #¨sô #ðL˜ð  Sð ¸ð Àô ð$�3ð $˜sð $°#ô $òô`˜ô `ôF!,�Uõ !,r#   