Ñò
­JOc        	   @   sÓ   d  Z  d d k Z d d k Z d d k Z d d k Z d d k l Z d d k l Z d e f d „  ƒ  YZ	 d e f d „  ƒ  YZ
 d	 d
 „ Z d „  Z d d „ Z d e
 f d „  ƒ  YZ d e
 f d „  ƒ  YZ d S(   s=   Extract reference documentation from the NumPy source tree.

iÿÿÿÿN(   t   StringIO(   t   warnt   Readerc           B   st   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 d „ Z d „  Z RS(   s!   A line-based string reader.

    c         C   s=   t  | t ƒ o | |  _ n | i d ƒ |  _ |  i ƒ  d S(   sr   
        Parameters
        ----------
        data : str
           String with lines separated by '
'.

        s   
N(   t
   isinstancet   listt   _strt   splitt   reset(   t   selft   data(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   __init__   s    c         C   s   |  i  | S(   N(   R   (   R   t   n(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   __getitem__   s    c         C   s   d |  _  d  S(   Ni    (   t   _l(   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR   "   s    c         C   s6   |  i  ƒ  p! |  |  i } |  i d 7_ | Sd Sd  S(   Ni   t    (   t   eofR   (   R   t   out(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   read%   s
    c         C   s=   x6 |  |  i  D]' } | i ƒ  o Pq |  i  d 7_  q Wd  S(   Ni   (   R   t   strip(   R   t   l(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   seek_next_non_empty_line-   s
     c         C   s   |  i  t |  i ƒ j S(   N(   R   t   lenR   (   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR   4   s    c         C   sm   |  i  } x] |  | D]Q } | | ƒ o |  | |  i  !S|  i  d 7_  |  i ƒ  o |  | |  i  d !Sq Wg  S(   Ni   (   R   R   (   R   t   condition_funct   startt   line(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   read_to_condition7   s    	 c         C   s    |  i  ƒ  d „  } |  i | ƒ S(   Nc         S   s   |  i  ƒ  S(   N(   R   (   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   is_emptyC   s    (   R   R   (   R   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   read_to_next_empty_lineA   s    
	c         C   s   d „  } |  i  | ƒ S(   Nc         S   s)   |  i  ƒ  o t |  i ƒ  ƒ t |  ƒ j S(   N(   R   R   t   lstrip(   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   is_unindentedH   s    (   R   (   R   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   read_to_next_unindented_lineG   s    	i    c         C   s5   |  i  | t |  i ƒ j  o |  |  i  | Sd Sd  S(   NR   (   R   R   R   (   R   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   peekL   s    c         C   s   d i  |  i ƒ i ƒ  S(   NR   (   t   joinR   R   (   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR   R   s    (   t   __name__t
   __module__t   __doc__R
   R   R   R   R   R   R   R   R   R   R   (    (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR      s   							
		t   NumpyDocStringc           B   sï   e  Z h  d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 i d e
 i ƒ Z d	 „  Z d
 „  Z d „  Z d „  Z d d „ Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z RS(   c         C   s±   t  i | ƒ i d ƒ } t | ƒ |  _ h d d 6d g d 6g  d 6g  d 6g  d 6g  d 6g  d	 6g  d
 6g  d 6g  d 6g  d 6g  d 6g  d 6d d 6d d 6h  d 6|  _ |  i ƒ  d  S(   Ns   
R   t	   Signaturet   Summarys   Extended Summaryt
   Parameterst   Returnst   Raisest   Warnss   Other Parameterst
   Attributest   Methodss   See Alsot   Notest   Warningst
   Referencest   Examplest   index(   t   textwrapt   dedentR   R   t   _doct   _parsed_datat   _parse(   R   t	   docstringt   config(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR
   W   s(    
c         C   s   |  i  | S(   N(   R5   (   R   t   key(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR   p   s    c         C   s6   |  i  i | ƒ p t d | ƒ n | |  i  | <d  S(   Ns   Unknown section %s(   R5   t   has_keyR   (   R   R9   t   val(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   __setitem__s   s    c         C   s•   |  i  i ƒ  |  i  i ƒ  o t S|  i  i ƒ  i ƒ  } | i d ƒ o t S|  i  i d ƒ i ƒ  } | i d t | ƒ ƒ p | i d t | ƒ ƒ S(   Ns
   .. index::i   t   -t   =(	   R4   R   R   t   FalseR   R   t
   startswitht   TrueR   (   R   t   l1t   l2(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _is_at_sectiony   s    c         C   sŒ   d } d } x, t  | ƒ D] \ } } | i ƒ  o Pq q Wx9 t  | d  d  d … ƒ D] \ } } | i ƒ  o PqU qU W| | t | ƒ | !S(   Ni    iÿÿÿÿ(   t	   enumerateR   R   (   R   t   doct   it   jR   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _strip‡   s      	  	c         C   sw   |  i  i ƒ  } xa |  i ƒ  oR |  i  i ƒ  oA |  i  i d ƒ i ƒ  p | d g 7} n | |  i  i ƒ  7} q W| S(   NiÿÿÿÿR   (   R4   R   RD   R   R   R   (   R   t   section(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _read_to_next_section’   s     c         c   s   xˆ |  i  i ƒ  pw |  i ƒ  } | d i ƒ  } | i d ƒ o | | d f Vq t | ƒ d j  o	 t Vq | |  i | d ƒ f Vq Wd  S(   Ni    s   ..i   i   (   R4   R   RK   R   R@   R   t   StopIterationRI   (   R   R	   t   name(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _read_sections   s     	c         C   s¢   t  | ƒ } g  } x‰ | i ƒ  p{ | i ƒ  i ƒ  } d | j o | i d ƒ d  \ } } n | d } } | i ƒ  } t | ƒ } | i | | | f ƒ q W| S(   Ns    : i   R   (   R   R   R   R   R   R   t   dedent_linest   append(   R   t   contentt   rt   paramst   headert   arg_namet   arg_typet   desc(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _parse_param_list©   s     sO   ^\s*(:(?P<role>\w+):`(?P<name>[a-zA-Z0-9_.-]+)`| (?P<name2>[a-zA-Z0-9_.-]+))\s*c      	      s³  g  ‰  ‡ f d †  ‰ ‡  ‡ f d †  } d } g  } xl| D]d} | i ƒ  p q: n ˆ i i | ƒ } | o† | | i ƒ  i ƒ  i d ƒ of | | | ƒ | | i ƒ   | | i ƒ  } } | i d d ƒ d i ƒ  g } | d p
 g  } qžq: | i d ƒ pw | | | ƒ d } d | j o< xP | i d ƒ D]$ } | i ƒ  o | | g  ƒ q3q3Wqž| i ƒ  o
 | } qžq: | d j	 o | i | i ƒ  ƒ q: q: W| | | ƒ ˆ  S(	   sµ   
        func_name : Descriptive text
            continued text
        another_func_name : Descriptive text
        func_name1, func_name2, :meth:`func_name`, func_name3

        c            so   ˆ  i  i |  ƒ } | oB | i ƒ  } | d d j o | d d f S| d | d f Sn t d |  ƒ ‚ d S(   s   Match ':role:`name`' or 'name'i   i   i   s   %s is not a item nameN(   t	   _name_rgxt   matcht   groupst   Nonet
   ValueError(   t   textt   mt   g(   R   (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   parse_item_nameÇ   s    c            sB   |  p d  Sˆ |  ƒ \ }  } ˆ  i  |  t | ƒ | f ƒ | 2d  S(   N(   RP   R   (   RM   t   restt   role(   t   itemsRa   (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt	   push_itemÒ   s
    t   :i   i    t    t   ,N(   R\   R   RY   RZ   t   endR@   R   RP   (   R   RQ   Re   t   current_funcRb   R   R_   t   func(    (   Rd   R   Ra   s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _parse_see_also½   s<      '! c         C   s²   d „  } h  } | i  d ƒ } t | ƒ d j o% | | d i  d ƒ ƒ d | d <n xU | D]M } | i  d ƒ } t | ƒ d j o% | | d i  d ƒ ƒ | | d <q] q] W| S(	   sT   
        .. index: default
           :refguide: something, else, and more

        c         S   s%   g  } |  D] } | | i  ƒ  q ~ S(   N(   R   (   t   lstt   _[1]t   s(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   strip_each_inú   s    s   ::i   Rh   i    t   defaultRf   i   (   R   R   (   R   RJ   RQ   Rp   R   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _parse_indexô   s    	% )c         C   sÑ   |  i  ƒ  o d S|  i i ƒ  } d i g  } | D] } | | i ƒ  q2 ~ ƒ i ƒ  } t i d ƒ i | ƒ o2 | |  d <|  i  ƒ  p |  i i ƒ  |  d <q¬ n | |  d <|  i  ƒ  p |  i ƒ  |  d <n d S(   s%   Grab signature (if given) and summaryNRg   s   ^([\w., ]+=)?\s*[\w\.]+\(.*\)$R%   R&   s   Extended Summary(	   RD   R4   R   R    R   t   ret   compileRZ   RK   (   R   t   summaryRn   Ro   t   summary_str(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _parse_summary  s    6

c         C   s  |  i  i ƒ  |  i ƒ  xã |  i ƒ  D]Õ \ } } | i d ƒ p= d i g  } | i d ƒ D] } | | i ƒ  qZ ~ ƒ } n | d j o |  i | ƒ |  | <q$ | i d
 ƒ o |  i	 | | ƒ |  d <q$ | d j o |  i
 | ƒ |  d <q$ | |  | <q$ Wd  S(   Ns   ..Rg   R'   R(   R)   R*   s   Other ParametersR+   R,   s
   .. index::R1   s   See Also(   s
   Parameterss   Returnss   Raisess   Warnss   Other Parameterss
   Attributess   Methods(   R4   R   Rw   RN   R@   R    R   t
   capitalizeRX   Rr   Rl   (   R   RJ   RQ   Rn   Ro   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR6     s    
 =
R=   c         C   s   | t  | ƒ | g S(   N(   R   (   R   RM   t   symbol(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _str_header+  s    i   c         C   s0   g  } x# | D] } | d | | g 7} q W| S(   NRg   (    (   R   RF   t   indentR   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _str_indent.  s
     c         C   s5   |  d o |  d i  d d ƒ g d g Sd g Sd  S(   NR%   t   *s   \*R   (   t   replace(   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _str_signature4  s    c         C   s#   |  d o |  d d g Sg  Sd  S(   NR&   R   (    (   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _str_summary:  s    c         C   s#   |  d o |  d d g Sg  Sd  S(   Ns   Extended SummaryR   (    (   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _str_extended_summary@  s    c         C   s   g  } |  | ol | |  i  | ƒ 7} xE |  | D]9 \ } } } | d | | f g 7} | |  i | ƒ 7} q/ W| d g 7} n | S(   Ns   %s : %sR   (   Rz   R|   (   R   RM   R   t   paramt
   param_typeRW   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _str_param_listF  s     c         C   sG   g  } |  | o2 | |  i  | ƒ 7} | |  | 7} | d g 7} n | S(   NR   (   Rz   (   R   RM   R   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _str_sectionP  s    c         C   s  |  d p g  Sg  } | |  i  d ƒ 7} t } xÑ |  d D]Å \ } } } | o d | | f } n& | o d | | f } n d | } | p | o | d g 7} | | g 7} n | d c d | 7<| o) | |  i d i | ƒ g ƒ 7} t } q: t } q: W| d g 7} | S(   Ns   See Alsos   :%s:`%s`s   `%s`_R   iÿÿÿÿs   , %sRg   (   Rz   RA   R|   R    R?   (   R   t	   func_roleR   t   last_had_descRk   RW   Rc   t   link(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   _str_see_alsoX  s,      


c         C   s‚   |  d } g  } | d | i  d d ƒ g 7} xN | i ƒ  D]@ \ } } | d j o q: n | d | d i | ƒ f g 7} q: W| S(   NR1   s   .. index:: %sRq   R   s
      :%s: %ss   , (   t   gett	   iteritemsR    (   R   t   idxR   RJ   t
   references(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt
   _str_indexq  s    
 $R   c         C   så   g  } | |  i  ƒ  7} | |  i ƒ  7} | |  i ƒ  7} x! d D] } | |  i | ƒ 7} q= W| |  i d ƒ 7} | |  i | ƒ 7} x! d D] } | |  i | ƒ 7} q‡ Wx! d D] } | |  i | ƒ 7} q« W| |  i ƒ  7} d i | ƒ S(   NR'   R(   s   Other ParametersR)   R*   R.   R-   R/   R0   R+   R,   s   
(   s
   Parameterss   Returnss   Other Parameterss   Raisess   Warns(   s   Notess
   Referencess   Examples(   s
   Attributess   Methods(   R   R€   R   R„   R…   R‰   RŽ   R    (   R   R†   R   t
   param_listRo   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   __str__{  s$       (   R!   R"   R
   R   R<   RD   RI   RK   RN   RX   Rs   Rt   t   XRY   Rl   Rr   Rw   R6   Rz   R|   R   R€   R   R„   R…   R‰   RŽ   R   (    (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR$   V   s0   									7							
			
i   c            sH   d | ‰  |  d  j o ˆ  S|  i d ƒ } d i ‡  f d †  | Dƒ ƒ S(   NRg   s   
c         3   s   x |  ] } ˆ  | Vq Wd  S(   N(    (   t   .0R   (   t
   indent_str(    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pys	   <genexpr>’  s   	 (   R\   R   R    (   t   strR{   t   lines(    (   R“   s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR{     s
    
c         C   s   t  i d i |  ƒ ƒ i d ƒ S(   s"   Deindent a list of lines maximallys   
(   R2   R3   R    R   (   R•   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyRO   ”  s    R=   c         C   s   |  d | t  |  ƒ d S(   Ns   
(   R   (   R^   t   style(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyRT   ˜  s    t   FunctionDocc           B   s,   e  Z d  d h  d „ Z d „  Z d „  Z RS(   Rk   c   	      C   s	  | |  _  | |  _ | d  j o7 | d  j o t d ƒ ‚ n t i | ƒ p d } n t i |  | ƒ |  d o“ | d  j	 o† |  i ƒ  \ } } yD t i	 | ƒ } t i
 | Œ  } | i d d ƒ } d | | f } Wn t j
 o } d | } n X| |  d <n d  S(   Ns   No function or docstring givenR   R%   R}   s   \*s   %s%ss   %s()(   t   _ft   _roleR\   R]   t   inspectt   getdocR$   R
   t   get_funct
   getargspect   formatargspecR~   t	   TypeError(	   R   Rk   Rc   RF   R8   t	   func_namet   argspect	   signaturet   e(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR
     s"    		c         C   s`   t  |  i d |  i i ƒ } t i |  i ƒ o t  |  i d |  i i ƒ } n
 |  i } | | f S(   NR!   t   __call__(   t   getattrR˜   t	   __class__R!   Rš   t   isclassR
   (   R   R    Rk   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyRœ   ³  s
    	c         C   s¼   d } |  i  ƒ  \ } } |  d i d d ƒ } h d d 6d d 6} |  i oJ | i |  i ƒ p d	 |  i GHn | d
 | i |  i d ƒ | f 7} n | t t |  ƒ i d |  i ƒ 7} | S(   NR   R%   R}   s   \*t   functionRk   t   methodt   meths   Warning: invalid role %ss   .. %s:: %s
    

R†   (   Rœ   R~   R™   R:   RŠ   t   superR—   R   (   R   R   Rk   R    R¢   t   roles(    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR   »  s    


"N(   R!   R"   R\   R
   Rœ   R   (    (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR—   œ  s   	t   ClassDocc           B   sD   e  Z d  g Z d d e h  d „ Z e d „  ƒ Z e d „  ƒ Z RS(   R¤   R   c   	      C   s^  t  i | ƒ o! | d  j	 o t d | ƒ ‚ n | |  _ | o | i d ƒ o | d 7} n | |  _ | d  j o0 | d  j o t d ƒ ‚ n t i | ƒ } n t	 i
 |  | ƒ | i d t ƒ o |  d p; g  } t |  i ƒ D] } | | d d f qé ~ |  d <n |  d p; g  } t |  i ƒ D] } | | d d f q/~ |  d <qZn d  S(   Ns$   Expected a class or None, but got %rt   .s&   No class or documentation string givent   show_class_membersR,   R   R+   (   Rš   R§   R\   R]   t   _clst   endswitht   _modt   pydocR›   R$   R
   RŠ   RA   t   sortedt   methodst
   properties(	   R   t   clsRF   t
   modulenamet   func_docR8   Rn   RM   t   _[2](    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR
   Ò  s$    		4c         C   sx   |  i  d  j o g  Sg  } t i |  i  ƒ D]E \ } } | i d ƒ p | |  i j o t | ƒ o | | q, q, ~ S(   Nt   _(   R°   R\   Rš   t
   getmembersR@   t   extra_public_methodst   callable(   R   Rn   RM   Rk   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyRµ   ë  s    #c         C   sh   |  i  d  j o g  Sg  } t i |  i  ƒ D]5 \ } } | i d ƒ o | d  j o | | q, q, ~ S(   NR»   (   R°   R\   Rš   R¼   R@   (   R   Rn   RM   Rk   (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR¶   ô  s    #N(	   R!   R"   R½   R\   R—   R
   t   propertyRµ   R¶   (    (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyR­   Î  s
   			(   R#   Rš   R2   Rs   R³   R    t   warningsR   t   objectR   R$   R{   RO   RT   R—   R­   (    (    (    s5   /Users/rgommers/Code/scipy/doc/sphinxext/docscrape.pyt   <module>   s   Jÿ 8	2