???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \                @   s  dZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZ ddlmZmZ e Zx"ejj D ]\ZZeede < qW dZd	d
 Zdd Z dd Z!dd Z"dd Z#e$edrdd Z%ndd Z%e$edr2dd Z&ndd Z&dd Z'dd Z(dd  Z)d!d" Z*d#d$ Z+d%d& Z,d'd( Z-d)d* Z.d+d, Z/d-d. Z0d/d0 Z1d1d2 Z2d3d4 Z3d5d6 Z4dd7d8Z5ed9d:Z6d;d< Z7d=d> Z8dd?d@dAZ9dBdC Z:dDdE Z;dFdG Z<dHdI Z=dJdK Z>dLdM Z?dNdO Z@dPdQ ZAddRdSZBi ZCi ZDddTdUZEdVdW ZFdXdY ZGG dZd[ d[eHZIG d\d] d]ZJd^d_ ZKd`da ZLdbdc ZMddde ZNddgdhZOedidjZPdkdl ZQdmdn ZRedodpZSdqdr ZTedsdtZUdudv ZVedwdxZWdydz ZXdd{d|ZYd}d~ ZZdddf i i e[dd dd dd dd eYfddZ\e[dd dd dd fddZ]dd Z^dd Z_dd Z`eddZadd ZbeddZcdddZddd Zeeddecjf ZgdddZhdddZidd ZjdddZkdddZlem Zndd Zodd Zpdd Zqdd Zrdd ZsenfddZtdZudZvdZwdZxdd Zydd ZzdZ{dZ|dZ}dZ~dd Zdd ZeejZeejZeejd ZeeeejfZddń Zf fddǄZddɄ Zdd˄ Zdd̈́ Zddτ Zddф Zd ddԄZdddքZdd؄ ZdddٜddۄZG dd݄ d݃ZG dd߄ d߃ZG dd dejZejZejZejZejZejZededededediZejZG dd dZG dd dZG dd dZddddZdd Zedkre  dS (  Ka-Ping Yee <ping@lfw.org>'Yury Selivanov <yselivanov@sprymix.com>    N)
attrgetter)
namedtupleOrderedDictZCO_      c             C   s   t | tjS )N)
isinstancetypes
ModuleType)object r   /usr/lib64/python3.6/inspect.pyismodule@   s    r   c             C   s
   t | tS )N)r	   type)r   r   r   r   isclassI   s    r   c             C   s   t | tjS )N)r	   r
   
MethodType)r   r   r   r   ismethodQ   s    r   c             C   s:   t | st| st| rdS t| }t|do8t|d S )NF__get____set__)r   r   
isfunctionr   hasattr)r   tpr   r   r   ismethoddescriptor[   s    r   c             C   s8   t | st| st| rdS t| }t|do6t|dS )NFr   r   )r   r   r   r   r   )r   r   r   r   r   isdatadescriptoro   s    r   MemberDescriptorTypec             C   s   t | tjS )N)r	   r
   r   )r   r   r   r   ismemberdescriptor   s    r   c             C   s   dS )NFr   )r   r   r   r   r      s    GetSetDescriptorTypec             C   s   t | tjS )N)r	   r
   r   )r   r   r   r   isgetsetdescriptor   s    r   c             C   s   dS )NFr   )r   r   r   r   r      s    c             C   s   t | tjS )N)r	   r
   FunctionType)r   r   r   r   r      s    r   c             C   s    t t| st| o| jjt@ S )N)boolr   r   __code__co_flagsZCO_GENERATOR)r   r   r   r   isgeneratorfunction   s    r#   c             C   s    t t| st| o| jjt@ S )N)r    r   r   r!   r"   ZCO_COROUTINE)r   r   r   r   iscoroutinefunction   s    r$   c             C   s    t t| st| o| jjt@ S )N)r    r   r   r!   r"   ZCO_ASYNC_GENERATOR)r   r   r   r   isasyncgenfunction   s    r%   c             C   s   t | tjS )N)r	   r
   AsyncGeneratorType)r   r   r   r   
isasyncgen   s    r'   c             C   s   t | tjS )N)r	   r
   GeneratorType)r   r   r   r   isgenerator   s    r)   c             C   s   t | tjS )N)r	   r
   CoroutineType)r   r   r   r   iscoroutine   s    r+   c             C   s6   t | tjp4t | tjr(t| jjt@ p4t | tj	j
S )N)r	   r
   r*   r(   r    gi_coder"   ZCO_ITERABLE_COROUTINEcollectionsabc	Awaitable)r   r   r   r   isawaitable   s    r0   c             C   s   t | tjS )N)r	   r
   TracebackType)r   r   r   r   istraceback   s    r2   c             C   s   t | tjS )N)r	   r
   	FrameType)r   r   r   r   isframe   s    r4   c             C   s   t | tjS )N)r	   r
   CodeType)r   r   r   r   iscode   s    r6   c             C   s   t | tjS )N)r	   r
   BuiltinFunctionType)r   r   r   r   	isbuiltin  s    r8   c             C   s    t | pt| pt| pt| S )N)r8   r   r   r   )r   r   r   r   	isroutine  s    r9   c             C   s   t | tsdS | jt@ rdS tt| tjs0dS t| dr>dS x&| jj	 D ]\}}t
|ddrJdS qJW x@| jD ]6}x0t
|df D ] }t
| |d }t
|ddrdS qW qnW dS )NFT__abstractmethods____isabstractmethod__)r	   r   	__flags__TPFLAGS_IS_ABSTRACT
issubclassr.   ABCMetar   __dict__itemsgetattr	__bases__)r   namevaluebaser   r   r   
isabstract%  s"    


rG   c             C   s&  t | r| ft|  }nf }g }t }t| }yBx<| jD ]2}x,|jj D ]\}}t|tj	rH|j
| qHW q8W W n tk
r   Y nX x|D ]}	yt| |	}
|	|krtW n: tk
r   x$|D ]}|	|jkr|j|	 }
P qW wY nX | s||
r|j
|	|
f |j|	 qW |jdd d |S )Nc             S   s   | d S )Nr   r   )Zpairr   r   r   <lambda>f  s    zgetmembers.<locals>.<lambda>)key)r   getmrosetdirrC   r@   rA   r	   r
   DynamicClassAttributeappendAttributeErrorrB   addsort)r   Z	predicatemroresults	processednamesrF   kvrI   rE   r   r   r   
getmembers=  s:    




rX   	Attributezname kind defining_class objectc             C   s\  t | }t t| }tdd |D }| f| }|| }t| }x:|D ]2}x,|jj D ]\}}t|tjrV|j	| qVW qFW g }	t
 }
