
    O&i>                     X   d Z ddlmZmZ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 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!  e	d          Z" e j#        e$          Z% G d de          Z&dee'         dee(         de'fdZ)dedee'ef         fdZ*dS )z)Toctree collector for sphinx.environment.    )
AnyDictListOptionalSequenceSetTupleTypeVarUnioncast)nodes)ElementNode)addnodes)Sphinx)BuildEnvironment)TocTree)EnvironmentCollector)__)SphinxContentsFilter)loggingurl_reNc            
           e Zd ZdedededdfdZdededee         deddf
d	Zded
e	j
        ddfdZdededee         fdZdedee         fdZdedee         fdZdS )TocTreeCollectorappenvdocnamereturnNc                    |j                             |d            |j                            |d            |j                            |d            |j                            |d            |j                            |d            |j                            |           |j                            |           t          |j
                                                  D ]$\  }}|                    |           |s|j
        |= %d S N)tocspoptoc_secnumberstoc_fignumberstoc_num_entriestoctree_includesglob_toctreesdiscardnumbered_toctreeslistfiles_to_rebuilditems)selfr   r   r   subfnfnsets         r/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/environment/collectors/toctree.py	clear_doczTocTreeCollector.clear_doc   s   Wd###w---w---...  $///!!'***%%g... !5!;!;!=!=>> 	0 	0LE5MM'""" 0(/	0 	0    docnamesotherc                    |D ]}|j         |         |j         |<   |j        |         |j        |<   ||j        v r|j        |         |j        |<   ||j        v r|j                            |           ||j        v r|j                            |           |j                                        D ]O\  }}|j                            |t                                
                    |t          |          z             Pd S r!   )r"   r&   r'   r(   addr*   r,   r-   
setdefaultsetupdate)r.   r   r   r4   r5   r   r/   r0   s           r1   merge_otherzTocTreeCollector.merge_other%   s    	3 	3G %
7 3CHW+0+@+IC(%000050Fw0O$W-%---!%%g...%111%))'222!288:: 	X 	XLE5 ++E35599@@XAVWWWW	X 	Xr3   doctreec                 p   j         j        dg	 d	dt          t          t          t                   f         dt
          dt          t          j                 ffd           }|r|j         j	        <   n!t          j        d          j         j	        <   d         j         j
        <   dS )
z;Build a TOC from the doctree and store it in the inventory.r      nodedepthr   c                 r   g }i }| D ]}t          |t          j                  r|d         }t                    }|                    |           |                                }t          |d                   }t          j        ddg|R d|d}	t          j	        dd|	          }
t          j
        d|
          } ||dz             }|r||z  }|                    |           t          |t          j                  rJt          j        |d                   } ||          }|r||j        z  }|                    |           Ft          |t          j                  r8|                                D ]"}t          |t          j                  rt          |t          j                  rR|                                }|                    |           t%          j                                      |           t          |t          j                  r}|D ]y}t          |t          j                  s|                    d	d          s5|j                            d
          rP|d         }|s[t          |          }t          j        ddt          j        d|d	                   d|          }	t          j	        dd|	d          }
t          j
        d|
          }|d         ^ }}t5          |          }|||d         <   |rr||v rn||         }t          |d         t          j                  r|d                             |           n(|                    t          j        d|                     d|                    |           {$|rt          j        dg|R  S d S )Nr   ids T)internalrefuri
anchornamer>   expr)rG   	_toc_namenocontentsentry)skip_section_number
_toc_parts)
isinstancer   sectionr   	walkaboutget_entry_text_make_anchor_name	referencer   compact_paragraph	list_itemappendonlychildrenr   findalltoctreecopyr   r   notedescdesc_signaturegetparentliteraltuplebullet_list)r?   r@   entriesmemo_parentssectionnodetitlevisitornodetextrF   rR   paraitemsub_itemonlynodeblisttoctreenodesig_noderB   entryparents_
root_entryr   	build_tocr   r<   
numentriess                         r1   rt   z/TocTreeCollector.process_doc.<locals>.build_toc9   s   
 &(GCEL# Q6 Q6 k5=99 M6'NE 37;;GOOG,,,&5577H!2;u3Ez!R!RJ !&B!:08!: !:)-g#-!: !: !:I $5b"iHHD$)OB$=$=D(yeai@@H )(NN4((((  X];; 86'}+f2EFFFH%Ik599E 1 EN2x000U];; 16'2':':'<'< /6 /6%k5=AA %$%k83CDD ,6#.#3#3#5#5D#NN4000#CG,,11';GGGG'X]CC &6,7 %6 %6'1(H<S'T'T !-$,'/||K'D'D !-$,#+?#6#67H#I#I !-$,&.uo'* !-$,->sJ-O-O
,1O$&EM"h{>S,T,T-1'j-Z -Z -Z	 (0'A"b)VZ(\ (\ (\(-D(A(A.6|.D!*/.. HMXl-C D $+ !-w,/F/F1=g1FJ'1*R.%BS'T'T %X(22(=(=e(D(D(D(D(2(9(9%:KBPU:V:V(W(W(W$, 'u 5 5 5 5 7(6g66664r3   rC   N)r>   )r   r   r   r   r   intr   r   rb   r"   r&   )r.   r   r<   tocrt   r   ru   s    `` @@@r1   process_doczTocTreeCollector.process_doc4   s    '/S
 ]	 ]	'!223]	]	 e'(]	 ]	 ]	 ]	 ]	 ]	 ]	 ]	 ]	 ]	~ i   	:$'CGL!!$)$5b$9$9CGL!+5a=(((r3   c                 X    |                      |          |                     |          z   S r!   )assign_section_numbersassign_figure_numbers)r.   r   r   s      r1   get_updated_docsz!TocTreeCollector.get_updated_docs   s)    **3//$2L2LS2Q2QQQr3   c                   	
 g t                      j        
i _        	 ddt          dt          dt          dt
          t          j                 ddf
	fddt          j	        dt          ddf
fd	j
        D ]u}                    |                               |          }|                    t          j	                  D ])}|                    d
d          }|rdg	 ||           *vS )zAAssign a section number to each heading under a numbered toctree.Nr?   secnumsr@   	titlenoder   c                    | j         D ]p}t          |t          j                  r=	                    d            |||dz
  |           	                                 d }Zt          |t          j                  r ||||           d }t          |t          j                  r ||||           d }t          |t          j	                  rd|v rω	dxx         dz  cc<   t          t          j        |d                   }|dk    r(t          	          }t          	          ||d         <   nd }d ||d         <   ||d<   |r||d<   d }Jt          |t          j                  r ||           rd S )Nr   r>   rJ   rL   rF   	secnumber)rW   rM   r   rb   rU   r#   rT   r   rV   rS   r   rR   r+   ra   rY   )
r?   r~   r@   r   subnoderR   number	_walk_toc_walk_toctreenumstacks
          r1   r   z:TocTreeCollector.assign_section_numbers.<locals>._walk_toc   s   
  = 2 2gu'899 2OOA&&&Igw	9EEELLNNN $II99 2IgwyAAA $II77 2 IgwyAAA $II)CDD 2,77 RLLLA%LLL $U_gaj A AIqyy!%h;@??	, 788!%;?	, 78-3Ik*  )17	+.$(	)9:: 2!M'5111?2 2r3   rn   c           	         |dk    rd S | d         D ]\  }}t          j        |          s|dk    r |v r-t                              t	          d          || dd           Q|j        v ri }|j        |<                       |            j        |         ||j        	                    |                     |	                    |          k    r	
                    |           d S )Nr   rc   r.   zA%s is already assigned section numbers (nested numbered toctree?)rw   secnum)locationtypesubtype)r   matchloggerwarningr   r"   r$   r7   titlesr^   rU   )
rn   r@   _titlerefr~   r   assignedr   old_secnumbersrewrite_neededs
        r1   r   z>TocTreeCollector.assign_section_numbers.<locals>._walk_toctree   s$   zz!,Y!7 3 3<$$ 3vH__NN2 'C $D $DEH,7eX # W W W W CH__:<G.5C&s+LL%%%IchsmWeSZ^^C=P=PQQQ."4"4S"9"999&--c2223 3r3   numberedr   r!   )r9   r$   r   r   rv   r   r   rf   r   rY   r*   r7   get_doctreerX   r^   )r.   r   r   r<   rn   r@   r   r   r   r   r   r   s    `    @@@@@@r1   rz   z'TocTreeCollector.assign_section_numbers   sn     UU+ Z^$	2 $	2$	2$($	214$	2AI%+AV$	2$	2 $	2 $	2 $	2 $	2 $	2 $	2 $	2L	3x'7 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3& , 	6 	6GLL!!!oog..G&x/?@@ 6 6#
A66 6 !sH!M+u5556 r3   c           
        	
 t          j        d         j        d                                                   
g }t	                      j        }i _        i 	dt          dt          t                   ffddt          dt          j
        dt          t          df         ffd	d
