B
    u9a                 @   s~   d dl Z d dlZd dlZdgZG dd dZdd Zyd dlZW n ek
rX   dZY n"X e	e j
 e dd  d	ZdS )
    N	Completerc               @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )r   Nc             C   s6   |rt |tstd|d kr&d| _nd| _|| _d S )Nznamespace must be a dictionary   r   )
isinstancedict	TypeErroruse_main_ns	namespace)selfr    r
   !/usr/lib/python3.7/rlcompleter.py__init__'   s    zCompleter.__init__c             C   s   | j rtj| _| sB|dkr>tr8td t  dS dS nd S |dkrld|kr`| 	|| _
n| || _
y
| j
| S  tk
r   d S X d S )Nr   	 .)r   __main____dict__r   strip_readline_availablereadlineZinsert_textZ	redisplayattr_matchesmatchesglobal_matches
IndexError)r	   textstater
   r
   r   completeB   s$    

zCompleter.completec             C   s   t |r|d }|S )N()callable)r	   valwordr
   r
   r   _callable_postfixa   s    zCompleter._callable_postfixc       	      C   s   dd l }g }dh}t|}xT|jD ]J}|d | |kr"|| |dkrR|d }n|dkrb|d }|| q"W x^| jtjgD ]N}xH| D ]<\}}|d | |kr||kr|| || 	|| qW q~W |S )Nr   __builtins__>   finallytry:>   TruepassFalsecontinueelsebreakNone )
keywordlenkwlistaddappendr   builtinsr   itemsr    )	r	   r   r-   r   seennr   Znspacer   r
   r
   r   r   f   s$    


zCompleter.global_matchesc          	   C   sj  dd l }|d|}|sg S |dd\}}yt|| j}W n tk
rP   g S X tt|}|d t	|dr|
d |t|j g }t|}	|dkrd}
n|dkrd	}
nd }
xx||D ]t}|d |	 |kr|
r|d |	d  |
ksd
||f }yt||}W n tk
r   Y nX | ||}|| qW |sD|
sFP |
dkrVd	}
qd }
qW |  |S )Nr   z(\w+(\.\w+)*)\.(\w*)r      r!   	__class__r   ___z%s.%s)rematchgroupevalr   	Exceptionsetdirdiscardhasattrr0   updateget_class_membersr7   r.   getattrr    r1   sort)r	   r   r:   mexprattrZ
thisobjectZwordsr   r5   Znoprefixr   r;   r   r
   r
   r   r      sN    




zCompleter.attr_matches)N)__name__
__module____qualname__r   r   r    r   r   r
   r
   r
   r   r   &   s
   
c             C   s2   t | }t| dr.x| jD ]}|t| }qW |S )N	__bases__)r@   rB   rM   rD   )klassretbaser
   r
   r   rD      s
    
rD   Fc               C   s
   t d S )N)r   set_completerr
   r
   r
   r   <lambda>       rR   T)atexitr2   r   __all__r   rD   r   ImportErrorr   rQ   r   registerr
   r
   r
   r   <module>    s    