x|D ]}d }d }d }||
kry|dkrtdt| |}W n" tk
r } zW Y d d }~X nX t|d|}||krd }d }x(|D ] }t||d }||kr|}qW xH|D ]@}y|j| |}W n tk
rh   w:Y nX ||kr:|}q:W |d k	r|}x4|D ],}||jkr|j| }||kr|}P qW |d krq|d k	r|n|}t|trd}|}n@t|trd}|}n*t|tr"d}|}nt|r2d	}nd
}|	j	t|||| |
j| qW |	S )Nc             S   s   g | ]}|t tfkr|qS r   )r   r   ).0clsr   r   r   
<listcomp>  s    z(classify_class_attrs.<locals>.<listcomp>r@   z)__dict__ is special, don't want the proxy__objclass__zstatic methodzclass methodpropertymethoddata)rJ   r   tuplerL   r@   rA   r	   r
   rM   rN   rK   	ExceptionrB   __getattr__rO   staticmethodclassmethodr^   r9   rY   rP   )r[   rR   ZmetamroZclass_basesZ	all_basesrU   rF   rV   rW   resultrT   rD   ZhomeclsZget_objZdict_objexcZlast_clsZsrch_clsZsrch_objobjkindr   r   r   classify_class_attrsk  s    

















rj   c             C   s   | j S )N)__mro__)r[   r   r   r   rJ     s    rJ   )stopc               s    d krdd }n fdd}| }t ||i}tj }xD|| rz| j} t | }||ksbt||krptdj|| ||< q8W | S )Nc             S   s
   t | dS )N__wrapped__)r   )fr   r   r   _is_wrapper  s    zunwrap.<locals>._is_wrapperc                s   t | do |  S )Nrm   )r   )rn   )rl   r   r   ro     s    z!wrapper loop when unwrapping {!r})idsysgetrecursionlimitrm   len
ValueErrorformat)funcrl   ro   rn   memoZrecursion_limitZid_funcr   )rl   r   unwrap  s    

rx   c             C   s   | j  }t|t|j  S )N)
expandtabsrs   lstrip)lineZexpliner   r   r   
indentsize	  s    r|   c             C   sR   t jj| j}|d krd S x&| jjdd d D ]}t||}q0W t|sNd S |S )N.r   )rq   modulesget
__module____qualname__splitrB   r   )rv   r[   rD   r   r   r   
_findclass  s    r   c             C   s  t | rRxD| jD ]:}|tk	ry
|j}W n tk
r<   wY nX |d k	r|S qW d S t| r| jj}| j}t |rt	t	||d d| jkr|}n|j
}nt| r| j}t| }|d kst	||| k	rd S nt| r
| j}| j}t |o|jd | | jkr|}n|j
}nzt| trJ| j}|j}t|}|d ksDt	||| k	rd S n:t| s^t| r| j}| j}t	||| k	rd S nd S xJ|jD ]@}yt	||j}W n tk
r   wY nX |d k	r|S qW d S )N__func__r}   )r   rk   r   __doc__rO   r   r   __name____self__rB   	__class__r   r   r8   r   r	   r^   fgetr   r   r]   )rh   rF   docrD   selfr[   rv   r   r   r   _finddoc  sb    




r   c             C   sd   y
| j }W n tk
r   d S X |d krNyt| }W n ttfk
rL   d S X t|ts\d S t|S )N)r   rO   r   	TypeErrorr	   strcleandoc)r   r   r   r   r   getdocS  s    

r   c             C   s   y| j  jd}W n tk
r&   d S X tj}x:|dd  D ]*}t|j }|r<t|| }t||}q<W |r~|d j |d< |tjk rx*tdt|D ]}|| |d  ||< qW x|r|d  r|j	  qW x|r|d  r|j	d qW dj
|S d S )N
r   r   r~   )ry   r   UnicodeErrorrq   maxsizers   rz   minrangepopjoin)r   linesZmarginr{   Zcontentindentir   r   r   r   f  s(    
 r   c             C   s   t | r&t| dr| jS tdj| t| rdt| drVtjj| j	} t| drV| jS tdj| t
| rr| j} t| r| j} t| r| j} t| r| j} t| r| jS tdj| d S )N__file__z{!r} is a built-in moduler   z{!r} is a built-in classzO{!r} is not a module, class, method, function, traceback, frame, or code object)r   r   r   r   ru   r   rq   r   r   r   r   r   r   r!   r2   tb_framer4   f_coder6   co_filename)r   r   r   r   getfile  s,    


r   c             C   sT   t jj| }dd tjj D }|j  x&|D ]\}}|j|r.|d | S q.W d S )Nc             S   s   g | ]}t | |fqS r   )rs   )rZ   suffixr   r   r   r\     s   z!getmodulename.<locals>.<listcomp>)ospathbasename	importlib	machineryall_suffixesrQ   endswith)r   ZfnamesuffixesZneglenr   r   r   r   getmodulename  s    
r   c                s   t |  tjjd d  }|tjjd d  7 }t fdd|D r`tjj d tjj	d   nt fddtjj
D r~d S tjj r S tt|  dd d k	r S  tjkr S d S )Nc             3   s   | ]} j |V  qd S )N)r   )rZ   s)filenamer   r   	<genexpr>  s    z getsourcefile.<locals>.<genexpr>r   c             3   s   | ]} j |V  qd S )N)r   )rZ   r   )r   r   r   r     s    
__loader__)r   r   r   DEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESanyr   r   splitextSOURCE_SUFFIXESEXTENSION_SUFFIXESexistsrB   	getmodule	linecachecache)r   Zall_bytecode_suffixesr   )r   r   getsourcefile  s    
r   c             C   s,   |d krt | pt| }tjjtjj|S )N)r   r   r   r   normcaseabspath)r   	_filenamer   r   r   
getabsfile  s    r   c       
      C   s  t | r| S t| dr$tjj| jS |d k	rD|tkrDtjjt| S yt| |}W n tk
rf   d S X |tkrtjjt| S xnt	tjj
 D ]\\}}t |rt|dr|j}|tj|d krq|t|< t|}|j t|< ttjj|< qW |tkr
tjjt| S tjd }t| ds$d S t|| jrLt|| j}|| krL|S tjd }t|| jr~t|| j}	|	| kr~|S d S )Nr   r   __main__r   builtins)r   r   rq   r   r   r   modulesbyfiler   r   listrA   r   _filesbymodnamer   r   r   realpathrB   )
r   r   filemodnamemodulern   mainZ
mainobjectZbuiltinZbuiltinobjectr   r   r   r     sD    





r   c       
      C   s  t | }|rtj| n$t| }|jdo2|jds<tdt| |}|rZtj||j	}n
tj|}|sptdt
| r|dfS t| r | j}tjd| d }g }xRtt|D ]B}|j|| }|r|| d dkr||fS |j|jd	|f qW |r|j  ||d d	 fS td
t| r0| j} t| r@| j} t| rP| j} t| r`| j} t| rt| ds~td| jd	 }	tjd}x*|	dkr|j||	 rP |	d	 }	qW ||	fS tdd S )N<>zsource code not availablezcould not get source coder   z^(\s*)class\s*z\bcr   zcould not find class definitionco_firstlinenoz"could not find function definitionz>^(\s*def\s)|(\s*async\s+def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)zcould not find code object) r   r   
checkcacher   
startswithr   OSErrorr   getlinesr@   r   r   r   recompiler   rs   matchrN   grouprQ   r   r   r   r!   r2   r   r4   r   r6   r   r   )
r   r   r   r   rD   ZpatZ
candidatesr   r   lnumr   r   r   
findsource  s^    









 r   c             C   s>  yt | \}}W n ttfk
