ó
    Ñ]ja1  ã                   ó¦  • S r SSKrSSKrSSKrSSKrSSK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Jr  SS	KJr  S
SKJr  SSKJr  SSKJr  \	" 5       rS
rSr\R6                  " SSR9                  S \ 5       5      -  5      r\R6                  " S5      rS\S\\   4S jr S r!S\S\"4S jr#S r$S"S\S\\   4S jjr%S r&S r'S r(S r)S  r*S! r+g)#z\Implementations for various useful completers.

These are all loaded by default by IPython.
é    N)Úimport_module)Úall_suffixes)Útime)Úzipimporteré   )Úexpand_userÚcompress_user)ÚTryNexté   )Ú	arg_split)Úget_ipython)ÚListé   z?(?P<name>[^\W\d]\w*?)(?P<package>[/\\]__init__)?(?P<suffix>%s)$Ú|c              #   óN   #   • U  H  n[         R                  " U5      v •  M     g 7f©N)ÚreÚescape)Ú.0Úss     ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/IPython/core/completerlib.pyÚ	<genexpr>r   :   s   é € Ð A²y°!¤§¢¨1§ ²yùs   ‚#%z.*(\.ipy|\.ipynb|\.py[w]?)$ÚpathÚreturnc                 ó¦  ^^	• U S:X  a  Sn [         R                  R                  m[         R                  R                  U 5      (       an  / n[         R                  " U SS9 HR  u  p#nU[        U 5      S-   S m	T	(       a#  UR                  UU	4S jU 5       5        / USS& MA  UR                  U5        MT     O- [        [        U 5      R                  R                  5       5      n/ nU HA  n[        R                  U5      nU(       d  M!  UR                  UR                  S5      5        MC     [        [!        U5      5      $ ! [         a    / n Nkf = f)	zT
Return the list containing the names of the modules available in the given
folder.
Ú Ú.T)Úfollowlinksr   Nc              3   ó6   >#   • U  H  nT" TU5      v •  M     g 7fr   © )r   ÚfÚpjoinÚsubdirs     €€r   r   Úmodule_list.<locals>.<genexpr>X   s   øé € Ð?²w°!™U 6¨1×-Ð-²wùs   ƒÚname)Úosr   ÚjoinÚisdirÚwalkÚlenÚextendÚlistr   Ú_filesÚkeysÚ	ExceptionÚ	import_reÚmatchÚappendÚgroupÚset)
r   ÚfilesÚrootÚdirsÚnondirsÚmodulesr!   Úmr"   r#   s
           @@r   Úmodule_listr;   D   s  ù€ ð ˆrƒzØˆô �G‰G�L‰L€Eä	‡w�w‡}�}�T×Ñð ˆÜ#%§7¢7¨4¸TÔ#BÑˆD˜Øœ#˜d›) A™+˜,Ð'ˆFÞØ—‘Õ?±wÓ?Ô?Ø�‘Q’à—‘˜WÖ%ò $Cð	Üœ TÓ*×1Ñ1×6Ñ6Ó8Ó9ˆEð
 €GÛˆÜ�O‰O˜AÓˆßˆ1Ø�N‰N˜1Ÿ7™7 6›?Ö+ñ ô ”�G“ÓÐøô ó 	ØŠEð	ús   Â8,E ÅEÅEc                  ó>  • [        5       n U c  [        [        R                  5      $ [	        U R
                  SS5      (       a  0 nOU R
                  R                  S0 5      n[        [        R                  5      n[        5       nSn[        R                   H  n X   nUR%                  U5        M     U(       a  XR
                  S'   [        ['        U5      5      nU$ ! [         a³    [        U5      n UR                  S5        O! [         a     Of = fUS;  a  XaU'   [        5       U-
  [        :”  a=  U(       d6  Sn[        S5        [        S5        [        R                  R!                  5         [        5       U-
  ["        :”  a  [        S	5        / s s  $  Nüf = f)
zª
Returns a list containing the names of all the modules available in the
folders of the pythonpath.

ip.db['rootmodules_cache'] maps sys.path entries to list of modules.
Ú_mockFÚrootmodules_cacheÚ__init__)r   r   Tz/
Caching the list of root modules, please wait!z@(This will only be done once - type '%rehashx' to reset cache!)
z%This is taking too long, we give up.
)r   r,   ÚsysÚbuiltin_module_namesÚgetattrÚdbÚgetr   r   ÚKeyErrorr;   ÚremoveÚ
ValueErrorÚTIMEOUT_STORAGEÚprintÚstdoutÚflushÚTIMEOUT_GIVEUPr+   r4   )Úipr>   ÚrootmodulesÚ
start_timeÚstorer   r9   s          r   Úget_root_modulesrQ   l   sl  € ô 
‹€BØ	�zô ”C×,Ñ,Ó-Ð-äˆr�u‰u�g˜u×%Ñ%ØÑàŸE™EŸI™IÐ&9¸2Ó>ÐÜ”s×/Ñ/Ó0€KÜ“€JØ€EÜ—”ˆð	Ø'Ñ-ˆGð$ 	×Ñ˜7Ö#ñ) ö* Ø%6�‰Ð!Ñ"Ü”s˜;Ó'Ó(€KØÐøô+ ó 	Ü! $Ó'ˆGðØ—‘˜zÕ*øÜó Ùðúà˜9Ó$Ø*1 $Ñ'Ü‹v˜
Ñ"¤_Ó4¾UØ�ÜÐHÔIÜð (ô )ä—
‘
× Ñ Ô"Ü‹v˜
Ñ"¤^Ó3ÜÐ>Ô?Ø”	ñ 4ð	ús7   ÂCÃFÃ5DÄFÄ
DÄFÄDÄBFÆFÚattrc                 ó¬   • U(       a"   [        X5      n[        R                  " U5      $ US S S:H  =(       a    USS  S:H  (       + $ ! [         a     gf = f)NFr   Ú__éþÿÿÿ)rB   ÚModuleNotFoundErrorÚinspectÚismodule)ÚmodulerR   Úonly_modulesÚmods       r   Úis_importabler\   ›   s_   € Þð	Ü˜&Ó'ˆCô ×Ò Ó$Ð$à˜˜�8˜tÑ#×9¨¨R¨S¨	°TÑ(9Ô:Ð:øô #ó 	áð	ús   ‰A Á
AÁAc                 ó|   •  [        X5      n[        R                  " U5      $ ! [         a     g[         a     gf = f)NTF)rB   ÚAttributeErrorÚ	TypeErrorrW   rX   )rY   rR   Úobjs      r   Úis_possible_submodulera   ¦   sC   € ðÜ�fÓ#ˆô ×Ò˜CÓ Ð øô ó áÜó áðús   ‚# £
;¯	;º;r[   c           
      óþ  ^
• U R                  S5      n  [        U 5      m
S[        T
SS5      =(       d    S;   n/ n[        T
S5      (       a  U(       a  U(       a>  UR	                  [        T
5       Vs/ s H  n[        T
XA5      (       d  M  UPM     sn5        [        T
S/ 5      nU(       a  UR	                  U
4S jU 5       5        OUR	                  U5        U(       aH  T
R                  n[        R                  R                  U5      nUb  UR	                  [        U5      5        U Vs1 s H  n[        U[        5      (       d  M  UiM     n	nU	R                  S5        [        U	5      $ !   / s $ = fs  snf s  snf )zF
Try to import given module and return list of potential completions.
r   r?   Ú__file__r   Ú__all__c              3   óN   >#   • U  H  n[        TU5      (       d  M  Uv •  M     g 7fr   )ra   )r   rR   r:   s     €r   r   Útry_import.<locals>.<genexpr>Å   s   øé € ÐTªE DÔ5JÈ1Èd×5SŸ4™4ªEùs   ƒ%œ	%)Úrstripr   rB   Úhasattrr+   Údirr\   rc   r&   r   Údirnamer;   Ú
isinstanceÚstrÚdiscardr,   )r[   rZ   Ú	m_is_initÚcompletionsrR   Úm_allÚfile_Ú	file_pathÚcÚcompletions_setr:   s             @r   Ú
try_importru   ²   sA  ø€ ð �*‰*�S‹/€CðÜ˜#Óˆð œw q¨*°bÓ9×?¸RÑ@€Ià€KÜ�A�z×"Ñ"®L¾YØ×Ñ¬c°!¬fó Cªf dÜ*¨1¨d×A÷ "©fñ Cô 	Dô �A�y "Ó%€EÞØ×ÑÔT©EÓTÕTà×Ñ˜5Ô!æØ—
‘
ˆÜ—G‘G—O‘O EÓ*ˆ	ØÑ Ø×Ñœ{¨9Ó5Ô6Ù"-ÓD¢+˜Q´¸A¼s×1C—q¡+€OÐDØ×Ñ˜JÔ'Ü�Ó Ð øð/ØŠ	üòCùò Es#   ”E, Á1E5Â
E5Ä+E:ÅE:Å,E2c                 óŒ   ^• [        T[        5      (       a  TR                  5       mU4S jn[        5       R	                  SX S9  g)a\  Easily create a trivial completer for a command.

Takes either a list of completions, or all completions in string (that will
be split on whitespace).

Example::

    [d:\ipython]|1> import ipy_completers
    [d:\ipython]|2> ipy_completers.quick_completer('foo', ['bar','baz'])
    [d:\ipython]|3> foo b<TAB>
    bar baz
    [d:\ipython]|3> foo ba
c                 ó   >• T$ r   r    )ÚselfÚeventro   s     €r   Údo_completeÚ$quick_completer.<locals>.do_completeé   s	   ø€ ØÐó    Úcomplete_command)Ústr_keyN)rk   rl   Úsplitr   Úset_hook)Úcmdro   rz   s    ` r   Úquick_completerr‚   ×   s=   ø€ ô �+œs×#Ñ#Ø!×'Ñ'Ó)ˆõô ƒM×ÑÐ-¨kÐÒIr|   c                 óÐ  • U R                  S5      n[        U5      nUS:X  a  US   S:X  a  S/$ US:  a�  US   S;   a„  US:X  a
  [        5       $ US   R                  S5      n[        U5      S	:  a
  [        5       $ [        SR	                  US
S 5      S5      nU Vs/ s H  nSR	                  US
S U/-   5      PM     sn$ US:¼  a  US   S:X  a  US   n[        U5      $ g
g
s  snf )z�
Returns a list containing the completion possibilities for an import line.

The line looks like this :
'import xml.d'
'from xml.dom import'
Ú é   r   Úfromzimport >   r†   Úimportú%aimportr   r   r   NéÿÿÿÿT)r   r*   rQ   ru   r'   )ÚlineÚwordsÚnwordsr[   Úcompletion_listÚels         r   Úmodule_completionr�   î   sú   € ð �J‰J�s‹O€EÜ�‹Z€Fð �ƒ{�u˜Q‘x 6Ó)Øˆ{Ðð �ƒz�u˜Q‘xÐ#AÓAØ�Q‹;Ü#Ó%Ð%Ø�A‰h�n‰n˜SÓ!ˆÜˆs‹8�a‹<Ü#Ó%Ð%Ü$ S§X¡X¨c°#°2¨hÓ%7¸Ó>ˆÙ4CÓD²O¨b�—‘˜˜S˜b˜ R D™Ö)±OÑDÐDð �ƒ{�u˜Q‘x 6Ó)Ø�A‰hˆÜ˜#‹Ðð *€{ùò Es   Â"C#c                 ó,   • [        UR                  5      $ )z@Give completions after user has typed 'import ...' or 'from ...')r�   rŠ   ©rx   ry   s     r   Úmodule_completerr’     s   € ô ˜UŸZ™ZÓ(Ð(r|   c                 óP  • [        UR                  SS9n[        U5      S:”  a5  UR                  R                  S5      (       d  US   R	                  S5      nOSn[
        R
                  n[        R                  R                  n[        U5      u  p6n[        S U 5       5      (       a>  U" US	-   5       Vs/ s H'  nUR                  S
S5      U" U5      (       a  SOS-   PM)     n	nO�U" US	-   5       Vs/ s H&  o…" U5      (       d  M  UR                  S
S5      S-   PM(     n
nU" US-   5      U" US-   5      -   U" US-   5      -   U" US-   5      -    Vs/ s H  nUR                  S
S5      PM     nnX«-   n	U	 Vs/ s H  n[        XÆU5      PM     sn$ s  snf s  snf s  snf s  snf )zKComplete files that end in .py or .ipy or .ipynb for the %run command.
    F)Ústrictr   r„   r‰   z'"r   c              3   óL   #   • U  H  n[         R                  U5      v •  M     g 7fr   )Úmagic_run_rer1   )r   rs   s     r   r   Ú&magic_run_completer.<locals>.<genexpr>7  s   é € Ð
0ª% QŒ<×Ñ˜a× Ð ª%ùs   ‚"$Ú*Ú\Ú/z*.pyz*.ipyz*.ipynbz*.pyw)r   rŠ   r*   ÚendswithÚstripÚglobr&   r   r(   r   ÚanyÚreplacer	   )rx   ry   ÚcompsÚrelpathÚlglobr(   Útilde_expandÚ	tilde_valr!   Úmatchesr7   ÚpysÚps                r   Úmagic_run_completerr¨   !  s²  € ô �e—j‘j¨Ñ/€EäˆE‹
�Q‹ §¡×!4Ñ!4°S×!9Ñ!9Ø˜‘)—/‘/ %Ó(‰àˆô �I‰I€EÜ�G‰G�M‰M€EÜ'2°7Ó';Ñ$€G˜9ô Ñ
0©%Ó
0×0Ñ0á%*¨7°3©;Ô%7ó9Ú%7 ð —I‘I˜d 3Ó'±%¸·(±(©3ÀÔCÙ%7ð 	ð 9ˆñ 49¸À¹Ô3EÓRÒ3E¨aÈÈqÏÓ)�—	‘	˜$˜sÓ# cÔ)Ñ3EˆÐRá˜w v™~Ó.±°w¸w±Ó1GÑGÙ�g˜iÑ'Ó(ñ)Ù+0°¸7Ñ1BÓ+CòDóEòD�Að —	‘	˜$˜sÖ#ñDð 	ð Eð ‘*ˆñ @GÓGºw¸!ŒM˜!¨9Ö5¹wÑGÐGùò9ùò SùòEùò Hs   Â7.FÃ5FÄ	FÅFÅ;F#c           
      óÆ  • [        5       nUR                  nUR                  R                  S5      (       d  SUR                  ;   a5  U R                  R                  SS5      nU(       a  UR                  5       $ / $ UR                  S:X  a�  [        [        [        [        UR                  S   5      S-   5      5      5      nSU-   S	-   n[        UR                  S   5       VVs/ s H  u  pxXgU4-  PM     n	nn[        U	5      S:”  a  U	$ / $ UR                  R                  S
5      (       a@  UR                  S    V
s/ s H%  n
S
[        R                  R                  U
5      -   PM'     sn
$ [        U5      u  p;nUR!                  SS5      n/ n["        R"                  " US-   5       Vs/ s H>  n[        R                  R%                  U5      (       d  M)  UR!                  SS5      S-   PM@     sn H   n
SU
;   a  [&        eUR)                  U
5        M"     U(       d�  [        R                  R%                  U5      (       a  [+        X;U5      /$ U R                  R                  S0 5      nU Vs/ s H&  oˆR                  UR                  5      (       d  M$  UPM(     nnU(       a  U$ [&        eU Vs/ s H  n[+        UX¼5      PM     sn$ s  snnf s  sn
f s  snf s  snf s  snf )z:Completer function for cd, which only returns directories.z-bz -b Ú	bookmarksNÚ-Ú_dhr   z-%0zd [%s]z--r™   rš   r˜   r„   )r   ÚsymbolrŠ   r›   rC   rD   r.   rl   r*   Úuser_nsÚ	enumerateÚ
startswithr&   r   Úbasenamer   rŸ   r�   r(   r
   r2   r	   )rx   ry   rM   r¡   ÚbkmsÚwidth_dhÚfmtÚir   ÚentsÚdr£   r¤   Úfoundr!   ÚbksÚ	bkmatchesr§   s                     r   Úcd_completerr»   F  s_  € ä	‹€BØ�l‰l€Gð ‡z�z×Ñ˜4× Ñ  F¨e¯j©jÓ$8à�w‰w�{‰{˜;¨Ó-ˆÞØ—9‘9“;ÐàˆIà‡|�|�sÓÜ”sœ3œs 2§:¡:¨eÑ#4Ó5¸Ñ9Ó:Ó;Ó<ˆà�hÑ Ñ(ˆÜ(1°"·*±*¸UÑ2CÔ(DÔEÒ(D¡ �˜!�u”Ñ(DˆÑEÜˆt‹9�q‹=ØˆKØˆ	à‡|�|×Ñ˜t×$Ñ$Ø46·J±J¸uÒ4EÓFÒ4E¨q�”r—w‘w×'Ñ'¨Ó*Ô*Ñ4EÑFÐFô (3°7Ó';Ñ$€G˜9Ø�o‰o˜d 3Ó'€Gà€EÜ15·²¸7À3¹;Ô1Gó #Ò1G¨AÜ—‘—‘˜q×!ó (ˆa�i‰i˜˜SÓ! CÔ'Ñ1Gô #ˆà�!‹8ô ˆMà�‰�QŽñ#ö Ü�7‰7�=‰=˜×!Ñ!Ü! '¸ÓCÐDÐDð �g‰g�k‰k˜+ bÓ)ˆÙ #ÓB¢˜1§|¡|°E·L±L×'A—Q¡ˆ	ÐBÞØÐäˆá?DÓEºu¸!ŒM˜!˜\Ö5¹uÑEÐEùóE Fùò Gùò#ùò Cùò Fs*   Ã%K	Ä>,KÆ*(KÇKÉ.#KÊKÊ0Kc                 ó"   • SR                  5       $ )zA completer for %reset magicz-f -s in out array dhist)r   r‘   s     r   Úreset_completerr½   |  s   € à%×+Ñ+Ó-Ð-r|   )F),Ú__doc__r�   rW   r&   r   r@   Ú	importlibr   Úimportlib.machineryr   r   Ú	zipimportr   Ú	completerr   r	   Úerrorr
   Úutils._process_commonr   ÚIPythonr   Útypingr   Ú	_suffixesrH   rL   Úcompiler'   r0   r–   rl   r;   rQ   Úboolr\   ra   ru   r‚   r�   r’   r¨   r»   r½   r    r|   r   Ú<module>rÊ      s  ðñó" Û Û 	Û 	Û 
Ý #Ý ,õ Ý !÷ 2Ý Ý -õ  å ñ
 ‹N€	ð €ð €ð �JŠJð *ð —y‘yÑ A±yÓ AÓAñBó C€	ð �zŠzÐ8Ó9€ð%�cð %˜d 3™iô %òP,ð^	; ð 	;°dô 	;ò	!ñ!�Cð !°°S±	õ !òJJò.òJ	)ò"HòJ4Fól.r|   