ó
öÀ„\c           @   sv  d  Z  d d l 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 d d	 l m Z e rù d d
 l 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  d ƒ Z! d e f d „  ƒ  YZ" d „  Z# d e" f d „  ƒ  YZ$ d e" f d „  ƒ  YZ% d e	 f d „  ƒ  YZ& d „  Z' d S(   sÃ   
    sphinx.domains.rst
    ~~~~~~~~~~~~~~~~~~

    The reStructuredText domain.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
iÿÿÿÿN(   t	   iteritems(   t   addnodes(   t   ObjectDescription(   t   Domaint   ObjType(   t   _(   t   XRefRole(   t   make_refnode(   t   Anyt   Dictt   Iteratort   Listt   Tuple(   t   nodes(   t   Sphinx(   t   Builder(   t   BuildEnvironments   \.\. (.+?)::(.*)$t
   ReSTMarkupc           B   s    e  Z d  Z d „  Z d „  Z RS(   s-   
    Description of generic reST markup.
    c         C   s4  |  j  d | } | |  j j j k rï | d j | ƒ | d j | ƒ |  j | d <|  j j j | ƒ |  j j d d } |  j  | f } | | k rÜ |  j	 j
 j d |  j  | f d |  j j | | ƒ d	 |  j ƒn  |  j j | | <n  |  j |  j  | ƒ } | r0|  j d
 j d | | d d  f ƒ n  d  S(   Nt   -t   namest   idst   firstt   rstt   objectss    duplicate description of %s %s, s   other instance in t   linet   entriest   singlet    (   t   objtypet   statet   documentR   t   appendR   t   note_explicit_targett   envt
   domaindatat   state_machinet   reportert   warningt   doc2patht   linenot   docnamet   get_index_textt	   indexnodet   None(   t   selft   namet   sigt   signodet
   targetnameR   t   keyt	   indextext(    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyt   add_target_and_index(   s"    +c         C   s>   |  j  d k r t d ƒ | S|  j  d k r: t d ƒ | Sd S(   Nt	   directives   %s (directive)t   roles	   %s (role)R   (   R   R   (   R,   t
   objectnameR-   (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyR)   >   s
    (   t   __name__t
   __module__t   __doc__R3   R)   (    (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyR   #   s   	c         C   sp   |  j  ƒ  } | j d ƒ s% | d f St j | ƒ } | sD | d f S| j ƒ  \ } } | j  ƒ  d | j  ƒ  f S(   sŒ   Parse a directive signature.

    Returns (directive, arguments) string tuple.  If no arguments are given,
    returns (directive, '').
    t   .R   t    (   t   stript
   startswitht
   dir_sig_ret   matcht   groups(   t   dt   dirt   mt
   parsed_dirt   parsed_args(    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyt   parse_directiveG   s    

t   ReSTDirectivec           B   s   e  Z d  Z d „  Z RS(   s*   
    Description of a reST directive.
    c         C   sa   t  | ƒ \ } } d | } | t j | | ƒ 7} t | ƒ d k r] | t j | | ƒ 7} n  | S(   Ns   .. %s::i    (   RF   R   t	   desc_namet   lent   desc_addname(   R,   R.   R/   R-   t   argsRH   (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyt   handle_signature]   s    
(   R7   R8   R9   RL   (    (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyRG   Y   s   t   ReSTRolec           B   s   e  Z d  Z d „  Z RS(   s%   
    Description of a reST role.
    c         C   s"   | t  j d | d | ƒ 7} | S(   Ns   :%s:(   R   RH   (   R,   R.   R/   (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyRL   k   s    (   R7   R8   R9   RL   (    (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyRM   g   s   t
   ReSTDomainc           B   s´   e  Z d  Z d Z d Z i e e d ƒ d ƒ d 6e e d ƒ d ƒ d 6Z i e d 6e	 d 6Z
 i e ƒ  d 6e ƒ  d 6Z i i  d 6Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z RS(   s   ReStructuredText domain.R   t   reStructuredTextR4   RB   R5   R   c         C   sW   xP t  |  j d j ƒ  ƒ D]5 \ \ } } } | | k r |  j d | | f =q q Wd  S(   NR   (   t   listt   datat   items(   R,   R(   t   typR-   t   doc(    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyt	   clear_doc†   s    ,c         C   sQ   xJ | d j  ƒ  D]8 \ \ } } } | | k r | |  j d | | f <q q Wd  S(   NR   (   RR   RQ   (   R,   t   docnamest	   otherdataRS   R-   RT   (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyt   merge_domaindataŒ   s    #c      	   C   sv   |  j  d } |  j | ƒ }	 xS |	 D]K }
 |
 | f | k r# t | | | |
 | f |
 d | | | d |
 ƒ Sq# Wd  S(   NR   R   R;   (   RQ   t   objtypes_for_roleR   (   R,   R!   t   fromdocnamet   builderRS   t   targett   nodet   contnodeR   t   objtypesR   (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyt   resolve_xref“   s    	c   
      C   s–   |  j  d } g  } x| |  j D]q }	 |	 | f |  j  d k r | j d |  j |	 ƒ t | | | |	 | f |	 d | | | d |	 ƒ f ƒ q q W| S(   NR   s   rst:R   R;   (   RQ   t   object_typesR   t   role_for_objtypeR   (
   R,   R!   RZ   R[   R\   R]   R^   R   t   resultsR   (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyt   resolve_any_xrefŸ   s    	c         c   sM   xF t  |  j d ƒ D]1 \ \ } } } | | | | | d | d f Vq Wd  S(   NR   R   i   (   R    RQ   (   R,   RS   R-   R(   (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyt   get_objects­   s    &(   R7   R8   R9   R-   t   labelR   R   Ra   RG   RM   t
   directivesR   t   rolest   initial_dataRU   RX   R`   Rd   Re   (    (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyRN   q   s&   


				c         C   s-   |  j  t ƒ i d d 6d d 6t d 6t d 6S(   Nt   builtint   versioni   t   env_versiont   parallel_read_safet   parallel_write_safe(   t
   add_domainRN   t   True(   t   app(    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyt   setup³   s    ((   R9   t   ret   sixR    t   sphinxR   t   sphinx.directivesR   t   sphinx.domainsR   R   t   sphinx.localeR   t   sphinx.rolesR   t   sphinx.util.nodesR   t   Falset   typingR   R	   R
   R   R   t   docutilsR   t   sphinx.applicationR   t   sphinx.buildersR   t   sphinx.environmentR   t   compileR>   R   RF   RG   RM   RN   Rr   (    (    (    s1   lib/python2.7/site-packages/sphinx/domains/rst.pyt   <module>
   s*   ($	
B