<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]                @   s  d  d f 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 <qWd d >Z 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  rd 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.   Z/ d/ d0   Z0 d1 d2   Z1 d d3 d4  Z2 e d5 d6  Z3 d7 d8   Z4 d9 d:   Z5 d; d d< d=  Z6 d> d?   Z7 d@ dA   Z8 dB dC   Z9 dD dE   Z: dF dG   Z; dH dI   Z< e dJ dK  Z= dL dM   Z> dN dO   Z? dP dQ   Z@ d dR dS  ZA i  ZB i  ZC d dT dU  ZD dV dW   ZE dX dY   ZF GdZ d[   d[ eG  ZH Gd\ d]   d]  ZI d^ d_   ZJ d` da   ZK db dc   ZL dd de   ZM df dg dh  ZN e di dj  ZO dk dl   ZP dm dn   ZQ e do dp  ZR dq dr   ZS e ds dt  ZT du dv   ZU e dw dx  ZV dy dz   ZW d d{ d|  ZX d} d~   ZY d d d f  i  i  eZ d d   d d   d d   d d   eX d d  Z[ eZ d d   d d   d d   d d  Z\ d d   Z] d d   Z^ d d   Z_ e d d  Z` d d   Za e d d  Zb d d d  Zc d d   Zd e d d f eb je  Zf d d d  Zg d d d  Zh d d   Zi d d d  Zj d d d  Zk el   Zm d d   Zn d d   Zo d d   Zp d d   Zq d d   Zr em d d  Zs d Zt d Zu d Zv d Zw d d   Zx d d   Zy d Zz d Z{ d Z| d Z} d d   Z~ d d   Z e e j  Z e e j  Z e e j d  Z e e e e j f Z d d   Z f  d d  Z d d   Z d d   Z d d   Z d d   Z d d   Z d d d  Z d d d  Z d d   Z d d d d d d  Z Gd d   d  Z Gd d   d  Z Gd d   d e j  Z e j Z e j Z e j Z e j Z e j Z Gd d   d  Z Gd d   d  Z Gd d   d  Z d d d d  Z d d   Z e d k re   d S)zKa-Ping Yee <ping@lfw.org>z'Yury Selivanov <yselivanov@sprymix.com>    N)
attrgetter)
namedtupleOrderedDictZCO_      c             C   s   t  |  t j  S)N)
isinstancetypes
ModuleType)object r   ,/opt/alt/python35/lib64/python3.5/inspect.pyismodule?   s    r   c             C   s   t  |  t  S)N)r   type)r
   r   r   r   isclassH   s    r   c             C   s   t  |  t j  S)N)r   r   
MethodType)r
   r   r   r   ismethodP   s    r   c             C   sQ   t  |   s$ t |   s$ t |   r( d St |   } t | d  oP t | d  S)NF__get____set__)r   r   
isfunctionr   hasattr)r
   tpr   r   r   ismethoddescriptorZ   s    $r   c             C   sP   t  |   s$ t |   s$ t |   r( d St |   } t | d  oO t | d  S)NFr   r   )r   r   r   r   r   )r
   r   r   r   r   isdatadescriptorn   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 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   sM   t  |  t j  pL t  |  t j  r: t |  j j t @ pL t  |  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    r+   c             C   s   t  |  t j  S)N)r   r   TracebackType)r
   r   r   r   istraceback   s    r-   c             C   s   t  |  t j  S)N)r   r   	FrameType)r
   r   r   r   isframe   s    r/   c             C   s   t  |  t j  S)N)r   r   CodeType)r
   r   r   r   iscode   s    r1   c             C   s   t  |  t j  S)N)r   r   BuiltinFunctionType)r
   r   r   r   	isbuiltin  s    r3   c             C   s.   t  |   p- t |   p- t |   p- t |   S)N)r3   r   r   r   )r
   r   r   r   	isroutine  s    r4   c             C   s    t  t |  t  o |  j t @ S)N)r   r   r   	__flags__TPFLAGS_IS_ABSTRACT)r
   r   r   r   
isabstract  s    r7   c             C   sx  t  |   r" |  f t |   } n f  } g  } t   } t |   } yW xP |  j D]E } x< | j j   D]+ \ } } t | t j	  rf | j
 |  qf WqP WWn t k
 r Yn Xx | D] }	 y% t |  |	  }
 |	 | k r t  WnC t k
 r&x. | D]# } |	 | j k r | j |	 }
 Pq Ww Yn X| s:| |
  rM| j
 |	 |
 f  | j |	  q W| j d d d    | S)Nkeyc             S   s   |  d S)Nr   r   )Zpairr   r   r   <lambda>E  s    zgetmembers.<locals>.<lambda>)r   getmrosetdir	__bases____dict__itemsr   r   DynamicClassAttributeappendAttributeErrorgetattraddsort)r
   	predicatemroresults	processednamesbasekvr8   valuer   r   r   
getmembers  s:    	
rO   	Attributezname kind defining_class objectc             C   s  t  |   } t  t |    } t d d   | D  } |  f | } | | } t |   } xM | D]E } x< | j j   D]+ \ } } t | t j  rw | j	 |  qw Wqa Wg  }	 t
   }
 xF| D]>} d  } d  } d  } | |
 k ry+ | d k r t d   t |  |  } Wn% t k
 r6} z WYd  d  } ~ Xn Xt | d |  } | | k rd  } d  } x2 | D]* } t | | d   } | | k rh| } qhWxN | D]F } y | j |  |  } Wn t k
 rwYn X| | k r| } qW| d  k	 r| } x= | D]5 } | | j k r | j | } | | k r4| } Pq W| d  k rHq | d  k	 rZ| n | } t | t  r~d } | } nW t | t  rd } | } n9 t | t  rd } | } n t |  rd	 } n d
 } |	 j	 t | | | |   |
 j |  q W|	 S)Nc             S   s(   g  |  ] } | t  t f k r |  q Sr   )r   r
   ).0clsr   r   r   
<listcomp>g  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)r:   r   tupler<   r>   r?   r   r   r@   rA   r;   	ExceptionrC   __getattr__rB   staticmethodclassmethodrU   r4   rP   rD   )rR   rG   ZmetamroZclass_basesZ	all_basesrJ   rK   rL   rM   resultrI   nameZhomeclsZget_objZdict_objexcZlast_clsZsrch_clsZsrch_objobjkindr   r   r   classify_class_attrsJ  s    
	


				rb   c             C   s   |  j  S)N)__mro__)rR   r   r   r   r:     s    r:   stopc               s     d  k r d d   } n   f d d   } |  } t  |  h } xS | |   r |  j }  t  |   } | | k r t d j |    | j |  qE W|  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)Nre   )r   )rf   )rd   r   r   rg     s    z!wrapper loop when unwrapping {!r})idre   
