U e5d�;�@s�ddlZddlZddlZddlZddlmZmZmZddddgZ iZ Gdd�d�Z Gd d�de �Z Gd d�de �Z d d �Zdd d�Zddd�Zddd�Zddd�Zdd�Zdd�Zdd�Zdd�Zedkr�e�dS) �N)�NAME�DEDENT�OP� readmodule� readmodule_ex�Class�Functionc@seZdZdd�Zdd�ZdS)�_ObjectcCs(||_||_||_||_||_i|_dS�N)�module�name�file�lineno�parent�children��selfr r r rr�r�/usr/lib64/python3.8/pyclbr.py�__init__6s z_Object.__init__cCs||j|<dSr )r)rr �objrrr� _addchild>sz_Object._addchildN)�__name__� __module__� __qualname__rrrrrrr 4sr c@seZdZddd�ZdS)rNcCst�||||||�dSr )r rrrrrrDszFunction.__init__)N)rrrrrrrrrBscs&eZdZd�fdd� Zdd�Z�ZS)rNcs0t�||||||�|dkr gn||_i|_dSr )r r�super�methods)rr r rr rr�� __class__rrrJszClass.__init__cCs||j|<dSr )r)rr rrrr� _addmethodOszClass._addmethod)N)rrrrr� __classcell__rrrrrHscCs:t|j||j||�}|�||�t|t�r6|�||�|Sr )rr r r� isinstancerr)�ob� func_namerZnewfuncrrr�_nest_functionSs    r$cCs&t|j|||j||�}|�||�|Sr )rr r r)r"� class_namerrZnewclassrrr� _nest_class[s r&cCs6i}t||pg���D]\}}t|t�r|||<q|Sr )� _readmodule�itemsr!r)r �path�res�key�valuerrrras   cCst||p g�Sr )r')r r)rrrrmsc Cs�|dk rd||f}n|}|tkr*t|Si}|tjkrL|dkrL|t|<|S|�d�}|dkr�|d|�}||dd�}t|||�}|dk r�d||f}d|kr�td�|���t||d|�Sd} |dk r�|} n |tj} tj � || �} | dk�rt d|��|d��|t|<| j dk �r$| j |d<z| j �|�} Wnttfk �rR|YSX| dk�rb|S| j �|�} t||| | ||�S) Nz%s.%s�.r��__path__zNo package named {}zno module named )r )�_modules�sys�builtin_module_names�rfindr'� ImportError�formatr)� importlib�util�_find_spec_from_path�ModuleNotFoundError�submodule_search_locations�loader� get_source�AttributeError� get_filename� _create_tree)r r)� inpackage� fullmodule�tree�i�packageZ submoduler�fZ search_path�spec�source�fnamerrrr'vsJ            r'c! CsHt�|�}g}t�|j�}�z|D�]�\} } } } } | tkr`| \}}|r^|dd|kr^|d=qBq"| dkr�| \}}|r�|dd|kr�|d=qpt|�dd�\} }} | tkr�q"d}|r�|dd}t|||�}nt ||||�}|||<|� ||f�q"| dk�r�| \}}|�r(|dd|k�r(|d=�qt|�dd�\} }} | tk�rJq"t|�dd�\} } } d}| dk�r�g}d}g}t|�dd�\} } } | dk�r|dk�rd � |�}||k�r�||}nL|� d �}t |�dk�r|d }|d}|tk�rt|}||k�r||}|� |�g}| dk�r0|d7}nZ| d k�rR|d8}|dk�r��q�n8| d k�rh|dk�rhn"| ttfk�rz|dk�rz|� | ��qz|}|�r�|dd}t||||�}nt|||||�}|||<|� ||f�q"| dk�rh| ddk�rht|�}|D]d\}}zL|dk�r t||�n2zt|||�Wn tk �rPt|g�YnXWn YnX�qq"| dkr"| ddkr"t|�\}} |r"| dk�r�q"t|�}zt|||�}WnYq"YnX|D]X\}} ||k�r�|||| �p�|<n0|dk�r�|D] }|ddk�r�||||<�q��q�q"Wntk �r:YnX|��|S)N�����r.�defr��class�()�)�,�r-�����rNrO�import�from�*�_)�io�StringIO�tokenize�generate_tokens�readliner�nextrr$r�append�join�split�lenr0rr&r� _getnamelistr'r4�_getname� StopIteration�close)!rAr)rHrGrBr@rE�stack�g� tokentype�token�startZ_end�_linerZ thisindentr#Zcur_funcZcur_objr%Zinherit�names�levelr�n�c�m�dZ cur_class�modules�modZ_mod2Zn2rrrr?�s�                    ��         r?cCslg}t|�\}}|sqh|dkr,t|�\}}nd}|�||f�|dkr\d|kr\t|�d}q>|dkrqhq|S)N�asrO� r.)rar\r[)rerjr rgZname2rrrr`Es r`cCs�g}t|�dd�\}}|tkr0|dkr0d|fS|�|�t|�dd�\}}|dkrXq�t|�dd�\}}|tkrvq�|�|�q:d�|�|fS)Nr�rTr-)r[rr\r])re�partsrfrgrrrra[s  rac CsXddl}ztjd}Wnt}YnX|j�|�rj|j�|�g}|j�|�}|��� d�rn|dd�}ng}t ||�}dd�}t |� �|dd�}d }|�rT|� �}t|t�r�q�t|d �s�d|_t|t�r�t |j� �|dd�}|D]} |j|| _q�|�|�t|t��r,td �d |j|j|j|j��q�t|t�r�td �d |j|j|j��q�dS)Nrr.z.py�����cSs t|dd�S)Nrr)�getattr)�arrr�|�z_main..T)r+�reversert�indentz{}class {} {} {}� z {}def {} {})�osr1�argv�__file__r)�exists�dirname�basename�lower�endswithr�sorted�values�popr!�list�hasattrr|r r�extendr�printr5r rrr) r~rqr)rBZ lineno_keyZobjsZ indent_levelrZnew_objsr"rrr�_mainmsL        �  � r��__main__)N)N)N)N)rVr1�importlib.utilr6rXrgrrr�__all__r0r rrr$r&rrr'r?r`rar�rrrrr�)s*    @&