§
    �Ÿjã/  ã                   ó˜  — d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
m
Z
 ddl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  e	¦   «         Zd
ZdZ ej        dd                     d„ eD ¦   «         ¦  «        z  ¦  «        Z ej        d¦  «        Zd„ Zd„ Z d„ Z!d„ Z"d!de#dee#         fd„Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d „ Z*dS )"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              #   ó>   K  — | ]}t          j        |¦  «        V — Œd S ©N)ÚreÚescape)Ú.0Úss     úf/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/IPython/core/completerlib.pyú	<genexpr>r   :   s*   è è € Ð AÐ A°!¥¤¨1¡¤Ð AÐ AÐ AÐ AÐ AÐ Aó    z.*(\.ipy|\.ipynb|\.py[w]?)$c                 ó¶  ‡‡	— | dk    rd} t           j        j        Št           j                             | ¦  «        r{g }t          j        | d¬¦  «        D ]a\  }}}|t          | ¦  «        dz   d…         Š	‰	r*|                     ˆˆ	fd„|D ¦   «         ¦  «         g |dd…<   ŒL|                     |¦  «         Œbn>	 t          t          | ¦  «        j	         
                    ¦   «         ¦  «        }n	#  g }Y nxY wg }|D ]F}t                               |¦  «        }|r(|                     |                     d¦  «        ¦  «         ŒGt          t          |¦  «        ¦  «        S )	z`
    Return the list containing the names of the modules available in the given
    folder.
    Ú ú.T)Úfollowlinksr   Nc              3   ó0   •K  — | ]} ‰‰|¦  «        V — Œd S r   © )r   ÚfÚpjoinÚsubdirs     €€r   r   zmodule_list.<locals>.<genexpr>W   s/   øè è € Ð?Ð?°!˜U˜U 6¨1Ñ-Ô-Ð?Ð?Ð?Ð?Ð?Ð?r   Úname)ÚosÚpathÚjoinÚisdirÚwalkÚlenÚextendÚlistr   Ú_filesÚkeysÚ	import_reÚmatchÚappendÚgroupÚset)
r%   ÚfilesÚrootÚdirsÚnondirsÚmodulesr    Úmr!   r"   s
           @@r   Úmodule_listr9   C   sq  øø€ ð ˆr‚z€zØˆõ ŒGŒL€Eå	„w‡}‚}�TÑÔð ð ˆÝ#%¤7¨4¸TÐ#BÑ#BÔ#Bð 	&ð 	&ÑˆD�$˜Ø�#˜d™)œ) A™+˜,˜,Ô'ˆFØð &Ø—’Ð?Ð?Ð?Ð?Ð?°wÐ?Ñ?Ô?Ñ?Ô?Ð?Ø��Q�Q�Q‘�à—’˜WÑ%Ô%Ð%Ð%ð	&ð	Ý� TÑ*Ô*Ô1×6Ò6Ñ8Ô8Ñ9Ô9ˆEˆEøð	ØˆEˆEˆEøøøð €GØð ,ð ,ˆÝ�OŠO˜AÑÔˆØð 	,Ø�NŠN˜1Ÿ7š7 6™?œ?Ñ+Ô+Ð+øÝ•�G‘”ÑÔÐs   Â73C+ Ã+C1c                  ó<  — t          ¦   «         } | €t          t          j        ¦  «        S | j                             di ¦  «        }t          t          j        ¦  «        }t          ¦   «         }d}t          j        D ]ù}	 ||         }nØ# t          $ rË t          |¦  «        }	 | 
                    d¦  «         n# t          $ r Y nw xY w|dvr|||<   t          ¦   «         |z
  t          k    r@|s>d}t          d¦  «         t          d¦  «         t          j                             ¦   «          t          ¦   «         |z
  t           k    rt          d	¦  «         g cY c S Y nw xY w|                     |¦  «         Œú|r
|| j        d<   t          t%          |¦  «        ¦  «        }|S )
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.
    NÚrootmodules_cacheFÚ__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ÚdbÚgetr   r%   ÚKeyErrorr9   ÚremoveÚ
