§
    ÷yIf›  ã                  ó¼   — d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZ ddlmZmZmZmZmZ ddlmZmZmZmZ dd	lmZ dd
lmZ  G d„ d¦  «        ZdS )z Utilities for creating diagrams.é    )ÚannotationsN)Údefaultdict)ÚIterable)ÚmodutilsÚnodes)ÚClassDiagramÚClassEntityÚDiagramEntityÚPackageDiagramÚPackageEntity)ÚEdgeTypeÚNodePropertiesÚNodeTypeÚPrinter)Úget_printer_for_filetype)Úis_exceptionc                  óZ   — e Zd ZdZdd„Zdd	„Zdd„Zd d„Zd!d„Zd"d„Z	d#d„Z
d$d„Zd%d„ZdS )&ÚDiagramWriterz(Base class for writing project diagrams.Úconfigúargparse.NamespaceÚreturnÚNonec                óØ   — || _         t          | j         j        ¦  «        | _        |  d| _        | j         j        | _        t          j        | j         j	        ¦  «        | _
        i | _        d S )NÚ )r   r   Úoutput_formatÚprinter_classÚ	file_nameÚmax_color_depthÚdepthÚ	itertoolsÚcycleÚcolor_paletteÚavailable_colorsÚused_colors)Úselfr   s     úK/var/www/piapp/venv/lib/python3.11/site-packages/pylint/pyreverse/writer.pyÚ__init__zDiagramWriter.__init__    s\   € ØˆŒÝ5°d´kÔ6OÑPÔPˆÔØÐØˆŒØ”[Ô0ˆŒ
å )¤°´Ô0IÑ JÔ JˆÔØ+-ˆÔÐÐó    Údiadefsú'Iterable[ClassDiagram | PackageDiagram]c                ó2  — |D �]}|j                              ¦   «                              dd¦  «                             dd¦  «        }|› d| j        j        › �}t
          j                             | j        j        ¦  «        r*t
          j         	                    | j        j        |¦  «        }|  
                    ||¦  «         t          |t          ¦  «        r|                      |¦  «         n|                      |¦  «         |                      ¦   «          �ŒdS )z1Write files for <project> according to <diadefs>.ú/Ú_ú ú.N)ÚtitleÚstripÚreplacer   r   ÚosÚpathÚexistsÚoutput_directoryÚjoinÚset_printerÚ
isinstancer   Úwrite_packagesÚwrite_classesÚsave)r%   r)   ÚdiagramÚbasenamer   s        r&   ÚwritezDiagramWriter.write*   sþ   € àð 
	ñ 
	ˆGØ”}×*Ò*Ñ,Ô,×4Ò4°S¸#Ñ>Ô>×FÒFÀsÈCÑPÔPˆHØ#ÐAÐA d¤kÔ&?ÐAÐAˆIÝŒw�~Š~˜dœkÔ:Ñ;Ô;ð RÝœGŸLšL¨¬Ô)EÀyÑQÔQ�	Ø×Ò˜Y¨Ñ1Ô1Ð1Ý˜'¥>Ñ2Ô2ð ,Ø×#Ò# GÑ,Ô,Ð,Ð,à×"Ò" 7Ñ+Ô+Ð+Ø�IŠI‰KŒKˆK‰Kð
	ð 
	r(   r=   r   c           
     óH  ‡— i }t          |                     ¦   «         d„ ¬¦  «        D ]§Š‰j                             ¦   «         ‰_        | j        j        r/t          ˆfd„|                     d¦  «        D ¦   «         ¦  «        sŒ[| j	         
                    ‰j        t          j        |                      ‰¦  «        ¬¦  «         dddœ|‰j        <   Œ¨|                     d¦  «        D ]m}|j        j        }|j        j        }| j	                             ||t"          j        ¬¦  «         ||         d	xx         d
