ó ÿgdSc@sÚdZddlZddlZddlZddlmZddlmZmZyddl m Z Wn!e k r‡ddl m Z nXddl mZddlmZdd lmZdd lmZdd lmZmZmZmZdd lmZejd ƒZdefd„ƒYZdejej fd„ƒYZ!defd„ƒYZ"defd„ƒYZ#dd„Z$dddd„Z&d„Z'dd„Z(d„Z)dd„Z*d„Z+d„Z,d„Z-d„Z.dS( s sphinx.ext.graphviz ~~~~~~~~~~~~~~~~~~~ Allow graphviz-formatted graphs to be included in Sphinx-generated documents inline. :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. iÿÿÿÿN(tpath(tPopentPIPE(tsha1(tsha(tnodes(t directives(t SphinxError(t_(t ensuredirtENOENTtEPIPEtEINVAL(t DirectivesR?R5(((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pyR@^s   cCsù|t|ƒt|jjjƒt|jjjƒjdƒ}d|t|ƒjƒ|f}t|jdƒr¦t j |jj |ƒ}t j |jj d|ƒ}n|}t j |jj |ƒ}t j|ƒrÝ||fSt|jdƒst|jdƒrdStt j|ƒƒt|tƒr9|jdƒ}n|jjjg} | j|jjjƒ| j|ƒ| jd|d|gƒ|d kr¯| jd d |gƒny"t| d td tdtƒ} WnRtk r%} | jtkrø‚n|jjd|jjjƒt|j_dSXy| j|ƒ\} } Wn]ttfk rž} | jtt fkrr‚n| j!j"ƒ| j#j"ƒ} } | j$ƒnX| j%dkrÇt&d| | fƒ‚nt j|ƒsït&d| | fƒ‚n||fS(s3Render graphviz code into a PNG or PDF output file.sutf-8s%s-%s.%stimgpatht_imagest_graphviz_warned_dott_graphviz_warned_ps2pdfs-Ts-otpngs-Tcmapxs-o%s.maptstdouttstdintstderrsYdot command %r cannot be run (needed for graphviz output), check the graphviz_dot settingis.dot exited with error: [stderr] %s [stdout] %ss;dot did not produce an output file: [stderr] %s [stdout] %sN(NN(NN('tstrtbuildertconfigt graphviz_dottgraphviz_dot_argstencodeRt hexdigestthasattrt posixpathR,RBRtoutdirtisfiletNoneR tdirnamet isinstancetunicodetextendRRR+terrnoR twarnR7RDt communicateR*R R RGR(RItwaitt returncodeR(R/RRtformattprefixthashkeytfnametrelfntoutfntdot_argstpterrRGRI((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pyt render_dotys\     "  cCs±|jjj}yA|dkr1td|ƒ‚nt|||||ƒ\}} Wn:tk rŒ} |jjd|t| ƒƒtj‚nX|j dt ƒ} | r®d} nd} |j j |j || dd ƒƒ|dkrþ|j j |j|ƒƒn’|dkr.|j d |j|ƒjƒƒ}n|r>d |pAd } |dkrvd ||| f}|j j |ƒnÔt| ddƒ}z|jƒ}Wd|jƒXt|ƒdkrÙ|j j d ||| fƒnqtj|djdƒƒjdƒ}|j j d|||| fƒ|j jg|D]}|jdƒ^q.ƒ|j dƒr| r|j j dƒ|j j |j|dƒƒn|j j d| ƒtj‚dS(NRFtsvgs=graphviz_output_format must be one of 'png', 'svg', but is %rs dot code %r: RtspanRftCLASSRRs class="%s"ts%s s.maptrbiisutf-8is)%s Rs

s (spngRi(RKRLtgraphviz_output_formatRRhR[RJRtSkipNodetgetR;tbodytappendtstarttagRUROR-R't readlinesR)tlent mapname_retmatchtdecodetgroupRY(R/R4RRR`timgclsRR_RbRdtexcRtwrappertimgcsstsvgtagtmapfiletimgmaptmapnametitem((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pytrender_dot_html»sL  "  "  $   % , cCst|||d|dƒdS(NRR(Rƒ(R/R4((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pythtml_visit_graphvizïsc CsOy"t|||d|ƒ\}}Wn:tk r^}|jjd|t|ƒƒtj‚nX|jdtƒ}|r€d} nd} |dk rB|jdƒ} | r"| r"|j j dƒ|j j dƒ|j j d |j | ƒƒ|j j d |ƒ|j j d ƒ|j j d ƒqB|j j d | || fƒntj‚dS(Ntpdfs dot code %r: RRls Rs \begin{figure}[h!]s \begin{center}s \caption{%s}s \includegraphics{%s}s \end{center}s \end{figure} s%s\includegraphics{%s}%s( RhRRKR[RJRRoRpR;RURqRrRO( R/R4RRR`RbRdR{Rtpara_separatorR((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pytrender_dot_latexós*"     cCst|||d|dƒdS(NRR(R‡(R/R4((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pytlatex_visit_graphvizsc CsØy"t|||d|ƒ\}}Wn:tk r^}|jjd|t|ƒƒtj‚nX|dk rË|jj dƒ|j dƒ}|r°|jj d|j |ƒƒn|jj d|d ƒntj‚dS(NRFs dot code %r: s @float Rs @caption{%s} s(@image{%s,,,[graphviz],png} @end float iüÿÿÿ( RhRRKR[RJRRoRURqRrRpt escape_arg( R/R4RRR`RbRdR{R((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pytrender_dot_texinfos"    cCst|||d|dƒdS(NRR(RŠ(R/R4((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pyttexinfo_visit_graphviz#scCsMd|jkr-|jtdƒ|dƒn|jtdƒƒtj‚dS(NRs [graph: %s]s[graph](t attributestadd_textRRRo(R/R4((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pyttext_visit_graphviz'scCsSd|jkr0|jjtdƒ|dƒn|jjtdƒƒtj‚dS(NRs [graph: %s]s[graph](RŒRqRrRRRo(R/R4((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pytman_visit_graphviz/s!c Cs¶|jtdtdfdtdfdtdfdtdfdtdfƒ|jdt ƒ|jdt ƒ|jdt ƒ|j d d dƒ|j d gdƒ|j d d dƒdS(NthtmltlatexttexinfottexttmanRtgraphtdigraphRMtdotRNRnRF( tadd_nodeRR„RURˆR‹RŽRt add_directiveRR@tadd_config_value(tapp((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pytsetup7s      (/R6treR&RRtosRt subprocessRRthashlibRRt ImportErrortdocutilsRtdocutils.parsers.rstRt sphinx.errorsRt sphinx.localeRtsphinx.util.osutilR R R R tsphinx.util.compatR tcompileRvRtGeneraltElementRRR@RhRURƒR„R‡RˆRŠR‹RŽRRœ(((s=/usr/local/lib/python2.7/site-packages/sphinx/ext/graphviz.pyt s>    "3 B3