a
    ze                     @   s|   d dl Z d dlZd dlZdgZG dd dZdd Zzd dlZW n eyV   dZY n"0 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 u 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.9/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|v r`| 	|| _
n| || _
z| j
| W S  ty   Y d S 0 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|}|jD ]J}|d | |kr || |dv rP|d }n|dvr`|d }|| q | jtjfD ]J}| D ]<\}}|d | |kr||vr|| || 	|| qqx|S )Nr   __builtins__>   finallytry:>   continueTruepassFalseNonebreakelse )
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   s  dd l }|d|}|sg S |dd\}}zt|| j}W n tyR   g  Y S 0 tt|}|d t	|dr|
d |t|j g }t|}	|dkrd}
n|dkrd	}
nd }
|D ]}|d |	 |kr|
r|d |	d  |
ksd
||f }ttt||d tr|| qt||d  }d urD|| || q|| q|sv|
s`qv|
dkrpd	}
qd }
q|  |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.   r   getattrtypepropertyr1   r    sort)r	   r   r:   mexprattrZ
thisobjectwordsr   r5   Znoprefixr   r;   valuer
   r
   r   r      sV    





zCompleter.attr_matches)N)__name__
__module____qualname__r   r   r    r   r   r
   r
   r
   r   r   &   s
   
c                 C   s.   t | }t| dr*| jD ]}|t| }q|S )N	__bases__)r@   rB   rQ   rD   )klassretbaser
   r
   r   rD      s
    

rD   Fc                   C   s
   t d S )N)r   set_completerr
   r
   r
   r   <lambda>       rV   T)atexitr2   r   __all__r   rD   r   ImportErrorr   rU   r   registerr
   r
   r
   r   <module>    s    