z  cc<   ||         dxx         d
z  cc<   Œn|                     d¦  «        D ]m}|j        j        }|j        j        }| j	                             ||t"          j        ¬¦  «         ||         d	xx         d
z  cc<   ||         dxx         d
z  cc<   Œnt)          dt+          |¦  «        › dt-          d„ |                     ¦   «         D ¦   «         ¦  «        › d�¦  «         dS )zWrite a package diagram.c                ó   — | j         S ©N©r0   ©Úxs    r&   ú<lambda>z.DiagramWriter.write_packages.<locals>.<lambda>=   s   € ¸a¼g€ r(   ©Úkeyc              3  ó8   •K  — | ]}‰|j         |j        fv V — Œd S rB   )Úfrom_objectÚ	to_object)Ú.0ÚrelÚmodules     €r&   ú	<genexpr>z/DiagramWriter.write_packages.<locals>.<genexpr>@   sE   øè è € ð 5ð 5àð ˜3œ?¨C¬MÐ:Ð:ð5ð 5ð 5ð 5ð 5ð 5r(   Údepends©Útype_Ú
propertiesr   )ÚimportsÚimported©rR   rT   é   rU   Útype_dependsz	Analysed z modules with a total of c              3  ó&   K  — | ]}|d          V — ŒdS )rT   N© )rL   Úmods     r&   rO   z/DiagramWriter.write_packages.<locals>.<genexpr>n   s&   è è € ÐEÐE¨�c˜)”nÐEÐEÐEÐEÐEÐEr(   z importsN)ÚsortedÚmodulesÚnodeÚqnameÚfig_idr   Úno_standaloneÚanyÚget_relationshipsÚprinterÚ	emit_noder   ÚPACKAGEÚget_package_propertiesrJ   rK   Ú	emit_edger   ÚUSESÚTYPE_DEPENDENCYÚprintÚlenÚsumÚvalues)r%   r=   Úmodule_inforM   Úfrom_idÚto_idrN   s         @r&   r:   zDiagramWriter.write_packages8   s°  ø€ à13ˆõ ˜WŸ_š_Ñ.Ô.Ð4EÐ4EÐFÑFÔFð 	ð 	ˆFØ"œK×-Ò-Ñ/Ô/ˆFŒMàŒ{Ô(ð µð 5ð 5ð 5ð 5à"×4Ò4°YÑ?Ô?ð5ñ 5ô 5ñ 2ô 2ð ð àŒL×"Ò"Ø”ÝÔ&Ø×6Ò6°vÑ>Ô>ð #ñ ô ð ð Øð*ð *ˆK˜œÑ&Ð&ð ×,Ò,¨YÑ7Ô7ð 	0ð 	0ˆCØ”oÔ,ˆGØ”MÔ(ˆEàŒL×"Ò"ØØÝ”mð #ñ ô ð ð ˜Ô  Ð+Ð+Ô+¨qÑ0Ð+Ð+Ñ+Ø˜Ô˜zÐ*Ð*Ô*¨aÑ/Ð*Ð*Ñ*Ð*à×,Ò,¨^Ñ<Ô<ð 	0ð 	0ˆCØ”oÔ,ˆGØ”MÔ(ˆEàŒL×"Ò"ØØÝÔ.ð #ñ ô ð ð ˜Ô  Ð+Ð+Ô+¨qÑ0Ð+Ð+Ñ+Ø˜Ô˜zÐ*Ð*Ô*¨aÑ/Ð*Ð*Ñ*Ð*åðP�˜KÑ(Ô(ð Pð PÝÐEÐE°×0BÒ0BÑ0DÔ0DÐEÑEÔEÑEÔEðPð Pð Pñ	
ô 	
ð 	
ð 	
ð 	
r(   r   c                ó  ‡‡— t          ‰j        d„ ¬¦  «        D ]ˆŠ‰j                             ¦   «         ‰_        | j        j        rt          ˆˆfd„dD ¦   «         ¦  «        sŒI| j         	                    ‰j        t          j        |                      ‰¦  «        ¬¦  «         Œ‰‰                     d¦  «        D ]=}| j                             |j        j        |j        j        t"          j        ¬¦  «         Œ>t'          t(          ¦  «        }‰                     d¦  «        D ]r}||j        j                                      |j        j        ¦  «         | j                             |j        j        |j        j        |j        t"          j        ¬	¦  «         Œs‰                     d
¦  «        D ]b}|j        j        ||j        j                 v rŒ!| j                             |j        j        |j        j        |j        t"          j        ¬	¦  «         ŒcdS )zWrite a class diagram.c                ó   — | j         S rB   rC   rD   s    r&   rF   z-DiagramWriter.write_classes.<locals>.<lambda>t   s   € ¸¼€ r(   rG   c              3  óh   •K  — | ],}‰                      |¦  «        D ]}‰|j        |j        fv V — ŒŒ-d S rB   )rc   rJ   rK   )rL   Úrel_typerM   r=   Úobjs      €€r&   rO   z.DiagramWriter.write_classes.<locals>.<genexpr>v   sj   øè è € ð 5ð 5àØ"×4Ò4°XÑ>Ô>ð5ð 5ð ð ˜œ¨¬Ð7Ð7ð5ð 5ð 5ð 5ð 5ð 5ð 5r(   )ÚspecializationÚassociationÚaggregationrQ   rw   rV   rx   )ÚlabelrR   ry   N)r\   Úobjectsr^   r_   r`   r   ra   rb   rd   re   r   ÚCLASSÚget_class_propertiesrc   rh   rJ   rK   r   ÚINHERITSr   ÚsetÚaddÚnameÚASSOCIATIONÚAGGREGATION)r%   r=   rM   Úassociationsrv   s    `  @r&   r;   zDiagramWriter.write_classesq   s5  øø€ õ ˜'œ/Ð/@Ð/@ÐAÑAÔAð 	ð 	ˆCØœŸšÑ)Ô)ˆCŒJØŒ{Ô(ð µð 5ð 5ð 5ð 5ð 5à Pð5ñ 5ô 5ñ 2ô 2ð ð
 àŒL×"Ò"Ø”
