
    O&iA                         d Z ddlmZmZmZmZmZmZmZ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mZmZ ddlmZ dd	lmZmZ erdd
lmZ ddlmZ  ej        e           Z! G d d          Z"dS )z'Toctree adapter for sphinx.environment.    )TYPE_CHECKINGAnyDictIterableListOptionalTuplecast)nodes)ElementNode)addnodes)__)loggingurl_re)Matcher)clean_astextprocess_only_nodes)Builder)BuildEnvironmentc                       e Zd ZddZdedej        ddfdZ	 	 ddedddej        dede	dededede
e         fdZdedee         fdZddede	de	deddf
dZdedddefdZdedddedede
e         f
dZdS )TocTreeenvr   returnNc                     || _         d S N)r   )selfr   s     p/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/environment/adapters/toctree.py__init__zTocTree.__init__   s        docnametoctreenodec                    |d         r| j         j                            |           |                    d          r| j         j                            |           |d         }|D ]A}| j         j                            |t                                                    |           B| j         j                            |g           	                    |           dS )zmNote a TOC tree directive in a document and gather information about
        file relations from it.
        globnumberedincludefilesN)
r   glob_toctreesaddgetnumbered_toctreesfiles_to_rebuild
setdefaultsettoctree_includesextend)r   r!   r"   r&   includefiles        r   notezTocTree.note   s     v 	0H"&&w///??:&& 	4H&**7333">2' 	R 	RK H%00ceeDDHHQQQQ!,,Wb99@@NNNNNr    Tr   Fbuilderr   toctreeprunemaxdepthtitles_onlycollapseincludehiddenc	                     |                     dd          rsdS  j        j        d         j        d                                                                        t           j        j        j                  t           j        j        j	                  dt          dt          ddffd		 dd
t          j        dt          t                   dt           dt           dt          t                   f
 fd|p|                     dd          }s|                     dd          rds|                     dd          rd |g d          }	|	sdS t          j        dd          }
