
    7 fT>                        d Z ddlmZ ddlmZ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mZ erddlmZ ddlmZ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AnyTypeVarcast)nodes)addnodes)note_toctree)EnvironmentCollector)__)SphinxContentsFilter)loggingurl_re)Sequence)ElementNode)Sphinx)BuildEnvironment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         [/var/www/equiseq/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   r2   r4   r   r-   r.   s           r/   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r1   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                N   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                  r&|                                D ]}t          |t          j                  rt          |t          j                  r@|                                }|                    |           t%          j        |           xt          |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         ^ }}t3          |          }|||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)rJ   	_toc_namezno-contents-entry)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   descdesc_signaturegetparentliteraltuplebullet_list)r?   rA   entriesmemo_parentssectionnodetitlevisitornodetextrI   rT   paraitemsub_itemonlynodeblisttoctreenodesig_noderE   entryparents_
root_entryr   	build_tocr   r;   
numentriess                         r/   ru   z/TocTreeCollector.process_doc.<locals>.build_toc@   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(';GGGG'X]CC &6,7 %6 %6'1(H<S'T'T !-$,'/||K'D'D !-$,#+?#6#67J#K#K !-$,&.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4r1   rF   N)r>   )r?   r@   rA   rB   r   rC   )r   r   r    r   rc   r$   )r,   r   r;   tocru   r   rv   s    `` @@@r/   process_doczTocTreeCollector.process_doc;   s    '/S
 ]	 ]	 ]	 ]	 ]	 ]	 ]	 ]	 ]	 ]	 ]	~ i   	:$'CGL!!$)$5b$9$9CGL!+5a=(((r1   	list[str]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                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.Nr?   r   secnumsdictrA   rB   	titlenodenodes.title | Noner   r   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>   rL   rN   rI   	secnumber)rY   rO   r   rc   rW   r!   rV   r	   rX   rU   r   rT   r)   rb   r[   )
r?   r   rA   r   subnoderT   number	_walk_toc_walk_toctreenumstacks
          r/   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 2r1   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?)rw   secnum)locationtypesubtype)r   matchloggerwarningr   r    r"   r6   titlesr_   rW   )
ro   rA   _titlerefr   r   assignedr   old_secnumbersrewrite_neededs
        r/   r   z>TocTreeCollector.assign_section_numbers.<locals>._walk_toctree   s$   zz!,Y!7 3 3<$$ v(??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 3r1   numberedr   r   )
r?   r   r   r   rA   rB   r   r   r   r   )ro   r   rA   rB   r   r   )	r8   r"   r(   r6   get_doctreerZ   r	   r[   r_   )r,   r   r   r;   ro   rA   r   r   r   r   r   r   s    `    @@@@@@r/   r{   z'TocTreeCollector.assign_section_numbers   s'     UU+ W[$	2 $	2 $	2 $	2 $	2 $	2 $	2 $	2 $	2L	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                  	
 t          j        d         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.stdr?   r   r   
str | Nonec                    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      r/   get_figtypez;TocTreeCollector.assign_figure_numbers.<locals>.get_figtype  sx    +,,.. # # 99$??K5(( & 7 7 = = )  #"NNN# 4r1   r   r   rP   nodes.sectiontuple[int, ...]c                    d|d         d         z   }j                             | i           }||v r|                    |          }n|                    d          }|pdS )N#rE   r   rF    )r"   r_   )r   rP   rI   
secnumbersr   r   s        r/   get_section_numberzBTocTreeCollector.assign_figure_numbers.<locals>.get_section_number  sg    wu~a00J+//<<JZ''#
33#++<Rr1   r   r   c                                         | i           }|d j        j                 }|                    |d          dz   ||<   |||         fz   S )Nr   r>   )r7   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   fignoder   r   c                    j                             | i            j         |                              |i           }|d         d         } ||          ||<   d S )NrE   r   )r#   r7   )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                  r;|d         D ]1\  }}t          j        |          s|dk    r |
v r% ||           2t          |t          j                  r0 |          }|r|d         r | |||            	| ||           d S )Nrd   r,   rE   )	rY   rO   r   rP   r	   r[   r   r   r   )r   r;   r   r   next_secnumr   
subdocnamer   	_walk_doc_walk_doctreegenerated_docnamesr   r   r   s           r/   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;;;-< <r1   c                    | vr9                     |                                |           } | ||           d S d S r   )r6   r   )r   r   r;   r   r   r   s      r/   r   z9TocTreeCollector.assign_figure_numbers.<locals>._walk_docB  sS    h&&W%%%//'22gw77777 '&r1   r   )r?   r   r   r   )r   r   rP   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   _virtual_doc_namesr8   r#   r   numfigroot_docr+   r_   rW   )r,   r   r   old_fignumbersr   fignumsr   r   r   r   r   r   r   r   r   s    `    @@@@@@@@@r/   r|   z&TocTreeCollector.assign_figure_numbers   s   &s{5'9'LMM UU+@B	 	 	 	 	 		  	  	  	  	  	 	/ 	/ 	/ 	/ 	/ 	/ 	/	H 	H 	H 	H 	H 	H 	H	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<4	8 	8 	8 	8 	8 	8 	8 	8 : 	3Icj)2...$'$6$<$<$>$> 3 3 n009999"))'222r1   N)r   r   r   r   r   r   r   r   )
r   r   r   r   r2   r3   r4   r   r   r   )r   r   r;   r<   r   r   )r   r   r   r   r   ry   )r   r   r   ry   )	__name__
__module____qualname__r0   r:   rx   r}   r{   r|   r   r1   r/   r   r      s        0 0 0 0X X X Xi9 i9 i9 i9VR R R RL L L L\W W W W W Wr1   r   rE   ry   num_entries	list[int]r   r   c                R    |d         sd}nd| d         z   }|dxx         dz  cc<   |S )Nr   rF   r   r>   r   )rE   r   rI   s      r/   rS   rS   Q  s@    q> " 

3q6\
NNNaNNNr1   r   r   dict[str, Any]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)rE   ry   r   r   r   r   )r   r   r   r   )'__doc__
__future__r   typingr   r   r   r   docutilsr   sphinxr	   #sphinx.environment.adapters.toctreer
   sphinx.environment.collectorsr   sphinx.localer   sphinx.transformsr   sphinx.utilr   r   collections.abcr   docutils.nodesr   r   sphinx.applicationr   sphinx.environmentr   r   	getLoggerr   r   r   rS   r   r   r1   r/   <module>r      s   / / " " " " " " 4 4 4 4 4 4 4 4 4 4 4 4             < < < < < < > > > > > >       2 2 2 2 2 2 ' ' ' ' ' ' ' ' 4((((((,,,,,,,,))))))333333GCLL		8	$	$q q q q q+ q q qh	        r1   