ValueErrorÚTIMEOUT_STORAGEÚprintÚstdoutÚflushÚTIMEOUT_GIVEUPr*   r2   )Úipr;   ÚrootmodulesÚ
start_timeÚstorer%   r7   s          r   Úget_root_modulesrM   k   sÍ  € õ 
‰Œ€BØ	€zõ •CÔ,Ñ-Ô-Ð-àœŸ	š	Ð"5°rÑ:Ô:ÐÝ•sÔ/Ñ0Ô0€KÝ‘”€JØ€EÝ”ð $ð $ˆð	Ø'¨Ô-ˆGˆGøÝð 	ð 	ð 	Ý! $Ñ'Ô'ˆGðØ—’˜zÑ*Ô*Ð*Ð*øÝð ð ð Ø�ðøøøà˜9Ð$Ð$Ø*1Ð! $Ñ'Ý‰vŒv˜
Ñ"¥_Ò4Ð4¸UÐ4Ø�ÝÐHÑIÔIÐIÝð (ñ )ô )ð )å”
× Ò Ñ"Ô"Ð"Ý‰vŒv˜
Ñ"¥^Ò3Ð3ÝÐ>Ñ?Ô?Ð?Ø�	�	�	�	�	ð 4Ð3ð	øøøð" 	×Ò˜7Ñ#Ô#Ð#Ð#Øð 7Ø%6ˆŒÐ!Ñ"Ý•s˜;Ñ'Ô'Ñ(Ô(€KØÐs7   Á=BÂEÂ B6Â5EÂ6
CÃ EÃCÃBEÅEc                 ó„   — |r"t          j        t          | |¦  «        ¦  «        S |d d…         dk    o|dd …         dk     S )Nr   Ú__éþÿÿÿ)ÚinspectÚismoduleÚgetattr)ÚmoduleÚattrÚonly_moduless      r   Úis_importablerW   —   sM   € Øð ;ÝÔ¥¨°Ñ 5Ô 5Ñ6Ô6Ð6à˜˜˜”8˜tÒ#Ð9¨¨R¨S¨S¬	°TÒ(9Ð:Ð:r   c                 óˆ   — 	 t          | |¦  «        }n# t          $ r Y dS t          $ r Y dS w xY wt          j        |¦  «        S )NTF)rS   ÚAttributeErrorÚ	TypeErrorrQ   rR   )rT   rU   Úobjs      r   Úis_possible_submoduler\   �   sf   € ðÝ�f˜dÑ#Ô#ˆˆøÝð ð ð àˆtˆtÝð ð ð àˆuˆuðøøøõ Ô˜CÑ Ô Ð s   ‚ “
- 	-¬-FÚmodÚreturnc                 ó˜  ‡‡— |                       d¦  «        } 	 t          | ¦  «        Šn	#  g cY S xY wdt          ‰dd¦  «        pdv }g }t          ‰d¦  «        r‰r|r/|                     ˆˆfd„t          ‰¦  «        D ¦   «         ¦  «         t          ‰dg ¦  «        }‰r"|                     ˆfd„|D ¦   «         ¦  «         n|                     |¦  «         |rD|                     t          t          j         	                    ‰j
        ¦  «        ¦  «        ¦  «         d„ |D ¦   «         }|                     d¦  «         t          |¦  «        S )	zN
    Try to import given module and return list of potential completions.
    r   r<   Ú__file__r   c                 ó6   •— g | ]}t          ‰|‰¦  «        ¯|‘ŒS r   )rW   )r   rU   r8   rV   s     €€r   ú
<listcomp>ztry_import.<locals>.<listcomp>·   s@   ø€ ð Cð Cð C dÝ*¨1¨d°LÑAÔAðC˜Tð Cð Cð Cr   Ú__all__c              3   ó<   •K  — | ]}t          ‰|¦  «        ¯|V — Œd S r   )r\   )r   rU   r8   s     €r   r   ztry_import.<locals>.<genexpr>¼   s3   øè è € ÐTÐT DÕ5JÈ1ÈdÑ5SÔ5SÐT˜4ÐTÐTÐTÐTÐTÐTr   c                 ó<   — h | ]}t          |t          ¦  «        ¯|’ŒS r   )Ú
isinstanceÚstr©r   Úcs     r   ú	<setcomp>ztry_import.<locals>.<setcomp>Â   s'   € ÐDÐDÐD˜Qµ¸A½sÑ1CÔ1CÐD�qÐDÐDÐDr   )Úrstripr   rS   Úhasattrr*   Údirr9   r$   r%   Údirnamer`   Údiscardr+   )r]   rV   Ú	m_is_initÚcompletionsÚm_allÚcompletions_setr8   s    `    @r   Ú
try_importrt   ©   s–  øø€ ð �*Š*�S‰/Œ/€CðÝ˜#ÑÔˆˆøðØˆ	ˆ	ˆ	øøøà�w q¨*°bÑ9Ô9Ð?¸RÐ@€Ià€KÝ�A�zÑ"Ô"ð D¨Lð D¸Yð DØ×Òð Cð Cð Cð Cð C­c°!©f¬fð Cñ Cô Cñ 	Dô 	Dð 	Dõ �A�y "Ñ%Ô%€EØð "Ø×ÒÐTÐTÐTÐT¨EÐTÑTÔTÑTÔTÐTÐTà×Ò˜5Ñ!Ô!Ð!àð EØ×Ò�;¥r¤w§¢°q´zÑ'BÔ'BÑCÔCÑDÔDÐDØDÐD +ÐDÑDÔD€OØ×Ò˜JÑ'Ô'Ð'Ý�Ñ Ô Ð s   ™) ©/c                 ó¬   ‡— t          ‰t          ¦  «        r‰                     ¦   «         Šˆfd„}t          ¦   «                              d|| ¬¦  «         dS )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                 ó   •— ‰S r   r   )ÚselfÚeventrq   s     €r   Údo_completez$quick_completer.<locals>.do_completeÝ   s	   ø€ ØÐr   Úcomplete_command)Ústr_keyN)rf   rg   Úsplitr   Úset_hook)Úcmdrq   ry   s    ` r   Úquick_completerr   Ë   si   ø€ õ �+�sÑ#Ô#ð *Ø!×'Ò'Ñ)Ô)ˆðð ð ð ð õ �M„M×ÒÐ-¨kÀSÐÑIÔIÐIÐIÐIr   c                 ó  ‡— |                       d¦  «        }t          |¦  «        }|dk    r|d         dk    rdgS |dk     r“|d         dv r‰|dk    rt          ¦   «         S |d                               d¦  «        Št          ‰¦  «        d	k     rt          ¦   «         S t          d                     ‰d
d…         ¦  «        d¦  «        }ˆfd„|D ¦   «         S |dk    r#|d         dk    r|d         Št          ‰¦  «        S d
S d
S )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 >   ú%aimportrƒ   Úimportr   r   r   NéÿÿÿÿTc                 óR   •— g | ]#}d                       ‰dd…         |gz   ¦  «        ‘Œ$S )r   Nr†   )r&   )r   Úelr]   s     €r   rb   z%module_completion.<locals>.<listcomp>ú   s3   ø€ ÐDÐDÐD¨b�—’˜˜S˜b˜Sœ R D™Ñ)Ô)ÐDÐDÐDr   )r|   r)   rM   rt   r&   )ÚlineÚwordsÚnwordsÚcompletion_listr]   s       @r   Úmodule_completionr�   â   s  ø€ ð �JŠJ�s‰OŒO€EÝ�‰ZŒZ€Fð �‚{€{�u˜Q”x 6Ò)Ð)Øˆ{Ðð �‚z€z�u˜Q”xÐ#AÐAÐAØ�QŠ;ˆ;Ý#Ñ%Ô%Ð%Ø�AŒh�nŠn˜SÑ!Ô!ˆÝˆs‰8Œ8�aŠ<ˆ<Ý#Ñ%Ô%Ð%Ý$ S§X¢X¨c°#°2°#¬hÑ%7Ô%7¸Ñ>Ô>ˆØDÐDÐDÐD°OÐDÑDÔDÐDð �‚{€{�u˜Q”x 6Ò)Ð)Ø�AŒhˆÝ˜#‰ŒÐð €{Ð)Ð)r   c                 ó*   — t          |j        ¦  «        S )z@Give completions after user has typed 'import ...' or 'from ...')r�   r‰   ©rw   rx   s     r   Úmodule_completerr�     s   € õ ˜UœZÑ(Ô(Ð(r   c                 óx  ‡‡	‡
— t          |j        d¬¦  «        }t          |¦  «        dk    r6|j                             d¦  «        s|d                              d¦  «        }nd}t
          j        }t          j        j        Št          |¦  «        \  }Š	Š
t          d„ |D ¦   «         ¦  «        rˆfd	„ ||d
z   ¦  «        D ¦   «         }ndˆfd„ ||d
z   ¦  «        D ¦   «         }d„  ||dz   ¦  «         ||dz   ¦  «        z    ||dz   ¦  «        z    ||dz   ¦  «        z   D ¦   «         }||z   }ˆ	ˆ
fd„|D ¦   «         S )zKComplete files that end in .py or .ipy or .ipynb for the %run command.
    F)Ústrictr   r�   r†   z'"r   c              3   óJ   K  — | ]}t                                |¦  «        V — Œd S r   )Úmagic_run_rer/   rh   s     r   r   z&magic_run_completer.<locals>.<genexpr>+  s0   è è € Ð
