o
    Ni_                     @  s  d Z ddlmZ ddlmZm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 erhd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# e$e%Z&G dd deZ'G dd deZ(dddZ)dS )zThe math domain.    )annotations)TYPE_CHECKINGAny)nodes)ElementNodemake_idsystem_message)Domain)__)XRefRole)logging)make_refnode)IterableSet)pending_xref)Sphinx)Builder)BuildEnvironment)ExtensionMetadatac                   @  s   e Zd ZdddZdS )MathReferenceRoledocumentnodes.documentenvr   noder   is_refboolreturn'tuple[list[Node], list[system_message]]c                 C  s   d|d< |gg fS )Nmath	refdomain )selfr   r   r   r   r!   r!   G/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/domains/math.pyresult_nodes   s   
zMathReferenceRole.result_nodesN)
r   r   r   r   r   r   r   r   r   r   )__name__
__module____qualname__r$   r!   r!   r!   r#   r      s    r   c                   @  s   e Zd ZU dZdZdZi i dZded< ddiZe	j
d	iZd
e iZed>ddZd?d@ddZdAddZdBdd ZdCd!d"ZdDd&d'ZdEd2d3ZdFd5d6ZdGd8d9Zd?dHd<d=ZdS )I
MathDomainzMathematics domain.r   mathematics)objectshas_equationsdict[str, Any]initial_dataeqzequation not found: %(target)s)displaymathNnumrefr   dict[str, tuple[str, int]]c                 C  s   | j di S )Nr*   )data
setdefaultr"   r!   r!   r#   	equations8   s   zMathDomain.equationsNdocnamestrlabelidlocationr   Nonec                 C  sL   || j v r| j | d }tjtd|||d || jdd f| j |< d S )Nr   z4duplicate label of equation %s, other instance in %sr9   eqno   )r5   loggerwarningr   r   new_serialno)r"   r6   r8   r9   otherr!   r!   r#   note_equation<   s   

zMathDomain.note_equation
int | Nonec                 C  s   || j v r| j | d S d S )Nr=   )r5   )r"   r8   r!   r!   r#   get_equation_number_forD   s   
z"MathDomain.get_equation_number_forr   r   r   r   c                 C  s&   ddd}t ||| jd |< d S )	Nr   r   r   r   c                 S  s   t | tjtjB S N)
isinstancer   r   
math_block)r   r!   r!   r#   	math_nodeL   s   z)MathDomain.process_doc.<locals>.math_noder+   )r   r   r   r   )anyfindallr2   )r"   r   r6   r   rH   r!   r!   r#   process_docJ   s   
zMathDomain.process_docc                 C  sB   t | j D ]\}\}}||kr| j|= q| jd |d  d S )Nr+   )listr5   itemsr2   pop)r"   r6   equation_iddoc_eqnor!   r!   r#   	clear_docQ   s
   zMathDomain.clear_docdocnamesSet[str]	otherdatac                 C  sT   |d   D ]\}\}}||v r||f| j|< q|D ]}|d | | jd |< qd S )Nr*   r+   )rM   r5   r2   )r"   rS   rU   r8   rP   r<   r6   r!   r!   r#   merge_domaindataX   s   zMathDomain.merge_domaindatafromdocnamebuilderr   typtargetr   r   contnoder   Element | Nonec              
   C  s"  |dv sJ | j |}|r|\}	}
td| }|jjrG|jjrG|	|jv rD|j|	 d |d}dtt	|}|jj
|dd}nd}nt	|
}z|jjpQd}t|j|d	}W n* ty } ztjtd
||d td|
 }td|
 }W Y d }~nd }~ww t|||	||S d S )N)r.   r0   zequation-%sr/   r!   .r=    z
({number}))numberzInvalid math_eqref_format: %rr;   z(%d))r5   getr   configmath_numfignumfigtoc_fignumbersjoinmapr7   math_numseprsplitmath_eqref_formatr   TextformatKeyErrorr>   r?   r   r   )r"   r   rW   rX   rY   rZ   r   r[   resultr6   r_   node_idnumbersr<   eqref_formattitleexcr!   r!   r#   resolve_xref`   s2   
zMathDomain.resolve_xreflist[tuple[str, Element]]c              	   C  s,   |  |||d|||}|d u rg S d|fgS )Nr.   )rs   )r"   r   rW   rX   rZ   r   r[   refnoder!   r!   r#   resolve_any_xref   s   
zMathDomain.resolve_any_xref-Iterable[tuple[str, str, str, str, str, int]]c                 C  s   g S rE   r!   r4   r!   r!   r#   get_objects   s   zMathDomain.get_objects
str | Noner   c                 C  sD   |st | jd  S | jd |dp!t t| j| jj|dS )Nr+   Fr!   )rI   r2   valuesr`   rf   r+   r   toctree_includes)r"   r6   r!   r!   r#   r+      s
   zMathDomain.has_equations)r   r1   rE   )r6   r7   r8   r7   r9   r   r   r:   )r8   r7   r   rC   )r   r   r6   r7   r   r   r   r:   )r6   r7   r   r:   )rS   rT   rU   r,   r   r:   )r   r   rW   r7   rX   r   rY   r7   rZ   r7   r   r   r[   r   r   r\   )r   r   rW   r7   rX   r   rZ   r7   r   r   r[   r   r   rt   )r   rw   )r6   ry   r   r   )r%   r&   r'   __doc__namelabelr-   __annotations__dangling_warningsr   rG   enumerable_nodesr   rolespropertyr5   rB   rD   rK   rR   rV   rs   rv   rx   r+   r!   r!   r!   r#   r(   $   s0   
 






	r(   appr   r   r   c                 C  s*   |  t | dtdd dddddS )Nr.   T)warn_danglingbuiltin   )versionenv_versionparallel_read_safeparallel_write_safe)
add_domainr(   add_roler   )r   r!   r!   r#   setup   s   
r   N)r   r   r   r   )*r|   
__future__r   typingr   r   docutilsr   docutils.nodesr   r   r   r	   sphinx.domainsr
   sphinx.localer   sphinx.rolesr   sphinx.utilr   sphinx.util.nodesr   collections.abcr   r   sphinx.addnodesr   sphinx.applicationr   sphinx.buildersr   sphinx.environmentr   sphinx.util.typingr   	getLoggerr%   r>   r   r(   r   r!   r!   r!   r#   <module>   s*    
q