й¼]£ã @s§ddlZddlZddlZdgZGdd„dƒZdd„ZyddlZWnek rvdZYn-Xej eƒj ƒej dd„ƒd ZdS) éNÚ Completerc@sOeZdZddd„Zdd„Zdd„Zdd „Zd d „ZdS) rNcCsP|r"t|tƒ r"tdƒ‚|dkr:d|_nd|_||_dS)Nznamespace must be a dictionaryér)Ú isinstanceÚdictÚ TypeErrorÚ use_main_nsÚ namespace)Úselfr©r ú0/opt/alt/python35/lib64/python3.5/rlcompleter.pyÚ__init__'s     zCompleter.__init__c CsÄ|jrtj|_|jƒsY|dkrUtrNtjdƒtjƒdSdSndS|dkr˜d|kr†|j |ƒ|_ n|j |ƒ|_ y|j |SWnt k r¿dSYnXdS)Nrú ÚÚ.) rÚ__main__Ú__dict__rÚstripÚ_readline_availableÚreadlineZ insert_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_postfixas  zCompleter._callable_postfixc Csñddl}g}dh}t|ƒ}xA|jD]6}|d|…|kr1|j|ƒ|j|ƒq1Wx|jtjgD]k}xb|jƒD]T\}}|d|…|kr‘||kr‘|j|ƒ|j|j ||ƒƒq‘Wq~W|S)NrÚ __builtins__) ÚkeywordÚlenÚkwlistÚaddÚappendrÚbuiltinsrÚitemsr ) r rr"rÚseenÚnrZnspacerr r r rfs    " !zCompleter.global_matchesc Cs[ddl}|jd|ƒ}|s(gS|jddƒ\}}yt||jƒ}Wntk rngSYnXtt|ƒƒ}|jdƒt |dƒrÀ|j dƒ|j t |j ƒƒg}t|ƒ} xx|D]p} | d| …|krÙyt|| ƒ} Wntk rwÙYnX|j| d|| fƒ} |j| ƒqÙW|jƒ|S)Nrz(\w+(\.\w+)*)\.(\w*)rér!Ú __class__z%s.%s)ÚreÚmatchÚgroupÚevalrÚ ExceptionÚsetÚdirÚdiscardÚhasattrr%ÚupdateÚget_class_membersr,r#Úgetattrr r&Úsort) r rr-ÚmÚexprÚattrZ thisobjectZwordsrr*rrr r r r|s4         zCompleter.attr_matches)Ú__name__Ú __module__Ú __qualname__r rr rrr r r r r&s    cCsCt|ƒ}t|dƒr?x!|jD]}|t|ƒ}q%W|S)NÚ __bases__)r3r5r@r7)ÚklassÚretÚbaser r r r7¦s  r7FcCs tjdƒS)N)rÚ set_completerr r r r Ú¶srET) Úatexitr'rÚ__all__rr7rÚ ImportErrorrrDrÚregisterr r r r Ú s    €