
    -PhiF                       d Z ddlmZ ddlZddlZddlZddlmc m	Z
 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZ ddlZddlmZ ddlmZmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( er@ddlm)Z)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z=  e j>        e?          Z@ G d de          ZA G d d          ZB G d  d!ejC        ejD        ejE                  ZFdXd)ZGdYd,ZH G d- d.e$          ZI G d/ d0e$          ZJdZd6ZK	 	 d[d\d?ZL	 	 	 	 d]d^dDZMd_dEZN	 	 d[d`dGZOdadHZP	 dbdcdJZQdddKZRdedMZSdfdOZTdgdTZUdhdWZVdS )izMAllow graphviz-formatted graphs to be included inline in generated documents.    )annotationsN)sha1)chain)CalledProcessError)TYPE_CHECKING)urlsplit
urlunsplit)nodes)
directives)SphinxError)___)logging)_StrPath)SphinxDirective)search_image_for_language)set_source_info)AnyClassVar)Node)Sphinx)Config)ExtensionMetadata
OptionSpec)HTML5Translator)LaTeXTranslator)ManualPageTranslator)TexinfoTranslator)TextTranslatorc                      e Zd ZdZdS )GraphvizErrorzGraphviz errorN)__name__
__module____qualname__category     S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/ext/graphviz.pyr!   r!   ,   s        HHHr'   r!   c                  l    e Zd ZdZ ej        d          Z ej        d          ZdddZddZ	ddZ
dS )ClickableMapDefinitionz1A manipulator for clickable map file of graphviz.z<map id="(.*?)"z
href=".*?" filenamestrcontentdotreturnNonec                    d | _         || _        |                                | _        g | _        |                     |           d S )Nr/   )idr,   
splitlinesr.   	clickableparse)selfr,   r.   r/   s       r(   __init__zClickableMapDefinition.__init__6   sD    " ))++$&

s
r'   c                6   | j                             | j        d                   }|sd| j         }t	          |          |                    d          | _        | j        dk    rut          |                                d          	                                }d|dd           | _        | j        d         
                    d| j                  | j        d<   | j        D ]6}| j                            |          r| j                            |           7d S )	Nr   z"Invalid clickable map file found:    z%3Fusedforsecuritygrapvizi)	maptag_rematchr.   r,   r!   groupr4   r   encode	hexdigestreplacehref_researchr6   append)r8   r/   matchedmsghashedlines         r(   r7   zClickableMapDefinition.parse>   s   .&&t|A77 	%Ft}FFC$$$--""7d?? #**,,>>>HHJJF.stt..DG"l1o55dDGDDDLOL 	, 	,D|""4(( ,%%d+++	, 	,r'   c                    | j         r6d                    | j        d         g| j         | j        d         R           S dS )zvGenerate clickable map tags if clickable item exists.

        If not exists, this only returns empty string.
        
r   r+   )r6   joinr.   )r8   s    r(   generate_clickable_mapz-ClickableMapDefinition.generate_clickable_mapP   sD    
 > 	99dl1oQQR@PQQRRR2r'   N)r+   )r,   r-   r.   r-   r/   r-   r0   r1   )r/   r-   r0   r1   )r0   r-   )r"   r#   r$   __doc__recompiler?   rE   r9   r7   rP   r&   r'   r(   r*   r*   0   s~        ;;
,--Ibj&&G    , , , ,$     r'   r*   c                      e Zd ZdS graphvizN)r"   r#   r$   r&   r'   r(   rV   rV   [   s        Dr'   rV   	directiver   nodecaptionr-   r0   nodes.figurec                   t          j        d|          }d|v r|j                            d          |d<   |                     |          \  }}t          j        |dg|R  }|                    |           t          | |           ||z  }|S )Nr+   align)r
   figure
attributespopparse_inlinerY   extendr   )rW   rX   rY   figure_nodeinodesmessagescaption_nodes          r(   figure_wrapperrf   _   s     ,r4((K$#227;;G --g66FH="6v666L!!!I|,,,<Kr'   argumentr   c                ,    t          j        | d          S )N)leftcenterright)r   choice)rg   s    r(   
align_specrm   n   s    X'BCCCr'   c                      e Zd ZU dZdZdZdZdZej	        e
ej	        ej	        ej	        ej	        ej        dZded<   ddZdS )Graphviz)Directive to insert arbitrary dot markup.Tr   r;   Faltr\   rY   layoutgraphviz_dotnameclassClassVar[OptionSpec]option_specr0   
list[Node]c                    | j         r| j        j        }| j        r/|j                            t          d          | j                  gS t          | j         d         | j	                  }| j	        
                    |          \  }}| j	                            |           	 t          |d          5 }|                                }d d d            n# 1 swxY w Y   n# t          $ r5 |j                            t          d          |z  | j                  gcY S w xY wd                    | j                  }d }|                                s4| j        j                            t          d          | j                  gS t%                      }||d	<   d
| j	        j        i|d<   d| j        v r| j        d         |d         d<   d| j        v r| j        d         |d         d<   d| j        v r| j        d         |d<   d| j        v r| j        d         |d<   d| j        v r| j        d         |d<   |r||d<   d| j        vr|                     |           |gS t-          | || j        d                   }|                     |           |gS )NzCGraphviz directive cannot have both content and a filename argument)rK   r   utf-8encodingz8External Graphviz file %r not found or reading it failedrM   z.Ignoring "graphviz" directive without content.codedocnameoptionsrt   rs   rr   r\   rv   classesr,   rY   )	argumentsstatedocumentr.   reporterwarningr   linenor   env
relfn2pathnote_dependencyopenreadOSErrorrO   stripstate_machinerV   r   r   add_namerf   )	r8   r   rg   rel_filenamer,   fpdotcoderX   r]   s	            r(   runzGraphviz.run   s   > #	z*H| 	%--2  "[ .    11BDHMMH%)X%8%8%B%B"L(H$$\222
(W555 ( ggiiG( ( ( ( ( ( ( ( ( ( ( ( ( ( (   %--UVV"#![ .      ii--GL==?? &/77KLL![ 8    zzV$dh&67YT\)).2l>.JDON+t|##.2l8.DDON+DL  ,u-DKdl"" L1DMdl"""l73DO 	,+DDL((MM$6M#D$Y0GHHFMM&!!!8Os6   #C! 4C	C! CC! CC! !<D D Nr0   ry   r"   r#   r$   rQ   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer   	unchangedrm   class_optionrx   __annotations__r   r&   r'   r(   ro   ro   r   s         33K %#'&",$() )K    < < < < < <r'   ro   c                      e Zd ZU dZdZdZdZdZej	        e
ej	        ej	        ej	        ej	        ej        dZded<   ddZdS )GraphvizSimplerp   Tr;   r   Frq   rw   rx   r0   ry   c                l   t                      }d                    | j                  }| j         d| j        d          d| d|d<   d| j        j        i|d<   d	| j        v r| j        d	         |d         d	<   d
| j        v r| j        d
         |d         d	<   d| j        v r| j        d         |d<   d| j        v r| j        d         |d<   d| j        v r| j        d         |d<   d| j        vr|                     |           |gS t          | || j        d                   }|                     |           |gS )NrM    r   z {
z
}
r~   r   r   rt   rs   rr   r\   rv   r   rY   )
rV   rO   r.   ru   r   r   r   r   r   rf   )r8   rX   dot_coder]   s       r(   r   zGraphvizSimple.run   sN   zz99T\**)NNdnQ&7NNhNNNV$dh&67YT\)).2l>.JDON+t|##.2l8.DDON+DL  ,u-DKdl"" L1DMdl"""l73DODL((MM$6M#D$Y0GHHFMM&!!!8Or'   Nr   r   r&   r'   r(   r   r      s         33K %#'&",$() )K         r'   r   r8   5HTML5Translator | LaTeXTranslator | TexinfoTranslatorfilepathstr | os.PathLike[str]r1   c                   | j         j        }t          j        |          }|                                }ddd}d}d}t          |                    d|          |                    d|                    D ]}t          |j        |                   \  }	}
}}}|
r%|	                    | j
        d                   }|H| j         j                            |                                          j        }||z  }|| j         j        z  }t           j                            ||
          }t'          |	|
|||f          }|                    ||           d}|r|                    |           d	S d	S )zGChange relative links in generated svg files to be relative to imgpath.zhttp://www.w3.org/2000/svgzhttp://www.w3.org/1999/xlink)svgxlinkz"{http://www.w3.org/1999/xlink}hrefFz.//svg:image[@xlink:href]z.//svg:a[@xlink:href]sourceN)startT)builderr   ETr7   getrootr   findallr   attribpath2docr   outdirjoinpathresolveparentimgpathospathrelpathr	   setwrite)r8   r   r   treerootns	href_namemodifiedelementschemehostnamerel_uriqueryfragmentr   doc_dirold_pathimg_pathnew_pathmodified_urls                       r(   fix_svg_relative_pathsr      s   
 ,
C8HD<<>>D-8V	W	WB4IH0"55,b11    6>gnY>W5X5X2'5( 	,,t}X677?,%..w77??AAHW$T\117??88?<<!68Xuh"OPPI|,,, 

8 r'   r~   r   dict[str, Any]formatprefixr,   
str | None'tuple[_StrPath | None, _StrPath | None]c                l   |                     d| j        j        j                  }|st	          t          d          |z            d                    |t          |          t          |          t          | j        j        j                  f          	                                }| dt          |d                                           d| }t          | j        j        |          }	| j        j        | j        j        z  |z  }
|
                                r|	|
fS t#          | j        di                                |          rd	S |
j                            d
d
           |g}|                    | j        j        j                   |                    d| d|
 g           |                     dd          }|r| j        j        |z  j        }n| j        j        |z  j        }|dk    r|                    dd|
 dg           	 t-          j        ||	                                d
|d
          }n# t0          $ r\ t2                              t          d          |           t7          | j        d          si | j        _        d
| j        j        |<   Y d	S t:          $ r1}t	          t          d          |j        |j        fz            |d}~ww xY w|
                                s+t	          t          d          |j        |j        fz            |dk    rtA          | |
           |	|
fS )z3Render graphviz code into a PNG or PDF output file.rt   z,graphviz_dot executable path must be set! %rr+   -Fr<   ._graphviz_warned_dot)NNT)parentsexist_okz-Tz-or   indexpngz-Tcmapx.map)inputcapture_outputcwdcheckzYdot command %r cannot be run (needed for graphviz output), check the graphviz_dot settingz.dot exited with error:
[stderr]
%r
[stdout]
%rNz;dot did not produce an output file:
[stderr]
%r
[stdout]
%rr   )!getr   configrt   r!   r   rO   r-   graphviz_dot_argsrB   r   rC   r   r   r   imagediris_filegetattrr   mkdirra   srcdir
subprocessr   r   loggerr   hasattrr   r   stderrstdoutr   )r8   r~   r   r   r   r,   rt   hashkeyfnamerelfnoutfndot_argsr   r   retexcs                   r(   
render_dotr     sp    ;;~t|/B/OPPL 
=>>M
 
 	
 ggGLDL122	  
 vxx  SSWe<<<FFHHSS6SSET\)511EL$,"77%?E}} e|t|3R88<<\JJ z	Ltd333~HOODL'9:::OO]&]]LLL1222kk)W--G 5|"X-5|"W,4$4$4$4$45666nDKKMM$Ct
 
 
    :  	
 	
 	
 t|%;<< 	302DL-:>),7zz   CDDz3:&'
 
 	
 ==?? 
PQQz3:&'
 
 	

 tU+++%<s   +H; ;A"K 	K),KKr   imgclsrr   tuple[str, str]c                   | j         j        j        }|dvr(t                              t          d          |           	 t          | |||||          \  }	}
nH# t          $ r;}t                              t          d          ||           t          j	        |d }~ww xY w|dg|
                    dg           }d                    t          d |                    }|	/| j                            |                     |                     n\|	                                }|;|
                    d|                     |                                                    }d|v r)|d         }| j                            d	| d
| d           |dk    ru| j                            d           | j                            d| d| d           | j                            d| d           | j                            d           nE|
J t%          |
 dd          5 }|                                }d d d            n# 1 swxY w Y   t)          |
 d||          }|j        r| j                            d           | j                            d| d| d|j         d| d	           | j                            d           | j                            |                                           nX| j                            d           | j                            d| d| d| d           | j                            d           d|v r| j                            d           t          j	        )N>   r   r   z?graphviz_output_format must be either 'png' or 'svg', but is %rdot code %r: %srV   r   r   rr   r\   z<div align="z" class="align-z">r   z<div class="graphviz">z<object data="z" type="image/svg+xml" class="z">
z<p class="warning">z</p>z</object></div>
r   r{   r|   r3   z
<img src="z" alt="z" usemap="#z	" class="z" />z</div>
)r   r   graphviz_output_formatr   r   r   r   r!   r
   SkipNoder   rO   filterbodyrG   rB   as_posixr   r   r   r*   r6   r4   rP   )r8   rX   r~   r   r   r   rr   r,   r   r   r   r   r   srcr\   mapfilemap_contentimgmaps                     r(   render_dot_htmlr   b  s    \ 7F^##PQQ	
 	
 	
&!$gvvxPPuu & & &r+,,dC888n#%& z<DHHY$;$;<GXXfT7++,,F}	T**++++nn;((5$++d"3"3"9"9";";<<Cd??MEIKEKK%KKKLLLU??I5666IPPPFPPP   I<3<<<===I01111$$$nnnw777 -7%llnn- - - - - - - - - - - - - - -+uNNNKTRRRF -	  !9:::	  ]]]S]]VY]]QW]]]   	  ,,,	  !>!>!@!@AAAA 	  !9:::	  !Tc!T!T#!T!T!T!T!TUUU	  ,,,d??IZ(((
.s)   A 
B!6BBH??IIc           	     l    t          | ||d         |d         |                    d                     d S Nr~   r   r,   )r,   )r   r   r8   rX   s     r(   html_visit_graphvizr    sB    dDL$y/DHHZ<P<P     r'   r   c                0   	 t          | ||d||          \  }}nH# t          $ r;}t                              t	          d          ||           t
          j        |d }~ww xY w|                     |          }	|	sWd}
d}d|v r2|d         dk    rd}
d}n!|d         dk    rd	}
d
}n|d         dk    rd}
d}| j        	                    d|
            | j        	                    d|z             |	s| j        	                    | d           t
          j        )Npdfr   r+   r\   ri   {z\hspace*{\fill}}rk   z{\hspace*{\fill}}rj   z{\hfillrM   z\sphinxincludegraphics[]{%s})
r   r!   r   r   r   r
   r   	is_inliner   rG   )r8   rX   r~   r   r   r,   r   r   r   r	  preposts               r(   render_dot_latexr    sM   &!$gufhOOuu & & &r+,,dC888n#%& t$$I %d??G}&&*g')))g(** *	c$$$I4u<=== &	D%%%
.s    
A6AAc           	     l    t          | ||d         |d         |                    d                     d S r  )r  r   r  s     r(   latex_visit_graphvizr    sB    dDL$y/DHHZ<P<P     r'   r   c                (   	 t          | ||d|          \  }}nH# t          $ r;}t                              t	          d          ||           t
          j        |d }~ww xY w|%| j                            d|d d         z             t
          j        )Nr   r   z@image{%s,,,[graphviz],png}
)	r   r!   r   r   r   r
   r   r   rG   )r8   rX   r~   r   r   r   r   r   s           r(   render_dot_texinfor    s    &!$gufEEuu & & &r+,,dC888n#%& 	85":EFFF
.s    
A6AAc                B    t          | ||d         |d                    d S )Nr~   r   )r  r  s     r(   texinfo_visit_graphvizr    s$    tT4<iAAAAAr'   r   c                    d|j         v r,|                     t          d          |d         z             n"|                     t          d                     t          j        Nrr   z[graph: %s]z[graph])r^   add_textr   r
   r   r  s     r(   text_visit_graphvizr    sU    a&&e45555a	ll###
.r'   r   c                    d|j         v r1| j                            t          d          |d         z             n'| j                            t          d                     t          j        r  )r^   r   rG   r   r
   r   r  s     r(   man_visit_graphvizr    s]    	=))DK78888	9&&&
.r'   _appr   r   r   c                    t           j                            ddd          }|j                            t          |                     d S )N	templatesrV   graphviz.css)sphinxpackage_dirr   html_static_pathrG   r-   )r  r   css_paths      r(   on_config_initedr"    s?    !**;
NSSH
""3x==11111r'   appr   c           	        |                      t          t          d ft          d ft          d ft
          d ft          d f           |                     dt                     |                     dt                     |                     dt                     | 
                    dddt          t          h                     | 
                    d	d
dt          t          t          h                     | 
                    dddt          t          h                     |                     d           |                     dt"                     t$          j        ddS )N)htmllatextexinfotextmanrV   graphdigraphrt   r/   r%  )typesr   r&   r   r   r  zconfig-initedT)versionparallel_read_safe)add_noderV   r  r  r  r  r  add_directivero   r   add_config_value	frozensetr-   listtupleadd_css_fileconnectr"  r  __display_version__)r#  s    r(   setupr8     sZ   LL!4(#T*'.!4(&     j(+++g~...i000i>N>NOOORy$/G/G      %y#7G7G     ^$$$KK!1222-"  r'   )rW   r   rX   rV   rY   r-   r0   rZ   )rg   r   r0   r-   )r8   r   r   r   r0   r1   rU   )r8   r   r~   r-   r   r   r   r-   r   r-   r,   r   r0   r   )rV   NNN)r8   r   rX   rV   r~   r-   r   r   r   r-   r   r   rr   r   r,   r   r0   r   )r8   r   rX   rV   r0   r1   )r8   r   rX   rV   r~   r-   r   r   r   r-   r,   r   r0   r1   )r8   r   rX   rV   r0   r1   )rV   )r8   r   rX   rV   r~   r-   r   r   r   r-   r0   r1   )r8   r   rX   rV   r0   r1   )r8   r   rX   rV   r0   r1   )r8   r   rX   rV   r0   r1   )r  r   r   r   r0   r1   )r#  r   r0   r   )WrQ   
__future__r   os.pathr   rR   r   xml.etree.ElementTreeetreeElementTreer   hashlibr   	itertoolsr   r   typingr   urllib.parser   r	   docutilsr
   docutils.parsers.rstr   r  sphinx.errorsr   sphinx.localer   r   sphinx.utilr   sphinx.util._pathlibr   sphinx.util.docutilsr   sphinx.util.i18nr   sphinx.util.nodesr   r   r   docutils.nodesr   sphinx.applicationr   sphinx.configr   sphinx.util.typingr   r   sphinx.writers.html5r   sphinx.writers.latexr   sphinx.writers.manpager   sphinx.writers.texinfor   sphinx.writers.textr   	getLoggerr"   r   r!   r*   GeneralInlineElementrV   rf   rm   ro   r   r   r   r   r  r  r  r  r  r  r  r"  r8  r&   r'   r(   <module>rX     s   S S " " " " " "  				     " " " " " " " " "             ) ) ) ) ) )             - - - - - - - -       + + + + + +  % % % % % %               ) ) ) ) ) ) 0 0 0 0 0 0 6 6 6 6 6 6 - - - - - - 3$$$$$$$$######))))))$$$$$$@@@@@@@@444444444444;;;;;;888888222222		8	$	$         K      ( ( ( ( ( ( ( (V	 	 	 	 	u}elEM 	 	 	   D D D DM M M M M M M M`' ' ' ' '_ ' ' 'T$ $ $ $X L L L L Lh > > > > >B    $ $ $ $ $N        "B B B B      2 2 2 2
     r'   