o
     JAf‰  ã                   @   sˆ   	 d dl Z 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y1   dZ	Y dS w 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   s:   	 |rt |tƒstdƒ‚|d u rd| _d S d| _|| _d S )Nznamespace must be a dictionaryé   r   )Ú
isinstanceÚdictÚ	TypeErrorÚuse_main_nsÚ	namespace)Úselfr   © r
   ú"/usr/lib/python3.10/rlcompleter.pyÚ__init__(   s   

zCompleter.__init__c                 C   sŽ   	 | j rtj| _| ¡ s!|dkrtrt d¡ t ¡  dS dS d S |dkr6d|v r0|  	|¡| _
n|  |¡| _
z| j
| W S  tyF   Y d S w )Nr   ú	Ú Ú.)r   Ú__main__Ú__dict__r   ÚstripÚ_readline_availableÚreadlineZinsert_textZ	redisplayÚattr_matchesÚmatchesÚglobal_matchesÚ
IndexError)r	   ÚtextÚstater
   r
   r   ÚcompleteC   s(   
ÿzCompleter.completec                 C   sJ   t |ƒr#|d7 }zt |¡js|d7 }W |S W |S  ty"   Y |S w |S )Nú(ú))ÚcallableÚinspectZ	signatureZ
parametersÚ
ValueError)r	   ÚvalÚwordr
   r
   r   Ú_callable_postfixb   s   
ûýýzCompleter._callable_postfixc           	      C   sÊ   	 dd l }g }dh}t|ƒ}|jD ]%}|d |… |kr6| |¡ |dv r)|d }n|dvr1|d }| |¡ q| jtjfD ]%}| ¡ D ]\}}|d |… |kra||vra| |¡ | |  	||¡¡ qCq=|S )Nr   Ú__builtins__>   ÚfinallyÚtryú:>   ÚTrueÚFalseÚNoneÚbreakÚcontinueÚpassÚelseú )
ÚkeywordÚlenÚkwlistÚaddÚappendr   Úbuiltinsr   Úitemsr#   )	r	   r   r0   r   ÚseenÚnr"   Znspacer!   r
   r
   r   r   m   s,   



€
€ýzCompleter.global_matchesc                 C   sz  	 dd l }| d|¡}|sg S | dd¡\}}zt|| jƒ}W n ty*   g  Y S w tt|ƒƒ}| d¡ t	|dƒrH| 
d¡ | t|jƒ¡ g }t|ƒ}	|dkrUd}
n	|dkr\d	}
nd }
	 |D ]F}|d |	… |kr§|
rw|d |	d … |
ks§d||f }ttt|ƒ|d ƒtƒrŽ| |¡ qat||d ƒ }d ur¢| |  ||¡¡ qa| |¡ qa|s¬|
s­n
|
dkr´d	}
nd }
q_| ¡  |S )Nr   z(\w+(\.\w+)*)\.(\w*)r   é   r$   Ú	__class__r   Ú_Ú__Tz%s.%s)ÚreÚmatchÚgroupÚevalr   Ú	ExceptionÚsetÚdirÚdiscardÚhasattrr3   ÚupdateÚget_class_membersr:   r1   r   ÚgetattrÚtypeÚpropertyr4   r#   Úsort)r	   r   r=   ÚmÚexprÚattrZ
thisobjectÚwordsr   r8   Znoprefixr"   r>   Úvaluer
   r
   r   r   ‰   s^   ÿ


ÿÿ

€è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__)rC   rE   rU   rG   )ÚklassÚretÚbaser
   r
   r   rG   Ê   s
   

rG   Fc                   C   s
   t  d ¡S rQ   )r   Úset_completerr
   r
   r
   r   Ú<lambda>Ú   s   
 rZ   T)Úatexitr5   r   r   Ú__all__r   rG   r   ÚImportErrorr   rY   r   Úregisterr
   r
   r
   r   Ú<module>   s"     $
ÿ