ValueErrorformatrD   )funcrd   rg   rf   memoZid_funcr   )rd   r   unwrap  s    	rm   c             C   s&   |  j    } t |  t | j    S)N)
expandtabslenlstrip)lineZexpliner   r   r   
indentsize  s    rr   c             C   so   t  j j |  j  } | d  k r% d  Sx3 |  j j d  d  d  D] } t | |  } qB Wt |  sk d  S| S)N.r   )sysmodulesget
__module____qualname__splitrC   r   )rk   rR   r^   r   r   r   
_findclass  s    #r{   c             C   sb  t  |   re xR |  j D]G } | t k	 r y | j } Wn t k
 rL w Yn X| d  k	 r | Sq Wd  St |   r |  j j } |  j } t  |  r t	 t	 | | d   d  |  j k r | } q| j
 } nAt |   r|  j } t |   } | d  k st	 | |  |  k	 rd  Sn t |   rm|  j } |  j } t  |  ra| j d | |  j k ra| } q| j
 } n t |  t  r|  j } | j } t |  } | d  k st	 | |  |  k	 rd  SnJ t |   st |   r|  j } |  j } t	 | |  |  k	 rd  Sn d  SxO | j D]D } y t	 | |  j } Wn t k
 rIwYn X| d  k	 r| SqWd  S)N__func__rs   )r   rc   r
   __doc__rB   r   r|   __name____self__rC   	__class__r   r{   r3   ry   r   rU   fgetr   r   rT   )r`   rK   docr^   selfrR   rk   r   r   r   _finddoc  sb    	$		!					!		r   c             C   s~   y |  j  } Wn t k
 r% d  SYn X| d  k ra y t |   } Wn t t f k
 r` d  SYn Xt | t  st d  St |  S)N)r}   rB   r   	TypeErrorr   strcleandoc)r
   r   r   r   r   getdoc/  s    		r   c             C   sF  y |  j    j d  } Wn t k
 r1 d  SYnXt j } xO | d d   D]= } t | j    } | rL t |  | } t | |  } qL W| r | d j   | d <| t j k  r x5 t d t |   D] } | | | d   | | <q Wx | r| d r| j	   q Wx" | r4| d r4| j	 d  qWd j
 |  Sd  S)N
r   r   rt   )rn   rz   UnicodeErrorru   maxsizero   rp   minrangepopjoin)r   linesmarginrq   Zcontentindentir   r   r   r   B  s(    		 r   c             C   s  t  |   r7 t |  d  r" |  j St d j |     t |   r t |  d  r} t j j |  j	  }  t |  d  r} |  j St d j |     t
 |   r |  j }  t |   r |  j }  t |   r |  j }  t |   r |  j }  t |   r |  j St d j |     d  S)N__file__z{!r} is a built-in modulerx   z{!r} is a built-in classzO{!r} is not a module, class, method, function, traceback, frame, or code object)r   r   r   r   rj   r   ru   rv   rw   rx   r   r|   r   r   r-   tb_framer/   f_coder1   co_filename)r
   r   r   r   getfile_  s,    					r   
ModuleInfozname suffix mode module_typec             C   s   t  j d t d  t  j   ! t  j d t  d d  l } Wd  QRXt j j	 |   } d d   | j
   D } | j   xM | D]E \ } } } } | | d   | k r t | d  |  | | |  Sq Wd  S)Nz%inspect.getmoduleinfo() is deprecated   ignorer   c             S   s2   g  |  ]( \ } } } t  |  | | | f  q Sr   )ro   )rQ   suffixmodemtyper   r   r   rS     s   	z!getmoduleinfo.<locals>.<listcomp>)warningswarnDeprecationWarningcatch_warningssimplefilterPendingDeprecationWarningimpospathbasenameZget_suffixesrE   r   )r   r   filenamesuffixesneglenr   r   r   r   r   r   getmoduleinfoz  s    	
r   c             C   sp   t  j j |   } d d   t j j   D } | j   x1 | D]) \ } } | j |  r? | d  |  Sq? Wd  S)Nc             S   s#   g  |  ] } t  |  | f  q Sr   )ro   )rQ   r   r   r   r   rS     s   	z!getmodulename.<locals>.<listcomp>)r   r   r   	importlib	machineryall_suffixesrE   endswith)r   Zfnamer   r   r   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  St j j    r   St t |     d d   d  k	 r   S  t j k r   Sd  S)Nc             3   s   |  ] }   j  |  Vq d  S)N)r   )rQ   s)r   r   r   	<genexpr>  s    z getsourcefile.<locals>.<genexpr>r   c             3   s   |  ] }   j  |  Vq d  S)N)r   )rQ   r   )r   r   r   r     s    
__loader__)r   r   r   DEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESanyr   r   splitextSOURCE_SUFFIXESEXTENSION_SUFFIXESexistsrC   	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 |  St |  d  r2 t j j |  j  S| d  k	 r^ | t k r^ t j j t |  Sy t |  |  } Wn t k
 r d  SYn X| t k r t j j t |  Sx t	 t j j
    D] \ } } t  |  r t | d  r | j } | t j | d   k rq | t | <t |  } | j t | <t t j j |  <q W| t k rft j j t |  St j d } t |  d  sd  St | |  j  rt | |  j  } | |  k r| St j d } t | |  j  rt | |  j  }	 |	 |  k r| Sd  S)Nrx   r   __main__r~   builtins)r   r   ru   rv   rw   rx   modulesbyfiler   r   listr?   r   _filesbymodnamer~   r   r   realpathrC   )
r
   r   filemodnamemodulerf   mainZ
mainobjectZbuiltinZbuiltinobjectr   r   r   r     sD    	"	
%r   c       
      C   sn  t  |   } | r" t j |  n6 t |   } | j d  oI | j d  sX t d   t |  |  } | r t j | | j	  } n t j |  } | s t d   t
 |   r | d f St |   r|  j } t j d | d  } g  } xm t t |   D]Y } | j | |  } | r| | d d k r>| | f S| j | j d	  | f  qW| r| j   | | d d	 f St d
   t |   r|  j }  t |   r|  j }  t |   r|  j }  t |   r|  j }  t |   r^t |  d  st d   |  j d	 }	 t j d  } x. |	 d k rS| j | |	  rFP|	 d	 }	 q&W| |	 f St 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   ro   matchrA   grouprE   r   r|   r   r   r-   r   r/   r   r1   r   r   )
