
    RiF                    \   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j                  ej                  ej                        ZF	 	 	 	 	 	 	 	 d4d"ZGd5d#ZH G d$ d%e$      ZI G d& d'e$      ZJ	 	 	 	 	 	 d6d(ZK	 	 d7	 	 	 	 	 	 	 	 	 	 	 	 	 d8d)ZL	 	 	 	 d9	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d:d*ZMd;d+ZN	 	 d7	 	 	 	 	 	 	 	 	 	 	 	 	 d<d,ZOd=d-ZP	 d>	 	 	 	 	 	 	 	 	 	 	 d?d.ZQd@d/ZRdAd0ZSdBd1ZTdCd2ZUdDd3ZVy)EzMAllow 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y)GraphvizErrorzGraphviz errorN)__name__
__module____qualname__category     K/home/agent/.friday_env/lib/python3.12/site-packages/sphinx/ext/graphviz.pyr!   r!   ,   s    Hr'   r!   c                  r    e Zd ZdZ ej
                  d      Z ej
                  d      Zdd	dZd
dZ	ddZ
y)ClickableMapDefinitionz1A manipulator for clickable map file of graphviz.z<map id="(.*?)"z
href=".*?"c                |    d | _         || _        |j                         | _        g | _        | j                  |       y )Ndot)idfilename
splitlinescontent	clickableparse)selfr/   r1   r-   s       r(   __init__zClickableMapDefinition.__init__6   s5    " ))+$&

s
r'   c                >   | j                   j                  | j                  d         }|sd| j                   }t	        |      |j                  d      | _        | j                  dk(  rlt        |j                         d      j                         }d|dd   | _        | j                  d   j                  d| j                        | j                  d<   | j                  D ]9  }| j                  j                  |      s| j                  j                  |       ; y )	Nr   z"Invalid clickable map file found:    z%3Fusedforsecuritygrapvizi)	maptag_rematchr1   r/   r!   groupr.   r   encode	hexdigestreplacehref_researchr2   append)r4   r-   matchedmsghashedlines         r(   r3   zClickableMapDefinition.parse>   s    ..&&t||A76t}}oFC$$--"77d? #**,>HHJFst~.DG"ll1o55dDGGDDLLOLL 	,D||""4(%%d+	,r'   c                    | j                   r;dj                  | j                  d   g| j                   | j                  d         S y)zvGenerate clickable map tags if clickable item exists.

        If not exists, this only returns empty string.
        
r    )r2   joinr1   )r4   s    r(   generate_clickable_mapz-ClickableMapDefinition.generate_clickable_mapP   s?    
 >>99dll1oQQR@PQRRr'   N)rK   )r/   strr1   rN   r-   rN   returnNone)r-   rN   rO   rP   )rO   rN   )r"   r#   r$   __doc__recompiler;   rA   r5   r3   rM   r&   r'   r(   r*   r*   0   s5    ;

,-Ibjj&G,$r'   r*   c                      e Zd ZygraphvizN)r"   r#   r$   r&   r'   r(   rV   rV   [   s    r'   rV   c                   t        j                  d|      }d|v r|j                  j                  d      |d<   | j	                  |      \  }}t        j
                  |dg| }|j                  |       t        | |       ||z  }|S )NrK   align)r
   figure
attributespopparse_inlinecaptionextendr   )	directivenoder]   figure_nodeinodesmessagescaption_nodes          r(   figure_wrapperre   _   s     ,,r4(K$#227;G --g6FH=="6v6L!I|,<Kr'   c                .    t        j                  | d      S )N)leftcenterright)r   choice)arguments    r(   
align_specrl   n   s    X'B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y
)Graphviz)Directive to insert arbitrary dot markup.Tr   r7   FaltrX   r]   layoutgraphviz_dotnameclassClassVar[OptionSpec]option_specc                   | j                   r| j                  j                  }| j                  r1|j                  j                  t        d      | j                        gS t        | j                   d   | j                        }| j                  j                  |      \  }}| j                  j                  |       	 t        |d      5 }|j                         }d d d        nhdj                  | j                        }d }|j!                         s;| j"                  j                  j                  t        d      | j                        gS t%               }|d	<   d
| j                  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| j-                  |       |gS t/        | || j*                  d         }| j-                  |       |gS # 1 sw Y   xY w# t        $ r7 |j                  j                  t        d      |z  | j                        gcY S w xY w)NzCGraphviz directive cannot have both content and a filename argument)rG   r   utf-8encodingz8External Graphviz file %r not found or reading it failedrI   z.Ignoring "graphviz" directive without content.codedocnameoptionsrs   rr   rq   rX   ru   classesr/   r]   )	argumentsstatedocumentr1   reporterwarningr   linenor   env
relfn2pathnote_dependencyopenreadOSErrorrL   stripstate_machinerV   current_documentr}   r~   add_namere   )	r4   r   rk   rel_filenamer/   fpdotcoder`   rY   s	            r(   runzGraphviz.run   s   >>zz**H||%%--2 "[[ .   11BDHHMH%)XX%8%8%B"L(HH$$\2
(W5 ( ggiG( ii-GL==?&&//77KL![[ 8   zV$dhh&?&?&G&GHYT\\).2ll>.JDON+t||#.2ll8.DDON+DLL ,,u-DKdll" LL1DMdll""ll73DO+DDLL(MM$6M#D$Y0GHFMM&!8OW( ( %%--UV"#![[ .  s*   =J
 
I=J
 =JJ
 
=K
	K
NrO   z
list[Node]r"   r#   r$   rQ   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer   	unchangedrl   class_optionrw   __annotations__r   r&   r'   r(   rn   rn   r   si    3K %##''&&",,$$(()K% <r'   rn   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y
)GraphvizSimplero   Tr7   r   Frp   rv   rw   c                   t               }dj                  | j                        }| j                   d| j                  d    d| d|d<   d| j
                  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| j                  |       |gS t        | || j                  d         }| j                  |       |gS )NrI    r   z {
z
}
r|   r}   r~   rs   rr   rq   rX   ru   r   r]   )rV   rL   r1   rt   r   r   r   r}   r~   r   re   )r4   r`   dot_coderY   s       r(   r   zGraphvizSimple.run   sL   z99T\\*))AdnnQ&7%8hZvNV$dhh&?&?&G&GHYT\\).2ll>.JDON+t||#.2ll8.DDON+DLL ,,u-DKdll" LL1DMdll""ll73DODLL(MM$6M#D$Y0GHFMM&!8Or'   Nr   r   r&   r'   r(   r   r      si    3K %##''&&",,$$(()K% r'   r   c                   | j                   j                  }t        j                  |      }|j	                         }ddd}d}d}t        |j                  d|      |j                  d|            D ]  }t        |j                  |         \  }	}
}}}|
r$|j                  | j                  d         }|E| j                   j                  j                  |      j                         j                  }||z  }|| j                   j                  z  }t         j"                  j%                  ||
      }t'        |	|
|||f      }|j)                  ||       d} |r|j+                  |       y	y	)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   ETr3   getrootr   findallr   attribpath2docr   outdirjoinpathresolveparentimgpathospathrelpathr	   setwrite)r4   filepathr   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      sS   
 ,,

C88HD<<>D-8V	WB4IH0"5,b1  6>gnnY>W5X2'5(,,t}}X67?,,%%..w7??AHHW$T\\11177??88?<!68Xuh"OPI|,+. 

8 r'   c                   |j                  d| j                  j                  j                        }|st	        t        d      |z        dj                  |t        |      t        |      t        | j                  j                  j                        f      j                         }| dt        |d      j                          d| }t        | j                  j                  |      }	| j                  j                  | j                  j                  z  |z  }
|
j!                         r|	|
fS t#        | j                  di       j                  |      ry	|
j$                  j'                  d
d
       |g}|j)                  | j                  j                  j                         |j)                  d| d|
 g       |j                  dd      }|r$| j                  j*                  |z  j$                  }n#| j                  j*                  |z  j$                  }|dk(  r|j)                  dd|
 dg       	 t-        j.                  ||j                         d
|d
      }|
j!                         s-t	        t        d      |j<                  |j>                  fz        |dk(  rtA        | |
       |	|
fS # t0        $ rb t2        j5                  t        d      |       t7        | j                  d      si | j                  _        d
| j                  j8                  |<   Y y	t:        $ r3}t	        t        d      |j<                  |j>                  fz        |d}~ww xY w)z3Render graphviz code into a PNG or PDF output file.rs   z,graphviz_dot executable path must be set! %rrK   -Fr8   ._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   configrs   r!   r   rL   rN   graphviz_dot_argsr>   r   r?   r   r   r   imagediris_filegetattrr   mkdirr^   srcdir
subprocessr   r   loggerr   hasattrr   r   stderrstdoutr   )r4   r|   r~   formatprefixr/   rs   hashkeyfnamerelfnoutfndot_argsr}   r   retexcs                   r(   
render_dotr     s    ;;~t||/B/B/O/OPL=>M
 	
 ggGLDLL112	 
 vx  haWe<FFHI6(SET\\))51ELL$,,"7"77%?E}}e|t||3R8<<\J	LLtd3~HOODLL''99:OOr&]bL12kk)W-G||""X-55||""W,44bt$456nnDKKM$Ct
( ==?PQzz3::&'
 	

 tU+%<5  : 	
 t||%;<02DLL-:>)),7 CDzz3::&'
 	s   4(J. .A(MM .MMc                   | j                   j                  j                  }|dvrt        j	                  t        d      |       	 t        | |||||      \  }	}
|dg|j                  dg       }dj                  t        d |            }|	:| j                  j                  | j                  |             t        j                  |	j!                         }|/|j                  d| j                  |      j#                               }d|v r'|d   }| j                  j                  d	| d
| d       |dk(  ry| j                  j                  d       | j                  j                  d| d| d       | j                  j                  d| d       | j                  j                  d       n7|
J t%        |
 dd      5 }|j'                         }d d d        t)        |
 d|      }|j*                  r| j                  j                  d       | j                  j                  d| d| d|j,                   d| d	       | j                  j                  d       | j                  j                  |j/                                n[| j                  j                  d       | j                  j                  d| d| d| d       | j                  j                  d       d|v r| j                  j                  d       t        j                  # t        $ r6}t        j	                  t        d      ||       t        j                  |d }~ww xY w# 1 sw Y   xY w)N>   r   r   z?graphviz_output_format must be either 'png' or 'svg', but is %rdot code %r: %srV   r   r   rq   rX   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   ry   rz   r,   z
<img src="z" alt="z" usemap="#z	" class="z" />z</div>
)r   r   graphviz_output_formatr   r   r   r   r!   r
   SkipNoder   rL   filterbodyrC   r>   as_posixr   r   r   r*   r2   r.   rM   )r4   r`   r|   r~   r   imgclsrq   r/   r   r   r   r   r   srcrX   mapfilemap_contentimgmaps                     r(   render_dot_htmlr   b  s    \\  77F^#PQ	
&!$gvvxPu
 z<DHHY$;<GXXfT7+,F}		T*+H ..E nn;((5$++d"3"9"9";<Cd?MEII|E7/%KLU?II56II %CF84P II23%t<=II01$$$tnw7 -7%lln-+ugTNKTRF		  !9:		   WSEVYYKyQWPXX\] 		  ,		  !>!>!@A 		  !9:		  :cU'#ixt!TU		  ,d?IIZ(
..Y  &r+,dC8nn#%&2- -s$   L M	M1MMM!c           	     N    t        | ||d   |d   |j                  d             y Nr|   r~   r/   )r/   )r   r   r4   r`   s     r(   html_visit_graphvizr     s&    dDL$y/DHHZ<Pr'   c                   	 t        | ||d||      \  }}| j                  |      }	|	sLd}
d}d|v r&|d   dk(  rd}
d}n|d   dk(  rd	}
d
}n|d   dk(  rd}
d}| j                  j                  d|
        | j                  j                  d|z         |	s| j                  j                   d       t
        j                  # t        $ r6}t        j                  t	        d      ||       t
        j                  |d }~ww xY w)Npdfr   rK   rX   rg   {z\hspace*{\fill}}ri   z{\hspace*{\fill}}rh   z{\hfillrI   z\sphinxincludegraphics[]{%s})
