
    -PhD                    8   d Z ddlmZ ddlmZ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r"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#  ed          Z$ ej%        e&          Z' G d de          Z(d dZ)d!dZ*dS )"z)Toctree collector for sphinx.environment.    )annotations)TYPE_CHECKINGTypeVarcast)nodes)addnodes)StandardDomain)note_toctree)EnvironmentCollector)__)SphinxContentsFilter)loggingurl_re)SequenceSet)ElementNode)Sphinx)BuildEnvironment)ExtensionMetadataNc                  >    e Zd Zdd	ZddZddZddZddZddZdS )TocTreeCollectorappr   envr   docnamestrreturnNonec                   |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         e/var/www/html/test/jupyter/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Set[str]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   r6   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   doctreenodes.documentc                    j         j        dg	 dd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Element | Sequence[Element]depthintr   nodes.bullet_list | Nonec                h   g }| 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                  r5i }|                                D ]}t          |t          j                  rt          |t          j                  r@|                                }
|                    |
           t%          j        |           xt          |t          j                  rd }|D ]}}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|	          }|j        }||vr||k    r|j        }||vr||k    ||v ro||         }t          |d         t          j                  r|d                             |           6|                    t          j        d|                     `||k    sJ |                    |           ||||<   |rt          j        dg|R  S d S )Nr   ids T)internalrefuri
anchornamer@   expr)rL   	_toc_namezno-contents-entry)skip_section_number)
isinstancer   sectionr   	walkaboutget_entry_text_make_anchor_name	referencer   compact_paragraph	list_itemappendonlychildrenr   findalltoctreecopyr
   r   descdesc_signaturegetparentliteralbullet_list)rA   rC   entriessectionnodetitlevisitornodetextrK   rU   paraitemsub_itemonlynodeblistmemo_parentstoctreenodeentrysig_noderG   ra   
root_entryr   	build_tocr   r=   
numentriess                        r1   rs   z/TocTreeCollector.process_doc.<locals>.build_tocG   sC   
 &(G# jB jB k5=99 fB'NE 37;;GOOG,,,&5577H!2;u3Ez!R!RJ !&! "! ! "&&#-! ! !I $5b"iHHD$)OB$=$=D(yeai@@H )(NN4((((  X];; LB'}+f2EFFFH%Ik599E 1 EN2x000U];; EBIKL'2':':'<'< AB AB%k5=AA %$%k83CDD >B#.#3#3#5#5D#NN4000(';GGGG'X]CC 8B =AE,7 -: -:'1(H<S'T'T !-$,'/||K'D'D !-$,#+?#6#67J#K#K !-$,&.uo'* !-$,->sJ-O-O
,1O$&$&$)M"h{6K$L$L-1+2/9-" -" -"	 (0'A$&I4(" (" (" ).D(A(A *2$*,$>$>6[CXCX-3]F %+,$>$>6[CXCX
 $*\#9#91=f1EJ'1*R.%BS'T'T %X(22(=(=e(D(D(D(D(2(9(9%:KBPU:V:V(W(W(W(W+1[+@+@+@+@$+NN5$9$9$9$9  %0<A[ 9 7(6g66664r3   rH   N)r@   )rA   rB   rC   rD   r   rE   )r   r   r"   r   rc   r&   )r.   r   r=   tocrs   r   rt   s    `` @@@r1   process_doczTocTreeCollector.process_docB   s    '/S
 t	 t	 t	 t	 t	 t	 t	 t	 t	 t	 t	l i   	:$'CGL!!$)$5b$9$9CGL!+5a=(((r3   	list[str]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                r  	
 g t                      j        
i _        	 dd	fdd
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.NrA   r   secnumsdict[str, tuple[int, ...]]rC   rD   	titlenodenodes.title | Noner   r   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|v rω	dxx         dz  cc<   t          d|d                   }|dk    r-	                                }t          	          ||d         <   nd }d||d         <   ||d<   |r||d<   d }Et          |t          j                  r ||           md S )	Nr   r@   rN   rO   znodes.referencerK    	secnumber)rZ   rP   r   rc   rX   r#   rW   r   rY   rV   r   r]   tupler\   )
rA   r}   rC   r   subnoderU   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 $%6
 C CIqyy!);@??	, 788!%;=	, 78-3Ik*  )17	+.$(	)9:: 2!M'5111?2 2r3   ro   addnodes.toctreec           	        |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   rd   r.   zA%s is already assigned section numbers (nested numbered toctree?)ru   secnum)locationtypesubtype)r   matchloggerwarningr   r"   r$   r8   titlesr`   rX   )
ro   rC   _titlerefr}   r   assignedr   old_secnumbersrewrite_neededs
        r1   r   z>TocTreeCollector.assign_section_numbers.<locals>._walk_toctree   s"   zz*95 3 3<$$ v(??NN9  !," ( # 	 	 	 	 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!   )
rA   r   r}   r~   rC   rD   r   r   r   r   )ro   r   rC   rD   r   r   )	r:   r$   r*   r8   get_doctreer[   r   r\   r`   )r.   r   r   r=   ro   rC   r   r   r   r   r   r   s    `    @@@@@@r1   ry   z'TocTreeCollector.assign_section_numbers   s%     UU+ -1	'	2 '	2 '	2 '	2 '	2 '	2 '	2 '	2 '	2R	3 	3 	3 	3 	3 	3 	3 	3 	3 	34 , 	6 	6GLL!!!oog..G&x/?@@ 6 6#
A66 6 !sH!M+u5556 r3   c                  	
 t          j        j        j                  
g }t	                      j        }i _        i 	dfddfdd	fddfdd
fdd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.rA   r   r   
str | Nonec                    j                                         D ]H}|                    |           }t          |t                    r|                    |           sB|r|c S Id S r!   )domainssortedget_enumerable_node_typerP   r	   get_numfig_title)rA   domainfigtyper   s      r1   get_figtypez;TocTreeCollector.assign_figure_numbers.<locals>.get_figtype*  s    +,,.. 	# 	# 99$??fn55 f>U>U? ?   #"NNN# 4r3   r   r   rQ   nodes.sectiontuple[int, ...]c                    d|d         d         z   }j                             | i           }||v r|                    |          }n|                    d          }|pdS )N#rG   r   rH   r   )r$   r`   )r   rQ   rK   
secnumbersr   r   s        r1   get_section_numberzBTocTreeCollector.assign_figure_numbers.<locals>.get_section_number8  sg    wu~a00J+//<<JZ''#
33#++<Rr3   r   r   c                                         | i           }|d j        j                 }|                    |d          dz   ||<   g |||         R S )Nr   r@   )r9   confignumfig_secnum_depthr`   )r   r   counterr   fignum_counters      r1   get_next_fignumberzBTocTreeCollector.assign_figure_numbers.<locals>.get_next_fignumberB  sb     %//<<G<cj<<=F%kk&!44q8GFO-V-WV_---r3   fignoder   r   c                    j                             | i            j         |                              |i           }|d         d         } ||          ||<   d S )NrG   r   )r%   r9   )r   r   r   r   
fignumbers	figure_idr   r   s         r1   register_fignumberzBTocTreeCollector.assign_figure_numbers.<locals>.register_fignumberK  sf     ))'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 )Nrd   r.   rG   )	rZ   rP   r   rQ   r   r\   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_doctreeT  sZ    #+ < <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!   )r8   r   )r   r   r=   r   r   r   s      r1   r   z9TocTreeCollector.assign_figure_numbers.<locals>._walk_docp  sS    h&&W%%%//'22gw77777 '&r3   r   )rA   r   r   r   )r   r   rQ   r   r   r   )r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r   r   r=   r   r   r   r   r   )r   r   r   r   r   r   )	frozensetr   standard_domain_virtual_doc_namesr:   r%   r   numfigroot_docr-   r`   rX   )r.   r   r   old_fignumbersr   fignumsr   r   r   r   r   r   r   r   r   s    `    @@@@@@@@@r1   rz   z&TocTreeCollector.assign_figure_numbers  s   &s{'B'UVV UU+@B	 	 	 	 	 		  	  	  	  	  	 	. 	. 	. 	. 	. 	. 	.	H 	H 	H 	H 	H 	H 	H	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<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   N)r   r   r   r   r   r   r   r   )
r   r   r   r   r4   r5   r6   r   r   r   )r   r   r=   r>   r   r   )r   r   r   r   r   rw   )r   r   r   rw   )	__name__
__module____qualname__r2   r<   rv   r{   ry   rz   r   r3   r1   r   r      s        0 0 0 0X X X X(@9 @9 @9 @9DR R R RV V V Vp] ] ] ] ] ]r3   r   rG   rw   num_entries	list[int]r   r   c                R    |d         sd}nd| d         z   }|dxx         dz  cc<   |S )Nr   rH   r   r@   r   )rG   r   rK   s      r1   rT   rT     s@    q> " 

3q6\
NNNaNNNr3   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    r1   setupr     s1    *+++ "#  r3   N)rG   rw   r   r   r   r   )r   r   r   r   )+__doc__
__future__r   typingr   r   r   docutilsr   sphinxr   sphinx.domains.stdr	   #sphinx.environment.adapters.toctreer
   sphinx.environment.collectorsr   sphinx.localer   sphinx.transformsr   sphinx.utilr   r   collections.abcr   r   docutils.nodesr   r   sphinx.applicationr   sphinx.environmentr   sphinx.util.typingr   r   	getLoggerr   r   r   rT   r   r   r3   r1   <module>r      s   / / " " " " " " / / / / / / / / / /             - - - - - - < < < < < < > > > > > >       2 2 2 2 2 2 ' ' ' ' ' ' ' ' 5--------,,,,,,,,))))))333333444444GCLL		8	$	$] ] ] ] ]+ ] ] ]@        r3   