r
   r   r   r   r^   patZ
candidatesr   r   lnumr   r   r   
findsource  s^    
	
 
				 
r   c             C   s  y t  |   \ } } Wn t t f k
 r4 d  SYn Xt |   rBd } | rm | d d  d  d k rm d } x6 | t |  k  r | | j   d k r | d } qp W| t |  k  r| | d  d  d k rg  } | } xQ | t |  k  r1| | d  d  d k r1| j | | j    | d } q Wd j |  Sn| d k rt	 | |  } | d } | d k r| | j
   d  d  d k rt	 | |  | k r| | j   j
   g } | d k rb| d } | | j   j
   } xp | d  d  d k rat	 | |  | k ra| g | d  d  <| d } | d k  rHP| | j   j
   } qWx0 | r| d j   d k rg  | d  d  <qeWx0 | r| d j   d k rg  | d	 d   <qWd j |  Sd  S)
Nr   r   z#!r    #)r   r   rt   rt   )r   r   r   r   ro   striprA   rn   r   rr   rp   )r
   r   r   startZcommentsendr   Zcommentr   r   r   getcomments.  sJ    	  +,/
,
/
 r   c               @   s   e  Z d  Z d S)
EndOfBlockN)r~   rx   ry   r   r   r   r   r   [  s    r   c               @   s(   e  Z d  Z d d   Z d d   Z d S)BlockFinderc             C   sC   d |  _  d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d  S)Nr   Fr   )r   islambdastartedpasslineindecoratordecoratorhasargslast)r   r   r   r   __init___  s    						zBlockFinder.__init__c             C   s  |  j  rb |  j rb | d k r, d |  _ n* | d k rV | d k rM d |  _ d |  _  d |  _ n9| d k r |  j rd |  _ n| d k r |  j rd |  _ d |  _ n | t j k r d |  _ | d	 |  _ |  j r t  |  j r|  j rd |  _ n |  j rn | t j	 k r7|  j
 d
 |  _
 d |  _ nd | t j k rn|  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erowcolrq   r   r   r   
tokeneaterh  sB    									'zBlockFinder.tokeneaterN)r~   rx   ry   r   r   r   r   r   r   r   ]  s   	r   c             C   so   t    } y: t j t |   j  } x | D] } | j |   q+ WWn t t f k
 r] Yn 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   sV   t  |   }  t |   \ } } t |   r4 | d f St | | d    | d f Sd  S)Nr   r   )rm   r   r   r   )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   ss   g  } |  j  d t d d   xM |  D]E } | j | | j f  | | k r& | j t | | | |   q& W| S)Nr8   rx   r~   )rE   r   rA   r=   walktree)classeschildrenparentrH   r   r   r   r   r    s    !r  Fc             C   s   i  } g  } x |  D] } | j  r xw | j  D]P } | | k rH g  | | <| | | k ri | | j |  | r, | |  k r, Pq, Wq | | k r | j |  q Wx' | D] } | |  k r | j |  q Wt | | d   S)N)r=   rA   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 @r |  j | } | d } d  } |  j t	 @r |  j | } | | | | f S)Nz{!r} is not a code objectr   r   )
r1   r   rj   co_argcountco_varnamesco_kwonlyargcountr   r    
CO_VARARGSCO_VARKEYWORDS)	r  nargsrJ   Znkwargsr  r  stepr  r  r   r   r   r
    s"    			

r
  ArgSpeczargs varargs keywords defaultsc             C   sb   t  j d t d d t |   \ } } } } } } } | sC | rO t d   t | | | |  S)NzCinspect.getargspec() is deprecated, use inspect.signature() instead
stacklevelr   zcFunction has keyword-only arguments or annotations, use getfullargspec() API which can support them)r   r   r   getfullargspecri   r  )rk   r  r  r  defaultsr  kwonlydefaultsannr   r   r   
getargspec  s    	!r  FullArgSpeczGargs, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotationsc             C   s  y" t  |  d d d d d t } Wn4 t k
 rX } z t d  |  WYd  d  } ~ Xn Xg  } d  } d  } g  } f  } i  } f  } i  }	 | j | j k	 r | j | d <x| j j   D] }
 |
 j } |
 j	 } | t
 k r | j |  n | t k r*| j |  |
 j |
 j k	 r| |
 j f 7} nb | t k r?| } nM | t k rz| j |  |
 j |
 j k	 r|
 j |	 | <n | t k r| } |
 j |
 j k	 r |
 j | | <q W|	 sd  }	 | sd  } t | | | | | |	 |  S)Nfollow_wrapper_chainsFskip_bound_argsigclszunsupported callablereturn)_signature_from_callable	SignaturerY   r   return_annotationempty