t          dt          t          df         dt          t          df         f	fddt          dt          t          df         d
t          dt          ddf
fddt          dt          dt          t          df         ddf
fddt          dt          t          df         ddffdj        j        rc j        j        d           j                                        D ]3\  }}||                    |          k    r|                    |           4|S )z?Assign a figure number to each figure under a numbered toctree.stdlabelsr?   r   c                     j                                         D ]>}|                    |           }|j        dk    r|                    |           s8|r|c S ?d S )Nr   )domainsvaluesget_enumerable_node_typenameget_numfig_title)r?   domainfigtyper   s      r1   get_figtypez;TocTreeCollector.assign_figure_numbers.<locals>.get_figtype   sx    +,,.. # # 99$??K5(( & 7 7 = = )  #"NNN# 4r3   r   rN   .c                     d|d         d         z   }j                             | i           }||v r|                    |          }n|                    d          }|pdS )N#rB   r   rC    )r$   r^   )r   rN   rF   
secnumbersr   r   s        r1   get_section_numberzBTocTreeCollector.assign_figure_numbers.<locals>.get_section_number  sg    wu~a00J+//<<JZ''#
33#++<Rr3   r   r   c                                          | i           }|d j        j                 }|                    |d          dz   ||<   |||         fz   S )Nr   r>   )r8   confignumfig_secnum_depthr^   )r   r   counterr   fignum_counters      r1   get_next_fignumberzBTocTreeCollector.assign_figure_numbers.<locals>.get_next_fignumber  s[    $//<<G;SZ;;<F%kk&!44q8GFOWV_...r3   fignodeNc                     j                             | i            j         |                              |i           }|d         d         } ||          ||<   d S )NrB   r   )r%   r8   )r   r   r   r   
fignumbers	figure_idr   r   s         r1   register_fignumberzBTocTreeCollector.assign_figure_numbers.<locals>.register_fignumber  sd    ))'2666+G4??LLJq)I$6$6w$G$GJy!!!r3   r<   c                    |j         D ]}t          |t          j                  r* | |          }|r 	| ||           8 	| ||           Ft          |t          j                  r;|d         D ]1\  }}t          j        |          s|dk    r |
v r% ||           2t          |t          j                  r0 |          }|r|d         r | |||            	| ||           d S )Nrc   r.   rB   )	rW   rM   r   rN   r   rY   r   r   r   )r   r<   r   r   next_secnumr   
subdocnamer   	_walk_doc_walk_doctreegenerated_docnamesr   r   r   s           r1   r   z=TocTreeCollector.assign_figure_numbers.<locals>._walk_doctree!  sX   "+ < <gu}55 <"4"4Wg"F"FK" @%gwDDDD%gw????)9:: <.5i.@ 6 6*
!<
33 %zV7K7K$%);;;$!	*f55556  77 <)k'22G N75> N**7FGWMMM!M'7F;;;-< <r3   c                     | vr9                     |                                |           } | ||           d S d S r!   )r7   r   )r   r   r<   r   r   r   s      r1   r   z9TocTreeCollector.assign_figure_numbers.<locals>._walk_doc;  sS    h&&W%%%//'22gw77777 '&r3   r   )	frozensetr   initial_datakeysr9   r%   r   r   strr   rN   r	   rv   r   r   numfigroot_docr-   r^   rU   )r.   r   r   old_fignumbersr   fignumsr   r   r   r   r   r   r   r   r   s    `    @@@@@@@@@r1   r{   z&TocTreeCollector.assign_figure_numbers   s   &s{5'9'Fx'P'U'U'W'WXX UU+@B	d 	x} 	 	 	 	 	 		  	 em 	 cSVh 	  	  	  	  	  	 	/ 	/U38_ 	/sTWx 	/ 	/ 	/ 	/ 	/ 	/ 	/	H 	HU38_ 	H(+	H6=	HBF	H 	H 	H 	H 	H 	H 	H	<3 	< 	<%S/ 	<VZ 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<4	8s 	8E#s(O 	8 	8 	8 	8 	8 	8 	8 	8 	8 : 	3Icj)2...$'$6$<$<$>$> 3 3 n009999"))'222r3   )__name__
__module____qualname__r   r   r   r2   r   r;   r   documentrx   r   r|   rz   r{   r   r3   r1   r   r      sQ       0V 0*: 0S 0T 0 0 0 0Xv X,< XC X+X04X X X Xi9v i9 i94 i9 i9 i9 i9VRF R1A Rd3i R R R RL*: LtCy L L L L\W)9 Wd3i W W W W W Wr3   r   rB   num_entriesr   c                 R    |d         sd}nd| d         z   }|dxx         dz  cc<   |S )Nr   rC   r   r>   r   )rB   r   rF   s      r1   rQ   rQ   J  s@    q> " 

3q6\
NNNaNNNr3   r   c                 B    |                      t                     ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_env_collectorr   )r   s    r1   setupr   U  s1    *+++ "#  r3   N)+__doc__typingr   r   r   r   r   r   r	   r
   r   r   docutilsr   docutils.nodesr   r   sphinxr   sphinx.applicationr   sphinx.environmentr   #sphinx.environment.adapters.toctreer   sphinx.environment.collectorsr   sphinx.localer   sphinx.transformsr   sphinx.utilr   r   r   	getLoggerr   r   r   r   rv   rQ   r   r   r3   r1   <module>r      s   / / X X X X X X X X X X X X X X X X X X X X X X X X       ( ( ( ( ( ( ( (       % % % % % % / / / / / / 7 7 7 7 7 7 > > > > > >       2 2 2 2 2 2 ' ' ' ' ' ' ' 'GCLL		8	$	$q q q q q+ q q qh	49 49     v $sCx.      r3   