U e5d��@s~ddlZddlZddlZdgZGdd�d�Zdd�Zz ddlZWnek rXdZYn"Xe� e�j �e� dd��d ZdS) �N� Completerc@s6eZdZd dd�Zdd�Zdd�Zdd �Zd d �ZdS) rNcCs6|rt|t�std��|dkr&d|_n d|_||_dS)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__cCs�|jrtj|_|��sB|dkr>tr8t�d�t��dSdSndS|dkrld|kr`|� |�|_ n |� |�|_ z |j |WSt k r�YdSXdS)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|�}|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 rr-r�seen�nrZnspacerr r r rfs$     zCompleter.global_matchesc Cshddl}|�d|�}|sgS|�dd�\}}zt||j�}Wntk rTgYSXtt|��}|�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|| �} Wntk �rYnX|�| | �} |�| �q�|�s\| �sF�q\| dk�rVd } q�d} q�|��|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�sR       ��     zCompleter.attr_matches)N)�__name__� __module__� __qualname__r rr rrr r r r r&s  cCs.t|�}t|d�r*|jD]}|t|�}q|S)N� __bases__)r@rBrMrD)�klassZret�baser r r rD�s   rDFcCs t�d�S)N)r� set_completerr r r r ���rQT) �atexitr2r�__all__rrDr� ImportErrorrrPr�registerr r r r � s