parametersvaluesra   r^   _POSITIONAL_ONLYrA   _POSITIONAL_OR_KEYWORDdefault_VAR_POSITIONAL_KEYWORD_ONLY_VAR_KEYWORD
annotationr  )rk   sigexr  r  r  r  r  annotations
kwdefaultsparamra   r^   r   r   r   r  !  sT    	"			r  ArgInfozargs varargs keywords localsc             C   s.   t  |  j  \ } } } t | | | |  j  S)N)r  r   r6  f_locals)framer  r  r  r   r   r   getargvalues~  s    r9  c             C   su   t  |  d d   d k r. t |   j d d  St |  t  rk |  j d | f k rY |  j S|  j d |  j St |   S)Nrx   Ztypingztyping.r   r   rs   )rC   reprreplacer   r   rx   ry   )r0  Zbase_moduler   r   r   formatannotation  s    r<  c                s(   t  |  d d       f d d   } | S)Nrx   c                s   t  |     S)N)r<  )r0  )r   r   r   _formatannotation  s    z5formatannotationrelativeto.<locals>._formatannotation)rC   )r
   r=  r   )r   r   formatannotationrelativeto  s    r>  c             C   s   d |  S)N*r   )r^   r   r   r   r9     s    r9   c             C   s   d |  S)Nz**r   )r^   r   r   r   r9     s    c             C   s   d t  |   S)N=)r:  )rN   r   r   r   r9     s    c             C   s   d |  S)Nz -> r   )textr   r   r   r9     s    c                s      f d d   } g  } | r: t  |   t  |  } x] t |   D]O \ } } | |  } | r | | k r | |
 | | |  } | j |  qG W| d  k	 r | j | | |    n | r | j d  | r+xM | D]E } | |  } | r| | k r| |
 | |  7} | j |  q W| d  k	 rP| j |	 | |    d d j |  d } d   k r| |    d   7} | S)Nc                s4    |   } |    k r0 | d    |   7} | S)Nz: r   )argr]   )r3  r<  	formatargr   r   formatargandannotation  s    z-formatargspec.<locals>.formatargandannotationr?  r   z, r   r#  )ro   	enumeraterA   r   )r  r  r  r  r  r  r3  rC  formatvarargsformatvarkwformatvalueZformatreturnsr<  rD  specsZfirstdefaultr   rB  specZ	kwonlyargr]   r   )r3  r<  rC  r   formatargspec  s2    rK  c             C   s   d |  S)Nr?  r   )r^   r   r   r   r9     s    c             C   s   d |  S)Nz**r   )r^   r   r   r   r9     s    c             C   s   d t  |   S)Nr@  )r:  )rN   r   r   r   r9     s    c             C   s   | | | d d  } g  }	 x1 t  t |    D] }
 |	 j | |  |
   q. W| rv |	 j | |  | | |   | r |	 j | |  | | |   d d j |	  d S)Nc             S   s   | |   | | |   S)Nr   )r^   localsrC  rH  r   r   r   convert  s    z formatargvalues.<locals>.convertr   z, r   )r   ro   rA   r   )r  r  r  rL  rC  rF  rG  rH  rM  rI  r   r   r   r   formatargvalues  s    !!rN  c                s     f d d   | D } t  |  } | d k r> | d } nW | d k r\ d j |   } n9 d j | d d     } | d d   =d j |  | } t d	 |  | | r d
 n d | d k r d n d | f   d  S)Nc                s(   g  |  ] } |   k r t  |   q Sr   )r:  )rQ   r^   )r)  r   r   rS     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   rP  )ro   rj   r   r   )f_nameZargnamesposr)  rJ   missingr   tailr   )r)  r   _missing_arguments  s    rU  c          	      s.  t  |  | } t    f d d   | D  } | rQ | d k }	 d | f }
 nI | rv d }	 d | t  |  f }
 n$ t  |  d k }	 t t  |   }
 d } | r d } | | d k r d	 n d | | d k r d	 n d f } t d
 |  |
 |	 r d	 n d | | | d k r| rd n d f   d  S)Nc                s"   g  |  ] } |   k r |  q Sr   r   )rQ   rB  )r)  r   r   rS     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)ro   r   r   )rQ  r  Zkwonlyr  ZdefcountZgivenr)  ZatleastZkwonly_givenpluralr1  Z
kwonly_sigmsgr   )r)  r   	_too_many  s$    rX  c              O   s  |  d } |  d d   } t  |  } | \ } } } } }	 }
 } | j } i  } t |  r{ | j d  k	 r{ | j f | } t |  } t |  } | r t |  n d } t | |  } x& t |  D] } | | | | | <q W| rt | | d    | | <t | |	  } | r#i  | | <x | j	   D]q \ } } | | k ru| sdt
 d | | f   | | | | <q0| | k rt
 d | | f   | | | <q0W| | k r| rt | | |	 | | | |  | | k  ri| d  | |  } x- | D]% } | | k rt | | d |  qWxB t | | | d    D]& \ } } | | k r?| | | | <q?Wd } xG |	 D]? } | | k rv|
 r| |
 k r|
 | | | <qv| d 7} qvW| rt | |	 d |  | S)Nr   r   z*%s() got an unexpected keyword argument %rz(%s() got multiple values for argument %rTF)r  r~   r   r   ro   r   r   rX   r;   r?   r   rX  rU  rE  )Zfunc_and_positionalnamedrk   rO  rJ  r  r  r  r  r  r  r  rQ  Z	arg2valueZnum_posZnum_argsZnum_defaultsnr   Zpossible_kwargskwrN   ZreqrB  rS  kwargr   r   r   getcallargs  sd    
	

'r]  ClosureVarsz"nonlocals globals builtins unboundc       	      C   sR  t  |   r |  j }  t |   s6 t d j |     |  j } |  j d  k rW i  } n" d d   t | j |  j  D } |  j	 } | j
 d t j  } t |  r | j } i  } i  } t   } x{ | j D]p } | d k r q y | | | | <Wq t k
 r:y | | | | <Wn t k
 r5| j |  Yn XYq Xq Wt | | | |  S)	Nz'{!r}' is not a Python functionc             S   s"   i  |  ] \ } } | j  |  q Sr   )cell_contents)rQ   varZcellr   r   r   
<dictcomp>W  s   	z"getclosurevars.<locals>.<dictcomp>__builtins__NoneTrueFalse)rc  rd  re  )r   r|   r   r   rj   r   __closure__zipco_freevars__globals__rw   r   r>   r   r;   co_namesKeyErrorrD   r^  )	rk   codeZnonlocal_varsZ	global_nsZ
builtin_nsZglobal_varsZbuiltin_varsZunbound_namesr^   r   r   r   getclosurevarsB  s8    									rm  	Tracebackz+filename lineno function code_context indexc             C   s#  t  |   r! |  j } |  j }  n	 |  j } t |   sK t d j |     t |   p` t |   } | d k r | d | d } y t	 |   \ } } Wn t
 k
 r d  } } YqXt d t | t |  |   } | | | |  } | d | } n
 d  } } t | | |  j j | |  S)Nz'{!r} is not a frame or traceback objectr   r   r   )r-   	tb_linenor   f_linenor/   r   rj   r   r   r   r   maxr   ro   rn  r   co_name)r8  contextlinenor   r   r   r   indexr   r   r   getframeinfoy  s$    		"
rv  c             C   s   |  j  S)N)rp  )r8  r   r   r   	getlineno  s    rw  	FrameInfor8  c             C   sI   g  } x< |  rD |  f t  |  |  } | j t |    |  j }  q	 W| S)N)rv  rA   rx  f_back)r8  rs  	framelist	frameinfor   r   r   getouterframes  s    	r|  c             C   sL   g  } x? |  rG |  j  f t |  |  } | j t |    |  j }  q	 W| S)N)r   rv  rA   rx  tb_next)tbrs  rz  r{  r   r   r   getinnerframes  s    	r  c               C   s    t  t d  r t j d  Sd  S)N	_getframer   )r   ru   r  r   r   r   r   currentframe  s    r  c             C   s   t  t j d  |   S)Nr   )r|  ru   r  )rs  r   r   r   stack  s    r  c             C   s   t  t j   d |   S)Nr   )r  ru   exc_info)rs  r   r   r   trace  s    r  c             C   s   t  j d j |   S)Nrc   )r   r>   r   )klassr   r   r   _static_getmro  s    r  c             C   sD   i  } y t  j |  d  } Wn t k
 r0 Yn Xt j | | t  S)Nr>   )r
   __getattribute__rB   dictrw   	_sentinel)r`   attrZinstance_dictr   r   r   _check_instance  s    r  c             C   sW   xP t  |   D]B } t t |   t k r y | j | SWq t k
 rN Yq Xq Wt S)N)r  _shadowed_dictr   r  r>   rk  )r  r  entryr   r   r   _check_class  s    	r  c             C   s+   y t  |   Wn t k
 r& d SYn Xd S)NFT)r  r   )r`   r   r   r   _is_type  s
    	r  c             C   s   t  j d } xw t |   D]i } y | j |  d } Wn t k
 rK Yq Xt  |  t j k o| | j d k o| | j | k s | Sq Wt	 S)Nr>   )
r   r>   r  r   rk  r   r   r~   rT   r  )r  	dict_attrr  Z
class_dictr   r   r   r    s    r  c             C   si  t  } t |   s] t |   } t |  } | t  k sK t |  t j k rc t |  |  } n |  } t | |  } | t  k	 r | t  k	 r t t |  d  t  k	 r t t |  d  t  k	 r | S| t  k	 r | S| t  k	 r | S|  | k rIxV t t |   D]B } t t |   t  k ry | j	 | SWqt
 k
 rDYqXqW| t  k	 rY| St |   d  S)Nr   r   )r  r  r   r  r   r   r  r  r  r>   rk  rB   )r`   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 r6 t St S)Nr   rt   )
gi_runningr  gi_framer  f_lastir  r  )	generatorr   r   r   getgeneratorstate(  s    		r  c             C   sQ   t  |   s! t d j |     t |  d d   } | d  k	 rI |  j j Si  Sd  S)Nz '{!r}' is not a Python generatorr  )r$   r   rj   rC   r  r7  )r  r8  r   r   r   getgeneratorlocals:  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 r6 t St S)Nr   rt   )
cr_runningr  cr_framer  r  r  r  )	coroutiner   r   r   getcoroutinestateR  s    		r  c             C   s-   t  |  d d   } | d  k	 r% | j Si  Sd  S)Nr  )rC   r7  )r  r8  r   r   r   getcoroutinelocalsd  s    r  
from_bytesc             C   sC   y t  |  |  } Wn t k
 r+ d  SYn Xt | t  s? | Sd  S)N)rC   rB   r   _NonUserDefinedCallables)rR   Zmethod_namemethr   r   r   "_signature_get_user_defined_method  s    	r  c             C   s  |  j  } t | j    } | j p' f  } | j p6 i  } | rI | | } y |  j | |   } WnC t k
 r } z# d j |  }	 t |	  |  WYd  d  } ~ Xn Xd }
 xZ| j   D]L\ } } y | j	 | } Wn t
 k
 r Yn X| j t k r	| j |  q | j t k rV| | k rCd }
 | j d |  | | <n | j | j  q | j t k r{| j d |  | | <|
 r | j t k r| | j d t  } | | | <| j |  q | j t t f k r| j |  q | j t k r | j | j  q W|  j d | j    S)Nz+partial object {!r} has incorrect argumentsFTr,  ra   r(  )r(  r   r?   r  keywordsbind_partialr   rj   ri   	argumentsrk  ra   r*  r   r+  r;  r^   r.  move_to_endr/  r-  r)  )wrapped_sigpartial
extra_argsZ
old_params
new_paramsZpartial_argsZpartial_keywordsZbar2  rW  Ztransform_to_kwonly
param_namer5  Z	arg_valueZ	new_paramr   r   r   _signature_get_partial  sL    	
"
r  c             C   s   t  |  j j    } | s5 | d j t t f k rA t d   | d j } | t t f k rs | d d   } n | t	 k	 r t d   |  j
 d |  S)Nr   zinvalid method signaturer   zinvalid argument typer(  )rX   r(  r)  ra   r/  r.  ri   r+  r*  r-  r;  )r1  paramsra   r   r   r   _signature_bound_method  s     r  c             C   s7   t  |   p6 t |   p6 t |  t  p6 |  t t f k S)N)r3   r   r   r  r   r
   )r`   r   r   r   _signature_is_builtin  s    r  c             C   s   t  |   s t |   r d St |  d d   } t |  d d   } t |  d t  } t |  d t  } t |  d d   } t | t j  o t | t  o | d  k s t | t  o | d  k s t | t	  o t | t	  S)NFr~   r   __defaults____kwdefaults____annotations__)
