ó
äÛi^c           @   sa   d  Z  d d l Z d d l m Z e rD d d l m Z d   Z n d d l m Z d   Z d S(   sņ   
    getargspec excerpted from:
    
    sphinx.util.inspect
    ~~~~~~~~~~~~~~~~~~~
    Helpers for inspecting Python modules.
    :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
iĸĸĸĸN(   t   PY3(   t   partialc   	   	   C   sš  t  j |   r |  j }  n  t |   t k rl|  j } t |  } t | d  } t | d pb d
  } t | d  } t | d p i   } |  j	 r­ | t
 |  j	  } n  x |  j pž d D]z } yC | j |  t
 |  } | | =y | | =Wn t k
 rn XWq― t k
 r6| j |  } | | =| | =q― Xq― Wt  j | | d | d t |  | | | d  Sx t |  d  r|  j }  qoWt  j |   s­t d	 |    n  t  j |   S(   s?   Like inspect.getargspec but supports functools.partial as well.i    i   i   i   i   i   i   t   __wrapped__s   %r is not a Python function(    (    (   t   inspectt   ismethodt   __func__t   typeR   t   funct
   getargspect   listt   dictt   argst   lent   keywordst   indext
   IndexErrort
   ValueErrort   FullArgSpect   tuplet   hasattrR   t
   isfunctiont	   TypeErrort   getfullargspec(	   R   t	   orig_funct   argspecR   t   defaultst   kwoargst   kwodefst   argt   i(    (    s9   lib/python2.7/site-packages/traitlets/utils/getargspec.pyR      s>    		c   	      C   sw  t  j |   r |  j }  n  d d f } t |   t k r~ |  j } | d k rW i  } n  t |  j  | j	   f } |  j
 }  n  t  j |   s  t d |    n  t  j |  j  \ } } } |  j } | d k rŲ g  } n t |  } | d r | | d } n  | d raxT | d D]E } | j |  t |  } | | =y | | =Wqt k
 rYqXqWn  t  j | | | |  S(   s?   Like inspect.getargspec but supports functools.partial as well.i    s   %r is not a Python functioni   (    N(   R   R   R   R   R   R   t   NoneR   R   t   keysR   R   R   t   getargst   __code__t   __defaults__R	   R   R   t   ArgSpec(	   R   t   partsR   R   t   varargst   varkwt   func_defaultsR   R   (    (    s9   lib/python2.7/site-packages/traitlets/utils/getargspec.pyR   9   s6    				

(   t   __doc__R   t   sixR    t	   functoolsR   R   (    (    (    s9   lib/python2.7/site-packages/traitlets/utils/getargspec.pyt   <module>
   s   #