a
    'ñ»j30  ã                   @   sF  d Z ddlZddlZddlZddlZddlmZ G dd„ deƒZ	e	e
ƒZG dd„ dƒZG dd	„ d	ƒZd
d„ ZG dd„ dƒZG dd„ dejeƒZd'dd„Zdd„ Zdd„ Zdd„ Zd(dd„ZG dd„ deƒZe
dk�rBdd„ ZdZd Zejd!d… D ]*Zed"v �reZqòed#v �rd$Zqòeƒ  qòed%k�r<ed&eƒZe ¡  neƒ  dS ))z�
tabcompleter: Python console tab-completion. Replaces fancycompleter.
=====================================================================
é    N)Úcountc                   @   s@   e Zd Zdd„ Zedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )ÚLazyVersionc                 C   s   || _ d | _d S ©N)ÚpkgÚ_LazyVersion__version)Úselfr   © r   ú2E:\soccer\ml_env\Lib\site-packages\tabcompleter.pyÚ__init__   s    zLazyVersion.__init__c                 C   s   | j d u r|  ¡ | _ | j S r   )r   Ú_load_version©r   r   r   r	   Úversion   s    

zLazyVersion.versionc                 C   sR   zddl m}m} W n ty(   Y dS 0 z|| jƒjW S  |yL   Y dS 0 d S )Nr   )Úget_distributionÚDistributionNotFoundzN/A)Úpkg_resourcesr   r   ÚImportErrorr   r   )r   r   r   r   r   r	   r      s    zLazyVersion._load_versionc                 C   s   | j S r   ©r   r   r   r   r	   Ú__repr__!   s    zLazyVersion.__repr__c                 C   s
   | j |kS r   r   ©r   Úotherr   r   r	   Ú__eq__$   s    zLazyVersion.__eq__c                 C   s
   | |k S r   r   r   r   r   r	   Ú__ne__'   s    zLazyVersion.__ne__N)
Ú__name__Ú
__module__Ú__qualname__r
   Úpropertyr   r   r   r   r   r   r   r   r	   r      s   

r   c                   @   sX   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZedd„ ƒZdS )ÚColorZ30Z31Ú32Z33Z34Z35Z36Z37z30;01z31;01z32;01z33;01z34;01z35;01z36;01z37;01c                 C   s.   zt | |ƒ}W n ty    Y n0 d||f S )Nz[%sm%s[00m)ÚgetattrÚAttributeError)ÚclsÚcolorÚstringr   r   r	   Úset@   s
    z	Color.setN)r   r   r   ÚblackZdarkredZ	darkgreenZbrownZdarkblueÚpurpleÚtealÚ	lightgrayZdarkgrayÚredÚgreenÚyellowÚblueÚfuchsiaÚ	turquoiseÚwhiteÚclassmethodr#   r   r   r   r	   r   .   s$   r   c                   @   s¼   e Zd ZdZdZdZejej	ej
ej	edjƒej	eejƒej	eejƒej	ejejejejeejejejedƒejeejeejeejeejeejiZefejfgZdd„ Z dd„ Z!d	d
„ Z"dS )ÚDefaultConfigTÚautoNé*   c                 C   sZ   z&dd l }dd l}ddlm} d |_W n ty:   Y d S 0 t|dƒrN|dfS |dfS d S )Nr   )ÚbasemodeZ
stripcolorTF)ÚreadlineÚ
pyreadlineZpyreadline.modesr3   Úbackendr   Úhasattr)r   r4   r5   r3   r   r   r	   Úfind_pyreadlineb   s    

zDefaultConfig.find_pyreadlinec                 C   s0   t jdkr|  ¡ }|r|S dd l}d |_|dfS )NÚwin32r   F)ÚsysÚplatformr8   r4   r6   )r   Úresultr4   r   r   r	   Úfind_best_readlineo   s    
z DefaultConfig.find_best_readlinec                 C   s"   |   ¡ \| _}| jdkr|| _d S )Nr1   )r=   r4   Ú
use_colors)r   Zsupports_colorr   r   r	   Úsetupx   s    
zDefaultConfig.setup)#r   r   r   Úconsider_getitemsr>   r4   ÚtypesÚBuiltinMethodTyper   r-   Ú
MethodTypeÚtypeÚ__add__ÚintÚstrÚreplaceÚFunctionTyper+   ÚBuiltinFunctionTyper,   Ú
ModuleTyper&   r'   r)   r*   ÚfloatÚcomplexÚboolÚcolor_by_typeÚBaseExceptionr(   Úcolor_by_baseclassr8   r=   r?   r   r   r   r	   r0   I   s0   
ñ
ÿ	r0   c                 C   sF   t | ƒ�*}t| ¡ | dƒ}t||ƒ W d   ƒ n1 s80    Y  d S )NÚexec)ÚopenÚcompileÚreadrR   )ÚfilenameÚmydictÚfÚcoder   r   r	   Úmy_execfile~   s    
rZ   c                   @   s   e Zd ZdZdZdd„ ZdS )ÚConfigurableClassNc              
   C   sj  |d ur|ƒ S d| j  }tj tj |¡¡}tj |¡s@|  ¡ S i }zt||ƒ W nZ ty¬ } zBdd l	}t
j d||f ¡ | t
 ¡ d ¡ |  ¡ W  Y d }~S d }~0 0 z|d }W n tyÔ   |  ¡  Y S 0 z|ƒ W S  t�y` } zhd||f }t
 ¡ d }|�r<|j�r<|j}|jjj}	|j}
|d|	|
f 7 }t
j d| ¡ W Y d }~n
d }~0 0 |  ¡ S )	Nz~/r   z"** error when importing %s: %r **
é   ÚConfigz(error when setting up Config from %s: %sz (%s:%d)z	** %s **
)Úconfig_filenameÚosÚpathÚnormpathÚ
expanduserÚexistsr0   rZ   Ú	ExceptionÚ	tracebackr:   ÚstderrÚwriteÚprint_tbÚexc_infoÚKeyErrorÚtb_nextÚtb_frameÚf_codeÚco_filenameÚ	tb_lineno)r   r]   rV   ZrcfilerW   Úexcre   ÚerrÚtbZ	err_fnameZerr_lnumr   r   r	   Ú
get_configˆ   s@    

ÿ
&zConfigurableClass.get_config)r   r   r   r0   r^   rs   r   r   r   r	   r[   „   s   r[   c                   @   sN   e Zd ZeZdZddd„Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ ZdS )Ú	Completerz.tabcompleterrc.pyNc                 C   s†   t j | |¡ |  |¡| _| j ¡  | jj}t|dƒr>| ¡  | jj	rP| 
d¡ | jjr‚| ¡ }| dd¡}| dd¡}| |¡ d S )NÚ_setupzset dont-escape-ctrl-chars onú[Ú ú])Úrlcompleterrt   r
   rs   Úconfigr?   r4   r7   ru   r>   Úparse_and_bindr@   Zget_completer_delimsrH   Zset_completer_delims)r   Ú	namespacer]   r4   Údelimsr   r   r	   r
   ¯   s    


zCompleter.__init__c                 C   s(   |dkrdd g| S t j | ||¡S d S )Nrw   ú	)ry   rt   Úcomplete)r   ÚtextÚstater   r   r	   r   ¾   s    zCompleter.completec                 C   s   |S r   r   )r   ÚvalÚwordr   r   r	   Ú_callable_postfixÄ   s    zCompleter._callable_postfixc           	      C   sÈ   dd l }tj | |¡}t|ƒ}|r0||kr0|gS | ¡  g }|D ]j}| d¡}||jv rd| d ¡ q@z| t	|| j
ƒ¡ W q@ ty¨ } z| |¡ W Y d }~q@d }~0 0 q@| jjrÄ|rÄ|  ||¡S |S )Nr   z: )Úkeywordry   rt   Úglobal_matchesÚcommonprefixÚsortÚrstripÚkwlistÚappendÚevalr|   rd   rz   r>   Úcolor_matches)	r   r€   r…   ÚnamesÚprefixÚvaluesÚnameZ
clean_namerp   r   r   r	   r†   Ç   s$    

"zCompleter.global_matchesc              	      s  dd l }|jdtd� | dd¡\‰ }dˆ v s6dˆ v r:g S ztˆ | jƒ}W n ty`   g  Y S 0 tt|ƒƒ}| 	d¡ t
|d	ƒrž| d	¡ | t |j¡¡ g }g }t|ƒ}|d
kr¼d}	n|dkrÊd}	nd }	t|ƒ}|D ]j}
|
d |… |krÚ|	�r|
d |d … |	ksÚzt||
ƒ}W n t�y.   d }Y n0 | |
¡ | |¡ qÚ|�sl|	�sV�ql|	dk�rfd}	qÖd }	qÖ|�svg S t|ƒdk�r–dˆ |d f gS t|ƒ}|�r¼||k�r¼dˆ |f gS | jj�rÒ|  ||¡S t dd
¡ ¡ dv�rü|�rø|dg7 }|S ‡ fdd„|D ƒ|�rdgng  S )Nr   Úignore)ÚcategoryÚ.é   ú(ú)Ú__builtins__Ú	__class__rw   Ú_Ú__ú%s.%sZTABCOMPLETER_INCLUDE_PREFIX)Ú1ÚtrueÚyesÚonú c                    s   g | ]}d ˆ |f ‘qS )rœ   r   )Ú.0Ún©Úexprr   r	   Ú
<listcomp>  ó    z*Completer.attr_matches.<locals>.<listcomp>)ÚwarningsÚsimplefilterÚDeprecationWarningÚrsplitrŒ   r|   rd   r#   ÚdirÚdiscardr7   ÚaddÚupdatery   Zget_class_membersr™   ÚlenÚsortedr   r‹   r‡   rz   r>   r�   r_   ÚgetenvÚlower)r   r€   r¨   ÚattrZ
thisobjectÚwordsrŽ   r�   r£   Znoprefixrƒ   r‚   r�   r   r¤   r	   Úattr_matchesÝ   st    



ÿþþ



ÿÿ
zCompleter.attr_matchesc                    s&   ‡ fdd„t tƒ ||ƒD ƒ}|dg S )Nc                    s    g | ]\}}}ˆ   |||¡‘qS r   )Úcolor_for_obj)r¢   Úir‘   Úobjr   r   r	   r¦     s   ÿz+Completer.color_matches.<locals>.<listcomp>r¡   )Úzipr   )r   rŽ   r�   Úmatchesr   r   r	   r�     s    
þzCompleter.color_matchesc                 C   s\   t |ƒ}| jj |d ¡}|d u rH| jjD ]\}}t||ƒr(|} qHq(d}d| t ||¡ S )NZ00z
[%03d;00m)rD   rz   rO   ÚgetrQ   Ú
isinstancer   r#   )r   r¸   r‘   ÚvalueÚtr!   ÚxÚ_colorr   r   r	   r·      s    
zCompleter.color_for_obj)NN)r   r   r   r0   r^   r
   r   r„   r†   r¶   r�   r·   r   r   r   r	   rt   «   s   
=rt   rw   c                    s`   ˆ r‡ fdd„| D ƒ} | sdS t | ƒ}t| ƒ}t|ƒD ]$\}}||| kr6|d |…   S q6|S )Nc                    s   g | ]}|  ˆ ¡r|‘qS r   )Ú
startswith)r¢   rÀ   ©Úbaser   r	   r¦   /  r§   z commonprefix.<locals>.<listcomp>rw   )ÚminÚmaxÚ	enumerate)rŽ   rÄ   Ús1Ús2r¸   Úcr   rÃ   r	   r‡   -  s    r‡   c                 C   s"   t jdkrdS | jjo d| jjv S )NÚdarwinFÚlibedit)r:   r;   r4   Ú__doc__)rz   r   r   r	   Úhas_leopard_libedit:  s    
rÎ   c                  C   s>   t ƒ } | jj}t| jƒr$| d¡ n
| d¡ | | j¡ | S )z;Install tabcompleter as the default completer for readline.zbind ^I rl_completeztab: complete)rt   rz   r4   rÎ   r{   Zset_completerr   )Ú	completerr4   r   r   r	   r?   @  s    

r?   c                    sb   dd l }| jj‰t|tƒr |‰ nd‰ tj ˆ ¡‰ tj ˆ ¡rFˆ 	ˆ ¡ ‡ ‡fdd„}| 
|¡ d S )Nr   z~/.history.pyc                      s   ˆ  ˆ ¡ d S r   )Úwrite_history_filer   ©rV   r4   r   r	   Úsave_historyW  s    z#setup_history.<locals>.save_history)Úatexitrz   r4   r½   rG   r_   r`   rb   ÚisfileÚread_history_fileÚregister)rÏ   Úpersist_historyrÓ   rÒ   r   rÑ   r	   Úsetup_historyL  s    

rØ   c                 C   s   t ƒ }| rt|| ƒ d S r   )r?   rØ   )r×   rÏ   r   r   r	   Úinteract\  s    rÙ   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú	Installerc                 C   s&   t j |d¡}t j |¡| _|| _d S )Nzpython_startup.py)r_   r`   Újoinrb   rV   Úforce)r   ZbasepathrÜ   Úfnamer   r   r	   r
   c  s    zInstaller.__init__c                 C   s4   t j d¡}|rd| S t j | j¡r0d| j S d S )NÚPYTHONSTARTUPz!PYTHONSTARTUP already defined: %sz%s already exists)r_   Úenvironr¼   r`   rc   rV   )r   rÞ   r   r   r	   Úcheckh  s
    zInstaller.checkc                 C   sv   dd l }|  ¡ }|r.| js.t|ƒ tdƒ dS t| jdƒ� }| | d¡¡ W d   ƒ n1 s`0    Y  |  ¡  dS )Nr   zUse --force to overwrite.FÚwz}
                    import tabcompleter
                    tabcompleter.interact(persist_history=True)
                    T)	Útextwraprà   rÜ   ÚprintrS   rV   rg   ÚdedentÚset_env_var)r   râ   ÚerrorrX   r   r   r	   Úinstallo  s    
ÿÿ"zInstaller.installc                 C   sN   t jdkr(t d| j ¡ td| jƒ n"td| jƒ tdƒ td| j ƒ d S )Nr9   zSETX PYTHONSTARTUP "%s"z%PYTHONSTARTUP% set tozstartup file written toz#Append this line to your ~/.bashrc:z    export PYTHONSTARTUP=%s)r:   r;   r_   ÚsystemrV   rã   r   r   r   r	   rå   ‚  s    
zInstaller.set_env_varN)r   r   r   r
   rà   rç   rå   r   r   r   r	   rÚ   b  s   rÚ   Ú__main__c                   C   s   t dƒ t d¡ d S )Nz2Usage: python -m tabcompleter install [-f|--force]r•   )rã   r:   Úexitr   r   r   r	   Úusage�  s    rë   Fr•   )rç   )z-fz--forceTrç   ú~)rw   )N)rÍ   ry   r:   rA   Úos.pathr_   Ú	itertoolsr   Úobjectr   r   Ú__version__r   r0   rZ   r[   rt   r‡   rÎ   r?   rØ   rÙ   rÚ   rë   ÚcmdrÜ   ÚargvÚitemÚ	installerrç   r   r   r   r	   Ú<module>   sB   5' 

*