|j                             d          }|rnt'          j        |dgt'          j        |          gR  }|j        |_        |j        |_        |d         |_        t3          |d          r|j        |_        |`|
|z  }
|
                    |	           d|
d<    |
d                                |
dr|nd           t;          |
d         t&          j
                  rt=          |
d                   dk    rdS |
                    t&          j                   D ]D}tC          j"        |d                   s(#                    |d                   |d         z   |d<   E|
S )a   Resolve a *toctree* node into individual bullet lists with titles
        as items, returning None (if no containing titles are found) or
        a new node.

        If *prune* is True, the tree is pruned to *maxdepth*, or if that is 0,
        to the value of the *maxdepth* option on the *toctree* node.
        If *titles_only* is True, only toplevel document titles will be in the
        resulting tree.
        If *collapse* is True, all branches not containing docname will
        be collapsed.
        hiddenFNstdlabelsnodedepthr   c                 ,   | j         D ]	}t          |t          j        t          j        f          r.|d                             d|dz
  z              ||           Wt          |t          j                  r ||dz              t          |t          j                  rn|d         k    rb|d         s(|}|r$|d                             d           |j	        }|$|j	        j	        
                    d          r dS |rd	|d<   |j	        }|dS )
z7Add 'toctree-l%d' and 'current' classes to the toctree.classesztoctree-l%d   refuri
anchornamecurrent	iscurrentNT)children
isinstancer   compact_paragraphr   	list_itemappendbullet_list	referenceparentr)   )r=   r>   subnode
branchnode_toctree_add_classesr!   s       r   rP   z-TocTree.resolve.<locals>._toctree_add_classesQ   s_   = 5 5g(B(-(9 : : 5 I&--muqy.IJJJ((%8888):;; 5((%!)<<<<99 5 x(G33&|4 ? 3:J", ? *9 5 < <Y G G G-7->
 #- ? #>044[AA #"FF% 537GK0&-nG & 515 5r    r"   parentsseparatesubtreec           	         d | d         D             }g }|D ]N\  }}	 d}t          j        |          rq||}t          j        ddgt          j        |          gR d|dd}	t          j        dd|	          }
t          j        d|
          }t          j        d|          }nT|dk    r| d         }|st          #j
        j        |                   }t          j        ddgt          j        |          gR d	|dd}	t          j        dd|	          }
t          j        d|
          }t          j        d|          }n|v rk|         \  }}}|s|}t          j        d|d	|d          }	t          j        dd|	          }
t          j        d|
          }t          j        d|          }nI||v rBt                              t          d
          |d                    |          |dd           |}#j
        j        |                                         }#j
        j        |                             dd          }|%vs"r|dk    r#                    |d|           t+          |j                   |r||j        rut1          |j                  dk    r]|j        d         }|                    t          j                  D ]0}|d         |k    r"|d         st          j        |          g|_        1|j        s*t                              t          d          ||            $rt5          t6          t          j                 |          }|D ]f}t1          |          dk    rQt;          |                    t
          j                            }|r||d         dd<   Q|                    d           gt;          |                    t
          j                            D ]}|                    dd          r!rl|j         !                    |          dz   } ||g|z   d	          D ]"}|j         "                    ||           |dz  }#|j         #                    |           |r|$                    |           ot5          t6          t          j                 |          }|%                    |           # tL          $ r  #j
        '                    |d                    rt          d          }nC  #j
        '                    |d                    st          d          }nt          d          }t                              |||            Y Lw xY w|s|st          j                    }||z  }|gS |S )z&Return TOC entries for a toctree node.c                 .    g | ]}|d          |d         fS )r   rA    ).0es     r   
<listcomp>zBTocTree.resolve.<locals>._entries_from_toctree.<locals>.<listcomp>s   s$    AAAQQqT1Q4LAAAr    entriesN F)internalrB   rC   r   rM   Tz8circular toctree references detected, ignoring: %s <- %sz <- toccircular)locationtypesubtypetocdepthr      rA   rB   rC   z^toctree contains reference to document %r that doesn't have a title: no link will be generated)r_   r:   )rS   z2toctree contains reference to excluded document %rz6toctree contains reference to non-included document %rz5toctree contains reference to nonexisting document %r)(r   matchr   rL   Textr   rH   rI   rK   r   r   titlesloggerwarningr   jointocsdeepcopymetadatar)   _toctree_pruner   tagsrF   lenfindallr
   r   r   listr3   poprM   indexinsertremoverJ   r/   KeyErrordoc2path)&r"   rQ   rR   rS   refsrZ   titlerefrefdocrL   paraitemr]   r!   _sectionnamer5   childrefnoderF   toplevelsubtrees
subtocnodeientrymessageret_entries_from_toctreer2   r7   excludedgenerated_docnamesincludedr8   r4   r   r6   toctree_ancestorss&                              r   r   z.TocTree.resolve.<locals>._entries_from_toctreeo   sU    BA+i*@AAAD%'G $ i1 i1h1!F|C(( 3K =$'E$)OB %J6;j6G6G5H%J %JU;>2%J %J %J	  (9"b)LL$r488#/D99 *(3$ G$01E$F$FE$)OB %J 7<j6G6G5H%J %JT;>?A%J %J %J	  (9"b)LL$r488#/D99 2222DS2I/K$ 0$/E$)OB;Br%S %S %S	'9"b)LL$r488#/D99'>>"NN2 /M ,N ,N+.G0D0D47eZ + Y Y Y %!$"hmC099;;#'8#4S#9#=#=j!#L#L&777E7hQRll //Q(KKK*3===  KS\ Kc#,6G6G16L6L$'LOE+0==+I+I K K#*8#4#;#;'.|'< $<8=
58I8I7JG$4< Br +] (^ (^'*[ ' B B B  # 4
 $((?#E#E )1 4 4H"8}}q00+/0@0@AQ0R0R+S+S#+ !45=HQKNN$,LLOOO&*3;;x7G+H+H&I&I 	A 	A
 *x ? ? A$1A * 1 7 7
 C Ca GA)>)>$.70B,0*2 *2 *2 ' ' !+ 1 8 8E B B B !Q&-44Z@@@ 1s++++#'(?#E#Ex0000[   	G 	G 	Gx 1 1#u = =>> ^"$%Y"Z"Z%Xdh&7&7U&C&CDD ^"$%]"^"^"$%\"]"]NN7C+NFFFFF	G\  8 '))wuNs   GS7D4SBU%$U%r5   
titlesonlyTr8   )rR   r[   caption
rawcaptionuidr3   rA   r   rB   rC   )FF)$r)   r   domainsinitial_datacopyget_toctree_ancestorsr   configinclude_patternsexclude_patternsr   intr   r3   r   strboolrH   
attributesr   ry   re   linesource	rawsourcehasattrr   r/   rm   rG   ro   rp   rL   r   rd   get_relative_uri)r   r!   r2   r3   r4   r5   r6   r7   r8   
tocentriesnewnoder   caption_noder   r   rP   r   r   r   r   s   ``` ` ```     @@@@@@r   resolvezTocTree.resolve)   s    ;;x'' 	 	4>Bh>Nu>U>bck>l>q>q>s>s( !66w??48?;<<48?;<<	5w 	5s 	5t 	5 	5 	5 	5 	5 	5 	5> KPt	 t	x/? t	$s) t	,0t	CGt	'+G}t	 t	 t	 t	 t	 t	 t	 t	 t	 t	 t	 t	 t	 t	 t	 t	l :w{{:r:: 	w{{<?? 	K 	!_e!D!D 	! M
 +*7BGGG
 	4,R44$((33 		$ ;wKej6I6I5JKKKL 'L").L%,\%:L"w&&  #*; K|#Gz"""!	 	Wa(((GQE(@q(KKKgbk5=11 	c'"+6F6F!6K6K4 u77 	H 	HG< 122 H$+$<$<WX.%0 %029,2G%H!r    c                     i }| j         j                                        D ]\  }}|D ]}|||<   g }|}||v r)||vr%|                    |           ||         }||v r||v%|S r   )r   r.   itemsrJ   )r   r!   rM   prF   r   	ancestorsds           r   r   zTocTree.get_toctree_ancestors  s    84::<< 	" 	"KAx! " " !u"!	6kkay00Qq	A 6kkay00 r    r=   r>   c                    |j         dd         D ]}t          |t          j        t          j        f          r|                     ||||           At          |t          j                  ro|dk    r"||k    r|j        	                    |g            |r*|dk    r$d|j        vr|j        
                    |           |                     ||dz   ||           dS )z(Utility: Cut a TOC at a specified depth.Nr   rA   rE   )rF   rG   r   rH   r   rI   rm   rK   rM   replaceru   )r   r=   r>   r5   r7   rN   s         r   rm   zTocTree._toctree_prune  s    }QQQ' 	U 	UG'H$>$)O$5 6 6 U ##GUHhGGGGGU%677 U a<<EH$4$4N**7B7777 ! UUQYY'w~==--g6666 ++GUQY8TTT#	U 	Ur    c                    | j         j        |                             dd          }	 | j         j        |                                         }|                     |d|           n## t          $ r t          j                    cY S w xY wt          ||j
                   |                    t          j                  D ]}|d         pd|d<   |S )z7Return a TOC nodetree -- for use on the same page only!rb   r   rc   rC   #rB   )r   rl   r)   rj   rk   rm   rv   r   	paragraphr   rn   rp   rL   )r   r!   r2   rb   r]   r=   s         r   get_toc_forzTocTree.get_toc_for2  s    8$W-11*a@@	%(-(1133CQ1111 	% 	% 	% ?$$$$$	% 	3---KK00 	7 	7D!,/63DNN
