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 &