0Ð
0 Q�<×Ò˜aÑ Ô Ð
0Ð
0Ð
0Ð
0Ð
0Ð
0r   c                 ó\   •— g | ](}|                      d d¦  «         ‰|¦  «        rdndz   ‘Œ)S )ú\ú/r   ©Úreplace©r   r    r'   s     €r   rb   z'magic_run_completer.<locals>.<listcomp>,  sM   ø€ ð 9ð 9ð 9Ø !ð —I’I˜d 3Ñ'Ô'°%°%¸±(´(Ð+B¨3¨3ÀÑCð 9ð 9ð 9r   Ú*c                 óX   •— g | ]&} ‰|¦  «        ¯|                      d d¦  «        dz   ‘Œ'S ©r–   r—   r˜   rš   s     €r   rb   z'magic_run_completer.<locals>.<listcomp>/  s9   ø€ ÐRÐRÐR¨aÈÈÈqÉÌÐR�—	’	˜$˜sÑ#Ô# cÑ)ÐRÐRÐRr   c                 ó:   — g | ]}|                      d d¦  «        ‘ŒS r�   r˜   ©r   r    s     r   rb   z'magic_run_completer.<locals>.<listcomp>0  s<   € ð Eð Eð EØð —	’	˜$˜sÑ#Ô#ð Eð Eð Er   z*.pyz*.ipyz*.ipynbz*.pywc                 ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS r   ©r	   ©r   ÚpÚtilde_expandÚ	tilde_vals     €€r   rb   z'magic_run_completer.<locals>.<listcomp>7  s%   ø€ ÐGÐGÐG¸!�M˜!˜\¨9Ñ5Ô5ÐGÐGÐGr   )r   r‰   r)   ÚendswithÚstripÚglobr$   r%   r'   r   Úany)rw   rx   ÚcompsÚrelpathÚlglobÚmatchesr5   Úpysr'   r¤   r¥   s           @@@r   Úmagic_run_completerr¯     s¡  øøø€ õ �e”j¨Ð/Ñ/Ô/€EåˆE‰
Œ
�QŠˆ ¤×!4Ò!4°SÑ!9Ô!9ˆØ˜”)—/’/ %Ñ(Ô(ˆˆàˆõ ŒI€EÝŒGŒM€EÝ'2°7Ñ';Ô';Ñ$€Gˆ\˜9õ Ð
0Ð
0¨%Ð
0Ñ
0Ô
0Ñ0Ô0ð 	ð9ð 9ð 9ð 9Ø%* U¨7°3©;Ñ%7Ô%7ð9ñ 9ô 9ˆˆð SÐRÐRÐR°5°5¸À¹Ñ3EÔ3EÐRÑRÔRˆðEð EØ˜˜w v™~Ñ.Ô.°°°w¸w±Ñ1GÔ1GÑGØ��g˜iÑ'Ñ(Ô(ñ)Ø+0¨5°¸7Ñ1BÑ+CÔ+CñDðEñ Eô Eˆð ˜‘*ˆð HÐGÐGÐGÐG¸wÐGÑGÔGÐGr   c           
      ó4  ‡‡‡‡— t          ¦   «         }‰j        }‰j                             d¦  «        s	d‰j        v r3| j                             dd¦  «        }|r|                     ¦   «         S g S ‰j        dk    r‰t          t          t          t          |j	        d         ¦  «        dz   ¦  «        ¦  «        ¦  «        }d|z   d	z   Šˆfd
