ó
öÀ„\c           @   s§   d  Z  d d l Z d d l Z d d l m Z 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 n  d „  Z d d d d	 i  i  d „ Z d S(
   sØ   
    sphinx.ext.autodoc.inspector
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Inspect utilities for autodoc

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
iÿÿÿÿN(   t   StringIOt   string_types(   t   RemovedInSphinx20Warning(   t   object_description(   t   Anyt   Callablet   Dictt   Tuplec   
      C   s^  t  j d t d d ƒt |  t j ƒ r/ |  j S|  t k r? d St |  t ƒ sX t	 |  ƒ S|  rr |  j
 d |  j n	 t	 |  ƒ } |  j
 d k r” |  j St t d ƒ r’t |  t j ƒ r’d } t |  d ƒ rA|  j d k sî t |  j ƒ d k rú |  j } q\d	 j d
 „  |  j d  Dƒ ƒ } t |  j d ƒ } d | | | f Sn t |  d ƒ r\|  j } n  | d k	 rZd	 j d „  | Dƒ ƒ } d | | f SnÈt t d ƒ rt |  t j ƒ rt |  d ƒ r|  j } | d k	 rZd	 j d „  | Dƒ ƒ } d | | f SnYt t d ƒ r´t |  t j ƒ r´t |  d d ƒ d k	 r´t |  d ƒ r´|  j } | d k rb| S| t k rwd } n# d „  | Dƒ } d d	 j | ƒ } d | | t |  j ƒ f St t d ƒ rZt |  t j ƒ rZt |  d ƒ rZt |  d ƒ rZ|  j } | d k	 rZg  | D] } t | ƒ ^ q}	 |  j r@|	 j d ƒ n  d | d	 j |	 ƒ f Sn  | S(   sè   Return formatted representation of a type annotation.

    Show qualified names for types and additional details for types from
    the ``typing`` module.

    Displaying complex types from ``typing`` relies on its private API.
    sY   format_annotation() is now deprecated.  Please use sphinx.util.inspect.Signature instead.t
   stackleveli   s   ...t   .t   builtinst   GenericMetat   __args__s   , c         s   s   |  ] } t  | ƒ Vq d  S(   N(   t   format_annotation(   t   .0t   a(    (    s;   lib/python2.7/site-packages/sphinx/ext/autodoc/inspector.pys	   <genexpr>>   s    iÿÿÿÿs   %s[[%s], %s]t   __parameters__c         s   s   |  ] } t  | ƒ Vq d  S(   N(   R   (   R   t   p(    (    s;   lib/python2.7/site-packages/sphinx/ext/autodoc/inspector.pys	   <genexpr>D   s    s   %s[%s]t	   UnionMetat   __union_params__c         s   s   |  ] } t  | ƒ Vq d  S(   N(   R   (   R   R   (    (    s;   lib/python2.7/site-packages/sphinx/ext/autodoc/inspector.pys	   <genexpr>K   s    t   CallableMetat
   __result__c         s   s   |  ] } t  | ƒ Vq d  S(   N(   R   (   R   R   (    (    s;   lib/python2.7/site-packages/sphinx/ext/autodoc/inspector.pys	   <genexpr>X   s    s   [%s]s
   %s[%s, %s]t	   TupleMetat   __tuple_params__t   __tuple_use_ellipsis__N(   t   warningst   warnR   t
   isinstancet   typingt   TypeVart   __name__t   Ellipsist   typet   reprt
   __module__t   __qualname__t   hasattrR   t   NoneR   t   lent   joinR   R   R   R   R   t   getattrR   R   R   R   t   append(
   t
   annotationt   qualified_namet   paramst   argst   resultt	   param_strt   args_strt   formatted_argsR   t   param_strings(    (    s;   lib/python2.7/site-packages/sphinx/ext/autodoc/inspector.pyR      st    		
&$ 					c            s%  t  j d t d d ƒ‡  ‡ f d †  } ‡  ‡ f d †  ‰ y. t ra t |  d ƒ ra t j |  ƒ n i  ‰ Wn t k
 r i  ‰ n Xt ƒ  }	 |	 j d ƒ g  }
 | rº t	 | ƒ t	 | ƒ n	 t	 | ƒ } xt
 | ƒ D]\ } } t ƒ  } t | t ƒ r`| j d ƒ | j | | d ƒ ƒ x2 | d	 D]& } | j d
 ƒ | j | | ƒ ƒ q&W| j d ƒ nb | j | | ƒ ƒ | rÂ| | k rÂ| j | ˆ  k rd n d ƒ | j t | | | ƒ ƒ n  |
 j | j ƒ  ƒ qÓ W| rù|
 j d | | ƒ ƒ n  | r£| s|
 j d ƒ n  x‹ | D]€ } t ƒ  } | j | | ƒ ƒ | r‰| | k r‰| j | ˆ  k rhd n d ƒ | j t | | ƒ ƒ n  |
 j | j ƒ  ƒ qWn  | rÃ|
 j d | | ƒ ƒ n  |	 j d
 j |
 ƒ ƒ |	 j d ƒ d ˆ  k r|	 j d ƒ |	 j t ˆ d ƒ ƒ ƒ n  |	 j ƒ  S(   s¬   Return a string representation of an ``inspect.FullArgSpec`` tuple.

    An enhanced version of ``inspect.formatargspec()`` that handles typing
    annotations better.
    sU   formatargspec() is now deprecated.  Please use sphinx.util.inspect.Signature instead.R   i   c            s*   |  ˆ  k r& d |  t  ˆ |  ƒ ƒ f S|  S(   Ns   %s: %s(   R   (   t   name(   t   annotationst   get_annotation(    s;   lib/python2.7/site-packages/sphinx/ext/autodoc/inspector.pyt   format_arg_with_annotationw   s    c            s1   ˆ  |  } t  | t ƒ r) ˆ j |  | ƒ S| Sd  S(   N(   R   R   t   get(   R3   t   value(   R4   t   introspected_hints(    s;   lib/python2.7/site-packages/sphinx/ext/autodoc/inspector.pyR5   }   s    
t   __code__t   (i    i   s   , t   )s    = t   =t   *s   **t   returns    -> (   R   R   R   R   R$   t   get_type_hintst	   ExceptionR    t   writeR&   t	   enumerateR   t   listR   R)   t   getvalueR'   R   (   t   functionR-   t   varargst   varkwt   defaultst
   kwonlyargst   kwonlydefaultsR4   R6   t   fdt	   formattedt   defaults_startt   it   argt   arg_fdt   paramt   kwarg(    (   R4   R5   R9   s;   lib/python2.7/site-packages/sphinx/ext/autodoc/inspector.pyt   formatargspeck   s\    	.
	(		(    (   t   __doc__R   R   t   sixR    R   t   sphinx.deprecationR   t   sphinx.util.inspectR   t   FalseR   R   R   R   R   R%   RT   (    (    (    s;   lib/python2.7/site-packages/sphinx/ext/autodoc/inspector.pyt   <module>
   s   %	R	