callabler   rC   _voidr   r   r0   r   rX   r  )r`   r^   rl  r  r4  r3  r   r   r   _signature_is_functionlike  s    r  c             C   sV   |  j  d  } | d k r* |  j  d  } |  j  d  } |  j  d  } |  d |  S)N,r   r   :r@  r   rt   )find)rJ  rR  Zcposr   r   r   _signature_get_bound_param  s    
r  c             C   s  |  s |  d  d  f Sd  } 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 | r d } q d } |
 d 7}
 q | d	 k rd } |
 d } q | | k r2| d
 k r2|
 } q | r`d } | | k oS| d k s`|	 d  |	 |  | d k r |	 d  q Wd j |  } | | | f S)Nc             S   s   g  |  ] } | j  d    q S)ascii)encode)rQ   lr   r   r   rS   E  s   	 z6_signature_strip_non_python_syntax.<locals>.<listcomp>r   Fr   r  Tr   /$r   z,  r   )rz   r   r   r   rA   r   OP
ERRORTOKENnextr   stringr   )	signatureself_parameterlast_positional_onlyr   r  Ztoken_streamZdelayed_commaZskip_next_commarA  rD   Zcurrent_parameterr  r  tr   r  clean_signaturer   r   r   "_signature_strip_non_python_syntax2  sP    				



r  Tc                s,  |  j    t |  \ } } } d | d } y t j |  } Wn t k
 rY d  } Yn Xt | t j  s t d j |    | j	 d }	 g     j
  t    d  } i   t | d d   }
 |
 r t j j |
 d   } | r | j  t j  d d      f d d	   	 G	 f d
 d   d t j            f d d  } t |	 j j  } t |	 j j  } t j | | d d  } | d  k	 r  j  n	   j  xN t t t |    D]4 \ } \ } } | | |  | | k r  j  qW|	 j j r4  j  | |	 j j     j  x6 t |	 j j |	 j j   D] \ } } | | |  qYW|	 j j! r  j"  | |	 j j!   | d  k	 rt | d d   } | d  k	 } t# |  } | r| s| r j$ d  n#  d j% d   j  } |  d <|   d |  j
 S)Nzdef fooz: passz"{!r} builtin has invalid signaturer   rx   c             S   s"   |  j  d  k r t d   |  j S)Nz'Annotations are not currently supported)r0  ri   rB  )noder   r   r   
parse_name  s    z&_signature_fromstr.<locals>.parse_namec                s   y t  |     } WnC t k
 rX y t  |    } Wn t k
 rS t    Yn XYn Xt | t  ru t j |  St | t t f  r t j	 |  St | t
  r t j |  S| d k r t j |  St    d  S)NTF)TFN)eval	NameErrorRuntimeErrorr   r   astZStrintfloatZNumbytesZBytesZNameConstant)r   rN   )module_dictsys_module_dictr   r   
wrap_value  s     z&_signature_fromstr.<locals>.wrap_valuec                   s4   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 Wt  | t j  sY t    | j | j  d j	 t
 |   }   |  S)Nrs   )r   r  rP   rA   r  rN   Namer  rh   r   reversed)r   r  arZ  rN   )r  r   r   visit_Attribute  s    	z<_signature_fromstr.<locals>.RewriteSymbolics.visit_Attributec                s+   t  | j t j  s t      | j  S)N)r   ctxr  ZLoadri   rh   )r   r  )r  r   r   
visit_Name  s    	z7_signature_fromstr.<locals>.RewriteSymbolics.visit_NameN)r~   rx   ry   r  r  r   )r  r   r   RewriteSymbolics  s   r  c                s    |   } |  k r d  S| r | t  k	 r y%    j |  } t j |  } Wn t k
 rm  } Yn X|  k r~ d  S|  k	 r | n | }  j   |  d | d   d  S)Nr,  r0  )_emptyZvisitr  Zliteral_evalri   rA   )Z	name_nodeZdefault_noder,  r^   o)	Parameterr  r'  invalidra   r(  r  r   r   p  s    z_signature_fromstr.<locals>.p	fillvaluer   ra   r&  )&_parameter_clsr  r  parseSyntaxErrorr   ZModuleri   rj   Zbodyr'  r
   rC   ru   rv   rw   r>   ZNodeTransformerr  r  r  	itertoolszip_longestPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrE  r   ZvarargVAR_POSITIONALKEYWORD_ONLYrg  r  Zkw_defaultsr\  VAR_KEYWORDr   r   r;  )rR   r`   r   r!  r  r  r  Zprogramr   rf   module_namer  r  r  r   r   r^   r,  _selfZself_isboundZself_ismoduler   )
r  r  r'  r  ra   r  r(  r  r  r  r   _signature_fromstrz  sj    					'	+		(	
r  c             C   sa   t  |  s! t d j |    t | d d   } | sN t d j |    t |  | | |  S)Nz%{!r} is not a Python builtin function__text_signature__z#no signature found for builtin {!r})r  r   rj   rC   ri   r  )rR   rk   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 } | r t |  } n d } g  } | | } xI | d  |  D]7 } |
 j | t  } | j | | d | d t  q Wx_ t | | d    D]G \ } } |
 j | t  } | j | | d | d t d | |  q<W| j t @r| | | } |
 j | t  } | j | | d | d t  xi |	 D]a } t } | d  k	 r| j | t  } |
 j | t  } | j | | d | d t d |  qW| j t @r| | } | j t @rm| d 7} | | } |
 j | t  } | j | | d | d t  |  | d	 |
 j d
 t  d | S)NFTz{!r} is not a Python functionr   r0  ra   r,  r   r&  r#  __validate_parameters__)r   r  r   rj   r  r   r  r  rX   r  r  r  r  ro   rw   r  rA   r+  rE  r    r  r-  r.  r  r/  )rR   rk   Zis_duck_functionr  Z	func_codeZ	pos_countZ	arg_namesrO  Zkeyword_only_countZkeyword_onlyr3  r  r4  Zpos_default_countr(  Znon_default_countr^   r0  offsetr,  ru  r   r   r   _signature_from_function  sj    									
#




	r  r   r!  c         !   C   s  t  |   s! t d j |     t |  t j  rh t |  j d | d | d | } | rd t |  S| S| r t	 |  d d d   }  t |  t j  r t |  d | d | d | Sy |  j
 } Wn t k
 r Yn5 X| d  k	 r
