B
    .Kc                 @   s  d Z ddlmZmZmZmZmZ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 dd
lmZ ddlmZ erd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ee'ef dddZ(dS )zThe math domain.    )TYPE_CHECKINGAnyDictIterableListOptionalTuple)nodes)ElementNodemake_idsystem_message)pending_xref)Domain)BuildEnvironment)__)XRefRole)logging)make_refnode)Sphinx)Builderc               @   s4   e Zd Zejeeeee	e
 e	e f dddZdS )MathReferenceRole)documentenvnodeis_refreturnc             C   s   d|d< |gg fS )NmathZ	refdomain )selfr   r   r   r   r   r   2lib/python3.7/site-packages/sphinx/domains/math.pyresult_nodes   s    zMathReferenceRole.result_nodesN)__name__
__module____qualname__r	   r   r   r
   boolr   r   r   r   r!   r   r   r   r    r      s   r   c            
   @   s2  e Zd ZU dZdZdZi i dZeed< ddiZ	e
jdiZd	e iZeeeeeef f d
ddZd(eeeddddZeedddZeee
jddddZeddddZee eddddZeedeeeeee ddd Z eedeeee!eeef  d!d"d#Z"e!d
d$d%Z#d)ee$dd&d'Z%dS )*
MathDomainzMathematics domain.r   Zmathematics)objectshas_equationsinitial_dataeqzequation not found: %(target)s)displaymathNnumref)r   c             C   s   | j di S )Nr'   )data
setdefault)r   r   r   r    	equations2   s    zMathDomain.equationsN)docnamelabelidlocationr   c             C   sP   || j kr2| j | d }tjtd||f |d || jdd f| j |< d S )Nr   z4duplicate label of equation %s, other instance in %s)r2   eqno   )r/   loggerwarningr   r   Znew_serialno)r   r0   r1   r2   otherr   r   r    note_equation6   s
    

zMathDomain.note_equation)r1   r   c             C   s    || j kr| j | d S d S d S )Nr4   )r/   )r   r1   r   r   r    get_equation_number_for>   s    
z"MathDomain.get_equation_number_for)r   r0   r   r   c             C   s,   t tddd}t||| jd |< d S )N)r   r   c             S   s   t | tjtjfS )N)
isinstancer	   r   
math_block)r   r   r   r    	math_nodeF   s    z)MathDomain.process_doc.<locals>.math_noder(   )r   r%   anyfindallr-   )r   r   r0   r   r<   r   r   r    process_docD   s    zMathDomain.process_doc)r0   r   c             C   sF   x.t | j D ]\}\}}||kr| j|= qW | jd |d  d S )Nr(   )listr/   itemsr-   pop)r   r0   Zequation_iddocZ_eqnor   r   r    	clear_docK   s    zMathDomain.clear_doc)docnames	otherdatar   c             C   s\   x2|d   D ]"\}\}}||kr||f| j|< qW x"|D ]}|d | | jd |< q:W d S )Nr'   r(   )rA   r/   r-   )r   rE   rF   r1   rC   r3   r0   r   r   r    merge_domaindataR   s
    
zMathDomain.merge_domaindatar   )r   fromdocnamebuildertyptargetr   contnoder   c          
   C   s  |dkst | j|d\}}	|rtd| }
|jjrx|jjrx||jkrr|j| d |
d}dt	t
|}qd}nt
|	}y"|jjpd}t|j|d	}W nR tk
r } z4tjtd
||d td|	 }td|	 }W d d }~X Y nX t||||
|S d S d S )N)r*   r,   )NNzequation-%sr+   r   . z
({number}))numberzInvalid math_eqref_format: %r)r2   z(%d))AssertionErrorr/   getr   ZconfigZmath_numfigZnumfigZtoc_fignumbersjoinmapstrZmath_eqref_formatr	   ZTextformatKeyErrorr5   r6   r   r   )r   r   rH   rI   rJ   rK   r   rL   r0   rO   Znode_idZnumbersr3   Zeqref_formattitleexcr   r   r    resolve_xrefZ   s(    
 zMathDomain.resolve_xref)r   rH   rI   rK   r   rL   r   c          	   C   s0   |  |||d|||}|d kr"g S d|fgS d S )Nr*   )rY   )r   r   rH   rI   rK   r   rL   Zrefnoder   r   r    resolve_any_xrefw   s    zMathDomain.resolve_any_xrefc             C   s   g S )Nr   )r   r   r   r    get_objects   s    zMathDomain.get_objectsc             C   s,   |r| j d |dS t| j d  S d S )Nr(   F)r-   rQ   r=   values)r   r0   r   r   r    r(      s    zMathDomain.has_equations)N)N)&r"   r#   r$   __doc__nameZlabelr)   r   __annotations__Zdangling_warningsr	   r;   Zenumerable_nodesr   ZrolespropertyrT   r   intr/   r   r8   r9   r   r   r?   rD   r   rG   r   r
   r   rY   r   rZ   r[   r%   r(   r   r   r   r    r&      s0   


 r&   r   )appr   c             C   s*   |  t | dtdd dddddS )Nr*   T)Zwarn_danglingZbuiltin   )versionZenv_versionZparallel_read_safeZparallel_write_safe)Z
add_domainr&   Zadd_roler   )rb   r   r   r    setup   s    
re   N))r]   typingr   r   r   r   r   r   r   Zdocutilsr	   Zdocutils.nodesr
   r   r   r   Zsphinx.addnodesr   Zsphinx.domainsr   Zsphinx.environmentr   Zsphinx.localer   Zsphinx.rolesr   Zsphinx.utilr   Zsphinx.util.nodesr   Zsphinx.applicationr   Zsphinx.buildersr   Z	getLoggerr"   r5   r   r&   rT   re   r   r   r   r    <module>   s"   $
k