r   r!   r   r   r   r
   r   	is_inliner   rC   )r4   r`   r|   r~   r   r/   r   _outfnr   r  preposts               r(   render_dot_latexr    s   &"4wvxPv
 t$Id?G}&*g'))g(* *		2cU$II4u<=		D6%
..5  &r+,dC8nn#%&s   C 	D1C<<Dc           	     N    t        | ||d   |d   |j                  d             y r   )r  r   r   s     r(   latex_visit_graphvizr    s&    dDL$y/DHHZ<Pr'   c                   	 t        | ||d|      \  }}|!| j                  j                  d|d d z         t
        j                  # t        $ r6}t        j                  t	        d      ||       t
        j                  |d }~ww xY w)Nr   r   z@image{%s,,,[graphviz],png}
)	r   r!   r   r   r   r
   r   r   rC   )r4   r`   r|   r~   r   r   r  r   s           r(   render_dot_texinfor    s    &"4wvFv 		85":EF
..  &r+,dC8nn#%&s   A 	B1BBc                ,    t        | ||d   |d          y )Nr|   r~   )r  r   s     r(   texinfo_visit_graphvizr    s    tT4<iAr'   c                    d|j                   v r0| j                  t        d      |d   z         t        j                  | j                  t        d             t        j                  Nrq   z[graph: %s]z[graph])rZ   add_textr   r
   r   r   s     r(   text_visit_graphvizr    sP    a&e45 .. 	a	l#
..r'   c                    d|j                   v r:| j                  j                  t        d      |d   z         t        j
                  | j                  j                  t        d             t        j
                  r  )rZ   r   rC   r   r
   r   r   s     r(   man_visit_graphvizr    s\    		=)DK78 .. 			9&
..r'   c                    t         j                  j                  ddd      }|j                  j	                  t        |             y )N	templatesrV   graphviz.css)sphinxpackage_dirr   html_static_pathrC   rN   )_appr   css_paths      r(   on_config_initedr    s4    !!**;
NSH
""3x=1r'   c           	     H   | j                  t        t        d ft        d ft        d ft
        d ft        d f       | j                  dt               | j                  dt               | j                  dt               | j                  dddt        t        h             | j                  d	d
dt        t        t        h             | j                  dddt        t        h             | j                  d       | j!                  dt"               t$        j&                  ddS )N)htmllatextexinfotextmanrV   graphdigraphrs   r-   r  )typesr   r&   r   r   r  zconfig-initedT)versionparallel_read_safe)add_noderV   r   r  r  r  r  add_directivern   r   add_config_value	frozensetrN   listtupleadd_css_fileconnectr  r  __display_version__)apps    r(   setupr2     s   LL!4(#T*'.!4(&   j(+g~.i0i>NORy$/G    %y#7G   ^$KK!12--" r'   )r_   r   r`   rV   r]   rN   rO   znodes.figure)rk   r   rO   rN   )r4   5HTML5Translator | LaTeXTranslator | TexinfoTranslatorr   zstr | os.PathLike[str]rO   rP   rU   )r4   r3  r|   rN   r~   dict[str, Any]r   rN   r   rN   r/   
str | NonerO   z'tuple[_StrPath | None, _StrPath | None])rV   NNN)r4   r   r`   rV   r|   rN   r~   r4  r   rN   r   r5  rq   r5  r/   r5  rO   ztuple[str, str])r4   r   r`   rV   rO   rP   )r4   r   r`   rV   r|   rN   r~   r4  r   rN   r/   r5  rO   rP   )r4   r   r`   rV   rO   rP   )rV   )r4   r   r`   rV   r|   rN   r~   r4  r   rN   rO   rP   )r4   r   r`   rV   rO   rP   )r4   r   r`   rV   rO   rP   )r4   r   r`   rV   rO   rP   )r  r   r   r   rO   rP   )r1  r   rO   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   re   rl   rn   r   r   r   r   r   r  r  r  r  r  r  r  r2  r&   r'   r(   <module>rU     s   S "  	  " "   )   -  +  %   ) 0 6 -$#)$@44;82			8	$ K  ( (V	u}}ellEMM 	&.9<DM M`'_ 'T$
?$$$ 
$X L
?L
L L 	L
 L L -Lh >
>
> > 	>
 > > 
> > >B $
$
$ $ 	$
 $ $ 
$N 

  	
  
"B2
r'   