t | t  st d j |    | Sy |  j } Wn t k
 r+Yn Xt | t j  rt | j d | d | d | } t | | d  } t | j j    d	 } | j t j k r| St | j j    } | f | }	 | j d
 |	  St |   st |   rt | |   St |   rt | |  d | St |  t j  rVt |  j d | d | d | } t | |   Sd  } t |  t  rt  t |   d  }
 |
 d  k	 rt |
 d | d | d | } nu t  |  d  } | d  k	 rt | d | d | d | } n9 t  |  d  } | d  k	 r"t | d | d | d | } | d  k rqxS |  j! d  d  D]> } y | j" } Wn t k
 riYqBX| rBt# | |  |  SqBWt |  j! k rq|  j$ t% j$ k r|  j& t% j& k rt' t%  St( d j |     n t |  t)  sqt  t |   d  }
 |
 d  k	 rqy" t |
 d | d | d | } WnC t( k
 rp} z# d j |   } t( |  |  WYd  d  } ~ Xn X| d  k	 r| rt |  S| St |  t j*  rd j |   } t( |   t( d j |     d  S)Nz{!r} is not a callable objectr   r!  r"  rd   c             S   s   t  |  d  S)N__signature__)r   )rf   r   r   r   r9     s    z*_signature_from_callable.<locals>.<lambda>z1unexpected object {!r} in __signature__ attributer   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)Nrt   )+r  r   rj   r   r   r   r$  r|   r  rm   r  rB   r%  _partialmethod	functoolspartialmethodrk   r  rX   r(  r)  ra   r  r  r;  r   r  r  r  r  r  r   r  rc   r  r  r   r
   r  r  ri   r  r2   )r`   r   r!  r"  r1  r   r  Zfirst_wrapped_paramZ
sig_paramsr  callnewZinitrK   Ztext_sigr2  rW  r   r   r   r$  h  s    			
					
"
r$  c               @   s   e  Z d  Z d S)r  N)r~   rx   ry   r   r   r   r   r  0	  s   r  c               @   s   e  Z d  Z d S)r  N)r~   rx   ry   r   r   r   r   r  4	  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~   rx   ry   r  r  r  r  r  r  r   r   r   r   r  8	  s   r  c            
   @   s  e  Z d  Z d" Z e Z e Z e Z	 e
 Z e Z e Z d e d e 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 d e d e d e d e d d  Z d d   Z d d   Z d d   Z d d    Z d! S)#r  _name_kind_default_annotationr,  r0  c            C   s   | t  t t t t f k r' t d   | |  _ | t k	 ri | t t f k ri d j |  } t |   | |  _	 | |  _
 | t k r t d   t | t  s t d j |    | j   s t d j |    | |  _ d  S)Nz,invalid value for 'Parameter.kind' attributez({} parameters cannot have default valuesz*name is a required attribute for Parameterzname must be a str, not a {!r}z"{!r} is not a valid parameter name)r*  r+  r-  r.  r/  ri   r	  r  rj   r
  r  r   r   r   isidentifierr  )r   r^   ra   r,  r0  rW  r   r   r   r   j	  s"    				zParameter.__init__c             C   s1   t  |   |  j |  j f d |  j d |  j i f S)Nr
  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   r^   	  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   r0  	  s    zParameter.annotationc             C   s   |  j  S)N)r	  )r   r   r   r   ra   	  s    zParameter.kindr^   ra   c            C   ss   | t  k r |  j } | t  k r* |  j } | t  k r? |  j } | t  k rT |  j } t |   | | d | d | S)Nr,  r0  )r  r  r	  r  r
  r   )r   r^   ra   r0  r,  r   r   r   r;  	  s    				zParameter.replacec             C   s   |  j  } |  j } |  j t k	 r< d j | t |  j   } |  j t k	 rf d j | t |  j   } | t k r d | } n | t	 k r d | } | S)Nz{}:{}z{}={}r?  z**)
ra   r  r  r  rj   r<  r
  r:  r-  r/  )r   ra   	formattedr   r   r   r  	  s    			
zParameter.__str__c             C   s   d j  |  j j |   S)Nz	<{} "{}">)rj   r   r~   )r   r   r   r   __repr__	  s    zParameter.__repr__c             C   s"   t  |  j |  j |  j |  j f  S)N)hashr^   ra   r0  r,  )r   r   r   r   __hash__	  s    zParameter.__hash__c             C   si   |  | k r d St  | 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~   rx   ry   	__slots__r*  r  r+  r  r-  r  r.  r  r/  r  r  r'  r   r  r  rU   r^   r,  r0  ra   r  r;  r  r  r  r  r   r   r   r   r  J	  s(   r  c               @   s   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  } x |  j  j j   D]u \ } } | j t t f k r; Py |  j | } Wn t k
 ra PYq X| j t k r | j	 |  q | j
 |  q Wt |  S)N)r  r(  r?   ra   r/  r.  r  rk  r-  extendrA   rX   )r   r  r  r5  rB  r   r   r   r  	  s    zBoundArguments.argsc             C   s   i  } d } x |  j  j j   D] \ } } | sg | j t t f k rO d } n | |  j k rg d } q | sp q y |  j | } Wn t k
 r Yq X| j t k r | j |  q | | | <q W| S)NFT)	r  r(  r?   ra   r/  r.  r  rk  update)r   kwargsZkwargs_startedr  r5  rB  r   r   r   r  
  s&    	zBoundArguments.kwargsc             C   s   |  j  } g  } x |  j j j   D] \ } } y | j | | | f  Wq" t k
 r | j t k	 rt | j } n3 | j t	 k r f  } n | j t
 k r i  } n w" | j | | f  Yq" Xq" Wt |  |  _  d  S)N)r  r  r(  r?   rA   rk  r,  r  ra   r-  r/  r   )r   r  Znew_argumentsr^   r5  valr   r   r   apply_defaults#
  s    				zBoundArguments.apply_defaultsc             C   sE   |  | k r d St  | t  s# t S|  j | j k oD |  j | j k S)NT)r   r  r  r  r  )r   r  r   r   r   r  ?
  s    zBoundArguments.__eq__c             C   s   | d |  _  | d |  _ d  S)Nr  r  )r  r  )r   r  r   r   r   r  G
  s    zBoundArguments.__setstate__c             C   s   d |  j  d |  j i S)Nr  r  )r  r  )r   r   r   r   __getstate__K
  s    zBoundArguments.__getstate__c             C   s^   g  } x6 |  j  j   D]% \ } } | j d j | |   q Wd j |  j j d j |   S)Nz{}={!r}z	<{} ({})>z, )r  r?   rA   rj   r   r~   r   )r   r  rB  rN   r   r   r   r  N
  s    zBoundArguments.__repr__N)r  r  r  )r~   rx   ry   r  r   rU   r  r  r  r  r  r  r   r  r   r   r   r   r  	  s   r  c               @   s9  e  Z d  Z d- Z e Z e Z e Z	 d 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 d e d e 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_parametersNr&  r  Tc            C   s[  | d  k r t    } n$| r#t    } t } d } xt |  D] \ } } | j }	 | j }
 |	 | k  r d } | j | |	  } t |   n |	 | k r d } |	 } |	 t t f k r | j t	 k r | r d } t |   n d } |
 | k rd j |
  } t |   | | |
 <q@ Wn t  d d   | D  } t
 j |  |  _ | |  _ d  S)NFz'wrong parameter order: {!r} before {!r}z-non-default argument follows default argumentTzduplicate parameter name: {!r}c             s   s   |  ] } | j  | f Vq d  S)N)r^   )rQ   r5  r   r   r   r   
  s   z%Signature.__init__.<locals>.<genexpr>)r   r*  rE  ra   r^   rj   ri   r+  r,  r  r   MappingProxyTyper"  r!  )r   r(  r&  r  r  Ztop_kindZkind_defaultsidxr5  ra   r^   rW  r   r   r   r   s
  s<    			zSignature.__init__c             C   s#   t  j d t d d t |  |  S)NzNinspect.Signature.from_function() is deprecated, use Signature.from_callable()r  r   )r   r   r   r  )rR   rk   r   r   r   from_function
  s    	zSignature.from_functionc             C   s#   t  j d t d d t |  |  S)NzMinspect.Signature.from_builtin() is deprecated, use Signature.from_callable()r  r   )r   r   r   r  )rR   rk   r   r   r   from_builtin
  s    	zSignature.from_builtinfollow_wrappedc            C   s   t  | d |  d | S)Nr"  r   )r$  )rR   r`   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_annotationr(  c            C   sF   | t  k r |  j j   } | t  k r0 |  j } t |   | d | S)Nr&  )r  r(  r)  r!  r   )r   r(  r&  r   r   r   r;  
  s    	zSignature.replacec             C   sN   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)ra   r.  )rQ   r5  r   r   r   r   
  s    z(Signature._hash_basis.<locals>.<genexpr>c             S   s+   i  |  ]! } | j  t k r | | j  q Sr   )ra   r.  r^   )rQ   r5  r   r   r   ra  
  s   	 z)Signature._hash_basis.<locals>.<dictcomp>)rX   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   s9   |  | k r d St  | t  s# t S|  j   | j   k S)NT)r   r%  r  r*  )r   r  r   r   r   r  
  s
    zSignature.__eq__r  Fc            C   se  t    } t |  j j    } f  } t |  } xy t |  } Wnt k
 rMy t |  }	 Wn t k
 rx PYn X|	 j t k r Pn |	 j | k r |	 j t	 k r d }
 |
 j
 d |	 j  }
 t |
  d   |	 f } Pnh |	 j t k s |	 j t k	 r|	 f } Pn= | r|	 f } Pn* d }
 |
 j
 d |	 j  }
 t |
  d   Yq3 Xy t |  }	 Wn! t k
 rt d  d   Yq3 X|	 j t t f k rt d  d   |	 j t k r| g } | j |  t |  | |	 j <P|	 j | k rt d j
 d |	 j   d   | | |	 j <q3 Wd  } x t j | |  D] }	 |	 j t k rT|	 } q6|	 j t k rfq6|	 j } y | j |  } WnR t k
 r| r|	 j t k r|	 j t k rt d j
 d |   d   Yq6X|	 j t	 k rt d j
 d |	 j    | | | <q6W| rU| d  k	 r1| | | j <n$ t d j
 d t t |      |  j |  |  S)NzA{arg!r} parameter is positional only, but was passed as a keywordrB  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  StopIterationra   r-  r^   r*  rj   r   r/  r,  r  r.  r  rX   r  chainr   rk  _bound_arguments_cls)r   r  r  r  r  r(  Zparameters_exZarg_valsZarg_valr5  rW  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   bindm  s    zSignature.bindc              O   s$   |  d j  |  d d   | d d S)Nr   r   r  T)r/  )r  r  r   r   r   r  t  s    zSignature.bind_partialc             C   s.   t  |   t |  j j    f d |  j i f S)Nr!  )r   rX   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<{} {}>)rj   r   r~   )r   r   r   r   r    s    zSignature.__repr__c       	      C   s  g  } d } d } x |  j  j   D] } t |  } | j } | t k rR d } n | rk | j d  d } | t k r d } n% | t k r | r | j d  d } | j |  q" W| r | j d  d j d j	 |   } |  j
 t k	 rt |  j
  } | d j |  7} | S)NFTr  r?  z({})z, z -> {})r(  r)  r   ra   r*  rA   r-  r.  rj   r   r&  r  r<  )	r   r]   Zrender_pos_only_separatorZrender_kw_only_separatorr5  r  ra   ZrenderedZannor   r   r   r    s0    			zSignature.__str__)r!  r"  )r~   rx   ry   r  r  r  r  r.  r  r'  r   r\   r%  r&  r(  rU   r(  r&  r  r;  r*  r  r  r/  r0  r  r  r  r  r  r   r   r   r   r%  U
  s.   2			r%  r'  c            C   s   t  j |  d | S)Nr'  )r%  r(  )r`   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 d	 | j   } | j } | j d
  \ } } } y | j |  } }	 Wn` t k
 r }
 z@ d j	 | t
 |
  j |
  } t | d t j t d  WYd  d  }
 ~
 Xn X| r5| j d  } |	 } x | D] } t | |  } qW|	 j t j k rdt d d t j t d  | j rJt d j	 |   t d j	 t |	    t d j	 |	 j   | |	 k rt d j	 t |	 j    t |	 d  r=t d j	 |	 j   n> y t |  \ } } Wn t k
 r)Yn Xt d j	 |   t d  n t t |   d  S)Nr   r
   helpzCThe object to be analysed. It supports the 'module:qualname' syntaxz-dz	--detailsaction
