U e5d¹ ã @ s~ d dl Z d dlZd dlZdgZG dd„ dƒZdd„ Zzd dlZW n ek rX dZY n"X e eƒ j ¡ e dd„ ¡ d ZdS ) é NÚ Completerc @ s6 e Zd Zddd„Zdd„ Zdd„ Zdd „ Zd d„ ZdS ) r Nc C s6 |rt |tƒstdƒ‚|d kr&d| _nd| _|| _d S )Nznamespace must be a dictionaryé r )Ú isinstanceÚdictÚ TypeErrorÚuse_main_nsÚ namespace)Úselfr © r ú#/usr/lib64/python3.8/rlcompleter.pyÚ__init__' s zCompleter.__init__c C s” | j rtj| _| ¡ sB|dkr>tr8t d¡ t ¡ dS dS nd S |dkrld|kr`| |¡| _ n| |¡| _ z| j | W S tk rŽ Y d S X d S )Nr ú Ú Ú.) r Ú__main__Ú__dict__r ÚstripÚ_readline_availableÚreadlineZinsert_textZ redisplayÚattr_matchesÚmatchesÚglobal_matchesÚ IndexError)r ÚtextÚstater r r ÚcompleteB s$ zCompleter.completec C s t |ƒr|d }|S )Nú()Úcallable)r ÚvalÚwordr r r Ú_callable_postfixa s zCompleter._callable_postfixc C sÈ dd l }g }dh}t|ƒ}|jD ]J}|d |… |kr | |¡ |dkrP|d }n|dkr`|d }| |¡ q | jtjfD ]J}| ¡ D ]<\}}|d |… |kr„||kr„| |¡ | | ||¡¡ q„qx|S )Nr Ú__builtins__> ÚtryÚfinallyú:> ÚbreakÚNoneÚpassÚcontinueÚFalseÚTrueÚelseú ) ÚkeywordÚlenÚkwlistÚaddÚappendr Úbuiltinsr Úitemsr ) r r r- r ÚseenÚnr Znspacer r r r r f s$ zCompleter.global_matchesc C sh dd l }| d|¡}|sg S | dd¡\}}zt|| jƒ}W n tk rT g Y S X tt|ƒƒ}| d¡ t |dƒr�| d¡ | t|j ƒ¡ g }t|ƒ} |dkrªd} n|dkr¸d } nd } |D ]t}|d | … |krÀ| rì|d | d … | ksÀd ||f }zt||ƒ} W n tk �r Y nX | | |¡}| |¡ qÀ|�s\| �sF�q\| dk�rVd } q¼d } 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. Úgetattrr r1 Úsort)r r r: ÚmÚexprÚattrZ thisobjectZwordsr r5 Znoprefixr r; r r r r r ‚ sR ÿÿ zCompleter.attr_matches)N)Ú__name__Ú __module__Ú__qualname__r r r r r r r r r r &