
    }c2                     $   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 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dee%ef         fdZ&dS )z)Toctree collector for sphinx.environment.    )AnyDictListSetTupleTypeTypeVar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         Elib/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   r2   r3   r   r-   r.   s           r/   merge_otherzTocTreeCollector.merge_other%   s    	3 	3G %
7 3CHW+0+@+IC(%00 P050Fw0O$W-%-- /!%%g...%11 3%))'222!288:: 	X 	XLE5 ++E35599@@XAVWWWW	X 	Xr1   doctreec                    j         j        dgdt          dt          t                   dt
          t                   ffdddt          dt          d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clsr   c                    g }t          | |          r|                    |            | j        D ]V}t          |t          j                  rt          |t          j                  r|                     ||                     W|S )z2Like traverse(), but stay within the same section.)
isinstanceappendchildrenr   sectionr   extend)r<   r=   resultchildtraverse_in_sections       r/   rF   z9TocTreeCollector.process_doc.<locals>.traverse_in_section9   s     F$$$ $d### C CeU]33 Cu}55 CMM"5"5eS"A"ABBBMr1      depthc                    g }| D ]}t          |t          j                  r|d         }t                    }|                    |           |                                }d         sd}nd|d         d         z   }dxx         dz  cc<   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  }|
                    |           \t          |t          j                  rj |t          j                  D ]S}|                                }
|
                    |
           t!          j                                      |           T|rt          j        dg|R  S d S )
Nr    #idsrG   T)internalrefuri
anchornameexpr)rP   )r?   r   rB   r   	walkaboutget_entry_text	referencer   compact_paragraph	list_itemr@   onlyrA   r   toctreecopyr   r   notebullet_list)r<   rH   entriessectionnodetitlevisitornodetextrO   rS   paraitemsub_itemonlynodeblisttoctreenoder   	build_tocr   r:   
numentriesrF   s                  r/   rf   z/TocTreeCollector.process_doc.<locals>.build_tocE   sS   %'G# )D )D k5=99 %D'NE 37;;GOOG,,,&5577H%a= A &(

%(;u+=a+@%@
qMMMQ&MMM !&B!:08!: !:)-g#-!: !: !:I $5b"iHHD$)OB$=$=D(yeai@@H )(NN4((((X];; D'}+f2EFFFH%Ik599E 1 EN2x000U];; D':':;;C;K(M (M D D*//11t,,,((--g{CCCC 7(6g66664r1   rJ   N)rG   )r   r   r   r   r   r   intr   rZ   r    r$   )r,   r   r:   tocrf   r   rg   rF   s    `` @@@@r/   process_doczTocTreeCollector.process_doc4   s   '/S

	g 
	DG 
	Q 
	 
	 
	 
	 
	 
	.	 .	G .	C .	8I .	 .	 .	 .	 .	 .	 .	 .	 .	 .	 .	^ i   	:$'CGL!!$)$5b$9$9CGL!+5a=(((r1   c                 X    |                      |          |                     |          z   S r   )assign_section_numbersassign_figure_numbers)r,   r   r   s      r/   get_updated_docsz!TocTreeCollector.get_updated_docs{   s)    **3//$2L2LS2Q2QQQr1   c                   	
 g t                      j        
i _        ddt          dt          dt          d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<   secnumsrH   	titlenoder   c                    | j         D ]k}t          |t          j                  r=	                    d            |||dz
  |           	                                 d }Zt          |t          j                  r ||||           d }t          |t          j                  r ||||           d }t          |t          j	                  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 }Et          |t          j                  r ||           md S )Nr   rG   rO   	secnumber)rA   r?   r   rZ   r@   r!   rU   r   rV   rT   r
   rS   r)   tuplerW   )
r<   rp   rH   rq   subnoderS   number	_walk_toc_walk_toctreenumstacks
          r/   rx   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RLLLA%LLL $U_gaj A AIqy @!%h;@??	, 788!%;?	, 78-3Ik*  )17	+.$(	)9:: 2!M'5111;2 2r1   re   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   r[   r,   zA%s is already assigned section numbers (nested numbered toctree?)ri   secnum)locationtypesubtype)r   matchloggerwarningr   r    r"   r5   titlesgetr@   )
re   rH   _titlerefrp   rx   assignedr   old_secnumbersrewrite_neededs
        r/   ry   z>TocTreeCollector.assign_section_numbers.<locals>._walk_toctree   s2   z !,Y!7 3 3<$$ 3v 3H_ 
