ó
öÀ„\c           @   sK  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 e r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 d d l m  Z  d d l! m" Z" n  e j# e$ ƒ Z% d e f d „  ƒ  YZ& d e	 f d „  ƒ  YZ' d „  Z( d S(   s¹   
    sphinx.domains.math
    ~~~~~~~~~~~~~~~~~~~

    The math domain.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
iÿÿÿÿ(   t   nodes(   t   make_id(   t
   math_block(   t   Domain(   t   __(   t   XRefRole(   t   logging(   t   make_refnode(   t   Anyt   Callablet   Dictt   Iterablet   Listt   Tuplet   Union(   t   Sphinx(   t   Builder(   t   BuildEnvironment(   t   RoleFunctiont   MathReferenceRolec           B   s   e  Z d  „  Z RS(   c         C   s   d | d <| g g  f S(   Nt   matht	   refdomain(    (   t   selft   documentt   envt   nodet   is_ref(    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyt   result_nodes"   s    
(   t   __name__t
   __module__R   (    (    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyR   !   s   t
   MathDomainc           B   s³   e  Z d  Z d Z d Z i i  d 6i  d 6Z i d d 6Z i d e 6d e	 j
 6Z i e ƒ  d 6Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s   Mathematics domain.R   t   mathematicst   objectst   has_equationss   equation not found: %(target)st   eqt   displaymatht   numrefc         C   s-   d „  } t  | j | ƒ ƒ |  j d | <d  S(   Nc         S   s   t  |  t j t j f ƒ S(   N(   t
   isinstanceR    R   R   (   R   (    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyt	   math_node>   s    R!   (   t   anyt   traverset   data(   R   R   t   docnameR   R&   (    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyt   process_doc<   s    	c         C   sh   xJ t  |  j d j ƒ  ƒ D]/ \ } \ } } | | k r |  j d | =q q W|  j d j | d  ƒ d  S(   NR    R!   (   t   listR)   t   itemst   popt   None(   R   R*   t   equation_idt   doct   eqno(    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyt	   clear_docC   s    ,c         C   s{   xJ | d j  ƒ  D]8 \ } \ } } | | k r | | f |  j d | <q q Wx' | D] } | d | |  j d | <qT Wd  S(   NR    R!   (   R-   R)   (   R   t   docnamest	   otherdatat   labelidR1   R2   R*   (    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyt   merge_domaindataK   s
    #c         C   sV  | d k s t  ‚ |  j d j | d ƒ \ } }	 | rNt d | ƒ }
 | j j r¯ | j j r¯ | | j k r¦ | j | d j |
 d ƒ }	 d j	 t
 t |	 ƒ ƒ }	 q¯ d }	 n  y1 | j j pÁ d } t j | j d	 |	 ƒ ƒ } WnU t k
 r7} t j t d
 ƒ | d | ƒt j d |	 ƒ } t j d |	 ƒ } n Xt | | | |
 | ƒ Sd  Sd  S(   NR"   R$   R    s   equation-%sR#   t   .t    s
   ({number})t   numbers   Invalid math_eqref_format: %rt   locations   (%d)(   R"   R$   (   NN(    (   t   AssertionErrorR)   t   getR/   R   t   configt   math_numfigt   numfigt   toc_fignumberst   joint   mapt   strt   math_eqref_formatR    t   Textt   formatt   KeyErrort   loggert   warningR   R   (   R   R   t   fromdocnamet   buildert   typt   targetR   t   contnodeR*   R:   t   node_idt   eqref_formatt   titlet   exc(    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyt   resolve_xrefT   s&    	c         C   s<   |  j  | | | d | | | ƒ } | d  k r1 g  S| g Sd  S(   NR"   (   RT   R/   (   R   R   RK   RL   RN   R   RO   t   refnode(    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyt   resolve_any_xrefm   s    !c         C   s   g  S(   N(    (   R   (    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyt   get_objectsu   s    c         C   s|   |  j  d } | | k rU | j | | d ƒ } t d ƒ | | f } t | ƒ ‚ n# |  j | ƒ } | | f | | <| Sd  S(   NR    i    s4   duplicate label of equation %s, other instance in %s(   R)   t   doc2pathR   t   UserWarningt   get_next_equation_number(   R   R   R*   R6   t	   equationst   patht   msgR2   (    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyt   add_equationy   s    c         C   sD   g  |  j  d j ƒ  D] } | d | k r | ^ q } t | ƒ d S(   NR    i    i   (   R)   t   valuest   len(   R   R*   R"   t   targets(    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyRZ   …   s    6c         C   s   t  |  j d j ƒ  ƒ S(   NR!   (   R'   R)   R_   (   R   (    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyR!   Š   s    N(   R#   N(   R#   N(   R   R   t   __doc__t   namet   labelt   initial_datat   dangling_warningsR/   R#   R    R   t   enumerable_nodesR   t   rolesR+   R3   R7   RT   RV   RW   R^   RZ   R!   (    (    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyR   (   s,   

									c         C   sF   |  j  t ƒ |  j d t d t ƒ ƒ i d d 6d d 6t d 6t d 6S(	   NR"   t   warn_danglingt   builtint   versioni   t   env_versiont   parallel_read_safet   parallel_write_safe(   t
   add_domainR   t   add_roleR   t   True(   t   app(    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyt   setup   s    N()   Rb   t   docutilsR    t   docutils.nodesR   t   sphinx.addnodesR   R#   t   sphinx.domainsR   t   sphinx.localeR   t   sphinx.rolesR   t   sphinx.utilR   t   sphinx.util.nodesR   t   Falset   typingR   R	   R
   R   R   R   R   t   sphinx.applicationR   t   sphinx.buildersR   t   sphinx.environmentR   t   sphinx.util.typingR   t	   getLoggerR   RI   R   R   Rs   (    (    (    s2   lib/python2.7/site-packages/sphinx/domains/math.pyt   <module>
   s$   4g