Hacked By AnonymousFox

Current Path : /opt/cloudlinux/venv/lib/python3.11/site-packages/pylint/pyreverse/__pycache__/
Upload File :
Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/pylint/pyreverse/__pycache__/diadefslib.cpython-311.pyc

�

�܋f"����dZddlmZddlZddlmZddlmZddlZddlm	Z	ddl
mZmZddl
mZmZdd	lmZGd
�d��ZGd�d
ee��ZGd�de��ZGd�d��ZdS)zHHandle diagram generation options for class diagram or default diagrams.�)�annotationsN)�	Generator)�Any)�nodes)�ClassDiagram�PackageDiagram)�Linker�Project)�
LocalsVisitorc�b�eZdZdZd d�Zd!d�Zd"d�Zd#d�Zd$d�Zd%d�Z	d&d�Z
d'd�Zd(d�Zd)d�Z
dS)*�DiaDefGeneratorz"Handle diagram generation options.�linkerr	�handler�DiadefsHandler�return�Nonec�f�|j|_d|_|���||_|dS)z&Common Diagram Handler initialization.FN)�config�module_names�_set_default_optionsr��selfrrs   �l/builddir/build/BUILD/cloudlinux-venv-1.0.6/venv/lib/python3.11/site-packages/pylint/pyreverse/diadefslib.py�__init__zDiaDefGenerator.__init__s8���n���"'����!�!�#�#�#�����'�'�'��node�nodes.ClassDef�strc�^�|j}|jr|���j�d|��}|S)zGet title for objects.�.)�namer�root)rr�titles   r�	get_titlezDiaDefGenerator.get_title"s7���	����	2��y�y�{�{�'�1�1�%�1�1�E��r�option�bool | None�boolc�<�|�t|jj��S|S)z4Activate some options if not explicitly deactivated.)r'r�classes)rr%s  r�_set_optionzDiaDefGenerator._set_option)s!���>����+�,�,�,��
rc�b�|�|jj��|_|�|jj��}|�|jj��}d\}}|rd}|rd}|jj�|jj}|jj�|jj}||c|_|_dS)z7Set different default options with _default dictionary.)rr���N)	r*rr�
all_ancestors�all_associated�show_ancestors�show_associated�	anc_level�association_level)rr-r.r1r2s     rrz$DiaDefGenerator._set_default_options1s��� �,�,�T�[�-E�F�F����(�(���)B�C�C�
��)�)�$�+�*D�E�E��'-�$�	�$��	��I��	#� "���;�%�1���2�I��;�&�2� $�� ;��1:�<M�.����.�.�.r�tuple[int, int]c��|j|jfS)z Help function for search levels.)r1r2)rs r�_get_levelszDiaDefGenerator._get_levelsAs���~�t�5�5�5rc�X�|jjrdS|���jdkS)z'True if builtins and not show_builtins.T�builtins)r�show_builtinr"r!�rrs  r�	show_nodezDiaDefGenerator.show_nodeEs*���;�#�	��4��y�y�{�{��:�-�-rc��|j�|��|j�|�|��|��dS)z&Visit one class and add it to diagram.N)r�visit�classdiagram�
add_objectr$r9s  r�	add_classzDiaDefGenerator.add_classKsC������$������$�$�T�^�^�D�%9�%9�4�@�@�@�@�@r�level�int�%Generator[nodes.ClassDef, None, None]c#�K�|dkrdS|�d���D]}|�|��s�|V��dS)z&Return ancestor nodes of a class node.rNF)�recurs)�	ancestorsr:)rrr@�ancestors    r�
get_ancestorszDiaDefGenerator.get_ancestorsPs_�����A�:�:��F����e��4�4�	�	�H��>�>�(�+�+�
���N�N�N�N�	�	r�
klass_nodec#�nK�|dkrdSt|j�����t|j�����zD]\}|D]W}t	|t
j��r|j}t	|tj	��r|�
|��s�S|V��X�]dS)z(Return associated nodes of a class node.rN)�list�instance_attrs_type�values�locals_type�
isinstance�astroid�Instance�_proxiedr�ClassDefr:)rrHr@�association_nodesrs     r�get_associatedzDiaDefGenerator.get_associated[s������A�:�:��F�!%�j�&D�&K�&K�&M�&M�!N�!N�QU��"�)�)�+�+�R
�R
�"
�	�	��*�
�
���d�G�$4�5�5�)��=�D�"�4���8�8��T�^�^�D�=Q�=Q����
�
�
�
�
�	�	rr1r2c�^�|j�|��s|�|��sdS|�|��|�||��D]}|�||dz
|���|�||��D]}|�|||dz
���dS)z2Extract recursively classes related to klass_node.N�)r=�has_noder:r?rG�extract_classesrT)rrHr1r2rFrs      rrXzDiaDefGenerator.extract_classesks�����%�%�j�1�1�	����
�9S�9S�	��F����z�"�"�"��*�*�:�y�A�A�	M�	M�H�� � ��9�q�=�:K�L�L�L�L��'�'�
�4E�F�F�	I�	I�D�� � ��y�2C�a�2G�H�H�H�H�	I�	IrN�rr	rrrr)rrrr)r%r&rr')rr)rr3)rrrr'�rrrr)rrr@rArrB)rHrr@rArrB)rHrr1rAr2rArr)�__name__�
__module__�__qualname__�__doc__rr$r*rr5r:r?rGrTrX�rrr
r
s�������,�,�(�(�(�(���������N�N�N�N� 6�6�6�6�.�.�.�.�A�A�A�A�
	�	�	�	����� I�I�I�I�I�Irr
c�B�eZdZdZdd�Zdd�Zdd�Zdd�Zdd�Zdd�Z	dS)�DefaultDiadefGeneratorz�Generate minimum diagram definition for the project :

    * a package diagram including project's modules
    * a class diagram including project's classes
    rr	rrrrc�f�t�|||��tj|��dS�N)r
rrrs   rrzDefaultDiadefGenerator.__init__�s1��� � ��v�w�7�7�7���t�$�$�$�$�$rrr
c���|jj}t|j��dkrt	d|j��|��|_nd|_td|j��|��|_dS)z`Visit a pyreverse.utils.Project node.

        create a diagram definition for packages
        rVz	packages Nzclasses )	r�mode�len�modulesrr!�
pkgdiagramrr=)rrres   r�
visit_projectz$DefaultDiadefGenerator.visit_project�sq��
�{����t�|���q� � �5C�'�D�I�'�'��6�6�D�O�O�#�D�O�(�)?�D�I�)?�)?��F�F����r�_rc�<�|jr|j|jfS|jfS)zaLeave the pyreverse.utils.Project node.

        return the generated diagram definition
        )rhr=)rrjs  r�
leave_projectz$DefaultDiadefGenerator.leave_project�s*��
�?�	6��?�D�$5�5�5��!�#�#r�nodes.Modulec��|jr<|j�|��|j�|j|��dSdS)z`Visit an astroid.Module node.

        add this class to the package diagram definition
        N)rhrr<r>r!r9s  r�visit_modulez#DefaultDiadefGenerator.visit_module�sN��
�?�	8��K���d�#�#�#��O�&�&�t�y�$�7�7�7�7�7�	8�	8rrc�b�|���\}}|�|||��dS)z]Visit an astroid.Class node.

        add this class to the class diagram definition
        N)r5rX)rrr1r2s    r�visit_classdefz%DefaultDiadefGenerator.visit_classdef�s:��
(,�'7�'7�'9�'9�$�	�$����T�9�.?�@�@�@�@�@r�nodes.ImportFromc�X�|jr"|j�||j��dSdS)z@Visit astroid.ImportFrom  and catch modules for package diagram.N)rh�add_from_depend�modnamer9s  r�visit_importfromz'DefaultDiadefGenerator.visit_importfrom�s9���?�	@��O�+�+�D�$�,�?�?�?�?�?�	@�	@rNrY)rr
rr)rjr
rr)rrmrrrZ)rrrrr)
r[r\r]r^rrirlrorqrvr_rrrarazs���������%�%�%�%�G�G�G�G�$�$�$�$�8�8�8�8�A�A�A�A�@�@�@�@�@�@rrac��eZdZdZd
d�Zd	S)�ClassDiadefGeneratorz\Generate a class diagram definition including all classes related to a
    given class.
    �projectr
�klassrrrc���t||jj��|_t	|j��dkr/|�dd��\}}|�|��}n(|jd}|�d��d}t|�
|����}|���\}}|�|||��|jS)zDReturn a class diagram definition for the class and related classes.rVr rr,)
rrrer=rfrg�rsplit�
get_module�split�next�ilookupr5rX)rryrz�moduler1r2s      r�
class_diagramz"ClassDiadefGenerator.class_diagram�s���(����0@�A�A����w����!�#�#�!�L�L��a�0�0�M�F�E��'�'��/�/�F�F��_�Q�'�F��K�K��$�$�R�(�E��V�^�^�E�*�*�+�+��'+�'7�'7�'9�'9�$�	�$����U�I�/@�A�A�A�� � rN)ryr
rzrrr)r[r\r]r^r�r_rrrxrx�s2��������
!�
!�
!�
!�
!�
!rrxc�"�eZdZdZdd�Zdd�Zd
S)rzDGet diagram definitions from user (i.e. xml files) or generate them.r�argparse.Namespacerrc��||_dSrc)r)rrs  rrzDiadefsHandler.__init__�s
������rryr
rr	�list[ClassDiagram]c��g}t||��}|jjD]+}|�|�||�����,|s#t||���|��}|D]}|����|S)axGet the diagram's configuration data.

        :param project:The pyreverse project
        :type project: pyreverse.utils.Project
        :param linker: The linker
        :type linker: pyreverse.inspector.Linker(IdGeneratorMixIn, LocalsVisitor)

        :returns: The list of diagram definitions
        :rtype: list(:class:`pylint.pyreverse.diagrams.ClassDiagram`)
        )rxrr)�appendr�rar<�extract_relationships)rryr�diagrams�	generatorrz�diagrams       r�get_diadefszDiadefsHandler.get_diadefs�s�����(���6�6�	��[�(�	E�	E�E��O�O�I�3�3�G�U�C�C�D�D�D�D��	K�-�f�d�;�;�A�A�'�J�J�H��	,�	,�G��)�)�+�+�+�+��rN)rr�rr)ryr
rr	rr�)r[r\r]r^rr�r_rrrr�sB������N�N����������rr)r^�
__future__r�argparse�collections.abcr�typingrrOr�pylint.pyreverse.diagramsrr�pylint.pyreverse.inspectorr	r
�pylint.pyreverse.utilsrr
rarxrr_rr�<module>r�st��
O�N�"�"�"�"�"�"�����%�%�%�%�%�%�����������������B�B�B�B�B�B�B�B�6�6�6�6�6�6�6�6�0�0�0�0�0�0�
`I�`I�`I�`I�`I�`I�`I�`I�F6@�6@�6@�6@�6@�]�O�6@�6@�6@�r!�!�!�!�!�?�!�!�!�0���������r

Hacked By AnonymousFox1.0, Coded By AnonymousFox