Spade
Mini Shell
3
\��@s~ddlZddlZddlZdgZGdd�d�Zdd�ZyddlZWnek
rXdZYn"Xej e�j
�ejdd��d ZdS)
�N� Completerc@s6eZdZddd�Zdd�Zdd�Zdd �Zd
d�ZdS)
rNcCs8|rt|t�rtd��|dkr(d|_nd|_||_dS)Nznamespace
must be a dictionary�r)�
isinstance�dict� TypeError�use_main_ns� namespace)�selfr�r
�#/usr/lib64/python3.6/rlcompleter.py�__init__'szCompleter.__init__cCs�|jrtj|_|j�sB|dkr>tr8tjd�tj�dSdSndS|dkrld|kr`|j |�|_
n|j|�|_
y
|j
|Stk
r�dSXdS)Nr� ��.)
r�__main__�__dict__r�strip�_readline_available�readlineZinsert_textZ redisplay�attr_matches�matches�global_matches�
IndexError)r �text�stater
r
r�completeBs$
zCompleter.completecCst|�r|d}|S)N�()�callable)r �val�wordr
r
r�_callable_postfixaszCompleter._callable_postfixc Cs�ddl}g}dh}t|�}xT|jD]J}|d|�|kr"|j|�|dkrR|d}n|dkrb|d
}|j|�q"Wx^|jtjgD]N}xH|j�D]<\}}|d|�|kr�||kr�|j|�|j|j ||��q�Wq~W|S)Nr�__builtins__�finally�try�:�False�None�True�break�continue�pass�else�
>r#r">r'r)r&r(r*r+r%)
�keyword�len�kwlist�add�appendr�builtinsr�itemsr
) r rr-r�seen�nrZnspacerr
r
rrfs(
zCompleter.global_matchescCsnddl}|jd|�}|sgS|jdd�\}}yt||j�}Wntk
rPgSXtt|��}|jd�t |d�r�|j
d�|jt|j
��g}t|�} |dkr�d}
n|dkr�d }
nd}
x�x~|D]v}|d| �|ko�|
o�|d| d�|
kr�d
||f}yt||�}
Wntk
�rYnX|j|
|�}|j|�q�W|�sH|
�rJP|
dk�rZd }
q�d}
q�W|j�|S)Nrz(\w+(\.\w+)*)\.(\w*)r�r!� __class__r�_�__z%s.%s)�re�match�group�evalr� Exception�set�dir�discard�hasattrr0�update�get_class_membersr7r.�getattrr
r1�sort)r rr:�m�expr�attrZ
thisobjectZwordsrr5Znoprefixrr;rr
r
rr�sN
zCompleter.attr_matches)N)�__name__�
__module__�__qualname__rrr rrr
r
r
rr&s
cCs2t|�}t|d�r.x|jD]}|t|�}qW|S)N� __bases__)r@rBrMrD)�klassZret�baser
r
rrD�s
rDFcCs
tjd�S)N)r�
set_completerr
r
r
r�<lambda>�srQT)�atexitr2r�__all__rrDr�ImportErrorrrPr�registerr
r
r
r�<module> s