ó
öŔ\c           @   sł   d  Z  d d l m Z d d l 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 d d l m Z n  d	 e f d
     YZ d   Z d   Z d S(   sé   
    sphinx.ext.linkcode
    ~~~~~~~~~~~~~~~~~~~

    Add external links to module code in Python object descriptions.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
i˙˙˙˙(   t   nodesN(   t   addnodes(   t   SphinxError(   t   _(   t   Anyt   Dictt   Set(   t   Sphinxt   LinkcodeErrorc           B   s   e  Z d  Z RS(   s   linkcode error(   t   __name__t
   __module__t   category(    (    (    s2   lib/python2.7/site-packages/sphinx/ext/linkcode.pyR      s   c      
   C   sŘ  |  j  j } t | j d d   } t | j j  sB t d   n  t d d d g d d g d d g d	 d
 d g  } x\| j	 t
 j  D]H} | j d  } t   } x'| D]} t | t
 j  sË q­ n  i  }	 xB | j | g   D]. }
 | j |
  } | sd } n  | |	 |
 <qä W|	 s"q­ n  | | |	  } | s=q­ n  | | k s­ | rVq­ n  | j |  t
 j d d  } | t j d d d t d | 7} | d c t j d t d  d d g 7<| | 7} q­ Wq Wd  S(   Nt   linkcode_resolves3   Function `linkcode_resolve` is not given in conf.pyt   pyt   modulet   fullnamet   ct   namest   cppt   jst   objectt   domaint    t   exprt   htmlt   internalt   refurii    s   [source]t   classess   viewcode-link(   t   buildert   envt   getattrt   configt   Nonet   callableR   R   t   dictt   traverseR   t   desct   gett   sett
   isinstancet   desc_signaturet   addt   onlyR    t	   referencet   Falset   inlineR   (   t   appt   doctreeR   t   resolve_targett   domain_keyst   objnodeR   t   urist   signodet   infot   keyt   valuet   urit   onlynode(    (    s2   lib/python2.7/site-packages/sphinx/ext/linkcode.pyt   doctree_read   sF    				"c         C   s8   |  j  d t  |  j d d  d  i t j d 6t d 6S(   Ns   doctree-readR   R   t   versiont   parallel_read_safe(   t   connectR:   t   add_config_valueR    t   sphinxt   __display_version__t   True(   R.   (    (    s2   lib/python2.7/site-packages/sphinx/ext/linkcode.pyt   setupP   s    (   t   __doc__t   docutilsR    R?   R   t   sphinx.errorsR   t   sphinx.localeR   R,   t   typingR   R   R   t   sphinx.applicationR   R   R:   RB   (    (    (    s2   lib/python2.7/site-packages/sphinx/ext/linkcode.pyt   <module>
   s   	3