„t          |j	        d         ¦  «        D ¦   «         }t          |¦  «        dk    r|S g S ‰j                             d¦  «        rd„ |j	        d         D ¦   «         S t          |¦  «        \  }ŠŠ|                     dd¦  «        }g }d„ t          j        |dz   ¦  «        D ¦   «         D ]"}d|v rt          ‚|                     |¦  «         Œ#|set"          j                             |¦  «        rt)          |‰‰¦  «        gS | j                             di ¦  «        }	ˆfd„|	D ¦   «         }
|
r|
S t          ‚ˆˆfd„|D ¦   «         S )z:Completer function for cd, which only returns directories.z-bz -b Ú	bookmarksNú-Ú_dhr   z-%0zd [%s]c                 ó$   •— g | ]\  }}‰||fz  ‘ŒS r   r   )r   Úir   Úfmts      €r   rb   z cd_completer.<locals>.<listcomp>L  s%   ø€ ÐEÐEÐE¡  1�˜˜!�u‘ÐEÐEÐEr   ú--c                 óR   — g | ]$}d t           j                             |¦  «        z   ‘Œ%S )r·   )r$   r%   Úbasename)r   Úds     r   rb   z cd_completer.<locals>.<listcomp>R  s-   € ÐFÐFÐF¨q�•r”w×'Ò'¨Ñ*Ô*Ñ*ÐFÐFÐFr   r–   r—   c                 ó~   — g | ]:}t           j                             |¦  «        ¯!|                     d d¦  «        dz   ‘Œ;S r�   )r$   r%   r'   r™   rŸ   s     r   rb   z cd_completer.<locals>.<listcomp>Y  sM   € ð #ð #ð #¨AÝ”—’˜qÑ!Ô!ð#ˆa�iŠi˜˜SÑ!Ô! CÑ'ð #ð #ð #r   r›   r�   c                 óH   •— g | ]}|                      ‰j        ¦  «        ¯|‘ŒS r   )Ú
startswithÚsymbol)r   r   rx   s     €r   rb   z cd_completer.<locals>.<listcomp>h  s,   ø€ ÐBÐBÐB˜1 q§|¢|°E´LÑ'AÔ'AÐB�QÐBÐBÐBr   c                 ó2   •— g | ]}t          |‰‰¦  «        ‘ŒS r   r¡   r¢   s     €€r   rb   z cd_completer.<locals>.<listcomp>n  s%   ø€ ÐEÐEÐE¸!�M˜!˜\¨9Ñ5Ô5ÐEÐEÐEr   )r   r¾   r‰   r¦   r?   r@   r-   rg   r)   Úuser_nsÚ	enumerater½   r   r™   r¨   r
   r0   r$   r%   r'   r	   )rw   rx   rI   r«   ÚbkmsÚwidth_dhÚentsÚfoundrº   ÚbksÚ	bkmatchesr¶   r¤   r¥   s    `         @@@r   Úcd_completerrÈ   :  sF  øøøø€ å	‰Œ€BØŒl€Gð „z×Ò˜4Ñ Ô ð  F¨e¬jÐ$8Ð$8àŒw�{Š{˜;¨Ñ-Ô-ˆØð 	Ø—9’9‘;”;ÐàˆIà„|�sÒÐÝ•s�3�s 2¤:¨eÔ#4Ñ5Ô5¸Ñ9Ñ:Ô:Ñ;Ô;Ñ<Ô<ˆà�hÑ Ñ(ˆØEÐEÐEÐE­	°"´*¸UÔ2CÑ(DÔ(DÐEÑEÔEˆÝˆt‰9Œ9�qŠ=ˆ=ØˆKØˆ	à„|×Ò˜tÑ$Ô$ð GØFÐF°B´J¸uÔ4EÐFÑFÔFÐFõ (3°7Ñ';Ô';Ñ$€Gˆ\˜9Ø�oŠo˜d 3Ñ'Ô'€Gà€Eð#ð #µ´¸7À3¹;Ñ1GÔ1Gð #ñ #ô #ð ð ˆà�!ˆ8ˆ8õ ˆMà�Š�Q‰Œˆˆàð 
ÝŒ7�=Š=˜Ñ!Ô!ð 	EÝ! '¨<¸ÑCÔCÐDÐDð Œg�kŠk˜+ bÑ)Ô)ˆØBÐBÐBÐB ÐBÑBÔBˆ	Øð 	ØÐåˆàEÐEÐEÐEÐE¸uÐEÑEÔEÐEr   c                 ó*   — d                      ¦   «         S )zA completer for %reset magicz-f -s in out array dhist)r|   r�   s     r   Úreset_completerrÊ   p  s   € à%×+Ò+Ñ-Ô-Ð-r   )F)+Ú__doc__r¨   rQ   r$   r   r=   Ú	importlibr   Úimportlib.machineryr   r   Ú	zipimportr   Ú	completerr   r	   Úerrorr
   Úutils._process_commonr   ÚIPythonr   Útypingr   Ú	_suffixesrD   rH   Úcompiler&   r.   r”   r9   rM   rW   r\   rg   rt   r   r�   r�   r¯   rÈ   rÊ   r   r   r   ú<module>rÖ      s7  ððð ð" €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø #Ð #Ð #Ð #Ð #Ð #Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ð Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !ð 2Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -ð  Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ð
 ˆL‰NŒN€	ð €ð €ð ˆBŒJð *ð —y’yÐ AÐ A°yÐ AÑ AÔ AÑAÔAñBñ Cô C€	ð ˆrŒzÐ8Ñ9Ô9€ð%ð %ð %ðP)ð )ð )ðX;ð ;ð ;ð	!ð 	!ð 	!ð!ð !�Cð !°°S´	ð !ð !ð !ð !ðDJð Jð Jð.ð ð ðJ	)ð 	)ð 	)ð"Hð "Hð "HðJ4Fð 4Fð 4Fðl.ð .ð .ð .ð .r   