3 \�� @s~ddlZddlZddlZdgZGdd�d�Zdd�Zy ddlZWnek rXdZYn"Xej e�j �ej dd��d ZdS) �N� Completerc@s6eZdZd dd�Zdd�Zdd�Zdd �Zd d �ZdS) rNcCs8|rt|t� rtd��|dkr(d|_n d|_||_dS)Nznamespace must be a dictionary�r)� isinstance�dict� TypeError� use_main_ns� namespace)�selfr�r �#/usr/lib64/python3.6/rlcompleter.py�__init__'s zCompleter.__init__c Cs�|jrtj|_|j�sB|dkr>tr8tjd�tj�dSdSndS|dkrld|kr`|j |�|_ n |j |�|_ y |j |St k r�dSXdS)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_postfixaszCompleter._callable_postfixc Cs�ddl}g}dh}t|�}xT|jD]J}|d|�|kr"|j|�|dkrR|d}n|dkrb|d }|j|�q"Wx^|jtjgD]N}xH|j�D]<\}}|d|�|kr�||kr�|j|�|j|j ||��q�Wq~W|S)Nr� __builtins__�finally�try�:�False�None�True�break�continue�pass�else� >r"r#>r%r&r'r*r)r+r() �keyword�len�kwlist�add�appendr�builtinsr�itemsr ) r rr-r�seen�nrZnspacerr r r rfs(    zCompleter.global_matchescCsnddl}|jd|�}|sgS|jdd�\}}yt||j�}Wntk rPgSXtt|��}|jd�t |d�r�|j d�|j t |j ��g}t|�} |dkr�d} n|dkr�d } nd} x�x~|D]v} | d| �|ko�| o�| d| d�| k r�d || f} yt|| �} Wntk �rYnX|j| | �} |j| �q�W|�sH| �rJP| dk�rZd } q�d} q�W|j�|S) Nrz(\w+(\.\w+)*)\.(\w*)r�r!� __class__r�_�__z%s.%s)�re�match�group�evalr� Exception�set�dir�discard�hasattrr0�update�get_class_membersr7r.�getattrr r1�sort)r rr:�m�expr�attrZ thisobjectZwordsrr5Znoprefixrr;rr r r r�sN          zCompleter.attr_matches)N)�__name__� __module__� __qualname__r rr rrr r r r r&s  cCs2t|�}t|d�r.x|jD]}|t|�}qW|S)N� __bases__)r@rBrMrD)�klassZret�baser r r rD�s   rDFcCs tjd�S)N)r� set_completerr r r r ��srQT) �atexitr2r�__all__rrDr� ImportErrorrrPr�registerr r r r � s