o ×$•ai>ã@s0dZddlZddlZddlZddlmZddlmZmZddlm Z m Z m Z m Z ddl mZddlmZddlmZmZddlZdd lmZdd lmZdd lmZmZdd lmZmZdd lm Z m!Z!ddl"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)ddl*m+Z+ddl,m-Z-ddl.m/Z/ddl0m1Z1ddl2m3Z3ddl4m5Z5e 6e7¡Z8Gdd„deƒZ9Gdd„dƒZ:Gdd„dej;ejdede>d e?d!ej@fd"d#„ZAd$e d!e?fd%d&„ZBGd'd(„d(e ƒZCGd)d*„d*e ƒZD dKd+e!d,e?d-e d.e?d/e?d0e?d!e e?e?ffd1d2„ZE  dLd+e-de>d,e?d-e d/e?d3e?d4e?d0e?d!e e?e?ffd5d6„ZFd+e-de>d!dfd7d8„ZG dKd+e/de>d,e?d-e d/e?d0e?d!dfd9d:„ZHd+e/de>d!dfd;d<„ZI dMd+e3de>d,e?d-e d/e?d!df d=d>„ZJd+e3de>d!dfd?d@„ZKd+e5de>d!dfdAdB„ZLd+e1de>d!dfdCdD„ZMdEedFeNd!dfdGdH„ZOdEed!e e?e ffdIdJ„ZPdS)Na sphinx.ext.graphviz ~~~~~~~~~~~~~~~~~~~ Allow graphviz-formatted graphs to be included in Sphinx-generated documents inline. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. éN)Úpath)ÚPIPEÚCalledProcessError)ÚAnyÚDictÚListÚTuple)Únodes)ÚNode)Ú DirectiveÚ directives)ÚSphinx)Ú SphinxError)Ú_Ú__)ÚloggingÚsha1)ÚSphinxDirectiveÚSphinxTranslator)Ú copy_asset)Úsearch_image_for_language)Úset_source_info)Ú ensuredir)Ú OptionSpec)ÚHTMLTranslator)ÚLaTeXTranslator)ÚManualPageTranslator)ÚTexinfoTranslator)ÚTextTranslatorc@seZdZdZdS)Ú GraphvizErrorzGraphviz errorN)Ú__name__Ú __module__Ú __qualname__Úcategory©r$r$ú5/usr/lib/python3/dist-packages/sphinx/ext/graphviz.pyr+src @sbeZdZdZe d¡Ze d¡Zddedededd fd d „Z ddedd fd d „Z defdd„Z d S)ÚClickableMapDefinitionz1A manipulator for clickable map file of graphviz.zdS)Nrz$Invalid clickable map file found: %séz%3z grapviz%siöÿÿÿ)Ú maptag_reÚmatchr)rr(Úgroupr-rÚencodeÚ hexdigestÚreplaceÚhref_reÚsearchr/Úappend)r1r*ÚmatchedÚhashedÚliner$r$r%r0<s     €þzClickableMapDefinition.parsecCs.|jrd |jdg|j|jdg¡SdS)zvGenerate clickable map tags if clickable item exists. If not exists, this only returns empty string. Ú réÿÿÿÿr')r/Újoinr))r1r$r$r%Úgenerate_clickable_mapMs$z-ClickableMapDefinition.generate_clickable_map)r')N) r r!r"Ú__doc__ÚreÚcompiler4r:Ústrr2r0rCr$r$r$r%r&/s  r&c@s eZdZdS©ÚgraphvizN)r r!r"r$r$r$r%rIXsrIÚ directiveÚnodeÚcaptionr+cCslt d|¡}d|vr|j d¡|d<|j ||j¡\}}tj|dg|¢RŽ}| |¡t ||ƒ||7}|S)Nr'Úalign) r ÚfigureÚ attributesÚpopÚstateÚ inline_textÚlinenorLÚextendr)rJrKrLÚ figure_nodeÚinodesÚmessagesÚ caption_noder$r$r%Úfigure_wrapper\s   rYÚargumentcCs t |d¡S)N)ÚleftÚcenterÚright)r Úchoice)rZr$r$r%Ú align_specis r_c@ó\eZdZUdZdZdZdZdZej e ej ej ej ej ej dœZ e ed<deefd d „Zd S) ÚGraphvizú3 Directive to insert arbitrary dot markup. Trr3F©ÚaltrMrLÚlayoutÚ graphviz_dotÚnameÚclassÚ option_specr+c CsÚ|jra|jj}|jr|jjtdƒ|jdgSt|jd|j ƒ}|j   |¡\}}|j   |¡zt |dd }|  ¡}Wdƒn1sCwYWn0ty`|jjtdƒ||jdgYSwd |j¡}d}| ¡sz|jjjtdƒ|jdgStƒ}||d <d |j ji|d <d |jvr—|jd |d d <d |jvr¥|jd |d d <d|jvr±|jd|d<d|jvr½|jd|d<d|jvrÉ|jd|d<|rÏ||d<d|jvrÜ| |¡|gSt|||jdƒ}| |¡|gS)NzCGraphviz directive cannot have both content and a filename argument)r?rúutf-8©Úencodingz8External Graphviz file %r not found or reading it failedr@z.Ignoring "graphviz" directive without content.ÚcodeÚdocnameÚoptionsrfrerdrMrhÚclassesr(rL)Ú argumentsrQÚdocumentr)ÚreporterÚwarningrrSrÚenvÚ relfn2pathÚnote_dependencyÚopenÚreadÚOSErrorrBÚstripÚ state_machinerIrnroÚadd_namerY) r1rrrZÚ rel_filenamer(ÚfpÚdotcoderKrNr$r$r%Úrunsfþ  ÿ€ ÿ þÿ þ        z Graphviz.runN©r r!r"rDÚ has_contentÚrequired_argumentsÚoptional_argumentsÚfinal_argument_whitespacer Ú unchangedr_Ú class_optionrirÚ__annotations__rr rr$r$r$r%ramó ù rac@r`) ÚGraphvizSimplerbTr3rFrcrir+cCsôtƒ}d|j|jdd |j¡f|d<d|jji|d<d|jvr*|jd|dd<d|jvr8|jd|dd<d |jvrD|jd |d <d |jvrP|jd |d <d |jvr\|jd |d <d |jvri| |¡|gSt |||jd ƒ}| |¡|gS)Nz %s %s { %s } rr@rmrnrorfrerdrMrhrprL) rIrgrqrBr)rurnror}rY)r1rKrNr$r$r%rÃs*ÿ        zGraphvizSimple.runNr‚r$r$r$r%r‹±rŠr‹r1rmroÚformatÚprefixr(c Csò| d|jjj¡}|t|ƒt|ƒt|jjjƒ ¡}d|t|ƒ ¡|f}t   |jj |¡} t   |jj |jj|¡} t  | ¡rC| | fSt|jdƒrR|jj |¡rRdStt  | ¡ƒ|g} |  |jjj¡|  d|d| g¡| dd¡} |rƒt  t   |jj|¡¡} n t  t   |jj| ¡¡} |d kr›|  d d | g¡z#tj| | ¡tt| d d }t  | ¡sºttdƒ|j|jfƒ‚| | fWStyàt tdƒ|¡t|jdƒs×i|j_d |jj|<YdSt yø}z ttdƒ|j|jfƒ|‚d}~ww)z3Render graphviz code into a PNG or PDF output file.rfz%s-%s.%sÚ_graphviz_warned_dot)NNz-Tz-ornÚindexÚpngz-Tcmapxz-o%s.mapT)ÚinputÚstdoutÚstderrÚcwdÚcheckz;dot did not produce an output file: [stderr] %r [stdout] %rzYdot command %r cannot be run (needed for graphviz output), check the graphviz_dot settingz.dot exited with error: [stderr] %r [stdout] %rN)!ÚgetÚbuilderÚconfigrfrGÚgraphviz_dot_argsr7rr8Ú posixpathrBÚimgpathrÚoutdirÚimagedirÚisfileÚhasattrrŽrÚdirnamerTÚsrcdirÚ subprocessrrrrr“r’rzÚloggerrtr)r1rmrorŒrr(rfÚhashkeyÚfnameÚrelfnÚoutfnÚdot_argsrnr”ÚretÚexcr$r$r%Ú render_dotÜsd ÿÿ   ÿ ÿ  ÿ   ÿ   ÿÿ€ÿr«Úimgclsrdc Cs|jjj}z|dvrttdƒ|ƒ‚t||||||ƒ\} } Wnty7} z t tdƒ|| ¡tj | ‚d} ~ ww|dg|  dg¡} d  t d| ƒ¡}| durZ|j  | |¡¡tj ‚|duri|  d| |¡ ¡¡}d|vr{|j  d |d|df¡|d krž|j  d ¡|j  d | |f¡|j  d |¡|j  d¡n_t| dddO} t| d|  ¡|d}|jr×|j  d ¡|j  d| ||j|f¡|j  d¡|j  | ¡¡n|j  d ¡|j  d| ||f¡|j  d¡Wdƒn1søwYd|vr|j  d¡tj ‚)N)rÚsvgz=graphviz_output_format must be one of 'png', 'svg', but is %rúdot code %r: %srIrpú rdrMz!
r­z
z3 z