r(   d S X t| rd}|rR|d d d dkrRd}x(|t|k rz|| j dkrz|d }qTW |t|k r|| d d dkrg }|}x>|t|k r|| d d dkr|j|| j  |d }qW dj|S nH|dkr:t	|| }|d }|dkr:|| j
 d d dkr:t	|| |kr:|| j j
 g}|dkr|d }|| j j
 }x\|d d dkrt	|| |kr|g|d d< |d }|dk rP || j j
 }q|W x*|r|d j dkrg |d d< qW x*|r.|d j dkr.g |d	d < qW dj|S d S )
Nr      z#!r    #)r   r   r~   r~   )r   r   r   r   rs   striprN   ry   r   r|   rz   )r   r   r   startZcommentsendr   Zcommentr   r   r   getcommentsA  sJ      "
$
&
 r   c               @   s   e Zd ZdS )
EndOfBlockN)r   r   r   r   r   r   r   r   n  s    r   c               @   s   e Zd Zdd Zdd ZdS )BlockFinderc             C   s.   d| _ d| _d| _d| _d| _d| _d| _d S )Nr   Fr   )r   islambdastartedpasslineindecoratordecoratorhasargslast)r   r   r   r   __init__r  s    zBlockFinder.__init__c             C   s&  | j  rD| j rD|dkr d| _n|dkr<|dkr6d| _d| _ d| _n|dkrZ| jrXd| _n|dkrv| jrtd| _d| _n|tjkrd| _|d	 | _| jrt| jr| j rd| _nr| jrnj|tj	kr| j
d
 | _
d| _nL|tjkr | j
d
 | _
| j
d	kr"tn"| j
d	kr"|tjtjfkr"td S )N@Tdefclasslambda()Fr   r   )r   r   r   )r   r   r   r   r   tokenizeNEWLINEr   r   INDENTr   DEDENTCOMMENTNL)r   r   tokenZsrowcolZerowcolr{   r   r   r   
tokeneater{  sB    


zBlockFinder.tokeneaterN)r   r   r   r   r   r   r   r   r   r   p  s   	r   c             C   sZ   t  }y,tjt| j}x|D ]}|j|  qW W n ttfk
rJ   Y nX | d |j S )N)	r   r   generate_tokensiter__next__r   r   IndentationErrorr   )r   ZblockfindertokensZ_tokenr   r   r   getblock  s    
r   c             C   sb   t | } t| \}}t| r"| j} t| s>t| rF| jjdkrF|dfS t||d  |d fS d S )Nz<module>r   r   )	rx   r   r2   r   r   r4   r   co_namer   )r   r   r   r   r   r   getsourcelines  s    r   c             C   s   t | \}}dj|S )Nr   )r   r   )r   r   r   r   r   r   	getsource  s    r   c             C   sV   g }| j tddd x:| D ]2}|j||jf ||kr|jt|| || qW |S )Nr   r   )rI   )rQ   r   rN   rC   walktree)classeschildrenparentrS   r   r   r   r   r     s    
r   Fc             C   s   i }g }xn| D ]f}|j rbxZ|j D ]<}||kr4g ||< ||| krN|| j| |r || kr P q W q||kr|j| qW x|D ]}|| kr~|j| q~W t||d S )N)rC   rN   r   )r   uniquer   rootsr   r   r   r   r   getclasstree  s"    	
 
r  	Argumentszargs, varargs, varkwc             C   s    t | \}}}}t|| ||S )N)_getfullargsr  )coargsvarargs
kwonlyargsvarkwr   r   r   getargs  s    r  c       	      C   s   t | stdj| | j}| j}| j}t|d | }t||||  }d}||7 }d }| jt@ rx| j| }|d }d }| jt	@ r| j| }||||fS )Nz{!r} is not a code objectr   r   )
r6   r   ru   co_argcountco_varnamesco_kwonlyargcountr   r"   
CO_VARARGSCO_VARKEYWORDS)	r  nargsrU   Znkwargsr  r	  stepr  r
  r   r   r   r    s"    



r  ArgSpeczargs varargs keywords defaultsc             C   sD   t jdtdd t| \}}}}}}}|s.|r6tdt||||S )Nzhinspect.getargspec() is deprecated since Python 3.0, use inspect.signature() or inspect.getfullargspec()r   )
stacklevelzdFunction has keyword-only parameters or annotations, use getfullargspec() API which can support them)warningswarnDeprecationWarninggetfullargspecrt   r  )rv   r  r  r
  defaultsr	  kwonlydefaultsannr   r   r   
