Your IP : 216.73.217.106


Current Path : /opt/alt/python37/lib/python3.7/site-packages/pylint/pyreverse/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/pylint/pyreverse/__pycache__/diagrams.cpython-37.pyc

B

A!p\#�@s|dZddlZddlmZmZddlmZGdd�d�ZGdd�de�ZGd	d
�d
e�Z	Gdd�dee�Z
Gd
d�de
�ZdS)zdiagram objects
�N)�is_interface�FilterMixIn)�decorated_with_propertyc@seZdZdZdS)�Figurezbase class for counter handlingN)�__name__�
__module__�__qualname__�__doc__�r
r
�J/opt/alt/python37/lib/python3.7/site-packages/pylint/pyreverse/diagrams.pyrsrc@seZdZdZddd�ZdS)�Relationshipz=a relation ship from an object in the diagram to another
    NcCs&t�|�||_||_||_||_dS)N)r�__init__�from_object�	to_object�type�name)�selfrr�
relation_typerr
r
rr
s

zRelationship.__init__)N)rrrr	r
r
r
r
rrsrc@seZdZdZddd�ZdS)�
DiagramEntityzAa diagram object, i.e. a label associated to an astroid node
    �No nameNcCst�|�||_||_dS)N)rr
�title�node)rrrr
r
rr
's
zDiagramEntity.__init__)rN)rrrr	r
r
r
r
rr#src@s�eZdZdZdZdd�Zdd�Zd dd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�ZdS)!�ClassDiagramz main class diagram handling
    �classcCs8t�||�t�|�||_g|_i|_i|_g|_dS)N)rr
rr�objects�
relationships�_nodes�depends)rr�moder
r
rr
3s
zClassDiagram.__init__cCst|j�|d�dd�d�S)Nr
cSs|jj|jjfS)N)rZfig_idr)�xr
r
r�<lambda>@�z0ClassDiagram.get_relationships.<locals>.<lambda>)�key)�sortedr�get)rZroler
r
r�get_relationships<szClassDiagram.get_relationshipsNcCs&t||||�}|j�|g��|�dS)zcreate a relation ship
        N)rr�
setdefault�append)rrrrr�relr
r
r�add_relationshipCszClassDiagram.add_relationshipcCs2x$|j�|d�D]}|j|kr|SqWt|��dS)z'return a relation ship or None
        r
N)rr$r�KeyError)rrrr(r
r
r�get_relationshipIs
zClassDiagram.get_relationshipcCs�g}dd�|��D�}xbt|j���t|j���|D]>\}}|�|�sLq8|�|�}|rld|d�|�f}|�|�q8Wt|�S)z3return visible attributes, possibly with class namecSs,g|]$\}}t|tj�rt|�r||f�qSr
)�
isinstance�astroid�FunctionDefr)�.0�n�mr
r
r�
<listcomp>Usz*ClassDiagram.get_attrs.<locals>.<listcomp>z%s : %sz, )	�items�list�instance_attrs_type�locals_type�	show_attr�class_names�joinr'r#)rr�attrsZ
properties�	node_nameZassociated_nodes�namesr
r
r�	get_attrsQs(

zClassDiagram.get_attrscs&�fdd�|��D�}t|dd�d�S)zreturn visible methodscs0g|](}t|tj�rt|�s��|j�r|�qSr
)r,r-r.rr7r)r/r1)rr
rr2isz,ClassDiagram.get_methods.<locals>.<listcomp>cSs|jS)N)r)r0r
r
rr or!z*ClassDiagram.get_methods.<locals>.<lambda>)r")�valuesr#)rr�methodsr
)rr�get_methodsfs
zClassDiagram.get_methodscCs2||jkst�t||�}||j|<|j�|�dS)z create a diagram object
        N)r�AssertionErrorrrr')rrr�entr
r
r�
add_objectqs

zClassDiagram.add_objectcCsbg}xX|D]P}t|tj�r |j}t|tj�r
t|d�r
|�|�s
|j|kr
|j}|�|�q
W|S)z'return class names if needed in diagramr)	r,r-�Instance�_proxied�ClassDef�hasattr�has_noderr')r�nodesr<rr;r
r
rr8ys



