Ñò
­JOc           @   s1  d  Z  d d k Z e i d j  o e d ƒ ‚ n d d k Z d d k Z d d k Z d d k l a l	 Z	 d d k
 l Z d d k Z d g d „ Z d	 „  Z t d
 „ Z d d k l Z d d k l Z d d k l Z d e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d „  Z d S(   s  
========
numpydoc
========

Sphinx extension that handles docstrings in the Numpy standard format. [1]

It will:

- Convert Parameters etc. sections to field lists.
- Convert See Also section to a See also entry.
- Renumber references.
- Extract the signature from the docstring, if it can't be determined otherwise.

.. [1] https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt

iÿÿÿÿNs   1.0.1s!   Sphinx 1.0.1 or newer is required(   t   get_doc_objectt   SphinxDocString(   t	   Directivei    c         C   s²  t  d |  i i d |  i i ƒ } | d j oE t i d t i t i Bƒ } | i d d i	 | ƒ ƒ i
 d ƒ | (n8 t | | d i	 | ƒ d | ƒ}	 t |	 ƒ i
 d ƒ | (|  i i o² t | d ƒ o¢ | i o˜ t | d	 ƒ o# t  d
 d | i | i f ƒ }
 n t  d
 | i ƒ }
 | d d d g 7} | g  } |  i i |
 i
 d ƒ D] } | d | qJ~ 7} n g  } xS | D]K } | i ƒ  } t i d | t i ƒ } | o | i | i d ƒ ƒ qvqvW| i d d „  ƒ | o¹ x¶ t | ƒ D]¤ \ } } x• | D] } t i d | ƒ o d | d t | ƒ } n d | | d f } | | i d | d | ƒ | | <| | i d | d | ƒ | | <qÿWqìWn | d c t | ƒ 7<d  S(   Nt	   use_plotst   show_class_memberst   moduleu(   ^\s*[#*=]{4,}\n[a-z0-9 -]+\n[#*=]{4,}\s*u    u   
t   configt   __name__t
   __module__t	   full_nameu   %s.%su   .. htmlonly::t    s   
u       %su   ^.. \[([a-z0-9_.-])\]i   t   keyc         S   s   t  |  ƒ S(    (   t   len(   t   x(    (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyt   <lambda>?   s    u   ^\d+$u   R%di    u   %s%du   [%s]_u   .. [%s](   t   dictR   t   numpydoc_use_plotst   numpydoc_show_class_memberst   ret   compilet   It   St   subt   joint   splitR    t   unicodet   numpydoc_edit_linkt   hasattrR   R   t   stript   matcht   appendt   groupt   sortt	   enumeratet   intt   replaceR   (   t   appt   whatt   namet   objt   optionst   linest   reference_offsett   cfgt   title_ret   doct   vt   _[1]R   t
   referencest   linet   mt   it   rt   new_r(    (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyt   mangle_docstrings   sJ    	)!
#
6   c         C   s¾   t  i | ƒ o/ t | d ƒ p d t i | i ƒ j o d	 St | ƒ p t | d ƒ p d  St | d ƒ p d  St t i | ƒ ƒ } | d o$ t i	 d d | d ƒ } | d f Sd  S(
   Nt   __init__s   initializes x; see R
   t   __argspec_is_invalid_t   __doc__t	   Signatureu   ^[^(]*u    (   R
   R
   (
   t   inspectt   isclassR   t   pydoct   getdocR7   t   callableR   R   R   (   R$   R%   R&   R'   R(   t   sigt   retannR-   (    (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyt   mangle_signatureN   s      c         C   s}   | a  |  i d t ƒ |  i d t ƒ |  i d d  t ƒ |  i d d  t ƒ |  i d t t ƒ |  i t	 ƒ |  i t
 ƒ d  S(   Ns   autodoc-process-docstrings   autodoc-process-signatureR   R   R   (   R    t   connectR6   RB   t   add_config_valuet   Nonet   Falset   Truet
   add_domaint   NumpyPythonDomaint   NumpyCDomain(   R$   t   get_doc_object_(    (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyt   setup]   s    (   t   ViewList(   t   CDomain(   t   PythonDomaint   ManglingDomainBasec           B   s    e  Z h  Z d  „  Z d „  Z RS(   c         O   s'   t  t |  ƒ i | | Ž  |  i ƒ  d  S(   N(   t   superRP   R7   t   wrap_mangling_directives(   t   selft   at   kw(    (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyR7   v   s    c         C   sA   x: |  i  i ƒ  D]) \ } } t |  i | | ƒ |  i | <q Wd  S(   N(   t   directive_mangling_mapt   itemst   wrap_mangling_directivet
   directives(   RS   R&   t   objtype(    (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyRR   z   s     (   R   R   RV   R7   RR   (    (    (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyRP   s   s   	RI   c           B   sE   e  Z d  Z h d d 6d d 6d d 6d d 6d d 6d d 6d d 6Z RS(   t   npt   functiont   classt	   exceptiont   methodt   classmethodt   staticmethodt	   attribute(   R   R   R&   RV   (    (    (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyRI      s   RJ   c           B   s7   e  Z d  Z h d d 6d d 6d d 6d d 6d d 6Z RS(	   s   np-cR\   Rb   t   membert   macroR]   t   typet   objectt   var(   R   R   R&   RV   (    (    (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyRJ   ‹   s   c            s#   d ˆ f ‡  ‡ f d †  ƒ  Y} | S(   Nt	   directivec              s   e  Z ‡ ‡  f d  †  Z RS(   c            s¼   |  i  i i i } d  } |  i o2 t i d |  i d ƒ } | i d ƒ i	 ƒ  } n | p |  i d } n t
 |  i ƒ } t | i ˆ | d  d  | ƒ t | |  i i ƒ |  _ ˆ  i |  ƒ S(   Ns   ^(.*\s+)?(.*?)(\(.*)?i    i   (   t   statet   documentt   settingst   envRE   t	   argumentsR   R   R   R   t   listt   contentR6   R$   RM   t   parentt   run(   RS   Rl   R&   R2   R)   (   t   base_directiveRZ   (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyRq   —   s    
(   R   R   Rq   (    (   RZ   Rr   (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyRh   –   s   (    (   Rr   RZ   Rh   (    (   RZ   Rr   s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyRX   •   s    (   R9   t   sphinxt   __version__t   RuntimeErrort   osR   R=   t   docscrape_sphinxR    R   t   sphinx.util.compatR   R;   R6   RB   RL   t   docutils.statemachineRM   t   sphinx.domains.cRN   t   sphinx.domains.pythonRO   Rf   RP   RI   RJ   RX   (    (    (    s4   /Users/rgommers/Code/scipy/doc/sphinxext/numpydoc.pyt   <module>   s"   $0	