Ý”nØ×4Ò4°SÑ9Ô9ð #ñ ô ð ð ð ×,Ò,Ð-=Ñ>Ô>ð 	ð 	ˆCØŒL×"Ò"Ø”Ô&Ø”Ô$ÝÔ'ð #ñ ô ð ð õ
 -8½Ñ,<Ô,<ˆà×,Ò,¨]Ñ;Ô;ð 	ð 	ˆCØ˜œÔ/Ô0×4Ò4°S´]Ô5IÑJÔJÐJØŒL×"Ò"Ø”Ô&Ø”Ô$Ø”hÝÔ*ð	 #ñ ô ð ð ð ×,Ò,¨]Ñ;Ô;ð 	ð 	ˆCØŒ}Ô# |°C´OÔ4JÔ'KÐKÐKØØŒL×"Ò"Ø”Ô&Ø”Ô$Ø”hÝÔ*ð	 #ñ ô ð ð ð	ð 	r(   r   Ústrr>   c                óH   — |                       |¦  «        | _        || _        dS )zSet printer.N)r   rd   r   )r%   r   r>   s      r&   r8   zDiagramWriter.set_printerž   s"   € à×)Ò)¨(Ñ3Ô3ˆŒØ"ˆŒˆˆr(   rv   r   r   c                óp   — t          |j        | j        j        r|                      |¦  «        nd¬¦  «        S )z!Get label and shape for packages.Úblack)rz   Úcolor)r   r0   r   Ú	colorizedÚget_shape_color)r%   rv   s     r&   rg   z$DiagramWriter.get_package_properties£   s>   € åØ”)Ø/3¬{Ô/DÐQ�$×&Ò& sÑ+Ô+Ð+È'ð
ñ 
ô 
ð 	
r(   r	   c           	     óò   — t          |j        | j        j        s|j        nd| j        j        s|j        ndt          |j        ¦  «        rdnd| j        j        r|  	                    |¦  «        nd¬¦  «        }|S )z Get label and shape for classes.NÚredrˆ   )rz   ÚattrsÚmethodsÚ	fontcolorr‰   )
r   r0   r   Úonly_classnamesrŽ   r�   r   r^   rŠ   r‹   )r%   rv   rS   s      r&   r}   z"DiagramWriter.get_class_propertiesª   s   € å#Ø”)Ø#'¤;Ô#>ÐH�#”)�)ÀDØ'+¤{Ô'BÐL�C”K�KÈÝ+¨C¬HÑ5Ô5ÐB�e�e¸7Ø/3¬{Ô/DÐQ�$×&Ò& sÑ+Ô+Ð+È'ð
ñ 
ô 
ˆ
ð Ðr(   r
   c                óB  — |j                              ¦   «         }t          j        |                     dd¬¦  «        d         ¦  «        rdS t          |j         t          j        ¦  «        r|                     dd¬¦  «        d         }n,|j         j	        r|}n|                     dd¬¦  «        d         }d 
                    |                     d| j        ¦  «        d| j        …         ¦  «        }|| j        vrt          | j        ¦  «        | j        |<   | j        |         S )zGet shape color.r/   rW   )Úmaxsplitr   Úgreyé   N)r^   r_   r   Úis_stdlib_moduleÚsplitr9   r   ÚClassDefÚrsplitÚpackager7   r   r$   Únextr#   )r%   rv   Úqualified_namerš   Ú	base_names        r&   r‹   zDiagramWriter.get_shape_colorµ   s  € àœŸšÑ)Ô)ˆÝÔ$ ^×%9Ò%9¸#ÈÐ%9Ñ%JÔ%JÈ1Ô%MÑNÔNð 	Ø�6Ý�c”h¥¤Ñ/Ô/ð 	@Ø$×+Ò+¨C¸!Ð+Ñ<Ô<¸QÔ?ˆGˆGØŒXÔð 	@Ø$ˆGˆGà$×+Ò+¨C¸!Ð+Ñ<Ô<¸QÔ?ˆGØ—H’H˜WŸ]š]¨3°´
Ñ;Ô;¸L¸d¼j¸LÔIÑJÔJˆ	Ø˜DÔ,Ð,Ð,Ý*.¨tÔ/DÑ*EÔ*EˆDÔ˜YÑ'ØÔ 	Ô*Ð*r(   c                óD   — | j                              | j        ¦  «         dS )zWrite to disk.N)rd   Úgenerater   )r%   s    r&   r<   zDiagramWriter.saveÅ   s    € àŒ×Ò˜dœnÑ-Ô-Ð-Ð-Ð-r(   N)r   r   r   r   )r)   r*   r   r   )r=   r   r   r   )r=   r   r   r   )r   r…   r>   r…   r   r   )rv   r   r   r   )rv   r	   r   r   )rv   r
   r   r…   )r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   r?   r:   r;   r8   rg   r}   r‹   r<   rZ   r(   r&   r   r      sÐ   € € € € € Ø2Ð2ð.ð .ð .ð .ðð ð ð ð7
ð 7
ð 7
ð 7
ðr+ð +ð +ð +ðZ#ð #ð #ð #ð

ð 
ð 
ð 
ð	ð 	ð 	ð 	ð+ð +ð +ð +ð .ð .ð .ð .ð .ð .r(   r   )r£   Ú
__future__r   Úargparser    r3   Úcollectionsr   Úcollections.abcr   Úastroidr   r   Úpylint.pyreverse.diagramsr   r	   r
   r   r   Úpylint.pyreverse.printerr   r   r   r   Ú pylint.pyreverse.printer_factoryr   Úpylint.pyreverse.utilsr   r   rZ   r(   r&   ú<module>r­      sF  ðð
 'Ð &à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø 	€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $à #Ð #Ð #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð ð ð ð ð ð ð QÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ EÐ EÐ EÐ EÐ EÐ EØ /Ð /Ð /Ð /Ð /Ð /ðj.ð j.ð j.ð j.ð j.ñ j.ô j.ð j.ð j.ð j.r(   