zClassDiagram.class_namescCs
|j��S)z,return the list of underlying nodes
        )r�keys)rr
r
rrI�szClassDiagram.nodescCs
||jkS)zAreturn true if the given node is included in the diagram
        )r)rrr
r
rrH�szClassDiagram.has_nodecCs
|j|S)z1return the diagram object mapped to node
        )r)rrr
r
r�object_from_node�szClassDiagram.object_from_nodecCsdd�|jD�S)z%return all class nodes in the diagramcSsg|]}t|jtj�r|�qSr
)r,rr-rF)r/�or
r
rr2�sz(ClassDiagram.classes.<locals>.<listcomp>)r)rr
r
r�classes�szClassDiagram.classescCs.x |��D]}|jj|kr
|Sq
Wt|��dS)z@return a class by its name, raise KeyError if not found
        N)rMrrr*)rr�klassr
r
r�classe�szClassDiagram.classecCst�xl|��D�]^}|j}|�|�|_|�|�|_t|�r@d|_nd|_xH|jdd�D]8}y|�	|�}|�
||d�WqTtk
r�wTYqTXqTWxB|jD]8}y|�	|�}|�
||d�Wq�tk
r�w�Yq�Xq�Wx�t
|j���t
|j���D]v\}}xl|D]d}	|	tjk�r�qt|	tj��r(|	j}	y|�	|	�}
|�
|
|d|�Wntk
�r`�wYnX�qWq�WqWdS)	z<extract relation ships between nodes in the diagram
        Z	interfacerF)ZrecursZspecialization�
implementsZassociationN)rMrr=r:r@r?r�shapeZ	ancestorsrKr)r*rPr4r5r3r6r-ZUninferabler,rDrE)r�objrZpar_nodeZpar_objZ	impl_nodeZimpl_objrr>�valueZassociated_objr
r
r�extract_relationships�s>



z"ClassDiagram.extract_relationships)N)rrrr	�TYPEr
r%r)r+r=r@rCr8rIrHrKrMrOrTr
r
r
rr-s 	
rc@s<eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
S)�PackageDiagramzpackage diagram handling
    �packagecCsdd�|jD�S)z&return all module nodes in the diagramcSsg|]}t|jtj�r|�qSr
)r,rr-�Module)r/rLr
r
rr2�sz*PackageDiagram.modules.<locals>.<listcomp>)r)rr
r
r�modules�szPackageDiagram.modulescCs.x |��D]}|jj|kr
|Sq
Wt|��dS)zAreturn a module by its name, raise KeyError if not found
        N)rYrrr*)rr�modr
r
r�module�szPackageDiagram.modulecCspxb|��D]V}|jj}||kr"|S|��j}|d||fkr@|S|d|�dd�d|fkr
|Sq
Wt|��dS)zlreturn a module by its name, looking also for relative imports;
        raise KeyError if not found
        z%s.%s�.�rN)rYrr�root�rsplitr*)rrrrZ�mod_namerWr
r
r�
get_module�s
zPackageDiagram.get_modulecCs2|��j}|�|�}||jjkr.|jj�|�dS)z1add dependencies created by from-imports
        N)r^rr[rrr')rrZfrom_moduler`rRr
r
r�add_from_depend�s

zPackageDiagram.add_from_dependc
Cs�t�|�xJ|��D]>}y"|�|j���}|�||d�Wqtk
rPwYqXqWx`|��D]T}d|_	xH|jj
D]<}y|�||j�}Wntk
r�wtYnX|�||d�qtWq`WdS)z<extract relation ships between nodes in the diagram
        Z	ownershiprWrN)rrTrMrKrr^r)r*rYrQrra)rrRrZZdep_name�depr
r
rrT�s
z$PackageDiagram.extract_relationshipsN)
rrrr	rUrYr[rarbrTr
r
r
rrV�srV)r	r-Zpylint.pyreverse.utilsrrZpylint.checkers.utilsrrrrrrVr
r
r
r�<module>s
"