Your IP : 18.226.94.15
B
YI~d���@s�dZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlmZddlmZmZe�Zx"ej��D]\ZZeede<q�WdZdd�Zd d
�Zdd�Z d
d�Z!dd�Z"e#ed��rdd�Z$ndd�Z$e#ed��r*dd�Z%ndd�Z%dd�Z&dd�Z'dd�Z(dd �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�Z3d�d5d6�Z4ed7d8�Z5d9d:�Z6d;d<�Z7dd=�d>d?�Z8d@dA�Z9dBdC�Z:dDdE�Z;dFdG�Z<dHdI�Z=dJdK�Z>dLdM�Z?dNdO�Z@d�dPdQ�ZAiZBiZCd�dRdS�ZDdTdU�ZEdVdW�ZFGdXdY�dYeG�ZHGdZd[�d[�ZId\d]�ZJd^d_�ZKd`da�ZLdbdc�ZMd�dedf�ZNedgdh�ZOdidj�ZPdkdl�ZQedmdn�ZRdodp�ZSedqdr�ZTdsdt�ZUedudv�ZVdwdx�ZWd�dydz�ZXd{d|�ZYdddd}iieZd~d�d�d�d�d�d�d�eXfd�d��Z[eZd�d�d�d�d�d�fd�d��Z\d�d��Z]d�d��Z^d�d��Z_ed�d��Z`d�d��Zaed�d��Zbd�d�d��Zcd�d��Zded�d�ebje�Zfd�d�d��Zgd�d�d��Zhd�d��Zid�d�d��Zjd�d�d��Zkel�Zmd�d��Znd�d��Zod�d��Zpd�d��Zqd�d��Zremfd�d��Zsd�Ztd�Zud�Zvd�Zwd�d��Zxd�d��Zyd�Zzd�Z{d�Z|d�Z}d�d��Z~d�dZe�e�j��Z�e�e�j��Z�e�e�j�d��Z�e�e�e�ej�fZ�d�dńZ�d�d�dDŽ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�dZ�d�d�dٜd�dۄZ�Gd�d݄d݃Z�Gd�d߄d߃Z�Gd�d�d�ej��Z�e�j�Z�e�j�Z�e�j�Z�e�j�Z�e�j�Z�e�d�e�d�e�d�e�d�e�d�iZ�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��dS()zKa-Ping Yee <ping@lfw.org>z'Yury Selivanov <yselivanov@sprymix.com>�N)�
attrgetter)�
namedtuple�OrderedDictZCO_icCst|tj�S)N)�
isinstance�types�
ModuleType)�object�r �,/opt/alt/python37/lib64/python3.7/inspect.py�ismodule?srcCs
t|t�S)N)r�type)rr r r
�isclassHsr
cCst|tj�S)N)rr�
MethodType)rr r r
�ismethodPsrcCs:t|�st|�st|�rdSt|�}t|d�o8t|d�S)NF�__get__�__set__)r
r�
isfunctionr�hasattr)r�tpr r r
�ismethoddescriptorZsrcCs8t|�st|�st|�rdSt|�}t|d�o6t|d�S)NFrr)r
rrrr)rrr r r
�isdatadescriptornsr�MemberDescriptorTypecCst|tj�S)N)rrr)rr r r
�ismemberdescriptor~srcCsdS)NFr )rr r r
r�s�GetSetDescriptorTypecCst|tj�S)N)rrr)rr r r
�isgetsetdescriptor�srcCsdS)NFr )rr r r
r�scCst|tj�S)N)rr�FunctionType)rr r r
r�srcCs tt|�st|�o|jjt@�S)N)�boolrr�__code__�co_flagsZCO_GENERATOR)rr r r
�isgeneratorfunction�srcCs tt|�st|�o|jjt@�S)N)rrrrrZCO_COROUTINE)rr r r
�iscoroutinefunction�sr cCs tt|�st|�o|jjt@�S)N)rrrrrZCO_ASYNC_GENERATOR)rr r r
�isasyncgenfunction�sr!cCst|tj�S)N)rr�AsyncGeneratorType)rr r r
�
isasyncgen�sr#cCst|tj�S)N)rr�
GeneratorType)rr r r
�isgenerator�sr%cCst|tj�S)N)rr�
CoroutineType)rr r r
�iscoroutine�sr'cCs6t|tj�p4t|tj�r(t|jjt@�p4t|tj j
�S)N)rrr&r$r�gi_coderZCO_ITERABLE_COROUTINE�collections�abc� Awaitable)rr r r
�isawaitable�sr,cCst|tj�S)N)rr�
TracebackType)rr r r
�istraceback�sr.cCst|tj�S)N)rr� FrameType)rr r r
�isframe�sr0cCst|tj�S)N)rr�CodeType)rr r r
�iscode�sr2cCst|tj�S)N)rr�BuiltinFunctionType)rr r r
� isbuiltinsr4cCs t|�pt|�pt|�pt|�S)N)r4rrr)rr r r
� isroutinesr5cCs�t|t�sdS|jt@rdStt|�tj�s0dSt|d�r>dSx&|j� �D]\}}t
|dd�rJdSqJWx@|jD]6}x0t
|dd�D] }t
||d�}t
|dd�r�dSq�WqnWdS)NFT�__abstractmethods__�__isabstractmethod__r )rr� __flags__�TPFLAGS_IS_ABSTRACT�
issubclassr*�ABCMetar�__dict__�items�getattr� __bases__)r�name�value�baser r r
�
isabstract$s"
rCc Cs$t|�r|ft|�}nd}g}t�}t|�}yBx<|jD]2}x,|j��D]\}}t|tj �rH|�
|�qHWq8WWntk
r�YnXx�|D]�} yt|| �}
| |kr�t�Wn:tk
r�x$|D]}| |jkr�|j| }
Pq�Ww�YnX|r�||
��r|�
| |
f�|�
| �q�W|jdd�d�|S)Nr cSs|dS)Nrr )Zpairr r r
�<lambda>e�zgetmembers.<locals>.<lambda>)�key)r
�getmro�set�dirr?r<r=rr�DynamicClassAttribute�append�AttributeErrorr>�add�sort)rZ predicate�mro�results� processed�namesrB�k�vrFrAr r r
�
getmembers<s:
rU� Attributezname kind defining_class objectcCsht|�}tt|��}tdd�|D��}|f|}||}t|�}x:|D]2}x,|j��D]\}}t|tj�rV|� |�qVWqFWg} t
�}
�x�|D�]�}d}d}
d}||
k�r�y|dkr�td��t||�}
Wn"tk
r�}zWdd}~XYn�Xt|
d|�}||k�r�d}d}x(|D] }t||d�}||
k�r|}�qWxH|D]@}y|�
||�}Wntk
�rh�w:YnX||
k�r:|}�q:W|dk �r�|}x4|D],}||jk�r�|j|}||k�r�|}P�q�W|dk�r�q�|
dk �r�|
n|}t|ttjf��r�d}|}nFt|ttjf��rd}|}n*t|t��r.d}|}nt|��r>d }nd
}| � t||||��|
�|�q�W| S)Ncss|]}|ttfkr|VqdS)N)rr)�.0�clsr r r
� <genexpr>�sz'classify_class_attrs.<locals>.<genexpr>r<z)__dict__ is special, don't want the proxy�__objclass__z
static methodzclass method�property�method�data)rGr�tuplerIr<r=rrrJrKrH� Exceptionr>�__getattr__rL�staticmethod�BuiltinMethodType�classmethod�ClassMethodDescriptorTyper[r5rVrM)rXrOZmetamroZclass_basesZ all_basesrRrBrSrT�resultrQr@ZhomeclsZget_objZdict_obj�excZlast_clsZsrch_clsZsrch_obj�obj�kindr r r
�classify_class_attrsjs�
ricCs|jS)N)�__mro__)rXr r r
rG�srG)�stopcs��dkrdd�}n�fdd�}|}t|�|i}t��}xD||�rz|j}t|�}||ksbt|�|krptd�|���|||<q8W|S)NcSs
t|d�S)N�__wrapped__)r)�fr r r
�_is_wrapper�szunwrap.<locals>._is_wrappercst|d�o�|�S)Nrl)r)rm)rkr r
rn�sz!wrapper loop when unwrapping {!r})�id�sys�getrecursionlimitrl�len�
ValueError�format)�funcrkrnrmZmemoZrecursion_limitZid_funcr )rkr
�unwrap�s
rvcCs|��}t|�t|���S)N)�
expandtabsrr�lstrip)�lineZexpliner r r
�
indentsizesrzcCsRtj�|j�}|dkrdSx&|j�d�dd�D]}t||�}q0Wt|�sNdS|S)N�.���)rp�modules�get�
__module__�__qualname__�splitr>r
)rurXr@r r r
�
_findclass
sr�c Cs�t|�rRxD|jD]:}|tk ry
|j}Wntk
r<wYnX|dk r|SqWdSt|�r�|jj}|j}t|�r�t t ||d�d�|jkr�|}n|j
}n�t|�r�|j}t|�}|dks�t ||�|k r�dSn�t
|��r|j}|j}t|��r|jd||jk�r|}n|j
}nzt|t��rL|j}|j}t|�}|dk�sFt ||�|k �r�dSn:t|��s`t|��r�|j}|j}t ||�|k �r�dSndSxJ|jD]@}yt ||�j}Wntk
�r��w�YnX|dk �r�|S�q�WdS)N�__func__r{)r
rjr�__doc__rLrr��__name__�__self__r>� __class__rr�r4r�rr[�fgetrrrZ)rgrB�docr@�selfrXrur r r
�_finddocsb
r�c Csdy
|j}Wntk
rdSX|dkrNyt|�}Wnttfk
rLdSXt|t�s\dSt|�S)N)r�rLr�� TypeErrorr�str�cleandoc)rr�r r r
�getdocRs
r�cCs�y|���d�}Wntk
r&dSXtj}x:|dd�D]*}t|���}|r<t|�|}t||�}q<W|r~|d��|d<|tjkr�x*tdt|��D]}|||d�||<q�Wx|r�|ds�|� �q�Wx|r�|ds�|� d�q�Wd�
|�SdS)N�
�rr|)rwr��UnicodeErrorrp�maxsizerrrx�min�range�pop�join)r��linesZmarginryZcontent�indent�ir r r
r�es(
r�cCs�t|�r(t|dd�r|jStd�|���t|�rht|d�rZtj� |j
�}t|dd�rZ|jStd�|���t|�rv|j}t
|�r�|j}t|�r�|j}t|�r�|j}t|�r�|jStd�t|�j���dS)N�__file__z{!r} is a built-in modulerz{!r} is a built-in classzVmodule, class, method, function, traceback, frame, or code object was expected, got {})rr>r�r�rtr
rrpr}r~rrr�rrr.�tb_framer0�f_coder2�co_filenamerr�)r�moduler r r
�getfile�s,
r�cCsTtj�|�}dd�tj��D�}|��x&|D]\}}|�|�r.|d|�Sq.WdS)NcSsg|]}t|�|f�qSr )rr)rW�suffixr r r
�
<listcomp>�sz!getmodulename.<locals>.<listcomp>)�os�path�basename� importlib� machinery�all_suffixesrN�endswith)r�Zfname�suffixesZneglenr�r r r
�
getmodulename�s
r�cs�t|��tjjdd�}|tjjdd�7}t�fdd�|D��r`tj���dtjj d�nt�fdd�tjj
D��r~dStj���r��Stt
|��dd�dk r��S�tjkr��SdS)Nc3s|]}��|�VqdS)N)r�)rW�s)�filenamer r
rY�sz getsourcefile.<locals>.<genexpr>rc3s|]}��|�VqdS)N)r�)rWr�)r�r r
rY�s�
__loader__)r�r�r��DEBUG_BYTECODE_SUFFIXES�OPTIMIZED_BYTECODE_SUFFIXES�anyr�r��splitext�SOURCE_SUFFIXES�EXTENSION_SUFFIXES�existsr>� getmodule� linecache�cache)rZall_bytecode_suffixesr )r�r
�
getsourcefile�s
r�cCs,|dkrt|�pt|�}tj�tj�|��S)N)r�r�r�r��normcase�abspath)r� _filenamer r r
�
getabsfile�sr�c
Cs�t|�r|St|d�r$tj�|j�S|dk rD|tkrDtj�t|�Syt||�}Wntk
rfdSX|tkr�tj�t|�Sxntj� ��
�D]\\}}t|�r�t|d�r�|j}|t�|d�kr�q�|t|<t|�}|j
t|<ttj�|�<q�W|tk�r
tj�t|�Stjd}t|d��s$dSt||j
��rLt||j
�}||k�rL|Stjd}t||j
��r~t||j
�} | |k�r~|SdS)Nrr��__main__r��builtins)rrrpr}r~r�
modulesbyfiler�r��copyr=r��_filesbymodnamer�r�r��realpathr>)
rr��file�modnamer�rm�mainZ
mainobjectZbuiltinZ
builtinobjectr r r
r��sD
r�c
Cs�t|�}|rt�|�n$t|�}|�d�r4|�d�s<td��t||�}|rZt�||j �}n
t�|�}|sptd��t
|�r�|dfSt|��r |j}t
�d|d�}g}xRtt|��D]B}|�||�}|r�||ddkr�||fS|�|�d �|f�q�W|�r|��||dd fStd
��t|��r0|j}t|��r@|j}t|��rP|j}t|��r`|j}t|��r�t|d��s~td��|jd } t
�d
�}x*| dk�r�|�|| ��r�P| d } �q�W|| fStd��dS)N�<�>zsource code not availablezcould not get source coderz^(\s*)class\s*z\b�cr�zcould not find class definition�co_firstlinenoz"could not find function definitionz>^(\s*def\s)|(\s*async\s+def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)zcould not find code object) r�r��
checkcacher��
startswithr��OSErrorr��getlinesr<rr
r��re�compiler�rr�matchrK�grouprNrr�rrr.r�r0r�r2rr�)
rr�r�r�r@ZpatZ
candidatesr�r��lnumr r r
�
findsource�s^
r�c Cs>yt|�\}}Wnttfk
r(dSXt|�r�d}|rR|ddd�dkrRd}x(|t|�krz||��dkrz|d}qTW|t|�kr�||dd�dkr�g}|}x>|t|�kr�||dd�dkr�|�||���|d}q�Wd�|�S�nH|dk�r:t ||�}|d}|dk�r:||�
�dd�dk�r:t ||�|k�r:||���
�g}|dk�r�|d}||���
�}x\|dd�dk�r�t ||�|k�r�|g|dd�<|d}|dk�r�P||���
�}�q|Wx*|�r|d��dk�rg|dd�<�q�Wx*|�r.|d��dk�r.g|dd�<�qWd�|�SdS) Nr�z#!r�)��#r�r�r|)r�r�r�rrr�striprKrwr�rzrx)rr�r��startZcomments�endr��commentr r r
�getcommentsAsJ "
$
&
r�c@seZdZdS)�
EndOfBlockN)r�rr�r r r r
r�nsr�c@seZdZdd�Zdd�ZdS)�BlockFindercCs.d|_d|_d|_d|_d|_d|_d|_dS)NrFr�)r��islambda�started�passline�indecorator�decoratorhasargs�last)r�r r r
�__init__rszBlockFinder.__init__cCs|js@|js@|dkrd|_n|dkr8|dkr2d|_d|_d|_n�|dkrV|jrTd|_n�|dkrr|jrpd|_d|_n�|tjkr�d|_|d|_|jr�t�|jr�|js�d|_nn|jr�nf|tj kr�|j
d |_
d|_nH|tjkr�|j
d |_
|j
dkr�t�n"|j
dk�r|tjtj
fk�rt�dS)
N�@T)�def�class�lambdar��(�)Frr�)r�r�r�r�r��tokenize�NEWLINEr�r��INDENTr��DEDENT�COMMENT�NL)r�r�tokenZsrowcolZerowcolryr r r
�
tokeneater{sB
zBlockFinder.tokeneaterN)r�rr�r�r�r r r r
r�ps r�c CsZt�}y,t�t|�j�}x|D]}|j|�qWWnttfk
rJYnX|d|j�S)N) r�r��generate_tokens�iter�__next__r�r��IndentationErrorr�)r�Zblockfinder�tokensZ_tokenr r r
�getblock�s
r�cCsbt|�}t|�\}}t|�r"|j}t|�s>t|�rF|jjdkrF|dfSt||d��|dfSdS)Nz<module>rr�) rvr�r.r�rr0r��co_namer�)rr�r�r r r
�getsourcelines�sr�cCst|�\}}d�|�S)Nr�)r�r�)rr�r�r r r
� getsource�sr�cCsVg}|jtdd�d�x:|D]2}|�||jf�||kr|�t||||��qW|S)Nrr�)rF)rNrrKr?�walktree)�classes�children�parentrPr�r r r
r��s
r�FcCs�i}g}xn|D]f}|jrbxZ|jD]<}||kr4g||<|||krN||�|�|r ||kr Pq Wq||kr|�|�qWx|D]}||kr~|�|�q~Wt||d�S)N)r?rKr�)r��uniquer��rootsr�rr r r
�getclasstree�s"
r� Argumentszargs, varargs, varkwcCs t|�\}}}}t||||�S)N)�_getfullargsr)�co�args�varargs�
kwonlyargs�varkwr r r
�getargs�src Cs�t|�std�|���|j}|j}|j}t|d|��}t||||��}d}||7}d}|jt@rx|j|}|d}d}|jt @r�|j|}||||fS)Nz{!r} is not a code objectrr�)
r2r�rt�co_argcount�co_varnames�co_kwonlyargcount�listr�
CO_VARARGS�CO_VARKEYWORDS) r�nargsrRZnkwargsrr �steprr
r r r
rs"
r�ArgSpeczargs varargs keywords defaultscCsDtjdtdd�t|�\}}}}}}}|s.|r6td��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�getfullargspecrsr)rurrr
�defaultsr �kwonlydefaults�annr r r
�
getargspec s
r�FullArgSpeczGargs, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotationsc
Cs`yt|ddtd�}Wn,tk
r@}ztd�|�Wdd}~XYnXg}d}d}g}d}i}d}i} |j|jk rx|j|d<x�|j��D]�}
|
j}|
j }|t
kr�|�|�nv|tkr�|�|�|
j
|
jk r�||
j
f7}nJ|tkr�|}n<|tk�r|�|�|
j
|
jk �r|
j
| |<n|tk�r|}|
j|
jk r�|
j||<q�W| �sBd} |�sLd}t|||||| |�S)NF)�follow_wrapper_chains�skip_bound_arg�sigclszunsupported callabler �return)�_signature_from_callable� Signaturer_r��return_annotation�empty�
parameters�valuesrhr@�_POSITIONAL_ONLYrK�_POSITIONAL_OR_KEYWORD�default�_VAR_POSITIONAL�
_KEYWORD_ONLY�_VAR_KEYWORD�
annotationr)
ru�sig�exrrr
r r�annotations�
kwdefaults�paramrhr@r r r
rAsT
r�ArgInfozargs varargs keywords localscCs t|j�\}}}t||||j�S)N)rr�r5�f_locals)�framerrr
r r r
�getargvalues�sr8cCsVt|dd�dkr t|��dd�St|t�rN|jd|fkr>|jS|jd|jSt|�S)Nr�typingztyping.r�r�r{)r>�repr�replacerrrr�)r/Zbase_moduler r r
�formatannotation�s
r<cst|dd���fdd�}|S)Nrcs
t|��S)N)r<)r/)r�r r
�_formatannotation�sz5formatannotationrelativeto.<locals>._formatannotation)r>)rr=r )r�r
�formatannotationrelativeto�sr>r cCsd|S)N�*r )r@r r r
rD�rErDcCsd|S)Nz**r )r@r r r
rD�rEcCsdt|�S)N�=)r:)rAr r r
rD�rEcCsd|S)Nz -> r )�textr r r
rD�rEc
sDddlm}
|
dtdd����fdd�}g}|rBt|�t|�}xFt|�D]:\}}||�}|r|||kr|||
|||�}|�|�qLW|dk r�|�|||���n|r�|�d�|r�x:|D]2}||�}|r�||kr�||
||�7}|�|�q�W|dk �r|�| ||���d d
�|�d}d�k�r@||��d��7}|S)
Nr)rzc`formatargspec` is deprecated since Python 3.5. Use `signature` and the `Signature` object directlyr�)rcs(�|�}|�kr$|d��|�7}|S)Nz: r )�argre)r2r<� formatargr r
�formatargandannotation�sz-formatargspec.<locals>.formatargandannotationr?r�z, r�r")rrrrr� enumeraterKr�)rrr
rr rr2rC�
formatvarargs�formatvarkw�formatvalueZ
formatreturnsr<rrD�specsZfirstdefaultr�rB�specZ kwonlyargrer )r2r<rCr
�
formatargspec�s:
rKcCsd|S)Nr?r )r@r r r
rD�rEcCsd|S)Nz**r )r@r r r
rD�rEcCsdt|�S)Nr@)r:)rAr r r
rD�rEcCs�|||fdd�}g} x&tt|��D]}
| �|||
��q"W|rZ| �||�|||��|rx| �||�|||��dd�| �dS)NcSs||�|||�S)Nr )r@�localsrCrHr r r
�convert�sz formatargvalues.<locals>.convertr�z, r�)r�rrrKr�)rrr
rLrCrFrGrHrMrIr�r r r
�formatargvalues�srNcs��fdd�|D�}t|�}|dkr,|d}n>|dkr@dj|�}n*dj|dd��}|dd�=d �|�|}td
|||rzdnd|dkr�d
nd|f��dS)Ncsg|]}|�krt|��qSr )r:)rWr@)r(r r
r� sz&_missing_arguments.<locals>.<listcomp>r�rr�z {} and {}z, {} and {}���z, z*%s() missing %i required %s argument%s: %s�
positionalzkeyword-onlyr�r�)rrrtr�r�)�f_nameZargnames�posr(rR�missingr��tailr )r(r
�_missing_argumentss
rUc
s�t|�|}t�fdd�|D��}|r:|dk} d|f}
n2|rTd} d|t|�f}
nt|�dk} tt|��}
d}|r�d}||dkr�d nd||dkr�d ndf}td
||
| r�d nd|||dkr�|s�dndf��dS)
Ncsg|]}|�kr|�qSr r )rWrB)r(r r
r�sz_too_many.<locals>.<listcomp>r�zat 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 givenZwasZwere)rrr�r�)
rQrZkwonlyrZdefcountZgivenr(ZatleastZkwonly_given�pluralr0Z
kwonly_sig�msgr )r(r
� _too_manys$rXcOs4|d}|dd�}t|�}|\}}}}} }
}|j}i}
t|�rV|jdk rV|jf|}t|�}t|�}|rrt|�nd}t||�}x t|�D]}|||
||<q�W|r�t||d��|
|<t|| �}|r�i|
|<xd|� �D]X\}}||k�r|�st
d||f��||
||<q�||
k�r,t
d||f��||
|<q�W||k�r\|�s\t||| ||||
�||k�r�|d||�}x&|D]}||
k�r|t||d|
��q|Wx8t
|||d��D] \}}||
k�r�|||
|<�q�Wd}x>| D]6}||
k�r�|
�r||
k�r|
||
|<n|d7}�q�W|�r0t|| d|
�|
S)Nrr�z*%s() got an unexpected keyword argument %rz(%s() got multiple values for argument %rTF)rr�rr�rrr�r�r^rHr=r�rXrUrE)Zfunc_and_positionalZnamedrurPrJrrr
rr rrrQZ arg2valueZnum_posZnum_argsZnum_defaults�nr�Zpossible_kwargs�kwrAZreqrBrS�kwargr r r
�getcallargs-sd
r\�ClosureVarsz"nonlocals globals builtins unboundc Cst|�r|j}t|�s$td�|���|j}|jdkr:i}ndd�t|j|j�D�}|j }|�
dtj�}t
|�rt|j}i}i}t�}xn|jD]d}|dkr�q�y||||<Wq�tk
r�y||||<Wntk
r�|�|�YnXYq�Xq�Wt||||�S)Nz{!r} is not a Python functioncSsi|]\}}|j|�qSr )�
cell_contents)rW�varZcellr r r
�
<dictcomp>�sz"getclosurevars.<locals>.<dictcomp>�__builtins__)�None�True�False)rr�rr�rtr�__closure__�zip�co_freevars�__globals__r~r�r<rrH�co_names�KeyErrorrMr]) ru�codeZ
nonlocal_varsZ global_nsZ
builtin_nsZglobal_varsZbuiltin_varsZ
unbound_namesr@r r r
�getclosurevarsms8
rl� Tracebackz+filename lineno function code_context indexr�cCs�t|�r|j}|j}n|j}t|�s2td�|���t|�p@t|�}|dkr�|d|d}yt |�\}}Wnt
k
r�d}}Yq�Xtdt|t
|�|��}||||�}|d|}nd}}t|||jj||�S)Nz'{!r} is not a frame or traceback objectrr�r�)r.� tb_linenor��f_linenor0r�rtr�r�r�r��maxr�rrrmr�r�)r7�context�linenor�r�r�r��indexr r r
�getframeinfo�s$rtcCs|jS)N)ro)r7r r r
� getlineno�sru� FrameInfo)r7cCs6g}x,|r0|ft||�}|�t|��|j}qW|S)N)rtrKrv�f_back)r7rq� framelist� frameinfor r r
�getouterframes�s
rzcCs8g}x.|r2|jft||�}|�t|��|j}qW|S)N)r�rtrKrv�tb_next)�tbrqrxryr r r
�getinnerframes�s
r}cCsttd�rt�d�SdS)N� _getframer�)rrpr~r r r r
�currentframe�srcCstt�d�|�S)Nr�)rzrpr~)rqr r r
�stack�sr�cCstt��d|�S)Nr�)r}rp�exc_info)rqr r r
�trace�sr�cCstjd�|�S)Nrj)rr<r)�klassr r r
�_static_getmro�sr�cCs8i}yt�|d�}Wntk
r(YnXt�||t�S)Nr<)r�__getattribute__rL�dictr~� _sentinel)rg�attrZ
instance_dictr r r
�_check_instance�sr�c CsFx@t|�D]4}tt|��tkr
y
|j|Stk
r<Yq
Xq
WtS)N)r��_shadowed_dictrr�r<rj)r�r��entryr r r
�_check_classs
r�cCs&yt|�Wntk
r dSXdS)NFT)r�r�)rgr r r
�_is_type s
r�c Csntjd}x^t|�D]R}y|�|�d}Wntk
r>YqXt|�tjkrb|jdkrb|j|ks|SqWt S)Nr<)
rr<r�rrjrrr�rZr�)r�� dict_attrr�Z
class_dictr r r
r�s
r�c Cst}t|�s>t|�}t|�}|tks2t|�tjkrBt||�}n|}t||�}|tk r�|tk r�tt|�d�tk r�tt|�d�tk r�|S|tk r�|S|tk r�|S||kr�xDtt|��D]4}tt|��tkr�y
|j |St
k
r�Yq�Xq�W|tk r�|St|��dS)Nrr)r�r�rr�rrr�r�r�r<rjrL)rgr�r+Zinstance_resultr�r�Zklass_resultr�r r r
�getattr_statics6
r��GEN_CREATED�GEN_RUNNING�
GEN_SUSPENDED�
GEN_CLOSEDcCs,|jr
tS|jdkrtS|jjdkr(tStS)Nr|)�
gi_runningr��gi_framer��f_lastir�r�)� generatorr r r
�getgeneratorstateSs
r�cCs:t|�std�|���t|dd�}|dk r2|jjSiSdS)Nz{!r} is not a Python generatorr�)r%r�rtr>r�r6)r�r7r r r
�getgeneratorlocalsesr��CORO_CREATED�CORO_RUNNING�CORO_SUSPENDED�CORO_CLOSEDcCs,|jr
tS|jdkrtS|jjdkr(tStS)Nr|)�
cr_runningr��cr_framer�r�r�r�)� coroutiner r r
�getcoroutinestate}s
r�cCs"t|dd�}|dk r|jSiSdS)Nr�)r>r6)r�r7r r r
�getcoroutinelocals�sr��
from_bytescCs6yt||�}Wntk
r"dSXt|t�s2|SdS)N)r>rLr�_NonUserDefinedCallables)rXZmethod_nameZmethr r r
�"_signature_get_user_defined_method�s
r�c
Cs�|j}t|���}|jpd}|jp$i}|r2||}y|j||�}Wn6tk
rx}zd�|�} t| �|�Wdd}~XYnXd}
�x
|��D�]�\}}y|j |}
Wnt
k
r�YnlX|jtkr�|�
|�q�|jtk�r||kr�d}
|j|
d�||<n|�
|j�q�|jtk�r"|j|
d�||<|
r�|jtk�rV||jtd�}|||<|�|�q�|jttfk�rr|�|�q�|jtkr�|�
|j�q�W|j|��d�S)Nr z+partial object {!r} has incorrect argumentsFT)r+)rh)r')r'rr=r�keywords�bind_partialr�rtrs� argumentsrjrhr)r�r*r;r@r-�move_to_endr.r,r()�wrapped_sig�partialZ
extra_argsZ
old_params�
new_paramsZpartial_argsZpartial_keywordsZbar1rWZtransform_to_kwonly�
param_namer4Z arg_valueZ new_paramr r r
�_signature_get_partial�sL
r�cCslt|j���}|r$|djttfkr,td��|dj}|ttfkrP|dd�}n|t k r`td��|j
|d�S)Nrzinvalid method signaturer�zinvalid argument type)r')r^r'r(rhr.r-rsr*r)r,r;)r0�paramsrhr r r
�_signature_bound_methods
r�cCs&t|�p$t|�p$t|t�p$|ttfkS)N)r4rrr�rr)rgr r r
�_signature_is_builtin!s
r�cCs�t|�rt|�rdSt|dd�}t|dd�}t|dt�}t|dt�}t|dd�}t|tj�o�t|t�o�|dksxt|t�o�|dks�t|t �o�t|t �S)NFr�r�__defaults__�__kwdefaults__�__annotations__)
�callabler
r>�_voidrrr1r�r^r�)rgr@rkrr3r2r r r
�_signature_is_functionlike-s
r�cCs<|�d�}|dkr|�d�}|�d�}|�d�}|d|�S)N�,r|r��:r@r�)�find)rJrRZcposr r r
�_signature_get_bound_paramFs
r�cCs$|s|ddfSd}d}dd�|�d�D�}t|�j}t�|�}d}d}g}|j} d}
tj}tj}t|�}
x�|D]�}
|
j |
j
}}||kr�|dkr�|r�d}qnd}|
d7}
qn|d kr�d}|
d}qn||kr�|d
kr�|
}qn|r�d}||kr�|dks�| d�| |�|dkrn| d
�qnWd�|�}|||fS)NcSsg|]}|�d��qS)�ascii)�encode)rW�lr r r
r�psz6_signature_strip_non_python_syntax.<locals>.<listcomp>r�Frr�Tr��/�$r�z, � r�)r�r�r�r�rKr��OP�
ERRORTOKEN�nextr�stringr�)� signature�self_parameter�last_positional_onlyr�r�Ztoken_streamZ
delayed_commaZskip_next_commarArMZcurrent_parameterr�r��trr��clean_signaturer r r
�"_signature_strip_non_python_syntax]sP
r�Tc shddl�|j�t|�\}}}d|d}y��|�}Wntk
rNd}YnXt|�j�sjtd�|���|j d} g��j
�t��d}i�t|dd�}
|
r�t
j�|
d�}|r�|j�t
j��� �fdd����� fdd ��
G��
fd
d�d�j���f��������fdd
� }t| jj�}t| jj�}
tj||
dd�}|dk �rJ�j�n�j�x<ttt|���D](\}\}}|||�||k�rb�j��qbW| jj�r��j�|| jj���j�x*t| jj | jj!�D]\}}|||��q�W| jj"�r��j#�|| jj"��|dk �rZt|dd�}|dk }t$|�}|�r@|�s4|�r@��%d�n�dj&�jd�}|�d<|�|j
d�S)Nrzdef fooz: passz"{!r} builtin has invalid signaturercs|jdkrtd��|jS)Nz'Annotations are not currently supported)r/rsrB)�node)�astr r
�
parse_name�s
z&_signature_fromstr.<locals>.parse_namecs�yt|��}Wn>tk
rLyt|��}Wntk
rFt��YnXYnXt|t�rb��|�St|ttf�rz��|�St|t �r���
|�S|dkr���|�St��dS)N)TFN)�eval� NameError�RuntimeErrorrr�ZStr�int�floatZNum�bytesZBytesZNameConstant)r�rA)r��module_dict�sys_module_dictr r
�
wrap_value�s
z&_signature_fromstr.<locals>.wrap_valuecs(eZdZ��fdd�Z��fdd�ZdS)z,_signature_fromstr.<locals>.RewriteSymbolicscs`g}|}x"t|�j�r*|�|j�|j}q
Wt|�j�s>t��|�|j�d�t |��}�|�S)Nr{)
rrVrKr�rA�Namer�ror��reversed)r�r��arYrA)r�r�r r
�visit_Attribute�s
z<_signature_fromstr.<locals>.RewriteSymbolics.visit_Attributecst|j�j�st���|j�S)N)rZctxZLoadrsro)r�r�)r�r�r r
�
visit_Name�sz7_signature_fromstr.<locals>.RewriteSymbolics.visit_NameN)r�rr�r�r�r )r�r�r r
�RewriteSymbolics�sr�cs��|�}|�krdS|rp|tk rpy���|�}��|�}Wntk
rR�}YnX|�kr`dS|�k rl|n|}���|�|�d��dS)N)r+r/)�_emptyZvisitZliteral_evalrsrK)Z name_nodeZdefault_noder+r@�o)� Parameterr�r�r&�invalidrhr'r�r r
�p�s
z_signature_fromstr.<locals>.p)� fillvaluer�)rh)r%)'r��_parameter_clsr��parse�SyntaxErrorrZModulersrtZbodyr&rr>rpr}r~r<r�ZNodeTransformerr�rr� itertools�zip_longest�POSITIONAL_ONLY�POSITIONAL_OR_KEYWORDrErZvararg�VAR_POSITIONAL�KEYWORD_ONLYrfr Zkw_defaultsr[�VAR_KEYWORDrr�r;)rXrgr�r r�r�r�Zprogramr�rmZmodule_namer�rrr�r�r@r+�_selfZself_isboundZ
self_ismoduler )r�r�r�r&r�rhr�r'r�r�r�r
�_signature_fromstr�sl
r�cCsBt|�std�|���t|dd�}|s4td�|���t||||�S)Nz%{!r} is not a Python builtin function�__text_signature__z#no signature found for builtin {!r})r�r�rtr>rsr�)rXrur r�r r r
�_signature_from_builtin5sr�c Cs�d}t|�s(t|�rd}ntd�|���|j}|j}|j}|j}t|d|��}|j }||||�} |j
}
|j}|j}|r�t
|�}
nd}
g}||
}x4|d|�D]$}|
�|t�}|�|||td��q�WxBt||d��D].\}}|
�|t�}|�|||t||d��q�W|jt@�rH|||}|
�|t�}|�|||td��xJ| D]B}t}|dk �rl|�|t�}|
�|t�}|�|||t|d���qNW|jt@�r�||}|jt@�r�|d7}||}|
�|t�}|�|||td��|||
�dt�|d �S)
NFTz{!r} is not a Python functionr)r/rh)r/rhr+r�r")r%�__validate_parameters__)rr�r�rtr�rrr
r^rr�r�r�rrr~r�rKr*rErrr,r-rr.)rXruZis_duck_functionr�Z func_codeZ pos_countZ arg_namesrPZkeyword_only_countZkeyword_onlyr2rr3Zpos_default_countr'Znon_default_countr@r/�offsetr+rsr r r
�_signature_from_functionEsj
r�)rr c
Cs�t|�std�|���t|tj�rDt|j|||d�}|r@t|�S|S|rtt |dd�d�}t|tj�rtt||||d�Sy
|j
}Wntk
r�Yn&X|dk r�t|t�s�td�|���|Sy
|j
}Wntk
r�YnvXt|tj��rLt|j|||d�}t||d�}t|j���d}|jtjk�r(|St|j���}|f|} |j| d �St|��s`t|��rjt||�St|��r�t|||d
�St|tj��r�t|j|||d�}t||�Sd}t|t��r�t t|�d�}
|
dk �r�t|
|||d�}nJt |d�}|dk �rt||||d�}n$t |d
�}|dk �r0t||||d�}|dk�r<xL|j!dd�D]:}
y
|
j"}Wntk
�rnYnX|�rJt#|||�S�qJWt|j!k�r<|j$t%j$k�r�|j&t%j&k�r�|�'t%�St(d�|���nrt|t)��s<t t|�d�}
|
dk �r<yt|
|||d�}Wn8t(k
�r:}zd�|�}t(|�|�Wdd}~XYnX|dk �rX|�rTt|�S|St|tj*��rxd�|�}t(|��t(d�|���dS)Nz{!r} is not a callable object)rr r!cSs
t|d�S)N�
__signature__)r)rmr r r
rD�rEz*_signature_from_callable.<locals>.<lambda>)rkz1unexpected object {!r} in __signature__ attribute)Nr)r')r �__call__�__new__r�r|z(no signature found for builtin type {!r}zno signature found for {!r}z,no signature found for builtin function {!r}z+callable {!r} is not supported by signature)+r�r�rtrrrr#r�r�rvr�rLr$�_partialmethod� functools�
partialmethodrur�r^r'r(rhr�r�r;rr�r�r�r�r�rr�rjr�r�r�rr��
from_callablersr�r3)rgrr r!r0r�r�Zfirst_wrapped_paramZ
sig_paramsr�Zcall�newZinitrBZtext_sigr1rWr r r
r#�s�
r#c@seZdZdS)r�N)r�rr�r r r r
r�_ sr�c@seZdZdS)r�N)r�rr�r r r r
r�c sr�c@s(eZdZdZdZdZdZdZdd�ZdS) �_ParameterKindrr�r���cCs|jS)N)�_name_)r�r r r
�__str__n sz_ParameterKind.__str__N) r�rr�r�r�r�r�r�rr r r r
r�g sr�zpositional-onlyzpositional or keywordzvariadic positionalzkeyword-onlyzvariadic keywordc@s�eZdZdZeZeZeZ e
ZeZ
eZeed�dd�Zdd�Zdd�Zed d
��Zedd��Zed
d��Zedd��Zeeeed�dd�Zdd�Zdd�Zdd�Zdd�ZdS)r�)�_name�_kind�_default�_annotation)r+r/cCs yt|�|_Wn$tk
r2td|�d���YnX|tk rf|jttfkrfd}|�t|j��}t|��||_||_ |tkr�td��t
|t�s�d�t|�j
�}t|��|ddkr�|dd���r�|jtkr�d }|�t|j��}t|��t|_d
�|dd��}|���std�|���||_dS)Nzvalue z is not a valid Parameter.kindz({} parameters cannot have default valuesz*name is a required attribute for Parameterzname must be a str, not a {}rr{r�zLimplicit arguments must be passed as positional or keyword arguments, not {}z
implicit{}z"{!r} is not a valid parameter name)r�rrsr�r,r.rt�_get_paramkind_descrrrrr�rr�r��isdigitr*r)�isidentifierr)r�r@rhr+r/rWr r r
r�� s4
zParameter.__init__cCs t|�|j|jf|j|jd�fS)N)rr)rrrrr)r�r r r
�
__reduce__� s
zParameter.__reduce__cCs|d|_|d|_dS)Nrr)rr)r��stater r r
�__setstate__� s
zParameter.__setstate__cCs|jS)N)r)r�r r r
r@� szParameter.namecCs|jS)N)r)r�r r r
r+� szParameter.defaultcCs|jS)N)r)r�r r r
r/� szParameter.annotationcCs|jS)N)r)r�r r r
rh� szParameter.kind)r@rhr/r+cCsL|tkr|j}|tkr|j}|tkr*|j}|tkr8|j}t|�||||d�S)N)r+r/)r�rrrrr)r�r@rhr/r+r r r
r;� szParameter.replacecCs�|j}|j}|jtk r(d�|t|j��}|jtk rb|jtk rPd�|t|j��}nd�|t|j��}|tkrtd|}n|t kr�d|}|S)Nz{}: {}z{} = {}z{}={}r?z**)
rhrrr�rtr<rr:r,r.)r�rh� formattedr r r
r� s
zParameter.__str__cCsd�|jj|�S)Nz <{} "{}">)rtr�r�)r�r r r
�__repr__
szParameter.__repr__cCst|j|j|j|jf�S)N)�hashr@rhr/r+)r�r r r
�__hash__
szParameter.__hash__cCsJ||krdSt|t�stS|j|jkoH|j|jkoH|j|jkoH|j|jkS)NT)rr��NotImplementedrrrr)r��otherr r r
�__eq__
s
zParameter.__eq__N)r�rr�� __slots__r)r�r*r�r,r�r-r�r.r�r�r&r�r rr[r@r+r/rhr�r;rr
rrr r r r
r�� s((r�c@sdeZdZdZdd�Zedd��Zedd��Zedd ��Zd
d�Z dd
�Z
dd�Zdd�Zdd�Z
dS)�BoundArguments)r��
_signature�__weakref__cCs||_||_dS)N)r�r)r�r�r�r r r
r�1
szBoundArguments.__init__cCs|jS)N)r)r�r r r
r�5
szBoundArguments.signaturec Cs|g}xn|jj��D]^\}}|jttfkr*Py|j|}Wntk
rNPYqX|jtkrf|� |�q|�
|�qWt|�S)N)rr'r=rhr.r-r�rjr,�extendrKr^)r�rr�r4rBr r r
r9
s
zBoundArguments.argsc Cs�i}d}x�|jj��D]x\}}|sF|jttfkr6d}n||jkrFd}q|sLqy|j|}Wntk
rnYqX|jtkr�|�|�q|||<qW|S)NFT) rr'r=rhr.r-r�rj�update)r��kwargsZkwargs_startedr�r4rBr r r
rP
s&
zBoundArguments.kwargsc Cs�|j}g}x�|jj��D]v\}}y|�|||f�Wqtk
r�|jtk rX|j}n"|jt krhd}n|jt
krxi}nw|�||f�YqXqWt|�|_dS)Nr )r�rr'r=rKrjr+r�rhr,r.r)r�r�Z
new_argumentsr@r4�valr r r
�apply_defaultsn
s
zBoundArguments.apply_defaultscCs2||krdSt|t�stS|j|jko0|j|jkS)NT)rrrr�r�)r�rr r r
r�
s
zBoundArguments.__eq__cCs|d|_|d|_dS)Nrr�)rr�)r�r
r r r
r�
s
zBoundArguments.__setstate__cCs|j|jd�S)N)rr�)rr�)r�r r r
�__getstate__�
szBoundArguments.__getstate__cCsDg}x(|j��D]\}}|�d�||��qWd�|jjd�|��S)Nz{}={!r}z <{} ({})>z, )r�r=rKrtr�r�r�)r�rrBrAr r r
r
�
szBoundArguments.__repr__N)r�rr�rr�r[r�rrrrrrr
r r r r
r
src@s�eZdZdZeZeZeZ d+edd�dd�Z
edd��Zed d
��Z
edd�dd
��Zedd��Zedd��Zeed�dd�Zdd�Zdd�Zdd�Zdd�dd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�ZdS),r$)�_return_annotation�_parametersNT)r%r�cCs�|dkrt�}n�|r�t�}t}d}x�t|�D]�\}}|j} |j}
| |krjd}|�t|�t| ��}t|��n| |krzd}| }| ttfkr�|j t
kr�|r�d}t|��nd}|
|kr�d�|
�}t|��|||
<q,Wntdd�|D��}t�|�|_
||_dS)NFz7wrong parameter order: {} parameter before {} parameterz-non-default argument follows default argumentTzduplicate parameter name: {!r}css|]}|j|fVqdS)N)r@)rWr4r r r
rY�
sz%Signature.__init__.<locals>.<genexpr>)rr)rErhr@rtrrsr*r+r�r�MappingProxyTyperr)r�r'r%r�r�Ztop_kindZ
kind_defaults�idxr4rhr@rWr r r
r��
s>
zSignature.__init__cCstjdtdd�t||�S)Nz_inspect.Signature.from_function() is deprecated since Python 3.5, use Signature.from_callable()r�)r)rrrr�)rXrur r r
�
from_function�
s
zSignature.from_functioncCstjdtdd�t||�S)Nz^inspect.Signature.from_builtin() is deprecated since Python 3.5, use Signature.from_callable()r�)r)rrrr�)rXrur r r
�from_builtins
zSignature.from_builtin)�follow_wrappedcCst|||d�S)N)r!r)r#)rXrgr#r r r
r�
szSignature.from_callablecCs|jS)N)r)r�r r r
r'szSignature.parameterscCs|jS)N)r)r�r r r
r%szSignature.return_annotation)r'r%cCs0|tkr|j��}|tkr |j}t|�||d�S)N)r%)r�r'r(rr)r�r'r%r r r
r;s
zSignature.replacecCs8tdd�|j��D��}dd�|j��D�}|||jfS)Ncss|]}|jtkr|VqdS)N)rhr-)rWr4r r r
rY+sz(Signature._hash_basis.<locals>.<genexpr>cSsi|]}|jtkr||j�qSr )rhr-r@)rWr4r r r
r`.sz)Signature._hash_basis.<locals>.<dictcomp>)r^r'r(r%)r�r��
kwo_paramsr r r
�_hash_basis*szSignature._hash_basiscCs(|��\}}}t|���}t|||f�S)N)r%� frozensetr(r)r�r�r$r%r r r
r3szSignature.__hash__cCs*||krdSt|t�stS|��|��kS)NT)rr$rr%)r�rr r r
r8s
zSignature.__eq__F)r�cCs�t�}t|j���}d}t|�}�xxyt|�}Wn�tk
r�yt|�} Wntk
rbPYn�X| jtkrrPn�| j|kr�| jt kr�d}
|
j
| jd�}
t|
�d�| f}PnH| jtks�| j
tk r�| f}Pn*|r�| f}Pnd}
|
j
| jd�}
t|
�d�Yq$Xyt|�} Wn tk
�r&td�d�Yq$X| jttfk�rBtd�d�| jtk�rn|g}|�|�t|�|| j<P| j|k�r�tdj
| jd��d�||| j<q$Wd}x�t�||�D]�} | jtk�r�| }�q�| jtk�rq�| j}
y|�|
�}WnFtk
�r0|�s,| jtk�r,| j
tk�r,tdj
|
d��d�Yn(X| jt k�rPtdj
| jd���|||
<�q�W|�r�|dk �rz|||j<ntdj
tt|��d���|�||�S)Nr zA{arg!r} parameter is positional only, but was passed as a keyword)rBz$missing a required argument: {arg!r}ztoo many positional argumentsz$multiple values for argument {arg!r}z*got an unexpected keyword argument {arg!r})rr�r'r(r��
StopIterationrhr,r@r)rtr�r.r+r�r-rr^r��chainr�rj�_bound_arguments_cls)r�rrr�r�r'Z
parameters_exZarg_valsZarg_valr4rWr(Zkwargs_paramr�r r r
�_bind?s�
zSignature._bindcOs|d�|dd�|�S)Nrr�)r*)rrr r r
�bind�szSignature.bindcOs|dj|dd�|dd�S)Nrr�T)r�)r*)rrr r r
r��szSignature.bind_partialcCs t|�t|j���fd|jifS)Nr)rr^rr(r)r�r r r
r �szSignature.__reduce__cCs|d|_dS)Nr)r)r�r
r r r
r�szSignature.__setstate__cCsd�|jj|�S)Nz<{} {}>)rtr�r�)r�r r r
r
�szSignature.__repr__c Cs�g}d}d}xr|j��D]d}t|�}|j}|tkr8d}n|rJ|�d�d}|tkrXd}n|tkrr|rr|�d�d}|�|�qW|r�|�d�d�d� |��}|j
tk r�t|j
�}|d�|�7}|S)NFTr�r?z({})z, z -> {})
r'r(r�rhr)rKr,r-rtr�r%r�r<) r�reZrender_pos_only_separatorZrender_kw_only_separatorr4rrhZrenderedZannor r r
r�s0
zSignature.__str__)N)r�rr�rr�r�rr)r�r&r�rcr!r"r�r[r'r%r�r;r%rrr*r+r�r rr
rr r r r
r$�
s06 r$)r#cCstj||d�S)N)r#)r$r�)rgr#r r r
r� sr�c
Cs�ddl}ddl}|��}|jddd�|jddddd �|��}|j}|�d
�\}}}y|�|�}} WnNtk
r�}
z0d� |t
|
�j|
�}t|t
jd�t
�d
�Wdd}
~
XYnX|r�|�d�}| }x|D]}
t||
�}q�W| jt
jk�rtdt
jd�t
�d�|j�r�td� |��td� t| ���td� | j��|| k�r|td� t| j���t| d��r�td� | j��n6yt|�\}}Wntk
�r�YnXtd� |��td�ntt|��dS)NrrzCThe 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�zFailed to import {} ({}: {}))r�r�r{z#Can't get info for builtin modules.r�z
Target: {}z
Origin: {}z
Cached: {}z
Loader: {}�__path__zSubmodule search path: {}zLine: {}r�)�argparser��ArgumentParser�add_argument�
parse_argsr� partition�
import_moduler_rtrr��printrp�stderr�exitr�r>�builtin_module_namesZdetailsr��
__cached__r:r�rr/r�r�)r0r��parserr�targetZmod_nameZ has_attrsZattrsrgr�rfrW�parts�part�__rrr r r
�_mainsV
r@r�)N)N)N)F)N)r�)r�)r�)r�)r�)r )T)T)��
__author__r*�disZcollections.abcr)�enumZimportlib.machineryr�r�r�r�r�rpr�r�rrr�r��operatorrrr�globalsZmod_dictZCOMPILER_FLAG_NAMESr=rSrTr9rr
rrrrrrrrr r!r#r%r'r,r.r0r2r4r5rCrUrVrirGrvrzr�r�r�r�r�r�r�r�r�r�r�r�r�r_r�r�r�r�r�r�rrrrrrrrr5r8r<r>r�rKrNrUrXr\r]rlrmrtru�_fieldsrvrzr}rr�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�Z_WrapperDescriptor�allZ_MethodWrapperr�r<Z_ClassMethodWrapperr3r�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__rr�rr$r�r@r�r r r r
�<module>s`
,
t$
;
.I-7
[
4>
5
0
LH
RHk:
?>