3 \��� @s�d�ZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlmZddlmZmZe�Zx"ejj�D]\ZZeede<q�Wd�Zd d �Zd d �Z d d�Z!dd�Z"dd�Z#e$ed��rdd�Z%ndd�Z%e$ed��r2dd�Z&ndd�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�Z3d5d6�Z4d�d7d8�Z5ed9d:�Z6d;d<�Z7d=d>�Z8dd?�d@dA�Z9dBdC�Z:dDdE�Z;dFdG�ZdLdM�Z?dNdO�Z@dPdQ�ZAd�dRdS�ZBiZCiZDd�dTdU�ZEdVdW�ZFdXdY�ZGGdZd[�d[eH�ZIGd\d]�d]�ZJd^d_�ZKd`da�ZLdbdc�ZMddde�ZNd�dgdh�ZOedidj�ZPdkdl�ZQdmdn�ZRedodp�ZSdqdr�ZTedsdt�ZUdudv�ZVedwdx�ZWdydz�ZXd�d{d|�ZYd}d~�ZZdddfiie[dd��d�d��d�d��d�d��eYf d�d��Z\e[d�d��d�d��d�d��fd�d��Z]d�d��Z^d�d��Z_d�d��Z`ed�d��Zad�d��Zbed�d��Zcd�d�d��Zdd�d��Zeed�d�ecjf�Zgd�d�d��Zhd�d�d��Zid�d��Zjd�d�d��Zkd�d�d��Zlem�Znd�d��Zod�d��Zpd�d��Zqd�d��Zrd�d��Zsenfd�d��Ztd�Zud�Zvd�Zwd�Zxd�d��Zyd�d��Zzd�Z{d�Z|d�Z}d�Z~d�d��Zd�d„Z�e�e�j��Z�e�e�j��Z�e�e�j�d��Z�e�e�e�ej�fZ�d�dÅ„Z�ffd�dÇ„Z�d�dÉ„Z�d�dË„Z�d�dÍ„Z�d�dÏ„Z�d�dÑ„Z��dd�dÔ„Z��dd�dÖ„Z�d�dØ„Z�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(�Ka-Ping Yee �'Yury Selivanov �N)� attrgetter)� namedtuple� OrderedDictZCO_��cCs t|tj�S)N)� isinstance�types� ModuleType)�object�r �/usr/lib64/python3.6/inspect.py�ismodule@srcCs t|t�S)N)r �type)r r r r�isclassIsrcCs t|tj�S)N)r r � MethodType)r r r r�ismethodQsrcCs:t|�st|�st|�rdSt|�}t|d�o8t|d� S)NF�__get__�__set__)rr� isfunctionr�hasattr)r �tpr r r�ismethoddescriptor[srcCs8t|�st|�st|�rdSt|�}t|d�o6t|d�S)NFrr)rrrrr)r rr r r�isdatadescriptorosr�MemberDescriptorTypecCs t|tj�S)N)r r r)r r r r�ismemberdescriptorsrcCsdS)NFr )r r r rr�s�GetSetDescriptorTypecCs t|tj�S)N)r r r)r r r r�isgetsetdescriptor�srcCsdS)NFr )r r r rr�scCs t|tj�S)N)r r � FunctionType)r r r rr�s rcCs tt|�st|�o|jjt@�S)N)�boolrr�__code__�co_flagsZ CO_GENERATOR)r r r r�isgeneratorfunction�sr#cCs tt|�st|�o|jjt@�S)N)r rrr!r"Z CO_COROUTINE)r r r r�iscoroutinefunction�sr$cCs tt|�st|�o|jjt@�S)N)r rrr!r"ZCO_ASYNC_GENERATOR)r r r r�isasyncgenfunction�sr%cCs t|tj�S)N)r r �AsyncGeneratorType)r r r r� isasyncgen�sr'cCs t|tj�S)N)r r � GeneratorType)r r r r� isgenerator�sr)cCs t|tj�S)N)r r � CoroutineType)r r r r� iscoroutine�sr+cCs6t|tj�p4t|tj�r(t|jjt@�p4t|tj j �S)N) r r r*r(r �gi_coder"ZCO_ITERABLE_COROUTINE� collections�abc� Awaitable)r r r r� isawaitable�s  r0cCs t|tj�S)N)r r � TracebackType)r r r r� istraceback�sr2cCs t|tj�S)N)r r � FrameType)r r r r�isframe�s r4cCs t|tj�S)N)r r �CodeType)r r r r�iscode�sr6cCs t|tj�S)N)r r �BuiltinFunctionType)r r r r� isbuiltinsr8cCs t|�pt|�pt|�pt|�S)N)r8rrr)r r r r� isroutinesr9cCs�t|t�sdS|jt@rdStt|�tj�s0dSt|d�r>dSx&|jj �D]\}}t |dd�rJdSqJWx@|j D]6}x0t |df�D] }t ||d�}t |dd�r�dSq�WqnWdS)NFT�__abstractmethods__�__isabstractmethod__) r r� __flags__�TPFLAGS_IS_ABSTRACT� issubclassr.�ABCMetar�__dict__�items�getattr� __bases__)r �name�value�baser r r� isabstract%s"        rGc Cs&t|�r|ft|�}nf}g}t�}t|�}yBx<|jD]2}x,|jj�D]\}}t|tj �rH|j |�qHWq8WWnt k r�YnXx�|D]�} yt || �} | |kr�t �Wn:t k r�x$|D]}| |jkr�|j| } Pq�Ww�YnX| s�|| ��r|j | | f�|j | �q�W|jdd�d�|S)NcSs|dS)Nrr )Zpairr r r�fszgetmembers..)�key)r�getmro�set�dirrCr@rAr r �DynamicClassAttribute�append�AttributeErrorrB�add�sort) r Z predicate�mro�results� processed�namesrF�k�vrIrEr r r� getmembers=s:       rX� Attributezname kind defining_class objectcCs\t|�}tt|��}tdd�|D��}|f|}||}t|�}x:|D]2}x,|jj�D]\}}t|tj�rV|j |�qVWqFWg} t �} �x�|D�]�} d} d} d}| | k�r�y| dkr�t d��t || �} Wn"t k r�}zWYdd}~Xn�Xt | d| �} | |k�r�d} d}x(|D] }t || d�}|| k�r|}�qWxH|D]@}y|j || �}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|t��r�d}|}n@t|t��r d}|}n*t|t��r"d}|}nt|��r2d }nd }| j t| || |��| j| �q�W| S) NcSsg|]}|ttfkr|�qSr )rr )�.0�clsr r r� �sz(classify_class_attrs..r@z)__dict__ is special, don't want the proxy� __objclass__z static methodz class method�property�method�data)rJr�tuplerLr@rAr r rMrNrK� ExceptionrB� __getattr__rO� staticmethod� classmethodr^r9rYrP)r[rRZmetamroZ class_basesZ all_basesrUrFrVrW�resultrTrDZhomeclsZget_objZdict_obj�excZlast_clsZsrch_clsZsrch_obj�obj�kindr r r�classify_class_attrsks�                          rjcCs|jS)N)�__mro__)r[r r rrJ�srJ)�stopcs��dkrdd�}n �fdd�}|}t|�|i}tj�}xD||�rz|j}t|�}||ksbt|�|krptdj|���|||<q8W|S)NcSs t|d�S)N� __wrapped__)r)�fr r r� _is_wrapper�szunwrap.._is_wrappercst|d�o�|� S)Nrm)r)rn)rlr rro�sz!wrapper loop when unwrapping {!r})�id�sys�getrecursionlimitrm�len� ValueError�format)�funcrlrorn�memoZrecursion_limitZid_funcr )rlr�unwrap�s     rxcCs|j�}t|�t|j��S)N)� expandtabsrs�lstrip)�lineZexpliner r r� indentsize sr|cCsRtjj|j�}|dkrdSx&|jjd�dd�D]}t||�}q0Wt|�sNdS|S)N�.r�����)rq�modules�get� __module__� __qualname__�splitrBr)rvr[rDr r r� _findclasssr�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|�o�|jd||jk�r|}n|j }nzt|t��rJ|j}|j}t |�}|dk�sDt ||�|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})rrkr �__doc__rOrr��__name__�__self__rB� __class__rr�r8r�r r^�fgetrrr])rhrF�docrD�selfr[rvr r r�_finddocsb        r�cCsdy |j}Wntk rdSX|dkrNy t|�}Wnttfk rLdSXt|t�s\dSt|�S)N)r�rOr�� TypeErrorr �str�cleandoc)r r�r r r�getdocSs   r�c Cs�y|j�jd�}Wntk r&dSXtj}x:|dd�D]*}t|j��}|r.)�os�path�basename� importlib� machinery� all_suffixesrQ�endswith)r�Zfname�suffixesZneglenr�r r r� getmodulename�s  r�cs�t|��tjjdd�}|tjjdd�7}t�fdd�|D��r`tjj��dtjj d�nt�fdd�tjj D��r~dStjj ��r��St t |��dd�dk r��S�tjkr��SdS)Nc3s|]}�j|�VqdS)N)r�)rZ�s)�filenamer r� �sz getsourcefile..rc3s|]}�j|�VqdS)N)r�)rZr�)r�r rr��s� __loader__)r�r�r��DEBUG_BYTECODE_SUFFIXES�OPTIMIZED_BYTECODE_SUFFIXES�anyr�r��splitext�SOURCE_SUFFIXES�EXTENSION_SUFFIXES�existsrB� getmodule� linecache�cache)r Zall_bytecode_suffixesr )r�r� getsourcefile�s   r�cCs,|dkrt|�pt|�}tjjtjj|��S)N)r�r�r�r��normcase�abspath)r � _filenamer r r� getabsfile�sr�c Cs�t|�r |St|d�r$tjj|j�S|dk rD|tkrDtjjt|�Syt||�}Wntk rfdSX|tkr�tjjt|�Sxnt tjj ��D]\\}}t|�r�t|d�r�|j }|t j|d�kr�q�|t |<t|�}|j t|<ttjj|�<q�W|tk�r tjjt|�Stjd}t|d��s$dSt||j ��rLt||j �}||k�rL|Stjd}t||j ��r~t||j �} | |k�r~|SdS)Nr�r��__main__r��builtins)rrrqrr�r�� modulesbyfiler�r��listrAr��_filesbymodnamer�r�r��realpathrB) r r��file�modname�modulern�mainZ mainobjectZbuiltinZ builtinobjectr r rr��sD         r�c Cs�t|�}|rtj|�n$t|�}|jd�o2|jd�szsource code not availablezcould not get source coderz^(\s*)class\s*z\b�crzcould not find class definition�co_firstlinenoz"could not find function definitionz>^(\s*def\s)|(\s*async\s+def\s)|(.*(?yt|�\}}Wnttfk r(dSXt|�r�d}|rR|ddd�dkrRd}x(|t|�krz||j�dkrz|d}qTW|t|�kr�||dd�dkr�g}|}x>|t|�kr�||dd�dkr�|j||j��|d}q�Wdj|�S�nH|dk�r:t ||�}|d}|dk�r:||j �dd�dk�r:t ||�|k�r:||j�j �g}|dk�r�|d}||j�j �}x\|dd�dk�r�t ||�|k�r�|g|dd�<|d}|dk�r�P||j�j �}�q|Wx*|�r|dj�dk�rg|dd�<�q�Wx*|�r.|dj�dk�r.g|d d�<�qWdj|�SdS) Nr�z#!r��#)r�r�r~r~) r�r�r�rrs�striprNryr�r|rz)r r�r��startZcomments�endr�Zcommentr r r� getcommentsAsJ  "   $ & r�c@s eZdZdS)� EndOfBlockN)r�r�r�r r r rr�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&|j rD|j rD|dkr d|_n|d kr<|dkr6d|_d|_d|_n�|dkrZ|jrXd|_n�|dkrv|jrtd|_d|_n�|tjkr�d|_|d |_|jr�t�|jr�|j r�d|_nr|jr�nj|tj kr�|j d |_ d|_nL|tj k�r|j d |_ |j d k�r"t�n"|j d k�r"|tj tj fk�r"t�dS) N�@T�def�class�lambda�(�)Frr)r�r�r�)r�r�r�r�r��tokenize�NEWLINEr�r��INDENTr��DEDENT�COMMENT�NL)r�r�tokenZsrowcolZerowcolr{r r r� tokeneater{sB       zBlockFinder.tokeneaterN)r�r�r�r�r�r r r rr�ps r�c CsZt�}y,tjt|�j�}x|D]}|j|�qWWnttfk rJYnX|d|j�S)N) r�r��generate_tokens�iter�__next__r�r��IndentationErrorr�)r�Z blockfinder�tokensZ_tokenr r r�getblock�s r�cCsbt|�}t|�\}}t|�r"|j}t|�s>t|�rF|jjdkrF|dfSt||d��|dfSdS)Nzrr) rxr�r2r�rr4r��co_namer�)r r�r�r r r�getsourcelines�s r�cCst|�\}}dj|�S)Nr�)r�r�)r r�r�r r r� getsource�s r�cCsVg}|jtdd�d�x:|D]2}|j||jf�||kr|jt||||��qW|S)Nr�r�)rI)rQrrNrC�walktree)�classes�children�parentrSr�r r rr��s r�FcCs�i}g}xn|D]f}|jrbxZ|jD]<}||kr4g||<|||krN||j|�|r ||kr Pq Wq||kr|j|�qWx|D]}||kr~|j|�q~Wt||d�S)N)rCrNr�)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�sr c Cs�t|�stdj|���|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) r6r�ru� co_argcount� co_varnames�co_kwonlyargcountr�r"� CO_VARARGS�CO_VARKEYWORDS) r�nargsrUZnkwargsrr �steprr r r rrs"    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�getfullargspecrtr)rvrrr �defaultsr �kwonlydefaults�annr r r� getargspec s  r� FullArgSpeczGargs, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotationsc Cs`yt|ddtd�}Wn,tk r@}ztd�|�WYdd}~XnXg}d}d}g}f}i}f}i} |j|jk rx|j|d<x�|jj�D]�} | j} | j } | t kr�|j | �nv| t kr�|j | �| j | jk r�|| j f7}nJ| tkr�| }n<| tk�r|j | �| 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 callable�return)�_signature_from_callable� Signaturerbr��return_annotation�empty� parameters�valuesrirD�_POSITIONAL_ONLYrN�_POSITIONAL_OR_KEYWORD�default�_VAR_POSITIONAL� _KEYWORD_ONLY� _VAR_KEYWORD� annotationr) rv�sig�exrrr r r� annotations� kwdefaults�paramrirDr r rrAsT            r�ArgInfozargs varargs keywords localscCs t|j�\}}}t||||j�S)N)r r�r4�f_locals)�framerrr r r r� getargvalues�sr7cCsVt|dd�dkr t|�jdd�St|t�rN|jd|fkr>|jS|jd|jSt|�S)Nr�Ztypingztyping.r�r�r})rB�repr�replacer rr�r�)r.Z base_moduler r r�formatannotation�s r:cst|dd���fdd�}|S)Nr�cs t|��S)N)r:)r.)r�r r�_formatannotation�sz5formatannotationrelativeto.._formatannotation)rB)r r;r )r�r�formatannotationrelativeto�s  r<cCsd|S)N�*r )rDr r rrH�srHcCsd|S)Nz**r )rDr r rrH�scCs dt|�S)N�=)r8)rEr r rrH�scCsd|S)Nz -> r )�textr r rrH�sc s(���fdd�} g}|r(t|�t|�}xFt|�D]:\}}| |�}|rb||krb|| |||�}|j|�q2W|dk r�|j|| |���n|r�|jd�|r�x:|D]2}| |�}|r�||kr�|| ||�7}|j|�q�W|dk r�|j| | |���ddj|�d}d�k�r$|| ��d��7}|S)Ncs(�|�}|�kr$|d��|�7}|S)Nz: r )�argrf)r1r:� formatargr r�formatargandannotation�sz-formatargspec..formatargandannotationr=r�z, r�r!)rs� enumeraterNr�)rrr rr rr1rA� formatvarargs� formatvarkw� formatvalueZ formatreturnsr:rB�specsZ firstdefaultr�r@�specZ kwonlyargrfr )r1r:rAr� formatargspec�s2     rIcCsd|S)Nr=r )rDr r rrH�scCsd|S)Nz**r )rDr r rrH�scCs dt|�S)Nr>)r8)rEr r rrH�sc Cs�|||fdd�}g} x&tt|��D]} | j||| ��q"W|rZ| j||�|||��|rx| j||�|||��ddj| �dS)NcSs||�|||�S)Nr )rD�localsrArFr r r�convert�sz formatargvalues..convertr�z, r�)r�rsrNr�) rrr rJrArDrErFrKrGr�r r r�formatargvalues�s rLcs��fdd�|D�}t|�}|dkr,|d}n>|dkr@dj|�}n*dj|dd��}|dd�=dj|�|}td |||rzd nd |dkr�d nd |f��dS)Ncsg|]}|�krt|��qSr )r8)rZrD)r'r rr\�sz&_missing_arguments..rrr�z {} and {}z , {} and {}z, z*%s() missing %i required %s argument%s: %s� positionalz keyword-onlyr�r������rN)rsrur�r�)�f_nameZargnames�posr'rU�missingr��tailr )r'r�_missing_arguments�s    rSc 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�| r�d nd f��dS) Ncsg|]}|�kr|�qSr r )rZr@)r'r rr\sz_too_many..rz 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 givenZwasZwere)rsr�r�) rOrZkwonlyrZdefcountZgivenr'ZatleastZ kwonly_givenZpluralr/Z kwonly_sig�msgr )r'r� _too_many s$    rUcOs6|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|j �D]X\}}||k�r|�st d| |f��|| ||<q�|| k�r,t d| |f��|| |<q�W||k�r^| �r^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|�r2t | | d| �| S)Nrrz*%s() got an unexpected keyword argument %rz(%s() got multiple values for argument %rTF)rr�rr�rsr�r�rarKrAr�rUrSrC)Zfunc_and_positionalZnamedrvrMrHrrr rr rrrOZ arg2valueZnum_posZnum_argsZ num_defaults�nr�Zpossible_kwargs�kwrEZreqr@rQ�kwargr r r� getcallargs!sd                 rY� ClosureVarsz"nonlocals globals builtins unboundc Cst|�r|j}t|�s$tdj|���|j}|jdkr:i}ndd�t|j|j�D�}|j }|j dt j �}t |�rt|j }i}i}t�}xn|jD]d}|dkr�q�y||||<Wq�tk r�y||||<Wntk r�|j|�YnXYq�Xq�Wt||||�S) Nz'{!r}' is not a Python functioncSsi|]\}}|j|�qSr )� cell_contents)rZ�varZcellr r r� vsz"getclosurevars..� __builtins__�None�True�False)r_r`ra)rr�rr�rur!� __closure__�zip� co_freevars� __globals__r�r�r@rrK�co_names�KeyErrorrPrZ) rv�codeZ nonlocal_varsZ global_nsZ builtin_nsZ global_varsZ builtin_varsZ unbound_namesrDr r r�getclosurevarsas8   ri� Tracebackz+filename lineno function code_context indexcCs�t|�r|j}|j}n|j}t|�s2tdj|���t|�p@t|�}|dkr�|d|d}yt |�\}}Wnt k r�d}}Yq�Xt dt |t |�|��}||||�}|d|}nd}}t|||jj||�S)Nz'{!r} is not a frame or traceback objectrrr�)r2� tb_linenor��f_linenor4r�rur�r�r�r��maxr�rsrjr�r�)r6�context�linenor�r�r�r��indexr r r� getframeinfo�s$rqcCs|jS)N)rl)r6r r r� getlineno�srr� FrameInfor6cCs6g}x,|r0|ft||�}|jt|��|j}qW|S)N)rqrNrs�f_back)r6rn� framelist� frameinfor r r�getouterframes�s  rwcCs8g}x.|r2|jft||�}|jt|��|j}qW|S)N)r�rqrNrs�tb_next)�tbrnrurvr r r�getinnerframes�s  rzcCsttd�rtjd�SdS)N� _getframer)rrqr{r r r r� currentframe�sr|cCsttjd�|�S)Nr)rwrqr{)rnr r r�stack�sr}cCsttj�d|�S)Nr�)rzrq�exc_info)rnr r r�trace�srcCstjdj|�S)Nrk)rr@r)�klassr r r�_static_getmro�sr�c Cs8i}ytj|d�}Wntk r(YnXtj||t�S)Nr@)r �__getattribute__rO�dictr�� _sentinel)rh�attrZ instance_dictr r r�_check_instance�s r�c CsFx@t|�D]4}tt|��tkr y |j|Stk r<Yq Xq WtS)N)r��_shadowed_dictrr�r@rg)r�r��entryr r r� _check_class�s  r�c Cs&y t|�Wntk r dSXdS)NFT)r�r�)rhr r r�_is_type�s  r�c Csntjd}x^t|�D]R}y|j|�d}Wntk r>YqXt|�tjko`|jdko`|j|ks|SqWt S)Nr@) rr@r�rrgr rr�r]r�)r�� dict_attrr�Z class_dictr r rr�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�r rr�r�r�r@rgrO)rhr�r*Zinstance_resultr�r�Z klass_resultr�r r r�getattr_statics6     r�� GEN_CREATED� GEN_RUNNING� GEN_SUSPENDED� GEN_CLOSEDcCs,|jr tS|jdkrtS|jjdkr(tStS)Nrr~)� gi_runningr��gi_framer��f_lastir�r�)� generatorr r r�getgeneratorstateGs   r�cCs:t|�stdj|���t|dd�}|dk r2|jjSiSdS)Nz '{!r}' is not a Python generatorr�)r)r�rurBr�r5)r�r6r r r�getgeneratorlocalsYs  r�� CORO_CREATED� CORO_RUNNING�CORO_SUSPENDED� CORO_CLOSEDcCs,|jr tS|jdkrtS|jjdkr(tStS)Nrr~)� cr_runningr��cr_framer�r�r�r�)� coroutiner r r�getcoroutinestateqs   r�cCs"t|dd�}|dk r|jSiSdS)Nr�)rBr5)r�r6r r r�getcoroutinelocals�s r�� from_bytesc Cs6yt||�}Wntk r"dSXt|t�s2|SdS)N)rBrOr �_NonUserDefinedCallables)r[Z method_name�methr r r�"_signature_get_user_defined_method�s  r�cCs�|j}t|j��}|jpf}|jp$i}|r2||}y|j||�}Wn6tk rx}zdj|�} t| �|�WYdd}~XnXd} �x |j�D�]�\} } y|j | } Wnt k r�YnlX| j t kr�|j | �q�| j tk�r| |kr�d} | j| d�|| <n|j | j�q�| j tk�r"| j| d�|| <| r�| j tk�rV|| jtd�}||| <|j| �q�| j ttfk�rr|j| �q�| j tkr�|j | j�q�W|j|j�d�S)Nz+partial object {!r} has incorrect argumentsFT)r*)ri)r&)r&rrAr�keywords� bind_partialr�rurt� argumentsrgrir(r�r)r9rDr,� move_to_endr-r+r')� wrapped_sig�partialZ extra_argsZ old_params� new_paramsZ partial_argsZpartial_keywordsZbar0rTZtransform_to_kwonly� param_namer3Z arg_valueZ new_paramr r r�_signature_get_partial�sL              r�cCsnt|jj��}| s&|djttfkr.td��|dj}|ttfkrR|dd�}n|t k rbtd��|j |d�S)Nrzinvalid method signaturerzinvalid argument type)r&) rar&r'rir-r,rtr)r(r+r9)r/�paramsrir r r�_signature_bound_method�s  r�cCs&t|�p$t|�p$t|t�p$|ttfkS)N)r8rr r�rr )rhr r r�_signature_is_builtins r�cCs�t|� st|�rdSt|dd�}t|dd�}t|dt�}t|dt�}t|dd�}t|tj�o�t|t�o�|dkszt|t�o�|dks�t|t �o�t|t �S)NFr�r!� __defaults__�__kwdefaults__�__annotations__) �callablerrB�_voidr r r5r�rar�)rhrDrhrr2r1r r r�_signature_is_functionlike!s       r�cCs<|jd�}|dkr|jd�}|jd�}|jd�}|d|�S)N�,rr��:r>r�r~)�find)rHrPZcposr r r�_signature_get_bound_param:s    r�cCs$|s|ddfSd}d}dd�|jd�D�}t|�j}tj|�}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}|| ko�|d ks�| d �| |�|dkrn| d �qnWdj |�}|||fS)NcSsg|]}|jd��qS)�ascii)�encode)rZ�lr r rr\dsz6_signature_strip_non_python_syntax..r�Frr�Tr�/�$r�z, � r�) r�r�r�r�rNr��OP� ERRORTOKEN�nextr�stringr�)� signature�self_parameter�last_positional_onlyr�r�Z token_streamZ delayed_commaZskip_next_commar?rPZcurrent_parameterr�r��trr��clean_signaturer r r�"_signature_strip_non_python_syntaxQsP       r�TcsV|j�t|�\}}}d|d}ytj|�}Wntk rFd}YnXt|tj�sbtdj|���|j d} g��j �t ��d}i�t |dd�} | r�t jj| d�}|r�|j�t jj��dd����fdd �� G� fd d �d tj���f�������fd d � } t| jj�} t| jj�} tj| | dd�}|dk �r8�j�n�j�x.parse_namecs�yt|��}Wn>tk rLyt|��}Wntk rFt��YnXYnXt|t�rbtj|�St|ttf�rztj |�St|t �r�tj |�S|dkr�tj |�St��dS)NTF)TFN) �eval� NameError� RuntimeErrorr r��astZStr�int�floatZNum�bytesZBytesZ NameConstant)r�rE)� module_dict�sys_module_dictr r� wrap_value�s       z&_signature_fromstr..wrap_valuecs$eZdZ�fdd�Z�fdd�ZdS)z,_signature_fromstr..RewriteSymbolicscs`g}|}x"t|tj�r*|j|j�|j}q Wt|tj�s>t��|j|j�dj t |��}�|�S)Nr}) r r�rYrNr�rE�Namer�rpr��reversed)r�r��arVrE)r�r r�visit_Attribute�s    z<_signature_fromstr..RewriteSymbolics.visit_Attributecst|jtj�st���|j�S)N)r Zctxr�ZLoadrtrp)r�r�)r�r r� visit_Name�sz7_signature_fromstr..RewriteSymbolics.visit_NameN)r�r�r�r�r�r )r�r r�RewriteSymbolics�s r�cs��|�}|�krdS|rp|tk rpy��j|�}tj|�}Wntk rR�}YnX|�kr`dS|�k rl|n|}�j�|�|�d��dS)N)r*r.)�_emptyZvisitr�Z literal_evalrtrN)Z name_nodeZ default_noder*rD�o)� Parameterr�r%�invalidrir&r�r r�p�s   z_signature_fromstr..p)� fillvaluer�)ri)r$)'�_parameter_clsr�r��parse� SyntaxErrorr ZModulertruZbodyr%r rBrqrr�r@�copyZNodeTransformerr�rr� itertools� zip_longest�POSITIONAL_ONLY�POSITIONAL_OR_KEYWORDrCr�Zvararg�VAR_POSITIONAL� KEYWORD_ONLYrcr Z kw_defaultsrX� VAR_KEYWORDrr�r9)r[rhr�rr�r�r�Zprogramr�rnZ module_namer�rrr�r�rDr*�_selfZ self_isboundZ self_ismoduler ) r�r�r%r�rir�r&r�r�r�r�_signature_fromstr�sj                 r�cCsBt|�stdj|���t|dd�}|s4tdj|���t||||�S)Nz%{!r} is not a Python builtin function�__text_signature__z#no signature found for builtin {!r})r�r�rurBrtr�)r[rvrr�r r r�_signature_from_builtin&s r�cCs�d}t|�s(t|�rd}ntdj|���|j}|j}|j}|j}t|d|��}|j }||||�} |j } |j } |j } | r�t | �} nd} g}|| }x4|d|�D]$}| j|t�}|j|||td��q�WxBt||d��D].\}}| j|t�}|j|||t| |d��q�W|jt@�rH|||}| j|t�}|j|||td��xJ| D]B}t}| dk �rl| j|t�}| j|t�}|j|||t|d���qNW|jt@�r�||}|jt@�r�|d7}||}| j|t�}|j|||td��||| jdt�|d �S) NFTz{!r} is not a Python functionr)r.ri)r.rir*rr!)r$�__validate_parameters__)rr�r�rur�r!r r rarr�r�r�rsr�r�rNr)rCr"rr+r,rr-)r[rvZis_duck_functionr�Z func_codeZ pos_countZ arg_namesrMZkeyword_only_countZ keyword_onlyr1rr2Zpos_default_countr&Znon_default_countrDr.�offsetr*rpr r r�_signature_from_function6sj                     r�)rrc!Cs�t|�stdj|���t|tj�rDt|j|||d�}|r@t|�S|S|rtt |dd�d�}t|tj�rtt||||d�Sy |j }Wnt k r�Yn&X|dk r�t|t �s�tdj|���|Sy |j }Wnt k r�YnvXt|tj��rLt|j|||d�}t||d�}t|jj��d}|jtjk�r(|St|jj��}|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 �r t| |||d�}n$t |d �} | dk �r0t| |||d�}|dk�r:xL|j!dd�D]:} y | j"}Wnt k �rnYnX|�rJt#|||�S�qJWt|j!k�r:|j$t%j$k�r�|j&t%j&k�r�t't%�St(dj|���nrt|t)��s:t t|�d �} | dk �r:yt| |||d�}Wn8t(k �r8}zdj|�}t(|�|�WYdd}~XnX|dk �rV|�rRt|�S|St|tj*��rvdj|�}t(|��t(dj|���dS)Nz{!r} is not a callable object)rrr cSs t|d�S)N� __signature__)r)rnr r rrH�sz*_signature_from_callable..)rlz1unexpected object {!r} in __signature__ attributer)r&)r�__call__�__new__r�rz(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)Nr~)+r�r�rur r rr"r�r�rxr�rOr#�_partialmethod� functools� partialmethodrvr�rar&r'rir�r�r9rr�r�r�r�r�rr�rkr�r�r�r r�r�rtr�r7)rhrrr r/r�r�Zfirst_wrapped_paramZ sig_paramsr�Zcall�newZinitrFZtext_sigr0rTr r rr"�s�                             r"c@s eZdZdS)r�N)r�r�r�r r r rr�P sr�c@s eZdZdS)r�N)r�r�r�r r r rr�T sr�c@s(eZdZdZdZdZdZdZdd�ZdS) �_ParameterKindrrr���cCs|jS)N)�_name_)r�r r r�__str___ sz_ParameterKind.__str__N) r�r�r�r�r�r�r�r�r�r r r rr�X s r�zpositional-onlyzpositional or keywordzvariadic positionalz keyword-onlyzvariadic keywordc@s�eZdZd ZeZeZeZ e Z e Z eZeed�dd�Zdd �Zd d �Zed d ��Zedd��Zedd��Zedd��Zeeeed�dd�Zdd�Zdd�Zdd�Zdd�ZdS)!r��_name�_kind�_default� _annotation)r*r.c Cs"yt|�|_Wn$tk r2td|�d���YnX|tk rf|jttfkrfd}|jt|j��}t|��||_||_ |tkr�td��t |t �s�djt |�j �}t|��|ddko�|dd�j��r|jtkr�d }|jt|j��}t|��t|_d j|dd��}|j��std j|���||_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}rzLimplicit arguments must be passed as positional or keyword arguments, not {}z implicit{}z"{!r} is not a valid parameter name)r�rrtr�r+r-ru�_get_paramkind_descrrrr r�rr�r��isdigitr)r(� isidentifierr)r�rDrir*r.rTr r rr�� 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 rrD� szParameter.namecCs|jS)N)r)r�r r rr*� szParameter.defaultcCs|jS)N)r)r�r r rr.� szParameter.annotationcCs|jS)N)r)r�r r rri� szParameter.kind)rDrir.r*cCsL|tkr|j}|tkr|j}|tkr*|j}|tkr8|j}t|�||||d�S)N)r*r.)r�rrrrr)r�rDrir.r*r r rr9� szParameter.replacecCsj|j}|j}|jtk r(dj|t|j��}|jtk rDdj|t|j��}|tkrVd|}n|t krfd|}|S)Nz{}:{}z{}={}r=z**) rirrr�rur:rr8r+r-)r�ri� formattedr r rr�� s    zParameter.__str__cCsdj|jj|�S)Nz <{} "{}">)rur�r�)r�r r r�__repr__� szParameter.__repr__cCst|j|j|j|jf�S)N)�hashrDrir.r*)r�r r r�__hash__� szParameter.__hash__cCsJ||kr dSt|t�stS|j|jkoH|j|jkoH|j|jkoH|j|jkS)NT)r r��NotImplementedrrrr)r��otherr r r�__eq__ s    zParameter.__eq__N)rrrr)r�r�r�� __slots__r(r�r)r�r+r�r,r�r-r�r�r%r�rr r^rDr*r.rir�r9r�r r rr r r rr�t s((    r�c@sdeZdZdZdd�Zedd��Zedd ��Zed d ��Zd d �Z dd�Z dd�Z dd�Z dd�Z dS)�BoundArgumentsr�� _signature� __weakref__cCs||_||_dS)N)r�r)r�r�r�r r rr� szBoundArguments.__init__cCs|jS)N)r)r�r r rr�# szBoundArguments.signaturec Cs|g}xn|jjj�D]^\}}|jttfkr*Py|j|}Wntk rNPYqX|jtkrf|j |�q|j |�qWt |�S)N) rr&rArir-r,r�rgr+�extendrNra)r�rr�r3r@r r rr' s  zBoundArguments.argsc Cs�i}d}x�|jjj�D]x\}}|sF|jttfkr6d}n||jkrFd}q|sLqy|j|}Wntk rnYqX|jtkr�|j|�q|||<qW|S)NFT) rr&rArir-r,r�rg�update)r��kwargsZkwargs_startedr�r3r@r r rr> s&    zBoundArguments.kwargsc Cs�|j}g}x�|jjj�D]v\}}y|j|||f�Wqtk r�|jtk rX|j}n"|jt krhf}n|jt krxi}nw|j||f�YqXqWt |�|_dS)N) r�rr&rArNrgr*r�rir+r-r)r�r�Z new_argumentsrDr3�valr r r�apply_defaults\ s    zBoundArguments.apply_defaultscCs2||kr dSt|t�stS|j|jko0|j|jkS)NT)r rrr�r�)r�rr r rrx s   zBoundArguments.__eq__cCs|d|_|d|_dS)Nrr�)rr�)r�rr r rr � s zBoundArguments.__setstate__cCs|j|jd�S)N)rr�)rr�)r�r r r� __getstate__� szBoundArguments.__getstate__cCsDg}x(|jj�D]\}}|jdj||��qWdj|jjdj|��S)Nz{}={!r}z <{} ({})>z, )r�rArNrur�r�r�)r�rr@rEr r rr � szBoundArguments.__repr__N)r�rr)r�r�r�rr�r^r�rrrrr rr r r r rr s   rc@s�eZdZd,ZeZeZeZ d-edd�dd�Z e dd ��Z e d d ��Z e dd �d d��Zedd��Zedd��Zeed�dd�Zdd�Zdd�Zdd�Zdd�dd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�ZdS).r#�_return_annotation� _parametersNT)r$r�c Cs�|dkrt�}n�|r�t�}t}d}x�t|�D]�\}}|j} |j} | |krjd} | jt|�t| ��} t| ��n| |krzd}| }| ttfkr�|j t kr�|r�d} t| ��nd}| |kr�dj| �} t| ��||| <q,Wntdd�|D��}t j |�|_ ||_dS)NFz7wrong parameter order: {} parameter before {} parameterz-non-default argument follows default argumentTzduplicate parameter name: {!r}css|]}|j|fVqdS)N)rD)rZr3r r rr�� sz%Signature.__init__..)rr(rCrirDrurrtr)r*r�r �MappingProxyTyperr) r�r&r$r�r�Ztop_kindZ kind_defaults�idxr3rirDrTr r rr�� s>         zSignature.__init__cCstjdtdd�t||�S)Nz_inspect.Signature.from_function() is deprecated since Python 3.5, use Signature.from_callable()r�)r)rrrr�)r[rvr 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�)r[rvr r r� from_builtin� s zSignature.from_builtin)�follow_wrappedcCst|||d�S)N)r r)r")r[rhr!r r r� from_callable� szSignature.from_callablecCs|jS)N)r)r�r r rr& szSignature.parameterscCs|jS)N)r)r�r r rr$ szSignature.return_annotation)r&r$cCs0|tkr|jj�}|tkr |j}t|�||d�S)N)r$)r�r&r'rr)r�r&r$r r rr9 s  zSignature.replacecCs8tdd�|jj�D��}dd�|jj�D�}|||jfS)Ncss|]}|jtkr|VqdS)N)rir,)rZr3r r rr� sz(Signature._hash_basis..cSsi|]}|jtkr||j�qSr )rir,rD)rZr3r r rr] sz)Signature._hash_basis..)rar&r'r$)r�r�� kwo_paramsr r r� _hash_basis szSignature._hash_basiscCs(|j�\}}}t|j��}t|||f�S)N)r$� frozensetr'r )r�r�r#r$r r rr ! s zSignature.__hash__cCs*||kr dSt|t�stS|j�|j�kS)NT)r r#rr$)r�rr r rr& s  zSignature.__eq__F)r�cCs�t�}t|jj��}f}t|�}�xxy t|�}Wn�tk r�y t|�} Wntk rbPYn�X| jtkrrPn�| j|kr�| jt kr�d} | j | jd�} t | �d�| f}PnH| jt ks�| j tk r�| f}Pn*|r�| f}Pnd} | j | jd�} t | �d�Yq$Xy t|�} Wn tk �r&t d�d�Yq$X| jt tfk�rBt d�d�| jtk�rn|g} | j|�t| �|| j<P| j|k�r�t dj | jd��d�||| j<q$Wd} x�tj||�D]�} | jt k�r�| } �q�| jtk�rÖ�q�| j} y|j| �}WnHtk �r2| �r.| jtk�r.| j tk�r.t dj | d��d�Yn(X| jt k�rRt dj | jd���||| <�q�W|�r�| dk �r|||| j<nt dj tt|��d���|j||�S)NzA{arg!r} parameter is positional only, but was passed as a keyword)r@z$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�� StopIterationrir+rDr(rur�r-r*r�r,rrar��chainr�rg�_bound_arguments_cls)r�rrr�r�r&Z parameters_exZarg_valsZarg_valr3rTr'Z kwargs_paramr�r r r�_bind- s�                   zSignature._bindcOs|dj|dd�|�S)Nrr)r))rrr r r�bind� szSignature.bindcOs|dj|dd�|dd�S)NrrT)r�)r))rrr r rr�� szSignature.bind_partialcCs t|�t|jj��fd|jifS)Nr)rrarr'r)r�r r rr� szSignature.__reduce__cCs|d|_dS)Nr)r)r�rr r rr � szSignature.__setstate__cCsdj|jj|�S)Nz<{} {}>)rur�r�)r�r r rr � szSignature.__repr__c Cs�g}d}d}xr|jj�D]d}t|�}|j}|tkr8d}n|rJ|jd�d}|tkrXd}n|tkrr|rr|jd�d}|j|�qW|r�|jd�djdj |��}|j t k r�t |j �}|dj|�7}|S)NFTr�r=z({})z, z -> {}) r&r'r�rir(rNr+r,rur�r$r�r:) r�rfZrender_pos_only_separatorZrender_kw_only_separatorr3r riZrenderedZannor r rr�� s0      zSignature.__str__)rr)N)r�r�r�rr�r�rr(r�r%r�rerr r"r^r&r$r�r9r$r rr)r*r�rr r r�r r r rr#� s06    r#)r!cCstj||d�S)N)r!)r#r")rhr!r r rr�� sr�cCs�ddl}ddl}|j�}|jddd�|jddddd �|j�}|j}|jd �\}}}y|j|�}} WnLtk r�} z0d j |t | �j | �} t | t jd �td �WYdd} ~ XnX|r�|jd�} | }x| D]} t|| �}q�W| j t jk�rt dt jd �td�|j�r�t dj |��t dj t| ���t dj | j��|| k�rxt dj t| j���t| d��r�t dj | j��n6yt|�\}}Wntk �r�YnXt dj |��t d�n t t|��dS)Nrr 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�zFailed to import {} ({}: {}))r�r�r}z#Can't get info for builtin modules.rz Target: {}z Origin: {}z Cached: {}z Loader: {}�__path__zSubmodule search path: {}zLine: {}r�)�argparser��ArgumentParser� add_argument� parse_argsr � partition� import_modulerbrurr��printrq�stderr�exitr�rB�builtin_module_namesZdetailsr�� __cached__r8r�rr.r�r�)r/r��parserr�targetZmod_nameZ has_attrsZattrsrhr�rgrT�parts�part�__ror r r�_main� sV     r?r�)rri)N)N)N)F)N)r)r6)r)r)r)r)T)T)�� __author__r.r�Zdis�collections.abcr-�enum�importlib.machineryr�r�r�r�r�rqr�r�r rr�r��operatorrrr�globalsZmod_dictZCOMPILER_FLAG_NAMESrArVrWr=rrrrrrrrrr#r$r%r'r)r+r0r2r4r6r8r9rGrXrYrjrJrxr|r�r�r�r�r�r�r�r�r�r�r�r�r�rbr�r�r�r�r�r�rrr rrrrrr4r7r:r<r�rIrLrSrUrYrZrirjrqrr�_fieldsrsrwrzr|r}rr r�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_ClassMethodWrapperr7r�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�sd            , t$ ;   .I-7      [   (> 5        0   L H  RH k: