bg^dZddlmZddlZddlZddlZddlmZddlm Z m Z ddl m Z m Z mZmZmZddlmZmZmZmZddlmZdd lmZGd d ZdS) z,Utilities for creating VCG and Dot diagrams.) annotationsN)Iterable)modutilsnodes) ClassDiagram ClassEntity DiagramEntityPackageDiagram PackageEntity)EdgeTypeNodePropertiesNodeTypePrinter)get_printer_for_filetype) is_exceptioncZeZdZdZddZdd Zdd Zd dZd!dZd"dZ d#dZ d$dZ d%dZ dS)& DiagramWriterz(Base class for writing project diagrams.configargparse.NamespacereturnNonec||_t|jj|_|d|_|jj|_tj|jj |_ i|_ dS)N) rr output_format printer_class file_namemax_color_depthdepth itertoolscycle color_paletteavailable_colors used_colors)selfrs h/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pylint/pyreverse/writer.py__init__zDiagramWriter.__init__s\ 5dk6OPP [0 ) 0I J J+-diadefs'Iterable[ClassDiagram | PackageDiagram]c2|D]}|jdddd}|d|jj}t j|jjr*t j |jj|}| ||t|tr| |n|||dS)z1Write files for according to ./_ .N)titlestripreplacerrospathexistsoutput_directoryjoin set_printer isinstancer write_packages write_classessave)r$r(diagrambasenamers r%writezDiagramWriter.write)s  G}**,,44S#>>FFsCPPH#AAdk&?AAIw~~dk:;; RGLL)EyQQ   Y 1 1 1'>22 ,##G,,,,""7+++ IIKKKK  r'r<r ct|dD]_}|j|_|j|jtj| |`| dD]=}|j |j j|j jtj>dS)zWrite a package diagram.c|jSNr/xs r%z.DiagramWriter.write_packages..:sagr'keytype_ propertiesdependsrIN)sortedmodulesnodeqnamefig_idprinter emit_noderPACKAGEget_package_propertiesget_relationships emit_edge from_object to_objectr USES)r$r<modulerels r%r9zDiagramWriter.write_packages7sW__..4E4EFFF  F"K--//FM L " " &66v>> #     ,,Y77  C L " "& $m #      r'rct|jdD]x}|j|_|jdkr t jn t j}|j |j|| |y| dD]=}|j |jj|jjt j>| dD]=}|j |jj|jjt j>| dD]C}|j |jj|jj|jt j D| d D]C}|j |jj|jj|jt j Dd S) zWrite a class diagram.c|jSrArBrCs r%rEz-DiagramWriter.write_classes..Lsr'rF interfacerHspecializationrL implements association)labelrI aggregationN)rMobjectsrOrPrQshaper INTERFACECLASSrRrSget_class_propertiesrVrWrXrYr INHERITS IMPLEMENTSname ASSOCIATION AGGREGATION)r$r<objrIr\s r%r:zDiagramWriter.write_classesIs'//@/@AAA  C))CJ*-){*B*BH&&E L " " %D4M4Mc4R4R #    ,,-=>>  C L " "& $' #     ,,\::  C L " "& $) #     ,,];;  C L " "& $h* #    ,,];;  C L " "& $h* #      r'rstrr=cH|||_||_dS)z Set printer.N)rrRr)r$rr=s r%r7zDiagramWriter.set_printerqs"))(33 "r'ror r cpt|j|jjr||ndS)z!Get label and shape for packages.black)rccolor)r r/r colorizedget_shape_color)r$ros r%rUz$DiagramWriter.get_package_propertiesvs>)/3{/DQ$&&s+++'    r'rc t|j|jjs|jnd|jjs|jndt |jrdnd|jjr| |nd}|S)z Get label and shape for classes.Nredrs)rcattrsmethods fontcolorrt) r r/ronly_classnamesryrzrrOrurv)r$rorJs r%riz"DiagramWriter.get_class_properties}s#)#';#>H#))D'+{'BLCKK+CH55Bee7/3{/DQ$&&s+++'    r'r cB|j}tj|dddrdSt |jt jr|ddd}n,|jj r|}n|ddd}d |d|j d|j }||j vrt|j|j |<|j |S)zGet shape color.r.)maxsplitrgreyN)rOrPris_stdlib_modulesplitr8rClassDefrsplitpackager6rr#nextr")r$roqualified_namer base_names r%rvzDiagramWriter.get_shape_colors ))  $^%9%9#%9%J%J1%M N N 6 ch / / @$++C!+<r9r:r7rUrirvr;r'r%rrs22....    $&&&&P####         ++++ ......r'r)r __future__rargparserr2collections.abcrastroidrrpylint.pyreverse.diagramsrrr r r pylint.pyreverse.printerr r rr pylint.pyreverse.printer_factoryrpylint.pyreverse.utilsrrrr'r%rs4 32"""""" $$$$$$########QPPPPPPPPPPPEEEEEE//////~.~.~.~.~.~.~.~.~.~.r'