s   ;A$ $BBkwargsc                    | j                             | j         j        j                  }g }d|vrd|d<   d|vs|d         sd|d<   nt	          |d                   |d<   ||d<   |                    t          j                  D ]+} | j        |||fddi|}|r|	                    |           ,|sdS |d         }	|dd         D ]}|	
                    |j                   |	S )	zReturn the global TOC nodetree.r8   Tr5   r   r7   r4   NrA   )r   get_doctreer   root_docr   rp   r   r3   r   rJ   r/   rF   )
r   r!   r2   r7   r   doctreetoctreesr"   r3   results
             r   get_toctree_forzTocTree.get_toctree_forA  s#    (&&tx'?@@"$&((&*F?#V##6*+=#!"F:!$VJ%7!8!8F:%z"??8+;<< 	) 	)K"dl7G[WWWPVWWG )((( 	4!| 	, 	,GMM'*++++r    )r   r   r   N)Tr   FFF)F)__name__
__module____qualname__r   r   r   r3   r1   r   r   r   r   r   r   r   rm   r   r   r   r   rV   r    r   r   r      s          OC Oh.> O4 O O O O  LQ>Ce es eY eAQ ee.1eDHee7;eHPQXHYe e e eN
S 
T#Y 
 
 
 
U U7 U3 U# UQU U U U U U,3  t    s Y $ "%*27*;     r    r   N)#__doc__typingr   r   r   r   r   r   r	   r
   docutilsr   docutils.nodesr   r   sphinxr   sphinx.localer   sphinx.utilr   r   sphinx.util.matchingr   sphinx.util.nodesr   r   sphinx.buildersr   sphinx.environmentr   	getLoggerr   rg   r   rV   r    r   <module>r      sS   - - R R R R R R R R R R R R R R R R R R R R       ( ( ( ( ( ( ( (             ' ' ' ' ' ' ' ' ( ( ( ( ( ( > > > > > > > > 4''''''333333 
	8	$	$@ @ @ @ @ @ @ @ @ @r    