
    O&i                     R   d Z ddl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mZ dd
lmZmZ ddlmZ ddlmZ erddlm Z   ej!        e"          Z# G d de          Z$ G d de          Z% G d de          Z&dddee'ef         fdZ(dS )zThe index domain.    )TYPE_CHECKINGAnyDictIterableListTuple)nodes)Nodesystem_message)
directives)addnodes)Domain)BuildEnvironment)loggingsplit_index_msg)ReferenceRoleSphinxDirective)process_index_entry)
OptionSpec)Sphinxc                       e Zd ZdZdZdZedeee	e
eeeeef                  f         fd            ZdeddfdZdee         d	eddfd
ZdedededdfdZdS )IndexDomainzMathematics domain.indexreturnc                 8    | j                             di           S Nentries)data
setdefault)selfs    a/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/domains/index.pyr   zIndexDomain.entries   s    y##Ir222    docnameNc                 <    | j                             |d            d S )N)r   pop)r    r#   s     r!   	clear_doczIndexDomain.clear_doc!   s     $'''''r"   docnames	otherdatac                 <    |D ]}|d         |         | j         |<   d S r   r   )r    r'   r(   r#   s       r!   merge_domaindatazIndexDomain.merge_domaindata$   s8     	B 	BG$-i$8$ADL!!	B 	Br"   envdocumentc                    | j                             |j        g           }t          |                    t
          j                            D ]}	 |d         D ]}t          |d         |d                    	 |d         D ]}|                    |           L# t          $ rM}t                              t          |          |           |j                            |           Y d}~d}~ww xY wdS )z7Process a document after it is read by the environment.r   r      )locationN)r   r   r#   listfindallr   r   r   append
ValueErrorloggerwarningstrparentremove)r    r,   r#   r-   r   nodeentryexcs           r!   process_doczIndexDomain.process_doc(   s   ,))#+r::))(.99:: 		* 		*D*!)_ 8 8E#E!HeAh77778 ")_ * *ENN5))))*	  ) ) )s3xx$777""4(((((((()			* 		*s   'B
C0#AC++C0)__name__
__module____qualname____doc__namelabelpropertyr   r7   r   r   r   r&   r   r+   r   r
   r=    r"   r!   r   r      s        DE3c4c3S#.E(F#GGH 3 3 3 X3( ( ( ( ( (B# B4 BD B B B B*/ *# * *RV * * * * * *r"   r   c                   X    e Zd ZU dZdZdZdZdZdej	        iZ
eed<   dee         fd	Zd
S )IndexDirectivez0
    Directive to add entries to the index.
    Fr/   r   TrB   option_specr   c                 (   | j         d                             d          }d| j        v r&| j        d         }t          j        dd|g          }n5d| j                            d          z  }t          j        dd|g          }| j        j        	                    |           t          j                    }g |d	<   d
|d<   |                     |           |D ]7}|d	                             t          ||d         d                              8||gS )Nr   
rB    )namesindex-%sr   idsr   FinlinerO   )	argumentssplitoptionsr	   targetr,   new_serialnostater-   note_explicit_targetr   r   set_source_infoextendr   )r    rQ   
targetname
targetnodetargetid	indexnoder;   s          r!   runzIndexDirective.runC   s   N1%++D11	T\!!f-Jb"ZLAAAJJ!DH$9$9'$B$BBHb"8*===J
00<<<N$$	!	)#	(Y''' 	Z 	ZEi ''(;E:eCTUVCW(X(XYYYY:&&r"   N)r>   r?   r@   rA   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer   	unchangedrH   r   __annotations__r   r
   r^   rE   r"   r!   rG   rG   7   sx           K $
$K   'T$Z ' ' ' ' ' 'r"   rG   c                   B    e Zd Zdeee         ee         f         fdZdS )	IndexRoler   c                    d| j                             d          z  }| j        r| j        }t	          | j        |          }nS| j                            d          r%| j        dd          }d| j        dd          |dd fg}n| j        }d| j        |dd fg}t          j        |          }t          j        dd|g	          }t          j
        |          }|                     |           |||gg fS )
NrM   r   !r/   singlemainrK   r*   rN   )r,   rU   has_explicit_titletitler   rT   
startswithr   r   r	   TextrX   )r    	target_idrl   r   r   rT   texts          r!   r^   zIndexRole.runX   s   !6!6w!?!??	" 	IJE)$+yAAGG {%%c** I
122$dk!""oy&$OP
$dk9b$GHw///b"9+666z%  U###vt$b((r"   N)r>   r?   r@   r   r   r
   r   r^   rE   r"   r!   rf   rf   W   sB        )U4:tN';;< ) ) ) ) ) )r"   rf   appr   r   c                     |                      t                     |                     dt                     |                     dt                                 dddddS )Nr   builtinr/   T)versionenv_versionparallel_read_safeparallel_write_safe)
add_domainr   add_directiverG   add_rolerf   )rq   s    r!   setupr{   n   s_    NN;g~...LL)++&&& "#	  r"   N))rA   typingr   r   r   r   r   r   docutilsr	   docutils.nodesr
   r   docutils.parsers.rstr   sphinxr   sphinx.domainsr   sphinx.environmentr   sphinx.utilr   r   sphinx.util.docutilsr   r   sphinx.util.nodesr   sphinx.util.typingr   sphinx.applicationr   	getLoggerr>   r5   r   rG   rf   r7   r{   rE   r"   r!   <module>r      s     B B B B B B B B B B B B B B B B       / / / / / / / / + + + + + +       ! ! ! ! ! ! / / / / / / 0 0 0 0 0 0 0 0 ? ? ? ? ? ? ? ? 1 1 1 1 1 1 ) ) ) ) ) ) *)))))) 
	8	$	$* * * * *& * * *>' ' ' ' '_ ' ' '@) ) ) ) ) ) ) ).
x 
DcN 
 
 
 
 
 
r"   