store_truez9Display info about the module rather than its source coder  zFailed to import {} ({}: {})r   r   rs   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_modulerY   rj   r   r~   printru   stderrexitrz   rC   builtin_module_namesZdetailsr   
__cached__r:  r   r   r4  r   r  )r5  r   parserr  targetZmod_nameZ	has_attrsZattrsr`   r   r_   rW  partspart__rt  r   r   r   _main  sV    			
	rE  r   )
__author__r  Zdiscollections.abcr(   enumZimportlib.machineryr   r  r   r   r   ru   r   r   r   r   r  r   operatorr   r   r   globalsZmod_dictZCOMPILER_FLAG_NAMESr?   rL   rM   r6   r   r   r   r   r   r   r   r   r   r!   r"   r$   r&   r+   r-   r/   r1   r3   r4   r7   rO   rP   rb   r:   rm   rr   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rY   r   r   r   r   r  r  r  r	  r  r
  r  r  r  r  r6  r9  r<  r>  r   rK  rN  rU  rX  r]  r^  rm  rn  rv  rw  _fieldsrx  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  r   r  Z_WrapperDescriptorallZ_MethodWrapperr  r>   Z_ClassMethodWrapperr2   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/  r  r  r%  r  rE  r~   r   r   r   r   <module>   sN  		
	
	
	,t!
;	.I-7


	[
							)		>5 			0LHQ					 `: