
    O&i4>                        d Z ddlZddlZddlZddlmZ ddlmZmZ ddlm	Z	m
Z
mZmZmZ ddlmZ ddlmZ ddlmZmZ ddlZdd	lmZ dd
lmZ ddlmZmZ ddlmZ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, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6  ej7        e8          Z9 G d de          Z: G d d          Z; G d dej<        ej=        ej>                  Z?dede?d e@d!ejA        fd"ZBd#e	d!e@fd$ZC G d% d&e!          ZD G d' d(e!          ZE	 d>d)e"d*e@d+e
d,e@d-e@d.ee@         d!eee@         ee@         f         fd/ZF	 	 d?d)e.de?d*e@d+e
d-e@d0ee@         d1ee@         d.ee@         d!ee@e@f         fd2ZGd)e.de?d!dfd3ZH	 d>d)e0de?d*e@d+e
d-e@d.ee@         d!dfd4ZId)e0de?d!dfd5ZJ	 d@d)e4de?d*e@d+e
d-e@d!dfd6ZKd)e4de?d!dfd7ZLd)e6de?d!dfd8ZMd)e2de?d!dfd9ZNd:ed;eOd!dfd<ZPd:ed!e
e@e	f         fd=ZQdS )AzNAllow graphviz-formatted graphs to be included inline in generated documents.
    N)path)PIPECalledProcessError)AnyDictListOptional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                       e Zd ZdZdS )GraphvizErrorzGraphviz errorN)__name__
__module____qualname__category     `/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/ext/graphviz.pyr"   r"   #   s        HHHr(   r"   c            	           e Zd ZdZ ej        d          Z ej        d          Zddedededd	fd
Z	dedd	fdZ
defdZd	S )ClickableMapDefinitionz1A manipulator for clickable map file of graphviz.z<map id="(.*?)"z
href=".*?" filenamecontentdotreturnNc                     d | _         || _        |                                | _        g | _        |                     |           d S )Nr/   )idr-   
splitlinesr.   	clickableparse)selfr-   r.   r/   s       r)   __init__zClickableMapDefinition.__init__,   sD    !% ))++$&

s
r(   c                 .   | j                             | j        d                   }|st          d| j        z            |                    d          | _        | j        dk    rst          |                                          	                                }d|dd          z  | _        | j        d         
                    d| j                  | j        d<   | j        D ]6}| j                            |          r| j                            |           7d S )Nr   z$Invalid clickable map file found: %s   z%3z	grapviz%si)	maptag_rematchr.   r"   r-   groupr3   r   encode	hexdigestreplacehref_researchr5   append)r7   r/   matchedhashedlines        r)   r6   zClickableMapDefinition.parse4   s    .&&t|A77 	X F VWWW--""7d?? #**,,''1133F!F344L0DG"l1o55dDGDDDLOL 	, 	,D|""4(( ,%%d+++	, 	,r(   c                     | j         r8d                    | j        d         g| j         z   | j        d         gz             S dS )zvGenerate clickable map tags if clickable item exists.

        If not exists, this only returns empty string.
        
r   r,   )r5   joinr.   )r7   s    r)   generate_clickable_mapz-ClickableMapDefinition.generate_clickable_mapE   sE    
 > 	99dl1o.?4<PRCSBTTUUU2r(   )r,   )r#   r$   r%   __doc__recompiler;   rA   strr8   r6   rK   r'   r(   r)   r+   r+   '   s        ;;
,--Ibj&&G  s  d    , , , , , ,"      r(   r+   c                       e Zd ZdS graphvizN)r#   r$   r%   r'   r(   r)   rR   rR   P   s        Dr(   rR   	directivenodecaptionr0   c                 2   t          j        d|          }d|v r|j                            d          |d<   | j                            || j                  \  }}t          j        |dg|R  }|                    |           t          | |           ||z  }|S )Nr,   align)
r   figure
attributespopstateinline_textlinenorU   extendr   )rS   rT   rU   figure_nodeinodesmessagescaption_nodes          r)   figure_wrapperrc   T   s    ,r4((K$#227;;G 227I<LMMFH="6v666L!!!I|,,,<Kr(   argumentc                 ,    t          j        | d          S )N)leftcenterright)r   choice)rd   s    r)   
align_specrj   a   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eed<   dee         fd	Zd
S )Graphviz3
    Directive to insert arbitrary dot markup.
    Tr   r:   FaltrW   rU   layoutgraphviz_dotnameclassoption_specr0   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)rF   r   utf-8encodingz8External Graphviz file %r not found or reading it failedrH   z.Ignoring "graphviz" directive without content.codedocnameoptionsrq   rp   ro   rW   rs   classesr-   rU   )	argumentsr[   documentr.   reporterwarningr   r]   r   env
relfn2pathnote_dependencyopenreadOSErrorrJ   stripstate_machinerR   rz   r{   add_namerc   )	r7   r~   rd   rel_filenamer-   fpdotcoderT   rX   s	            r)   runzGraphviz.runw   s%   > 	'z*H| B )11 - . .48K 2 A A B B 11BDHMMH%)X%8%8%B%B"L(H$$\222C(W555 ( ggiiG( ( ( ( ( ( ( ( ( ( ( ( ( ( ( C C C )11 # $ $&./59[ 2 B B C C C CC
 ii--GL==?? '*3;;GHH < & & ' ' 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r#   r$   r%   rL   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer   	unchangedrj   class_optionrt   r   __annotations__r   r   r   r'   r(   r)   rl   rl   e   s           K %#'&",$( K   /T$Z / / / / / /r(   rl   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eed<   dee         fd	Zd
S )GraphvizSimplerm   Tr:   r   Frn   rt   r0   c                 h   t                      }| j        d| j        d         dd                    | j                  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 )N r   z {
rH   z
}
ry   rz   r{   rq   rp   ro   rW   rs   r|   rU   )
rR   rr   r}   rJ   r.   r   rz   r{   r   rc   )r7   rT   rX   s      r)   r   zGraphvizSimple.run   sJ   zz			4>!#4#4#4dii6M6M6M6MO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      s           K %#'&",$( K   T$Z      r(   r   r7   ry   r{   formatprefixr-   c                    |                     d| j        j        j                  }|t	          |          z   t	          |          z   t	          | j        j        j                  z                                   }|dt          |                                          d|}t          j
        | j        j        |          }	t          j
        | j        j        | j        j        |          }
t          j        |
          r|	|
fS t!          | j        d          r!| j        j                             |          rdS t%          t          j        |
                     |g}|                    | j        j        j                   |                    d|z   d|
z   g           |                     dd	          }|r2t          j        t          j
        | j        j        |                    }n1t          j        t          j
        | j        j        |                    }|d
k    r|                    dd|
z  g           	 t-          j        ||                                t0          t0          |d          }t          j        |
          s+t3          t5          d          |j        |j        fz            |	|
fS # t:          $ r\ t<                              t5          d          |           t!          | j        d          si | j        _        d| j        j        |<   Y dS t@          $ r1}t3          t5          d          |j        |j        fz            |d}~ww xY w)z3Render graphviz code into a PNG or PDF output file.rq   -._graphviz_warned_dot)NNz-Tz-orz   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configrq   rO   graphviz_dot_argsr>   r   r?   	posixpathrJ   imgpathr   outdirimagedirisfilehasattrr   r   dirnamer^   srcdir
subprocessr   r   r"   r   r   r   r   loggerr   r   )r7   ry   r{   r   r   r-   rq   hashkeyfnamerelfnoutfndot_argsrz   r   retexcs                   r)   
render_dotr      sG    ;;~t|/B/OPPLc'll"S%6%664<&899:;A688  !&&$w--"9"9";";";";VVDEN4</77EIdl)4<+@%HHE{5 e|455 |(,,\::zdl5!!"""~HOODL'9:::OOTF]D5L1222kk)W--G Dl49T\%8(CCDDl49T\%8'BBCCJ$67888TnXT[[]]4PT!$D2 2 2{5!! 	O $2 !3 !369j#*5M!N O O Oe|   r D E EFR	T 	T 	Tt|%;<< 	302DL-:>),7zz T T TB  . / /25*cj1IJ K KPS	TTs    :A8J3 3A"M	M!,MMimgclsro   c                    | j         j        j        }	 |dvrt          t	          d          |z            t          | |||||          \  }	}
nH# t          $ r;}t                              t	          d          ||           t          j	        |d }~ww xY w|dg|
                    dg           z   }d                    t          d |                    }|	/| j                            |                     |                     nE|;|
                    d|                     |                                                    }d|v r-| j                            d	|d         d
|d         d           |dk    rt| j                            d           | j                            d|	d|d           | j                            d|z             | j                            d           n?t#          |
dz   d          5 }t%          |
dz   |                                |          }|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 d d            n# 1 swxY w Y   d|v r| j                            d           t          j	        )N)r   svgz=graphviz_output_format must be one of 'png', 'svg', but is %rdot code %r: %srR   r|   r   ro   rW   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">%s</p>z</object></div>
z.maprv   rw   r2   z
<img src="z" alt="z" usemap="#z	" class="z" />z</div>
)r   r   graphviz_output_formatr"   r   r   r   r   r   SkipNoder   rJ   filterbodyrC   r>   r   r   r+   r   r5   r3   rK   )r7   rT   ry   r{   r   r   ro   r-   r   r   r   r   r|   mapfileimgmaps                  r)   render_dot_htmlr   	  s    \ 7F&'' $6 !7 !79?!@ A A A!$gvvxPPuu & & &r+,,dC888n#%& z"TXXi%<%<<GXXfT7++,,F}	T**++++;((5$++d"3"3"9"9";";<<Cd??I"7mmmT']]]< = = =U??I5666I#eeVVV- . . .I83>???I01111efnw777 17/TXYYY# 1I$$%=>>>I$$$&+eeSSS&)))VVV&E F F FI$$Z000I$$V%B%B%D%DEEEE I$$%=>>>I$$$&+eeSSS&&&&: ; ; ;I$$Z0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 d??IZ(((
.s*   :A 
B6BBDL!!L%(L%c           	      l    t          | ||d         |d         |                    d                     d S Nry   r{   r-   )r-   )r   r   r7   rT   s     r)   html_visit_graphvizr   >  s6    D$Vd9oQ[H\H\]]]]]]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|
z             | j        	                    d|z             |	s| j        	                    d|z             t
          j        )Npdfr   r,   rW   rf   {z\hspace*{\fill}}rh   z{\hspace*{\fill}}rg   z{\hfillz
%sz\sphinxincludegraphics[]{%s}z%s
)
r   r"   r   r   r   r   r   	is_inliner   rC   )r7   rT   ry   r{   r   r-   r   r   r   r   preposts               r)   render_dot_latexr   B  sI   &!$gufhOOuu & & &r+,,dC888n#%& t$$I 'd??G}&&*g')))g(** *	#&&&I4u<=== (	$'''
.s    
A6AAc           	      l    t          | ||d         |d         |                    d                     d S r   )r   r   r   s     r)   latex_visit_graphvizr   d  s6    T4ftIR\I]I]^^^^^^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   rC   )r7   rT   ry   r{   r   r   r   r   s           r)   render_dot_texinfor   h  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 )Nry   r{   )r   r   s     r)   texinfo_visit_graphvizr   t  s$    tT4<iAAAAAr(   c                     d|j         v r,|                     t          d          |d         z             n"|                     t          d                     t          j        Nro   z[graph: %s]z[graph])rY   add_textr   r   r   r   s     r)   text_visit_graphvizr   x  sU    a&&e45555a	ll###
.r(   c                     d|j         v r1| j                            t          d          |d         z             n'| j                            t          d                     t          j        r   )rY   r   rC   r   r   r   r   s     r)   man_visit_graphvizr     s]    	=))DK78888	9&&&
.r(   appr   c                     |]| j         j        dk    rOt          j        t          j        ddd          }t          j        | j        d          }t          ||           d S d S d S )Nhtml	templatesrR   graphviz.css_static)r   r   r   rJ   sphinxpackage_dirr   r   )r   r   srcdsts       r)   on_build_finishedr     sd    
{s{)V33i*K^TTi
I..3 {33r(   c           	      2   |                      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           | 
                    dg d           | 
                    d	d
d           |                     d           |                     dt                     t          j        ddS )N)r   latextexinfotextmanrR   graphdigraphrq   r/   r   r   r   r   r   zbuild-finishedT)versionparallel_read_safe)add_noderR   r   r   r   r   r   add_directiverl   r   add_config_valueadd_css_fileconnectr   r   __display_version__)r   s    r)   setupr     s   LL*D1,d30$7*D1($/  1 1 1 j(+++g~...i000777,b&99915&AAA^$$$KK "34441NNNr(   rQ   )rR   NNN)rR   )RrL   r   rM   r   osr   r   r   typingr   r   r   r	   r
   docutilsr   docutils.nodesr   docutils.parsers.rstr   r   r   sphinx.applicationr   sphinx.errorsr   sphinx.localer   r   sphinx.utilr   r   sphinx.util.docutilsr   r   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   r"   r+   GeneralInlineElementrR   rO   rX   rc   rj   rl   r   r   r   r   r   r   r   r   r   r   	Exceptionr   r   r'   r(   r)   <module>r     s"        				           / / / / / / / / 3 3 3 3 3 3 3 3 3 3 3 3 3 3             6 6 6 6 6 6 6 6  % % % % % % % % % % % %         % % % % % % % % B B B B B B B B + + + + + + 6 6 6 6 6 6 - - - - - - ( ( ( ( ( ( ) ) ) ) ) ) . . . . . . 0 0 0 0 0 0 7 7 7 7 7 7 4 4 4 4 4 4 . . . . . .		8	$	$         K      & & & & & & & &R	 	 	 	 	u}elEM 	 	 	
i 
x 
# 
%, 
 
 
 
D D D D D DA A A A A A A AH( ( ( ( (_ ( ( (X DH2T 2T% 2TS 2T4 2T 2T2T3;C=2T(3-#672T 2T 2T 2Tl GKIM2 2. 2 2 2d 226>sm2!#29A#2 sCx2 2 2 2j^n ^H ^ ^ ^ ^ ^
 Y] ? ( # ",/HPQT   D_ _h _4 _ _ _ _
 5?	 	. 	h 	c 	 $	.1	CG	 	 	 	B!2 B( Bt B B B Bn H     1  d    6 	 d    Ov O$sCx. O O O O O Or(   