getargspec   s    
r  FullArgSpeczGargs, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotationsc             C   s`  yt | ddtd}W n, tk
r@ } ztd|W Y d d }~X nX g }d }d }g }f }i }f }i }	|j|jk	rx|j|d< x|jj D ]}
|
j}|
j	}|t
kr|j| nv|tkr|j| |
j|
jk	r||
jf7 }nJ|tkr|}n<|tkr|j| |
j|
jk	r|
j|	|< n|tkr|}|
j|
jk	r|
j||< qW |	sBd }	|sLd }t||||||	|S )NF)follow_wrapper_chainsskip_bound_argsigclszunsupported callablereturn)_signature_from_callable	Signaturerb   r   return_annotationempty
parametersvaluesri   rD   _POSITIONAL_ONLYrN   _POSITIONAL_OR_KEYWORDdefault_VAR_POSITIONAL_KEYWORD_ONLY_VAR_KEYWORD
annotationr  )rv   sigexr  r  r
  r	  r  annotations
kwdefaultsparamri   rD   r   r   r   r  A  sT    





r  ArgInfozargs varargs keywords localsc             C   s    t | j\}}}t|||| jS )N)r  r   r4  f_locals)framer  r  r
  r   r   r   getargvalues  s    r7  c             C   sV   t | dd dkr t| jddS t| trN| jd|fkr>| jS | jd | j S t| S )Nr   Ztypingztyping.r   r   r}   )rB   reprreplacer	   r   r   r   )r.  Zbase_moduler   r   r   formatannotation  s    
r:  c                s   t | dd   fdd}|S )Nr   c                s
   t |  S )N)r:  )r.  )r   r   r   _formatannotation  s    z5formatannotationrelativeto.<locals>._formatannotation)rB   )r   r;  r   )r   r   formatannotationrelativeto  s    r<  c             C   s   d|  S )N*r   )rD   r   r   r   rH     s    rH   c             C   s   d|  S )Nz**r   )rD   r   r   r   rH     s    c             C   s   dt |  S )N=)r8  )rE   r   r   r   rH     s    c             C   s   d|  S )Nz -> r   )textr   r   r   rH     s    c                s(   fdd}g }|r(t | t | }xFt| D ]:\}}||}|rb||krb||
|||   }|j| q2W |d k	r|j||| n|r|jd |rx:|D ]2}||}|r||kr||
|| 7 }|j| qW |d k	r|j|	|| ddj| d }d kr$|| d 7 }|S )Nc                s(   | }|  kr$|d |   7 }|S )Nz: r   )argrf   )r1  r:  	formatargr   r   formatargandannotation  s    z-formatargspec.<locals>.formatargandannotationr=  r   z, r   r!  )rs   	enumeraterN   r   )r  r  r
  r  r	  r  r1  rA  formatvarargsformatvarkwformatvalueZformatreturnsr:  rB  specsZfirstdefaultr   r@  specZ	kwonlyargrf   r   )r1  r:  rA  r   formatargspec  s2    


rI  c             C   s   d|  S )Nr=  r   )rD   r   r   r   rH     s    c             C   s   d|  S )Nz**r   )rD   r   r   r   rH     s    c             C   s   dt |  S )Nr>  )r8  )rE   r   r   r   rH     s    c             C   s   |||fdd}g }	x&t t| D ]}
|	j|| |
  q"W |rZ|	j|||||   |rx|	j|||||   ddj|	 d S )Nc             S   s   || |||   S )Nr   )rD   localsrA  rF  r   r   r   convert  s    z formatargvalues.<locals>.convertr   z, r   )r   rs   rN   r   )r  r  r
  rJ  rA  rD  rE  rF  rK  rG  r   r   r   r   formatargvalues  s    rL  c                s    fdd|D }t |}|dkr,|d }n>|dkr@dj| }n*dj|dd   }|dd = dj|| }td	| ||rzd
nd|dkrdnd|f d S )Nc                s   g | ]}| krt |qS r   )r8  )rZ   rD   )r'  r   r   r\     s    z&_missing_arguments.<locals>.<listcomp>r   r   r   z	{} and {}z, {} and {}z, z*%s() missing %i required %s argument%s: %s
positionalzkeyword-onlyr   r   rN  )rs   ru   r   r   )f_nameZargnamesposr'  rU   missingr   tailr   )r'  r   _missing_arguments  s    


rS  c          	      s   t || }t  fdd|D }|r:|dk}	d|f }
n2|rTd}	d|t |f }
nt |dk}	tt |}
d}|rd}||dkrd	nd||dkrd	ndf }td
| |
|	rd	nd|||dkr| rdndf d S )Nc                s   g | ]}| kr|qS r   r   )rZ   r@  )r'  r   r   r\     s    z_too_many.<locals>.<listcomp>r   zat least %dTzfrom %d to %dr   z7 positional argument%s (and %d keyword-only argument%s)r   z5%s() takes %s positional argument%s but %d%s %s givenZwasZwere)rs   r   r   )rO  r  Zkwonlyr  ZdefcountZgivenr'  ZatleastZkwonly_givenZpluralr/  Z
kwonly_sigmsgr   )r'  r   	_too_many  s$    rU  c              O   s6  | d }| dd  }t |}|\}}}}}	}
}|j}i }t|rV|jd k	rV|jf| }t|}t|}|rrt|nd}t||}x t|D ]}|| ||| < qW |rt||d  ||< t||	 }|ri ||< xd|j	 D ]X\}}||kr|st
d||f ||| |< q||kr,t
d||f |||< qW ||kr^| r^t|||	|||| ||k r|d ||  }x&|D ]}||kr~t||d| q~W x8t||| d  D ] \}}||kr|| ||< qW d}x>|	D ]6}||kr|
r||
kr|
| ||< n|d7 }qW |r2t||	d| |S )Nr   r   z*%s() got an unexpected keyword argument %rz(%s() got multiple values for argument %rTF)r  r   r   r   rs   r   r   ra   rK   rA   r   rU  rS  rC  )Zfunc_and_positionalZnamedrv   rM  rH  r  r  r
  r  r	  r  r  rO  Z	arg2valueZnum_posZnum_argsZnum_defaultsnr   Zpossible_kwargskwrE   Zreqr@  rQ  kwargr   r   r   getcallargs!  sd    








rY  ClosureVarsz"nonlocals globals builtins unboundc       	      C   s   t | r| j} t| s$tdj| | j}| jd kr:i }ndd t|j| jD }| j	}|j
dtj}t|rt|j}i }i }t }xn|jD ]d}|dkrqy|| ||< W q tk
r   y|| ||< W n tk
r   |j| Y nX Y qX qW t||||S )	Nz'{!r}' is not a Python functionc             S   s   i | ]\}}|j |qS r   )cell_contents)rZ   varZcellr   r   r   
<dictcomp>v  s   z"getclosurevars.<locals>.<dictcomp>__builtins__NoneTrueFalse)r_  r`  ra  )r   r   r   r   ru   r!   __closure__zipco_freevars__globals__r   r   r@   r   rK   co_namesKeyErrorrP   rZ  )	rv   codeZnonlocal_varsZ	global_nsZ
builtin_nsZglobal_varsZbuiltin_varsZunbound_namesrD   r   r   r   getclosurevarsa  s8    	
ri  	Tracebackz+filename lineno function code_context indexc             C   s   t | r| j}| j} n| j}t| s2tdj| t| p@t| }|dkr|d |d  }yt	| \}}W n t
k
r   d  }}Y qX tdt|t|| }||||  }|d | }nd  }}t||| jj||S )Nz'{!r} is not a frame or traceback objectr   r   r   )r2   	tb_linenor   f_linenor4   r   ru   r   r   r   r   maxr   rs   rj  r   r   )r6  contextlinenor   r   r   r   indexr   r   r   getframeinfo  s$    rq  c             C   s   | j S )N)rl  )r6  r   r   r   	getlineno  s    rr  	FrameInfor6  c             C   s6   g }x,| r0| ft | | }|jt|  | j} qW |S )N)rq  rN   rs  f_back)r6  rn  	framelist	frameinfor   r   r   getouterframes  s    
rw  c             C   s8   g }x.| r2| j ft| | }|jt|  | j} qW |S )N)r   rq  rN   rs  tb_next)tbrn  ru  rv  r   r   r   getinnerframes  s    
rz  c               C   s   t tdrtjdS d S )N	_getframer   )r   rq   r{  r   r   r   r   currentframe  s    r|  c             C   s   t tjd| S )Nr   )rw  rq   r{  )rn  r   r   r   stack  s    r}  c             C   s   t tj d | S )Nr   )rz  rq   exc_info)rn  r   r   r   trace  s    r  c             C   s   t jd j| S )Nrk   )r   r@   r   )klassr   r   r   _static_getmro  s    r  c             C   s8   i }yt j| d}W n tk
r(   Y nX tj||tS )Nr@   )r   __getattribute__rO   dictr   	_sentinel)rh   attrZinstance_dictr   r   r   _check_instance  s    r  c             C   sF   x@t | D ]4}tt|tkr
y
|j| S  tk
r<   Y q
X q
W tS )N)r  _shadowed_dictr   r  r@   rg  )r  r  entryr   r   r   _check_class  s    

r  c             C   s&   yt |  W n tk
r    dS X dS )NFT)r  r   )rh   r   r   r   _is_type  s
    r  c             C   sn   t jd }x^t| D ]R}y|j|d }W n tk
r>   Y qX t |tjko`|jdko`|j|ks|S qW t	S )Nr@   )
r   r@   r  r   rg  r
   r   r   r]   r  )r  	dict_attrr  Z
class_dictr   r   r   r    s    


r  c             C   s  t }t| s>t| }t|}|t ks2t|tjkrBt| |}n| }t||}|t k	r|t k	rtt|dt k	rtt|dt k	r|S |t k	r|S |t k	r|S | |krxDtt|D ]4}tt|t kry
|j	| S  t
k
r   Y qX qW |t k	r|S t|d S )Nr   r   )r  r  r   r  r
   r   r  r  r  r@   rg  rO   )rh   r  r*  Zinstance_resultr  r  Zklass_resultr  r   r   r   getattr_static  s6    


r  GEN_CREATEDGEN_RUNNINGGEN_SUSPENDED
GEN_CLOSEDc             C   s,   | j r
tS | jd krtS | jjdkr(tS tS )Nr   r~   )
gi_runningr  gi_framer  f_lastir  r  )	generatorr   r   r   getgeneratorstateG  s    	
r  c             C   s:   t | stdj| t| dd }|d k	r2| jjS i S d S )Nz '{!r}' is not a Python generatorr  )r)   r   ru   rB   r  r5  )r  r6  r   r   r   getgeneratorlocalsY  s    r  CORO_CREATEDCORO_RUNNINGCORO_SUSPENDEDCORO_CLOSEDc             C   s,   | j r
tS | jd krtS | jjdkr(tS tS )Nr   r~   )
cr_runningr  cr_framer  r  r  r  )	coroutiner   r   r   getcoroutinestateq  s    	
r  c             C   s"   t | dd }|d k	r|jS i S d S )Nr  )rB   r5  )r  r6  r   r   r   getcoroutinelocals  s    r  
from_bytesc             C   s6   yt | |}W n tk
r"   d S X t|ts2|S d S )N)rB   rO   r	   _NonUserDefinedCallables)r[   Zmethod_namemethr   r   r   "_signature_get_user_defined_method  s    
r  c             C   s  | j }t|j }|jpf }|jp$i }|r2|| }y| j||}W n6 tk
rx } zdj|}	t|	|W Y d d }~X nX d}
x
|j D  ]\}}y|j	| }W n t
k
r   Y nlX |jtkr|j| q|jtkr||krd}
|j|d||< n|j|j q|jtkr"|j|d||< |
r|jtkrV|| jtd}|||< |j| q|jttfkrr|j| q|jtkr|j|j qW | j|j dS )Nz+partial object {!r} has incorrect argumentsFT)r*  )ri   )r&  )r&  r   rA   r  keywordsbind_partialr   ru   rt   	argumentsrg  ri   r(  r   r)  r9  rD   r,  move_to_endr-  r+  r'  )wrapped_sigpartialZ
extra_argsZ
old_params
new_paramsZpartial_argsZpartial_keywordsZbar0  rT  Ztransform_to_kwonly
param_namer3  Z	arg_valueZ	new_paramr   r   r   _signature_get_partial  sL    





r  c             C   sn   t | jj }| s&|d jttfkr.td|d j}|ttfkrR|dd  }n|t	k	rbtd| j
|dS )Nr   zinvalid method signaturer   zinvalid argument type)r&  )ra   r&  r'  ri   r-  r,  rt   r)  r(  r+  r9  )r/  paramsri   r   r   r   _signature_bound_method  s    
r  c             C   s&   t | p$t| p$t| tp$| ttfkS )N)r8   r   r	   r  r   r   )rh   r   r   r   _signature_is_builtin  s    
r  c             C   s   t |  st| rdS t| dd }t| dd }t| dt}t| dt}t| dd }t|tjot|to|d kszt|to|d kst|t	ot|t	S )NFr   r!   __defaults____kwdefaults____annotations__)
callabler   rB   _voidr	   r
   r5   r   ra   r  )rh   rD   rh  r  r2  r1  r   r   r   _signature_is_functionlike!  s    
r  c             C   s<   | j d}|dkr| j d}| j d}| j d}| d| S )N,r   r   :r>  r   r~   )find)rH  rP  Zcposr   r   r   _signature_get_bound_param:  s    




r  c             C   s$  | s| d d fS d }d }dd | j dD }t|j}tj|}d}d}g }|j}	d}
tj}tj}t|}x|D ]}|j	|j
 }}||kr|dkr|rd}qnd}|
d7 }
qn|d	krd}|
d }qn||kr|d
kr|
}qn|rd}||ko|dks|	d |	| |dkrn|	d qnW dj|}|||fS )Nc             S   s   g | ]}|j d qS )ascii)encode)rZ   lr   r   r   r\   d  s    z6_signature_strip_non_python_syntax.<locals>.<listcomp>r   Fr   r  Tr   /$r   z,  r   )r   r   r   r   rN   r   OP
ERRORTOKENnextr   stringr   )	signatureself_parameterlast_positional_onlyr   r  Ztoken_streamZdelayed_commaZskip_next_commar?  rP   Zcurrent_parameterr  r  tr   r  clean_signaturer   r   r   "_signature_strip_non_python_syntaxQ  sP    




r  Tc                sV  | j  t|\}}}d| d }ytj|}W n tk
rF   d }Y nX t|tjsbtdj||j	d }	g  j
t d }i t|dd }
|
rtjj|
d }|r|jtjj dd fdd		G 	fd
ddtjf fdd	}t|	jj}t|	jj}tj||d d}|d k	r8 jn jx<ttt|D ](\}\}}||| ||krP jqPW |	jjr j||	jj  jx*t|	jj |	jj!D ]\}}||| qW |	jj"r j#||	jj" |d k	rHt|dd }|d k	}t$|}|r.|s"|r.j%d nd j& jd}|d< | | j
dS )Nzdef fooz: passz"{!r} builtin has invalid signaturer   r   c             S   s   | j d krtd| jS )Nz'Annotations are not currently supported)r.  rt   r@  )noder   r   r   
parse_name  s    
z&_signature_fromstr.<locals>.parse_namec                s   yt |  }W n> tk
rL   yt | }W n tk
rF   t Y nX Y nX t|trbtj|S t|ttfrztj	|S t|t
rtj|S |dkrtj|S t d S )NTF)TFN)eval	NameErrorRuntimeErrorr	   r   astZStrintfloatZNumbytesZBytesZNameConstant)r   rE   )module_dictsys_module_dictr   r   
wrap_value  s     





z&_signature_fromstr.<locals>.wrap_valuec                   s$   e Zd Z fddZ fddZdS )z,_signature_fromstr.<locals>.RewriteSymbolicsc                s`   g }|}x"t |tjr*|j|j |j}q
W t |tjs>t |j|j dj	t
|} |S )Nr}   )r	   r  rY   rN   r  rE   Namer  rp   r   reversed)r   r  arV  rE   )r  r   r   visit_Attribute  s    
z<_signature_fromstr.<locals>.RewriteSymbolics.visit_Attributec                s   t |jtjst  |jS )N)r	   Zctxr  ZLoadrt   rp   )r   r  )r  r   r   
visit_Name  s    z7_signature_fromstr.<locals>.RewriteSymbolics.visit_NameN)r   r   r   r  r  r   )r  r   r   RewriteSymbolics  s   r  c                s   | }|krd S |rp|t k	rpy j|}tj|}W n tk
rR   }Y nX |kr`d S |k	rl|n|}j ||d d S )N)r*  r.  )_emptyZvisitr  Zliteral_evalrt   rN   )Z	name_nodeZdefault_noder*  rD   o)	Parameterr  r%  invalidri   r&  r  r   r   p  s    
z_signature_fromstr.<locals>.p)	fillvaluer   )ri   )r$  )'_parameter_clsr  r  parseSyntaxErrorr	   ZModulert   ru   Zbodyr%  r   rB   rq   r   r   r@   copyZNodeTransformerr  r  r  	itertoolszip_longestPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrC  r   ZvarargVAR_POSITIONALKEYWORD_ONLYrc  r	  Zkw_defaultsrX  VAR_KEYWORDr   r   r9  )r[   rh   r   r  r  r  r  Zprogramr   rn   Zmodule_namer  r  r  r   r   rD   r*  _selfZself_isboundZself_ismoduler   )
r  r  r%  r  ri   r  r&  r  r  r  r   _signature_fromstr  sj    








r  c             C   sB   t |stdj|t|dd }|s4tdj|t| |||S )Nz%{!r} is not a Python builtin function__text_signature__z#no signature found for builtin {!r})r  r   ru   rB   rt   r  )r[   rv   r  r   r   r   r   _signature_from_builtin&  s    r  c             C   s  d}t |s(t|rd}ntdj|| j}|j}|j}|j}t|d | }|j	}||||  }	|j
}
|j}|j}|rt|}nd}g }|| }x4|d | D ]$}|
j|t}|j|||td qW xBt||d  D ].\}}|
j|t}|j|||t|| d qW |jt@ rH|||  }|
j|t}|j|||td xJ|	D ]B}t}|d k	rl|j|t}|
j|t}|j|||t|d qNW |jt@ r|| }|jt@ r|d7 }|| }|
j|t}|j|||td | ||
jdt|d	S )
NFTz{!r} is not a Python functionr   )r.  ri   )r.  ri   r*  r   r!  )r$  __validate_parameters__)r   r  r   ru   r  r!   r  r  ra   r  r  r  r  rs   r   r  rN   r)  rC  r"   r  r+  r,  r  r-  )r[   rv   Zis_duck_functionr  Z	func_codeZ	pos_countZ	arg_namesrM  Zkeyword_only_countZkeyword_onlyr1  r  r2  Zpos_default_countr&  Znon_default_countrD   r.  offsetr*  rp  r   r   r   _signature_from_function6  sj    










r  )r  r  c         !   C   s  t | stdj| t| tjrDt| j|||d}|r@t|S |S |rtt	| dd d} t| tjrtt| |||dS y
| j
}W n tk
r   Y n&X |d k	rt|tstdj||S y
| j}W n tk
r   Y nvX t|tjrLt|j|||d}t||d}t|jj d }|jtjkr(|S t|jj }|f| }	|j|	dS t| s`t| rjt|| S t| rt|| |d	S t| tjrt| j|||d}t|| S d }t| trt t| d
}
|
d k	rt|
|||d}nJt | d}|d k	rt||||d}n$t | d}|d k	r0t||||d}|d kr:xL| j!d d D ]:}y
|j"}W n tk
rn   Y nX |rJt#|| |S qJW t| j!kr:| j$t%j$kr| j&t%j&krt't%S t(dj| nrt| t)s:t t| d
}
|
d k	r:yt|
|||d}W n8 t(k
r8 } zdj| }t(||W Y d d }~X nX |d k	rV|rRt|S |S t| tj*rvdj| }t(|t(dj| d S )Nz{!r} is not a callable object)r  r  r   c             S   s
   t | dS )N__signature__)r   )rn   r   r   r   rH     s    z*_signature_from_callable.<locals>.<lambda>)rl   z1unexpected object {!r} in __signature__ attributer   )r&  )r  __call____new__r   r   z(no signature found for builtin type {!r}zno signature found for {!r}z,no signature found for builtin function {!r}z+callable {!r} is not supported by signature)Nr~   )+r  r   ru   r	   r
   r   r"  r   r  rx   r  rO   r#  _partialmethod	functoolspartialmethodrv   r  ra   r&  r'  ri   r  r  r9  r   r  r  r  r  r  r   r  rk   r  r  r   r   r  r  rt   r  r7   )rh   r  r  r   r/  r  r  Zfirst_wrapped_paramZ
sig_paramsr  ZcallnewZinitrF   Ztext_sigr0  rT  r   r   r   r"    s    	



















r"  c               @   s   e Zd ZdS )r  N)r   r   r   r   r   r   r   r  P	  s   r  c               @   s   e Zd ZdS )r  N)r   r   r   r   r   r   r   r  T	  s   r  c               @   s(   e Zd ZdZdZdZdZdZdd ZdS )	_ParameterKindr   r   r         c             C   s   | j S )N)_name_)r   r   r   r   __str___	  s    z_ParameterKind.__str__N)	r   r   r   r  r  r  r  r  r  r   r   r   r   r  X	  s   r  zpositional-onlyzpositional or keywordzvariadic positionalzkeyword-onlyzvariadic keywordc               @   s   e Zd Zd ZeZeZeZ	e
ZeZeZeedddZdd	 Zd
d Zedd Zedd Zedd Zedd ZeeeedddZdd Zdd Zdd Zdd ZdS )!r  _name_kind_default_annotation)r*  r.  c            C   s"  yt || _W n$ tk
r2   td|dY nX |tk	rf| jttfkrfd}|jt| j}t||| _|| _	|tkrtdt
|tsdjt|j}t||d dko|dd  j r | jtkrd	}|jt| j}t|t| _d
j|dd  }|j stdj||| _d S )Nzvalue z is not a valid Parameter.kindz({} parameters cannot have default valuesz*name is a required attribute for Parameterzname must be a str, not a {}r   r}   r   zLimplicit arguments must be passed as positional or keyword arguments, not {}z
implicit{}z"{!r} is not a valid parameter name)r  r  rt   r  r+  r-  ru   _get_paramkind_descrr  r  r	   r   r   r   r   isdigitr)  r(  isidentifierr   )r   rD   ri   r*  r.  rT  r   r   r   r   	  s4    


zParameter.__init__c             C   s    t | | j| jf| j| jdfS )N)r  r  )r   r   r  r  r  )r   r   r   r   
__reduce__	  s    
zParameter.__reduce__c             C   s   |d | _ |d | _d S )Nr  r  )r  r  )r   stater   r   r   __setstate__	  s    
zParameter.__setstate__c             C   s   | j S )N)r   )r   r   r   r   rD   	  s    zParameter.namec             C   s   | j S )N)r  )r   r   r   r   r*  	  s    zParameter.defaultc             C   s   | j S )N)r  )r   r   r   r   r.  	  s    zParameter.annotationc             C   s   | j S )N)r  )r   r   r   r   ri   	  s    zParameter.kind)rD   ri   r.  r*  c            C   sL   |t kr| j}|t kr| j}|t kr*| j}|t kr8| j}t| ||||dS )N)r*  r.  )r  r   r  r  r  r   )r   rD   ri   r.  r*  r   r   r   r9  	  s    zParameter.replacec             C   sj   | j }| j}| jtk	r(dj|t| j}| jtk	rDdj|t| j}|tkrVd| }n|t	krfd| }|S )Nz{}:{}z{}={}r=  z**)
ri   r   r  r  ru   r:  r  r8  r+  r-  )r   ri   	formattedr   r   r   r  	  s    


zParameter.__str__c             C   s   dj | jj| S )Nz	<{} "{}">)ru   r   r   )r   r   r   r   __repr__	  s    zParameter.__repr__c             C   s   t | j| j| j| jfS )N)hashrD   ri   r.  r*  )r   r   r   r   __hash__	  s    zParameter.__hash__c             C   sJ   | |krdS t |tstS | j|jkoH| j|jkoH| j|jkoH| j|jkS )NT)r	   r  NotImplementedr   r  r  r  )r   otherr   r   r   __eq__
  s    
zParameter.__eq__N)r   r  r  r  )r   r   r   	__slots__r(  r  r)  r  r+  r  r,  r  r-  r  r  r%  r   r  r	  r^   rD   r*  r.  ri   r  r9  r  r  r  r  r   r   r   r   r  t	  s(   (r  c               @   sd   e Zd ZdZdd Zedd Zedd	 Zed
d Zdd Z	dd Z
dd Zdd Zdd ZdS )BoundArgumentsr  
_signature__weakref__c             C   s   || _ || _d S )N)r  r  )r   r  r  r   r   r   r   
  s    zBoundArguments.__init__c             C   s   | j S )N)r  )r   r   r   r   r  #
  s    zBoundArguments.signaturec             C   s|   g }xn| j jj D ]^\}}|jttfkr*P y| j| }W n tk
rN   P Y qX |jtkrf|j	| q|j
| qW t|S )N)r  r&  rA   ri   r-  r,  r  rg  r+  extendrN   ra   )r   r  r  r3  r@  r   r   r   r  '
  s    
zBoundArguments.argsc             C   s   i }d}x| j jj D ]x\}}|sF|jttfkr6d}n|| jkrFd}q|sLqy| j| }W n tk
rn   Y qX |jtkr|j| q|||< qW |S )NFT)	r  r&  rA   ri   r-  r,  r  rg  update)r   kwargsZkwargs_startedr  r3  r@  r   r   r   r  >
  s&    

zBoundArguments.kwargsc             C   s   | j }g }x| jjj D ]v\}}y|j||| f W q tk
r   |jtk	rX|j}n"|jt	krhf }n|jt
krxi }nw|j||f Y qX qW t|| _ d S )N)r  r  r&  rA   rN   rg  r*  r  ri   r+  r-  r   )r   r  Znew_argumentsrD   r3  valr   r   r   apply_defaults\
  s    	


zBoundArguments.apply_defaultsc             C   s2   | |krdS t |tstS | j|jko0| j|jkS )NT)r	   r  r  r  r  )r   r  r   r   r   r  x
  s    
zBoundArguments.__eq__c             C   s   |d | _ |d | _d S )Nr  r  )r  r  )r   r  r   r   r   r	  
  s    
zBoundArguments.__setstate__c             C   s   | j | jdS )N)r  r  )r  r  )r   r   r   r   __getstate__
  s    zBoundArguments.__getstate__c             C   sD   g }x(| j j D ]\}}|jdj|| qW dj| jjdj|S )Nz{}={!r}z	<{} ({})>z, )r  rA   rN   ru   r   r   r   )r   r  r@  rE   r   r   r   r  
  s    zBoundArguments.__repr__N)r  r  r  )r   r   r   r  r   r^   r  r  r  r  r  r	  r  r  r   r   r   r   r  
  s   r  c               @   s   e Zd Zd,ZeZeZeZ	d-eddddZ
edd	 Zed
d ZeddddZedd Zedd ZeedddZdd Zdd Zdd ZddddZd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ ZdS ).r#  _return_annotation_parametersNT)r$  r  c            C   s   |d krt  }n|rt  }t}d}xt|D ]\}}|j}	|j}
|	|k rjd}|jt|t|	}t|n|	|krzd}|	}|	ttfkr|j	t
kr|rd}t|nd}|
|krdj|
}t||||
< q,W nt dd |D }tj|| _|| _d S )NFz7wrong parameter order: {} parameter before {} parameterz-non-default argument follows default argumentTzduplicate parameter name: {!r}c             s   s   | ]}|j |fV  qd S )N)rD   )rZ   r3  r   r   r   r   
  s   z%Signature.__init__.<locals>.<genexpr>)r   r(  rC  ri   rD   ru   r  rt   r)  r*  r  r
   MappingProxyTyper  r  )r   r&  r$  r  r  Ztop_kindZkind_defaultsidxr3  ri   rD   rT  r   r   r   r   
  s>    






zSignature.__init__c             C   s   t jdtdd t| |S )Nz_inspect.Signature.from_function() is deprecated since Python 3.5, use Signature.from_callable()r   )r  )r  r  r  r  )r[   rv   r   r   r   from_function
  s    
zSignature.from_functionc             C   s   t jdtdd t| |S )Nz^inspect.Signature.from_builtin() is deprecated since Python 3.5, use Signature.from_callable()r   )r  )r  r  r  r  )r[   rv   r   r   r   from_builtin
  s    
zSignature.from_builtin)follow_wrappedc            C   s   t || |dS )N)r   r  )r"  )r[   rh   r!  r   r   r   from_callable
  s    zSignature.from_callablec             C   s   | j S )N)r  )r   r   r   r   r&    s    zSignature.parametersc             C   s   | j S )N)r  )r   r   r   r   r$    s    zSignature.return_annotation)r&  r$  c            C   s0   |t kr| jj }|t kr | j}t| ||dS )N)r$  )r  r&  r'  r  r   )r   r&  r$  r   r   r   r9  	  s    
zSignature.replacec             C   s8   t dd | jj D }dd | jj D }||| jfS )Nc             s   s   | ]}|j tkr|V  qd S )N)ri   r,  )rZ   r3  r   r   r   r     s    z(Signature._hash_basis.<locals>.<genexpr>c             S   s   i | ]}|j tkr||jqS r   )ri   r,  rD   )rZ   r3  r   r   r   r]    s    z)Signature._hash_basis.<locals>.<dictcomp>)ra   r&  r'  r$  )r   r  
kwo_paramsr   r   r   _hash_basis  s    zSignature._hash_basisc             C   s(   | j  \}}}t|j }t|||fS )N)r$  	frozensetr'  r  )r   r  r#  r$  r   r   r   r  !  s    zSignature.__hash__c             C   s*   | |krdS t |tstS | j |j kS )NT)r	   r#  r  r$  )r   r  r   r   r   r  &  s
    
zSignature.__eq__F)r  c            C   s  t  }t| jj }f }t|}xxyt|}W n tk
r   yt|}	W n tk
rb   P Y nX |	jtkrrP n|	j|kr|	jt	krd}
|
j
|	jd}
t|
d |	f}P nH|	jtks|	jtk	r|	f}P n*|r|	f}P nd}
|
j
|	jd}
t|
d Y q$X yt|}	W n  tk
r&   tdd Y q$X |	jttfkrBtdd |	jtkrn|g}|j| t|||	j< P |	j|krtdj
|	jdd |||	j< q$W d }xtj||D ]}	|	jtkr|	}q|	jtkr֐q|	j}y|j|}W nH tk
r2   | r.|	jtkr.|	jtkr.tdj
|dd Y n(X |	jt	krRtdj
|	jd|||< qW |r|d k	r||||j< ntdj
tt|d| j| |S )NzA{arg!r} parameter is positional only, but was passed as a keyword)r@  z$missing a required argument: {arg!r}ztoo many positional argumentsz$multiple values for argument {arg!r}z*got an unexpected keyword argument {arg!r})r   r   r&  r'  r  StopIterationri   r+  rD   r(  ru   r   r-  r*  r  r,  r  ra   r  chainr   rg  _bound_arguments_cls)r   r  r  r  r  r&  Zparameters_exZarg_valsZarg_valr3  rT  r'  Zkwargs_paramr  r   r   r   _bind-  s    







zSignature._bindc              O   s   | d j | dd  |S )Nr   r   )r)  )r  r  r   r   r   bind  s    zSignature.bindc              O   s   | d j | dd  |ddS )Nr   r   T)r  )r)  )r  r  r   r   r   r    s    zSignature.bind_partialc             C   s    t | t| jj fd| jifS )Nr  )r   ra   r  r'  r  )r   r   r   r   r    s    zSignature.__reduce__c             C   s   |d | _ d S )Nr  )r  )r   r  r   r   r   r	    s    zSignature.__setstate__c             C   s   dj | jj| S )Nz<{} {}>)ru   r   r   )r   r   r   r   r    s    zSignature.__repr__c       	      C   s   g }d}d}xr| j j D ]d}t|}|j}|tkr8d}n|rJ|jd d}|tkrXd}n|tkrr|rr|jd d}|j| qW |r|jd djdj	|}| j
tk	rt| j
}|dj|7 }|S )NFTr  r=  z({})z, z -> {})r&  r'  r   ri   r(  rN   r+  r,  ru   r   r$  r  r:  )	r   rf   Zrender_pos_only_separatorZrender_kw_only_separatorr3  r
  ri   ZrenderedZannor   r   r   r    s0    




zSignature.__str__)r  r  )N)r   r   r   r  r  r  r  r(  r  r%  r   re   r  r   r"  r^   r&  r$  r  r9  r$  r  r  r)  r*  r  r  r	  r  r  r   r   r   r   r#  
  s0   6	 r#  )r!  c            C   s   t j| |dS )N)r!  )r#  r"  )rh   r!  r   r   r   r    s    r  c              C   s  dd l } dd l}| j }|jddd |jddddd	 |j }|j}|jd
\}}}y|j| }}	W nL tk
r }
 z0dj	|t
|
j|
}t|tjd td W Y d d }
~
X nX |r|jd}|	}x|D ]}t||}qW |	jtjkrtdtjd td |jrtdj	| tdj	t|	 tdj	|	j ||	krxtdj	t|	j t|	drtdj	|	j n6yt|\}}W n tk
r   Y nX tdj	| td ntt| d S )Nr   r   zCThe object to be analysed. It supports the 'module:qualname' syntax)helpz-dz	--details
store_truez9Display info about the module rather than its source code)actionr+  r  zFailed to import {} ({}: {}))r   r   r}   z#Can't get info for builtin modules.r   z
Target: {}z
Origin: {}z
Cached: {}z
Loader: {}__path__zSubmodule search path: {}zLine: {}r   )argparser   ArgumentParseradd_argument
parse_argsr   	partitionimport_modulerb   ru   r   r   printrq   stderrexitr   rB   builtin_module_namesZdetailsr   
__cached__r8  r   r   r.  r   r   )r/  r   parserr  targetZmod_nameZ	has_attrsZattrsrh   r   rg   rT  partspart__ro  r   r   r   _main  sV    



r?  r   )r   r   i   )N)N)N)F)N)r   )r6  )r   )r   )r   )r   )T)T)
__author__r.   r  Zdiscollections.abcr-   enumimportlib.machineryr   r  r   r   r   rq   r   r   r
   r  r  r   operatorr   r   r   globalsZmod_dictZCOMPILER_FLAG_NAMESrA   rV   rW   r=   r   r   r   r   r   r   r   r   r   r#   r$   r%   r'   r)   r+   r0   r2   r4   r6   r8   r9   rG   rX   rY   rj   rJ   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   rb   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r4  r7  r:  r<  r   rI  rL  rS  rU  rY  rZ  ri  rj  rq  rr  _fieldsrs  rw  rz  r|  r}  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  Z_WrapperDescriptorallZ_MethodWrapperr  r@   Z_ClassMethodWrapperr7   r  r  r  r  r  r  r  r  r  r  r  r"  r  r  IntEnumr  r  r(  r  r)  r  r+  r  r,  r  r-  Z_PARAM_NAME_MAPPING__getitem__r  r  r  r#  r  r?  r   r   r   r   r   <module>   sd   	


	
	
,
t$
;
	
.I-7





[


	(>
5

 



		0

LH R H    k:
