
    Fe{                       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r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jB                  e"      Z# G d de      Z$ G d de      Z%ddZ&y)zThe math domain.    )annotations)TYPE_CHECKINGAny)nodes)ElementNodemake_idsystem_message)Domain)__)XRefRole)logging)make_refnode)Iterable)pending_xref)Sphinx)Builder)BuildEnvironmentc                      e Zd Z	 	 	 	 ddZy)MathReferenceRolec                    d|d<   |gg fS )Nmath	refdomain )selfdocumentenvnodeis_refs        5/usr/lib/python3/dist-packages/sphinx/domains/math.pyresult_nodeszMathReferenceRole.result_nodes   s    "[vrz    N)
r   nodes.documentr   r   r   r   r   boolreturnz'tuple[list[Node], list[system_message]])__name__
__module____qualname__r!   r   r"   r    r   r      s    !&Mr"   r   c                      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       ZdddZddZ	 	 	 	 ddZddZddZ	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZddZdd dZy)!
MathDomainzMathematics domain.r   mathematics)objectshas_equationsdict[str, Any]initial_dataeqzequation not found: %(target)s)displaymathNnumrefc                :    | j                   j                  di       S )Nr,   )data
setdefaultr   s    r    	equationszMathDomain.equations6   s    yy##Ir22r"   Nc                    || j                   v r7| j                   |   d   }t        j                  t        d      ||fz  |       || j                  j                  d      dz   f| j                   |<   y )Nr   z4duplicate label of equation %s, other instance in %slocationeqno   )r7   loggerwarningr   r   new_serialno)r   docnamelabelidr:   others        r    note_equationzMathDomain.note_equation:   st    dnn$NN7+A.ENN2TU#U+,6>  @ $+DHH,A,A&,IA,M"Nwr"   c                D    || j                   v r| j                   |   d   S y )Nr<   )r7   )r   rA   s     r    get_equation_number_forz"MathDomain.get_equation_number_forB   s%    dnn$>>'*1--r"   c                `    dd}t        |j                  |            | j                  d   |<   y )Nc                V    t        | t        j                  t        j                  f      S N)
isinstancer   r   
math_block)r   s    r    	math_nodez)MathDomain.process_doc.<locals>.math_nodeJ   s    dUZZ1A1A$BCCr"   r-   )r   r   r%   r$   )anyfindallr4   )r   r   r@   r   rK   s        r    process_doczMathDomain.process_docH   s-    	D /2(2B2B92M.N		/"7+r"   c                    t        | j                  j                               D ]  \  }\  }}||k(  s| j                  |=  | j                  d   j	                  |d        y )Nr-   )listr7   itemsr4   pop)r   r@   equation_iddoc_eqnos        r    	clear_doczMathDomain.clear_docO   sZ    )-dnn.B.B.D)E 	0%K#ug~NN;/	0 			/"&&w5r"   c                    |d   j                         D ]  \  }\  }}||v s||f| j                  |<     |D ]  }|d   |   | j                  d   |<    y )Nr,   r-   )rQ   r7   r4   )r   docnames	otherdatarA   rT   r;   r@   s          r    merge_domaindatazMathDomain.merge_domaindataV   sq    $-i$8$>$>$@ 	6 G[c4h+.+w'	6   	VG2;O2LW2UDIIo&w/	Vr"   c                   |dv sJ | j                   j                  |      }|r|\  }	}
t        d|z        }|j                  j                  ri|j                  j
                  rS|	|j                  v rB|j                  |	   d   j                  |d      }dj                  t        t        |            }nd}nt        |
      }	 |j                  j                  xs d}t        j                  |j                  |            }t%        |||	||      S y # t        $ r[}t        j!                  t#        d	      ||
       t        j                  d|
z        }t        j                  d|
z        }Y d }~od }~ww xY w)N)r0   r2   zequation-%sr1   r   . z
({number}))numberzInvalid math_eqref_format: %rr9   z(%d))r7   getr	   configmath_numfignumfigtoc_fignumbersjoinmapstrmath_eqref_formatr   TextformatKeyErrorr=   r>   r   r   )r   r   fromdocnamebuildertyptargetr   contnoderesultr@   r^   node_idnumbersr;   eqref_formattitleexcs                    r    resolve_xrefzMathDomain.resolve_xref^   sP    &&&&##F+$OGVmf45Gzz%%#***;*;c000!009-HLLWVXYG88CW$56DD6{4"zz;;K|

<#6#6d#6#CD  gwNN  4r"ABC(,  .

6F?3

6F?3	4s   ?D 	E5AE00E5c           	     B    | j                  |||d|||      }|g S d|fgS )Nr0   )rv   )r   r   rk   rl   rn   r   ro   refnodes           r    resolve_any_xrefzMathDomain.resolve_any_xref|   s8     ##CgtVTS[\?I7O$$r"   c                    g S rH   r   r6   s    r    get_objectszMathDomain.get_objects   s    	r"   c                    |r| j                   d   j                  |d      S t        | j                   d   j                               S )Nr-   F)r4   r_   rL   values)r   r@   s     r    r-   zMathDomain.has_equations   s>    99_-11'5AAtyy188:;;r"   )r%   zdict[str, tuple[str, int]]rH   )r@   rf   rA   rf   r:   r   r%   None)rA   rf   r%   z
int | None)r   r   r@   rf   r   r#   r%   r~   )r@   rf   r%   r~   )rX   zIterable[str]rY   r.   r%   r~   )r   r   rk   rf   rl   r   rm   rf   rn   rf   r   r   ro   r   r%   zElement | None)r   r   rk   rf   rl   r   rn   rf   r   r   ro   r   r%   zlist[tuple[str, Element]])r%   z-Iterable[tuple[str, str, str, str, str, int]])r@   z
str | Noner%   r$   )r&   r'   r(   __doc__namelabelr/   __annotations__dangling_warningsr   rJ   enumerable_nodesr   rolespropertyr7   rC   rE   rN   rV   rZ   rv   ry   r{   r-   r   r"   r    r*   r*   #   s    DE $L. 
 	. 	/ 	#%E 3 3OO,O15O6V'*2>JQ(<%!$%,8%DK%7%<r"   r*   c                r    | j                  t               | j                  dt        d             dddddS )Nr0   T)warn_danglingbuiltin   )versionenv_versionparallel_read_safeparallel_write_safe)
add_domainr*   add_roler   )apps    r    setupr      s:    NN:LL(t<= "#	 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   sphinx.addnodesr   sphinx.applicationr   sphinx.buildersr   sphinx.environmentr   	getLoggerr&   r=   r   r*   r   r   r"   r    <module>r      sl     " %  A A !  !  *(,)'3 
		8	$ i< i<X	r"   