%s

z
z.maprjrkr,z1%sz
z$%s)r—r˜Úgraphviz_output_formatrrr«r£rtr ÚSkipNoder–rBÚfilterÚbodyr<r7r{rxr&ryr/r-rC)r1rKrmrorr¬rdr(rŒr¥r§rªrpÚmapfileÚimgmapr$r$r%Úrender_dot_htmlsb ÿ€þ âÿ ÿ  ÿ  ÿ €ò  r¶cCó$t|||d|d| d¡ddS©Nrmror()r()r¶r–©r1rKr$r$r%Úhtml_visit_graphvizDó$rºc Csæz t|||d||ƒ\}}Wnty&}z t tdƒ||¡tj|‚d}~ww| |¡} | s^d} d} d|vrV|ddkrAd} d} n|ddkrLd } d } n |dd krVd } d} |j  d | ¡|j  d|¡| sp|j  d| ¡tj‚)NÚpdfr®r'rMr[ú{z\hspace*{\fill}}r]z{\hspace*{\fill}ú}r\z{\hfillz %sz\sphinxincludegraphics[]{%s}z%s ) r«rr£rtrr r±Ú is_inliner³r<) r1rKrmrorr(r¥r§rªr¿ÚpreÚpostr$r$r%Úrender_dot_latexHs4€þ    rÂcCr·r¸)rÂr–r¹r$r$r%Úlatex_visit_graphvizjr»rÃc Csrz t|||d|ƒ\}}Wnty%}z t tdƒ||¡tj|‚d}~ww|dur6|j d|dd…¡tj‚)Nrr®z@image{%s,,,[graphviz],png} éüÿÿÿ) r«rr£rtrr r±r³r<)r1rKrmrorr¥r§rªr$r$r%Úrender_dot_texinfons€þrÅcCst|||d|dƒdS)Nrmro)rÅr¹r$r$r%Útexinfo_visit_graphvizzsrÆcCs:d|jvr| tdƒ|d¡tj‚| tdƒ¡tj‚©Nrdz [graph: %s]z[graph])rOÚadd_textrr r±r¹r$r$r%Útext_visit_graphviz~s ÿrÉcCs>d|jvr|j tdƒ|d¡tj‚|j tdƒ¡tj‚rÇ)rOr³r<rr r±r¹r$r$r%Úman_visit_graphviz†s ÿrÊÚapprªcCsJ|dur!|jjdkr#t tjddd¡}t |jd¡}t||ƒdSdSdS)NÚhtmlÚ templatesrIú graphviz.cssÚ_static)r—rŒrrBÚsphinxÚ package_dirrœr)rËrªÚsrcÚdstr$r$r%Úon_build_finishedŽs ýrÔcCsš|jttdftdftdftdftdfd| dt¡| dt ¡| dt ¡|  ddd¡|  dgd¡|  d d d¡|  d ¡|  d t ¡tjd dœS)N)rÌÚlatexÚtexinfoÚtextÚmanrIÚgraphÚdigraphrfr*rÌr™r°rrÎzbuild-finishedT)ÚversionÚparallel_read_safe)Úadd_noderIrºrÃrÆrÉrÊÚ add_directiverar‹Úadd_config_valueÚ add_css_fileÚconnectrÔrÐÚ__display_version__)rËr$r$r%Úsetup•s û      rãrH)rINNN)rI)QrDršrEr¢ÚosrrrÚtypingrrrrÚdocutilsr Údocutils.nodesr Údocutils.parsers.rstr r rÐÚsphinx.applicationr Ú sphinx.errorsrÚ sphinx.localerrÚ sphinx.utilrrÚsphinx.util.docutilsrrÚsphinx.util.fileutilrÚsphinx.util.i18nrÚsphinx.util.nodesrÚsphinx.util.osutilrÚsphinx.util.typingrÚsphinx.writers.htmlrÚsphinx.writers.latexrÚsphinx.writers.manpagerÚsphinx.writers.texinforÚsphinx.writers.textrÚ getLoggerr r£rr&ÚGeneralÚInlineÚElementrIrGrNrYr_rar‹r«r¶rºrÂrÃrÅrÆrÉrÊÚ ExceptionrÔrãr$r$r$r%Ús                  ) D,ÿÿÿ  ÿ5þÿÿÿþ  þ4ÿÿÿÿ þ"ÿÿÿ ÿ