ó
(*¿\c           @` s©  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z y d  d l	 m
 Z
 Wn! e k
 r d  d l m
 Z
 n Xd  d l Z d  d l m Z d  d l m Z d  d l Z d  d l m Z d d l m Z m Z m Z d d	 l m Z e j d  d
 k r#d „  Z n	 d „  Z d Z d e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ  d e f d „  ƒ  YZ! e" e" i  e" d „ Z# d S(   i    (   t   divisiont   absolute_importt   print_functionN(   t   Callable(   t   FileSystemLoader(   t   SandboxedEnvironment(   t   BuiltinTemplateLoaderi   (   t   NumpyDocStringt   FunctionDoct   ClassDoc(   t	   make_xrefi   c         C` s   |  S(   N(    (   t   s(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   <lambda>   t    c         C` s   t  |  d ƒ S(   Nt   unicode_escape(   t   unicode(   R   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyR      R   s1   \b(import +matplotlib|from +matplotlib +import)\bt   SphinxDocStringc           B` sà   e  Z i  d  „ Z d „  Z d d „ Z d „  Z d d „ Z d „  Z d „  Z d	 „  Z	 d
 d „ Z
 d „  Z d „  Z e d „ Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d d „ Z RS(   c         C` s'   t  j |  | d | ƒ|  j | ƒ d  S(   Nt   config(   R   t   __init__t   load_config(   t   selft	   docstringR   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyR       s    c         C` s  | j  d t ƒ |  _ | j  d t ƒ |  _ | j  d t ƒ |  _ | j  d t ƒ |  _ | j  d t ƒ |  _ | j  d t ƒ  ƒ |  _	 | j  d t
 ƒ  ƒ |  _ | j  d d  ƒ |  _ |  j d  k rt j j t j j t ƒ d	 ƒ g } t | ƒ } t d
 | ƒ } | j d ƒ |  _ n  d  S(   Nt	   use_plotst   use_blockquotest   class_members_toctreet   attributes_as_param_listt   xref_param_typet   xref_aliasest   xref_ignoret   templatet	   templatest   loaders   numpydoc_docstring.rst(   t   gett   FalseR   R   t   TrueR   R   R   t   dictR   t   setR   t   NoneR   t   ost   patht   joint   dirnamet   __file__R   R   t   get_template(   R   R   t   template_dirst   template_loadert   template_env(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyR   $   s    $t   `c         C` s   d | d g S(   Ns   .. rubric:: R   (    (   R   t   namet   symbol(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_header4   s    c         C` s   d | d g S(   Nt   :(    (   R   R0   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_field_list7   s    i   c         C` s0   g  } x# | D] } | d | | g 7} q W| S(   Nt    (    (   R   t   doct   indentt   outt   line(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_indent:   s    c         C` s2   d g S|  d r' d |  d g d g Sd g Sd  S(   NR   t	   Signatures   ``%s``(    (   R   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_signature@   s    
c         C` s   |  d d g S(   Nt   SummaryR   (    (   R   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_summaryG   s    c         C` s   |  d d g S(   Ns   Extended SummaryR   (    (   R   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_extended_summaryJ   s    t   Returnsc         C` sD  d } d } g  } |  | r@| |  j  | ƒ 7} | d g 7} x|  | D]ò } | j } | r€ |  j r€ t | |  j |  j ƒ } n  | j rµ | |  j | | j j ƒ  | f g ƒ 7} n  | |  j | | j ƒ  g ƒ 7} | j	 sú | |  j d g d ƒ 7} n2 |  j
 r| d g 7} n  | |  j | j	 d ƒ 7} | d g 7} qG Wn  | S(   Ns   **%s** : %ss   %sR   s   ..i   (   R4   t   typeR   R
   R   R   R0   R:   t   stript   descR   (   R   R0   t	   named_fmtt   unnamed_fmtR8   t   paramt
   param_type(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_returnsM   s0    
		 		c         C` s@   | d  d k r d | d S| d  d k r8 d | d S| Sd  S(   Ni   s   **s   \*\*i   t   *s   \*(    (   R   R0   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _escape_args_and_kwargsj   s
    c   
      C` s|  |  j  | j ƒ  ƒ } d | } | s/ | | f St |  j | d ƒ } t | ƒ pz t | t ƒ pz t j	 | ƒ pz t j
 | ƒ s† d } n  t j | ƒ } | ož | s« | | f St |  d d ƒ } | rÐ d | } n d } d | | | f } | rrt j d | j ƒ  d ƒ d } t j d	 d
 j | j ƒ  ƒ ƒ }	 |	 rM|	 j d ƒ j ƒ  } n | j d ƒ d } | j d ƒ } n  | | f S(   s  Determine how to display a parameter

        Emulates autosummary behavior if fake_autosummary

        Parameters
        ----------
        param : str
            The name of the parameter
        desc : list of str
            The parameter description as given in the docstring. This is
            ignored when autosummary logic applies.
        fake_autosummary : bool
            If True, autosummary-style behaviour will apply for params
            that are attributes of the class and have a docstring.

        Returns
        -------
        display_param : str
            The marked up parameter name for display. This may include a link
            to the corresponding attribute's own documentation.
        desc : list of str
            A list of description lines. This may be identical to the input
            ``desc``, if ``autosum is None`` or ``param`` is not a class
            attribute, or it will be a summary of the class attribute's
            docstring.

        Notes
        -----
        This does not have the autosummary functionality to display a method's
        signature, and hence is not used to format methods.  It may be
        complicated to incorporate autosummary's signature mangling, as it
        relies on Sphinx's plugin mechanism.
        s   **%s**t   _nameR   s   %s.s   :obj:`%s <%s%s>`s   \n\s*\ni   i    s   ^([A-Z].*?\.)(?:\s|$)R5   s   
N(   RJ   RB   t   getattrt   _objR%   t   callablet
   isinstancet   propertyt   inspectt   isgetsetdescriptort   ismemberdescriptort   pydoct   getdoct   ret   splitt   searchR(   t   groupt	   partition(
   R   RF   RC   t   fake_autosummaryt   display_paramt	   param_objt   obj_doct   prefixt   link_prefixt   m(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _process_paramr   s:    "

	

	c   	      C` sH  g  } |  | rD| |  j  | ƒ 7} | d g 7} x|  | D]} |  j | j | j | ƒ \ } } g  } | r~ | j | ƒ n  | j } | rÊ | j } |  j rº t | |  j |  j	 ƒ } n  | j | ƒ n  | |  j
 d j | ƒ g ƒ 7} | r|  j r| d g 7} n | sd g } n  | |  j
 | d ƒ 7} | d g 7} q; Wn  | S(   s†  Generate RST for a listing of parameters or similar

        Parameter names are displayed as bold text, and descriptions
        are in blockquotes.  Descriptions may therefore contain block
        markup as well.

        Parameters
        ----------
        name : str
            Section name (e.g. Parameters)
        fake_autosummary : bool
            When True, the parameter names may correspond to attributes of the
            object beign documented, usually ``property`` instances on a class.
            In this case, names will be linked to fuller descriptions.

        Returns
        -------
        rst : list of str
        R   s    : s   ..i   (   R4   Rb   R0   RC   t   appendRA   R   R
   R   R   R:   R(   R   (	   R   R0   R[   R8   RF   R\   RC   t   partsRG   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_param_listÁ   s8    
			c         C` s0   t  |  d ƒ r |  j St  |  d ƒ r, |  j Sd  S(   Nt   _clst   _f(   t   hasattrRf   Rg   R%   (   R   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyRM   õ   s
    c         C` s‚  g  } |  | r~| d | d g 7} t  |  d d ƒ } | rI d | } n  g  } g  } x· |  | D]« } | j d | j j ƒ  ƒ } t  |  j | j d ƒ } t | ƒ pÀ t | t ƒ pÀ t	 j
 | ƒ sÌ d } n  | rþ t j | ƒ rþ | d | | j f g 7} q` | j | ƒ q` W| rO| d g 7} |  j r;| d g 7} n  | d g | 7} n  | rnt d	 t g  | D] } t | j ƒ d
 ^ qeƒ ƒ }	 t d ƒ |	 t d ƒ t d ƒ d }
 t d ƒ |	 f } | d d |
 g 7} xƒ | D]{ } d | j j ƒ  d } t d ƒ j d „  | j Dƒ ƒ j ƒ  } | j rCd | j | f } n  | | | | f g 7} qßW| |
 g 7} n  | d g 7} n  | S(   sp   
        Generate a member listing, autosummary:: table where possible,
        and a table where not.

        s   .. rubric:: %sR   RK   s   ~%s.R0   s      %s%ss   .. autosummary::s      :toctree:i   i   t   =s     i
   s   %%%ds  %%s  s   **R5   c         s` s   |  ] } | j  ƒ  Vq d  S(   N(   RB   (   t   .0t   x(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pys	   <genexpr>*  s   s   (%s) %sN(   RL   t   _replaceR0   RB   RM   R%   RN   RO   RP   RQ   t   isdatadescriptorRT   RU   Rc   R   t   maxt   lent   sixuR(   RC   RA   (   R   R0   R8   R_   t   autosumt   othersRF   R]   t   pt   maxlen_0t   hdrt   fmtRC   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_member_listý   sL    
		5(	c         C` sf   g  } |  | rb | |  j  | ƒ 7} t j d j |  | ƒ ƒ j d ƒ } | | 7} | d g 7} n  | S(   Ns   
R   (   R2   t   textwrapt   dedentR(   RW   (   R   R0   R8   t   content(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_section3  s    
%
c         C` sR   g  } |  d rN t  t |  ƒ j | ƒ } d d g } | |  j | d ƒ 7} n  | S(   Ns   See Alsos   .. seealso::R   i   (   t   superR   t   _str_see_alsoR:   (   R   t	   func_roleR8   t   see_also(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyR}   <  s    
c         C` sG   g  } |  d rC d d g } | |  j  |  d ƒ 7} | d g 7} n  | S(   Nt   Warningss   .. warning::R   (   R:   (   R   R8   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_warningsD  s    
c         C` sÌ   |  d } g  } t  | ƒ d k r& | S| d | j d d ƒ g 7} xu | j ƒ  D]g \ } } | d k rn qP qP | d k r— | d d j | ƒ g 7} qP | d	 | d
 j | ƒ f g 7} qP W| d g 7} | S(   Nt   indexi    s   .. index:: %st   defaultR   t   refguides      single: %ss   , s	      %s: %st   ,(   Ro   R    t   itemsR(   (   R   t   idxR8   t   sectiont
   references(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt
   _str_indexL  s    
$c         C` s'  g  } |  d r#| |  j  d ƒ 7} t |  d t ƒ rJ |  d g |  d <n  | j |  d ƒ | d g 7} t j d k rŠ | d d g 7} n | d d g 7} g  } xI |  d D]= } t j d | t j ƒ } | r« | j	 | j
 d ƒ ƒ q« q« W| d d	 j g  | D] } d
 | ^ qÿ ƒ d g 7} n  | S(   Nt
   ReferencesR   s   0.6s   .. only:: latexs   .. latexonly::s   .. \[([a-z0-9._-]+)\]i   s      s   , s   [%s]_(   R2   RO   t   strt   extendt   sphinxt   __version__RV   t   matcht   IRc   RY   R(   (   R   R8   R†   R9   Ra   t   item(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_references]  s"    
7c         C` sœ   d j  |  d ƒ } |  j r‹ t j t | ƒ r‹ d | k r‹ g  } | |  j d ƒ 7} | d d g 7} | |  j |  d ƒ 7} | d g 7} | S|  j d ƒ Sd  S(   Ns   
t   Exampless   plot::s	   .. plot::R   (   R(   R   RV   RX   t   IMPORT_MATPLOTLIB_RER2   R:   R{   (   R   t   examples_strR8   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   _str_exampless  s    i    t   objc         C` s  i |  j  ƒ  d 6|  j ƒ  d 6|  j ƒ  d 6|  j ƒ  d 6|  j d ƒ d 6|  j d ƒ d 6|  j d	 ƒ d
 6|  j d ƒ d 6|  j d ƒ d 6|  j d ƒ d 6|  j d ƒ d 6|  j ƒ  d 6|  j | ƒ d 6|  j d ƒ d 6|  j	 ƒ  d 6|  j
 ƒ  d 6|  j r|  j d d t ƒn |  j d ƒ d 6|  j d ƒ d 6} t d „  | j ƒ  Dƒ ƒ } |  j j |   } d j |  j | j d ƒ | ƒ ƒ S(    Nt	   signatureR‚   t   summaryt   extended_summaryt
   Parameterst
   parametersR@   t   returnst   Yieldst   yieldst   Receivest   receivess   Other Parameterst   other_parameterst   Raisest   raisest   Warnst   warnst   warningsR   t   Notest   notesR‰   t   examplest
   AttributesR[   t
   attributest   Methodst   methodsc         s` s*   |  ]  \ } } | d  j  | ƒ f Vq d S(   s   
N(   R(   (   Rj   t   kt   v(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pys	   <genexpr>™  s    s   
(   R<   RŠ   R>   R?   Re   RH   R   R}   R{   R“   R—   R   R"   Rw   R#   R†   R   t   renderR(   R:   RW   (   R   R7   R~   t   nst   rendered(    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   __str__  s.    (   t   __name__t
   __module__R   R   R2   R4   R:   R<   R>   R?   RH   RJ   Rb   R!   Re   RP   RM   Rw   R{   R}   R   RŠ   R“   R—   Rµ   (    (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyR      s*   							O4	6							t   SphinxFunctionDocc           B` s   e  Z d i  d  „ Z RS(   c         C` s-   |  j  | ƒ t j |  | d | d | ƒd  S(   NR6   R   (   R   R   R   (   R   R˜   R6   R   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyR      s    N(   R¶   R·   R%   R   (    (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyR¸   Ÿ  s   t   SphinxClassDocc           B` s   e  Z d d i  d  „ Z RS(   c      	   C` s3   |  j  | ƒ t j |  | d | d d  d | ƒd  S(   NR6   t   func_docR   (   R   R	   R   R%   (   R   R˜   R6   Rº   R   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyR   ¦  s    N(   R¶   R·   R%   R   (    (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyR¹   ¥  s   t   SphinxObjDocc           B` s   e  Z d i  d  „ Z RS(   c         C` s0   | |  _  |  j | ƒ t j |  | d | ƒd  S(   NR   (   Rg   R   R   R   (   R   R˜   R6   R   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyR   ¬  s    	N(   R¶   R·   R%   R   (    (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyR»   «  s   c         C` sY  | d  k r] t j |  ƒ r$ d } q] t j |  ƒ r< d } q] t |  t ƒ rT d } q] d } n  t j j t j j	 t
 ƒ d ƒ g } | d  k	 r¬ t ƒ  } | j | d | ƒn t | ƒ } t d | ƒ } | j d ƒ | d	 <| d k rt |  d
 t d | d | ƒS| d k r$t |  d | d | ƒS| d  k rBt j |  ƒ } n  t |  | d | ƒSd  S(   Nt   classt   modulet   functiont   objectR   t   dirsR   s   numpydoc_docstring.rstR   Rº   R6   R   t   method(   R¾   RÁ   (   R%   RQ   t   isclasst   ismoduleRO   R   R&   R'   R(   R)   R*   R   t   initR   R   R+   R¹   R¸   RT   RU   R»   (   R˜   t   whatR6   R   t   builderR,   R-   R.   (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   get_doc_object²  s.    				$	($   t
   __future__R    R   R   t   sysRV   RQ   Rx   RT   t   collections.abcR   t   ImportErrort   collectionsR&   t   jinja2R   t   jinja2.sandboxR   RŽ   t   sphinx.jinja2glueR   t	   docscrapeR   R   R	   t   xrefR
   t   version_infoRp   R•   R   R¸   R¹   R»   R%   RÇ   (    (    (    s8   lib/python2.7/site-packages/numpydoc/docscrape_sphinx.pyt   <module>   s4   	ÿ 