3NN2 'C $D $DEH,7eX # W W W W CH_ 3:<G.5C&s+LL%%%IchsmWeSZ^^C=P=PQQQ."4"4S"9"99 3&--c2223 3r1   numberedr   r   )r7   r"   r   r   rh   r   r]   r   rW   r(   r5   get_doctreefindallr   )r,   r   r   r:   re   rH   rx   ry   r   rz   r   r   s    `    @@@@@@r/   rl   z'TocTreeCollector.assign_section_numbers~   s^     UU+ 	2  	2G  	2d  	23  	25;  	2bf  	2  	2  	2  	2  	2  	2  	2  	2D	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 r1   c           
      F  	
 g }t                      j        }i _        i 	dt          d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
        ro j	        j        t                                 j                                        D ]3\  }}||                    |          k    r|                    |           4|S )z?Assign a figure number to each figure under a numbered toctree.r<   r   c                     j                                         D ]>}|                    |           }|j        dk    r|                    |           s8|r|c S ?d S )Nstd)domainsvaluesget_enumerable_node_typenameget_numfig_title)r<   domainfigtyper   s      r/   get_figtypez;TocTreeCollector.assign_figure_numbers.<locals>.get_figtype   sw    +,,.. # # 99$??;%' 0G0G0M0M  #"NNN# 4r1   r   rB   .c                     d|d         d         z   }j                             | i           }||v r|                    |          }n|                    d          }|pt                      S )NrK   rL   r   rJ   )r"   r   ru   )r   rB   rO   
secnumbersr|   r   s        r/   get_section_numberzBTocTreeCollector.assign_figure_numbers.<locals>.get_section_number   sn    wu~a00J+//<<JZ' ,#
33#++$UWW$r1   r   r|   c                                          | i           }|d j        j                 }|                    |d          dz   ||<   |||         fz   S )Nr   rG   )r6   confignumfig_secnum_depthr   )r   r|   counterr   fignum_counters      r/   get_next_fignumberzBTocTreeCollector.assign_figure_numbers.<locals>.get_next_fignumber   s[    $//<<G;SZ;;<F%kk&!44q8GFOWV_...r1   fignodeNc                     j                             | i            j         |                              |i           }|d         d         } ||          ||<   d S )NrL   r   )r#   r6   )r   r|   r   r   
fignumbers	figure_idr   r   s         r/   register_fignumberzBTocTreeCollector.assign_figure_numbers.<locals>.register_fignumber   sd    ))'2666+G4??LLJq)I$6$6w$G$GJy!!!r1   r:   c                    |j         D ]}t          |t          j                  r* | |          }|r 	| ||           8 	| ||           Ft          |t          j                  r6|d         D ],\  }}t          j        |          s|dk    r  ||           -t          |t          j                  r0 
|          }|r|d         r | |||            	| ||           d S )Nr[   r,   rL   )	rA   r?   r   rB   r   rW   r   r   r   )r   r:   r|   rv   next_secnumr   
subdocnamer   	_walk_doc_walk_doctreer   r   r   s           r/   r   z=TocTreeCollector.assign_figure_numbers.<locals>._walk_doctree   sK   "+ < <gu}55 <"4"4Wg"F"FK" @%gwDDDD%gw????)9:: <.5i.@ 6 6*
!<
33 %zV7K %$!	*f55556  77 <)k'22G N75> N**7FGWMMM!M'7F;;;'< <r1   c                     | vr9                     |                                |           } | ||           d S d S r   )r5   r   )r   r|   r:   r   r   r   s      r/   r   z9TocTreeCollector.assign_figure_numbers.<locals>._walk_doc  sW    h& 8W%%%//'22gw777778 8r1   )r7   r#   r   strr   rB   r   rh   r   r   numfigroot_docru   r+   r   r@   )r,   r   r   old_fignumbersr   fignumsr   r   r   r   r   r   r   r   s    `    @@@@@@@@r/   rm   z&TocTreeCollector.assign_figure_numbers   s_     UU+@B
	d 
	s 
	 
	 
	 
	 
	 
		% 	%em 	%cSVh 	% 	% 	% 	% 	% 	%	/ 	/U38_ 	/sTWx 	/ 	/ 	/ 	/ 	/ 	/ 	/	H 	HU38_ 	H(+	H6=	HBF	H 	H 	H 	H 	H 	H 	H	<3 	< 	<%S/ 	<VZ 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<,	8s 	8E#s(O 	8 	8 	8 	8 	8 	8 	8 	8 	8 : 	3Icj)577333$'$6$<$<$>$> 3 3 n00999 3"))'222r1   )__name__
__module____qualname__r   r   r   r0   r   r9   r   documentrj   r   rn   rl   rm    r1   r/   r   r      sQ       0V 0*: 0S 0T 0 0 0 0Xv X,< XC X+X04X X X XE9v E9 E94 E9 E9 E9 E9NRF R1A Rd3i R R R RH*: HtCy H H H HTQ)9 Qd3i Q Q Q Q Q Qr1   r   r   r   c                 B    |                      t                     ddddS )NbuiltinT)versionparallel_read_safeparallel_write_safe)add_env_collectorr   )r   s    r/   setupr     s1    *+++ "#  r1   N)'__doc__typingr   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   r   r   r1   r/   <module>r      s   / / C C C C C C C C C C C C C C C C C C C C       ( ( ( ( ( ( ( (       % % % % % % / / / / / / 7 7 7 7 7 7 > > > > > >       2 2 2 2 2 2 ' ' ' ' ' ' ' 'GCLL		8	$	$C C C C C+ C C CLv $sCx.      r1   