
    -Ph                    Z   d 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 dd
lmZ ddlmZ er*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  ddl!m"Z"m#Z#  ej$        e%          Z& G d de          Z' G d de          Z( G d de          Z)ddZ*dS )zThe index domain.    )annotations)TYPE_CHECKING)nodes)
directives)addnodes)Domain)logging)ReferenceRoleSphinxDirective)split_index_msg)process_index_entry)Set)AnyClassVar)Nodesystem_message)Sphinx)BuildEnvironment)ExtensionMetadata
OptionSpecc                  J    e Zd ZdZdZdZedd            Zdd	ZddZ	ddZ
dS )IndexDomainzIndex domain.indexreturn6dict[str, list[tuple[str, str, str, str, str | None]]]c                8    | j                             di           S Nentries)data
setdefault)selfs    T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/domains/index.pyr   zIndexDomain.entries%   s    y##Ir222    docnamestrNonec                <    | j                             |d            d S )N)r   pop)r!   r$   s     r"   	clear_doczIndexDomain.clear_doc)   s     $'''''r#   docnamesSet[str]	otherdatadict[str, Any]c                <    |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#   envr   documentr   c                   | j                             |j        g           }t          |                    t
          j                            D ]}|d         }	 |D ]\  }}}	}
}t          ||           	 |D ]}|                    |           B# t          $ rN}t                              t          |          |d           |j                            |           Y d}~d}~ww xY wdS )z7Process a document after it is read by the environment.r   r   )locationtypeN)r   r    r$   listfindallr   r   r   append
ValueErrorloggerwarningr%   parentremove)r!   r1   r$   r2   r   nodenode_entries
entry_typevalue
_target_id_main_category_keyentryexcs                 r"   process_doczIndexDomain.process_doc0   s   ,))#+r::))(.99:: 
	* 
	*D	?L*KW 7 7GJz5-#J66667 * * *ENN5))))*	  ) ) )s3xx$WEEE""4(((((((()
	* 
	*s   B
C'AC""C'N)r   r   )r$   r%   r   r&   )r*   r+   r,   r-   r   r&   )r1   r   r$   r%   r2   r   r   r&   )__name__
__module____qualname____doc__namelabelpropertyr   r)   r0   rG    r#   r"   r   r      s        DE3 3 3 X3( ( ( (B B B B* * * * * *r#   r   c                  H    e Zd ZU dZdZdZdZdZdej	        iZ
ded<   ddZdS )IndexDirectivez&Directive to add entries to the index.F   r   TrL   zClassVar[OptionSpec]option_specr   
list[Node]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   
rL    )namesindex-%sr   idsr   Finliner[   )	argumentssplitoptionsr   targetr1   new_serialnostater2   note_explicit_targetr   r   set_source_infoextendr   )r!   r]   
targetname
targetnodetargetid	indexnoderE   s          r"   runzIndexDirective.runK   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''' 	 	Ei ''#E:e+<Q+?@@    :&&r#   N)r   rT   )rH   rI   rJ   rK   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer   	unchangedrS   __annotations__rj   rO   r#   r"   rQ   rQ   @   sj         00K $
$)K    ' ' ' ' ' 'r#   rQ   c                      e Zd ZddZdS )	IndexRoler   'tuple[list[Node], list[system_message]]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 )
NrY   r   !rR   singlemainrW   r/   rZ   )r1   ra   has_explicit_titletitler   r`   
startswithr   r   r   Textrd   )r!   	target_idry   r   r   r`   texts          r"   rj   zIndexRole.runb   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   rs   )rH   rI   rJ   rj   rO   r#   r"   rr   rr   a   s(        ) ) ) ) ) )r#   rr   appr   r   r   c                    |                      t                     |                     dt                     |                     dt                                 dddddS )Nr   builtinrR   T)versionenv_versionparallel_read_safeparallel_write_safe)
add_domainr   add_directiverQ   add_rolerr   )r~   s    r"   setupr   x   s_    NN;g~...LL)++&&& "#	  r#   N)r~   r   r   r   )+rK   
__future__r   typingr   docutilsr   docutils.parsers.rstr   sphinxr   sphinx.domainsr   sphinx.utilr	   sphinx.util.docutilsr
   r   sphinx.util.index_entriesr   sphinx.util.nodesr   collections.abcr   r   r   docutils.nodesr   r   sphinx.applicationr   sphinx.environmentr   sphinx.util.typingr   r   	getLoggerrH   r:   r   rQ   rr   r   rO   r#   r"   <module>r      s     " " " " " "                   + + + + + +       ! ! ! ! ! !       ? ? ? ? ? ? ? ? 5 5 5 5 5 5 1 1 1 1 1 1 A######$$$$$$$$33333333))))))333333@@@@@@@@ 
	8	$	$* * * * *& * * *B' ' ' ' '_ ' ' 'B) ) ) ) ) ) ) ).
 
 
 
 
 
r#   