3 2a @sdZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlmZddlmZmZeZx"ejjD]\ZZeede<qWdZd d Zd d Z d dZ!ddZ"ddZ#e$edrddZ%nddZ%e$edr2ddZ&nddZ&ddZ'ddZ(dd Z)d!d"Z*d#d$Z+d%d&Z,d'd(Z-d)d*Z.d+d,Z/d-d.Z0d/d0Z1d1d2Z2d3d4Z3d5d6Z4dd7d8Z5ed9d:Z6d;d<Z7d=d>Z8dd?d@dAZ9dBdCZ:dDdEZ;dFdGZdLdMZ?dNdOZ@dPdQZAddRdSZBiZCiZDddTdUZEdVdWZFdXdYZGGdZd[d[eHZIGd\d]d]ZJd^d_ZKd`daZLdbdcZMdddeZNddgdhZOedidjZPdkdlZQdmdnZRedodpZSdqdrZTedsdtZUdudvZVedwdxZWdydzZXdd{d|ZYd}d~ZZdddfiie[ddddddddeYf ddZ\e[ddddddfddZ]ddZ^ddZ_ddZ`eddZaddZbeddZcdddZdddZeeddecjfZgdddZhdddZiddZjdddZkdddZlemZnddZoddZpddZqddZrddZsenfddZtdZudZvdZwdZxddZyddZzdZ{dZ|dZ}dZ~ddZdd„ZeejZeejZeejdZeeeejfZddńZffddDŽZddɄZdd˄Zdd̈́ZddτZddфZdddԄZdddքZdd؄ZdddٜddۄZGdd݄d݃ZGdd߄d߃ZGdddejZejZejZejZejZejZededededediZejZGdddZGdddZGdddZddddZddZedkredS(Ka-Ping Yee 'Yury Selivanov N) attrgetter) namedtuple OrderedDictZCO_cCs t|tjS)N) isinstancetypes ModuleType)objectr ,/opt/alt/python36/lib64/python3.6/inspect.pyismodule@srcCs t|tS)N)r type)r r r risclassIsrcCs t|tjS)N)r r MethodType)r r r rismethodQsrcCs:t|st|st|rdSt|}t|do8t|d S)NF__get____set__)rr isfunctionrhasattr)r tpr r rismethoddescriptor[srcCs8t|st|st|rdSt|}t|do6t|dS)NFrr)rrrrr)r rr r risdatadescriptorosrMemberDescriptorTypecCs t|tjS)N)r r r)r r r rismemberdescriptorsrcCsdS)NFr )r r r rrsGetSetDescriptorTypecCs t|tjS)N)r r r)r r r risgetsetdescriptorsrcCsdS)NFr )r r r rrscCs t|tjS)N)r r FunctionType)r r r rrs rcCs tt|st|o|jjt@S)N)boolrr__code__co_flagsZ CO_GENERATOR)r r r risgeneratorfunctionsr#cCs tt|st|o|jjt@S)N)r rrr!r"Z CO_COROUTINE)r r r riscoroutinefunctionsr$cCs tt|st|o|jjt@S)N)r rrr!r"ZCO_ASYNC_GENERATOR)r r r risasyncgenfunctionsr%cCs t|tjS)N)r r AsyncGeneratorType)r r r r isasyncgensr'cCs t|tjS)N)r r GeneratorType)r r r r isgeneratorsr)cCs t|tjS)N)r r CoroutineType)r r r r iscoroutinesr+cCs6t|tjp4t|tjr(t|jjt@p4t|tj j S)N) r r r*r(r gi_coder"ZCO_ITERABLE_COROUTINE collectionsabc Awaitable)r r r r isawaitables  r0cCs t|tjS)N)r r TracebackType)r r r r istracebacksr2cCs t|tjS)N)r r FrameType)r r r risframes r4cCs t|tjS)N)r r CodeType)r r r riscodesr6cCs t|tjS)N)r r BuiltinFunctionType)r r r r isbuiltinsr8cCs t|pt|pt|pt|S)N)r8rrr)r r r r isroutinesr9cCst|tsdS|jt@rdStt|tjs0dSt|dr>dSx&|jj D]\}}t |ddrJdSqJWx@|j D]6}x0t |dfD] }t ||d}t |ddrdSqWqnWdS)NFT__abstractmethods____isabstractmethod__) r r __flags__TPFLAGS_IS_ABSTRACT issubclassr.ABCMetar__dict__itemsgetattr __bases__)r namevaluebaser r r isabstract%s"        rGc Cs&t|r|ft|}nf}g}t}t|}yBx<|jD]2}x,|jjD]\}}t|tj rH|j |qHWq8WWnt k rYnXx|D]} yt || } | |krt Wn:t k rx$|D]}| |jkr|j| } PqWwYnX| s|| r|j | | f|j | qW|jddd|S)NcSs|dS)Nrr )Zpairr r rfszgetmembers..)key)rgetmrosetdirrCr@rAr r DynamicClassAttributeappendAttributeErrorrBaddsort) r predicatemroresults processednamesrFkvrIrEr r r getmembers=s:       rY Attributezname kind defining_class objectcCs\t|}tt|}tdd|D}|f|}||}t|}x:|D]2}x,|jjD]\}}t|tjrV|j |qVWqFWg} t } x|D]} d} d} d}| | kry| dkrt dt || } Wn"t k r}zWYdd}~XnXt | d| } | |krd} d}x(|D] }t || d}|| kr|}qWxH|D]@}y|j || }Wntk rhw:YnX|| kr:|}q:W|dk r|} x4|D],}| |jkr|j| }| |kr|} PqW| dkrq| dk r| n|}t|trd}|}n@t|tr d}|}n*t|tr"d}|}nt|r2d }nd }| j t| || || j| qW| S) NcSsg|]}|ttfkr|qSr )rr ).0clsr r r sz(classify_class_attrs..r@z)__dict__ is special, don't want the proxy __objclass__z static methodz class methodpropertymethoddata)rJrtuplerLr@rAr r rMrNrK ExceptionrB __getattr__rO staticmethod classmethodr_r9rZrP)r\rSZmetamroZ class_basesZ all_basesrVrFrWrXresultrUrDZhomeclsZget_objZdict_objexcZlast_clsZsrch_clsZsrch_objobjkindr r rclassify_class_attrsks                          rkcCs|jS)N)__mro__)r\r r rrJsrJ)stopcsdkrdd}n fdd}|}t||i}tj}xD||rz|j}t|}||ksbt||krptdj||||<q8W|S)NcSs t|dS)N __wrapped__)r)fr r r _is_wrapperszunwrap.._is_wrappercst|do| S)Nrn)r)ro)rmr rrpsz!wrapper loop when unwrapping {!r})idsysgetrecursionlimitrnlen ValueErrorformat)funcrmrpromemoZrecursion_limitZid_funcr )rmrunwraps     rycCs|j}t|t|jS)N) expandtabsrtlstrip)lineZexpliner r r indentsize sr}cCsRtjj|j}|dkrdSx&|jjdddD]}t||}q0Wt|sNdS|S)N.r)rrmodulesget __module__ __qualname__splitrBr)rwr\rDr r r _findclasssrc Cst|rRxD|jD]:}|tk ry |j}Wntk r<wYnX|dk r|SqWdSt|r|jj}|j}t|rt t ||dd|jkr|}n|j }nt |r|j}t |}|dkst |||k rdSnt |r |j}|j}t|o|jd||jkr|}n|j }nzt|trJ|j}|j}t |}|dksDt |||k rdSn:t|s^t|r|j}|j}t |||k rdSndSxJ|jD]@}yt ||j}Wntk rwYnX|dk r|SqWdS)N__func__r~)rrlr __doc__rOrr__name____self__rB __class__rrr8rr r_fgetrrr^)rirFdocrDselfr\rwr r r_finddocsb        rcCsdy |j}Wntk rdSX|dkrNy t|}Wnttfk rLdSXt|ts\dSt|S)N)rrOr TypeErrorr strcleandoc)r rr r rgetdocSs   rc Csy|jjd}Wntk r&dSXtj}x:|ddD]*}t|j}|r.)ospathbasename importlib machinery all_suffixesrQendswith)rZfnamesuffixesZneglenrr r r getmodulenames  rcst|tjjdd}|tjjdd7}tfdd|Dr`tjjdtjj dntfddtjj Dr~dStjj rSt t |dddk rStjkrSdS)Nc3s|]}j|VqdS)N)r)r[s)filenamer r sz getsourcefile..rc3s|]}j|VqdS)N)r)r[r)rr rrs __loader__)rrrDEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESanyrrsplitextSOURCE_SUFFIXESEXTENSION_SUFFIXESexistsrB getmodule linecachecache)r Zall_bytecode_suffixesr )rr getsourcefiles   rcCs,|dkrt|pt|}tjjtjj|S)N)rrrrnormcaseabspath)r _filenamer r r getabsfilesrc Cst|r |St|dr$tjj|jS|dk rD|tkrDtjjt|Syt||}Wntk rfdSX|tkrtjjt|Sxnt tjj D]\\}}t|rt|dr|j }|t j|dkrq|t |<t|}|j t|<ttjj|<qW|tkr tjjt|Stjd}t|ds$dSt||j rLt||j }||krL|Stjd}t||j r~t||j } | |kr~|SdS)Nrr__main__rbuiltins)rrrrrrr modulesbyfilerrlistrAr_filesbymodnamerrrrealpathrB) r rfilemodnamemoduleromainZ mainobjectZbuiltinZ builtinobjectr r rrsD         rc Cst|}|rtj|n$t|}|jdo2|jdszsource code not availablezcould not get source coderz^(\s*)class\s*z\bcrzcould not find class definitionco_firstlinenoz"could not find function definitionz>^(\s*def\s)|(\s*async\s+def\s)|(.*(?yt|\}}Wnttfk r(dSXt|rd}|rR|ddddkrRd}x(|t|krz||jdkrz|d}qTW|t|kr||dddkrg}|}x>|t|kr||dddkr|j||j|d}qWdj|SnH|dkr:t ||}|d}|dkr:||j dddkr:t |||kr:||jj g}|dkr|d}||jj }x\|dddkrt |||kr|g|dd<|d}|dkrP||jj }q|Wx*|r|djdkrg|dd<qWx*|r.|djdkr.g|d d<qWdj|SdS) Nrz#!r#)rrrr) rrrrrtstriprNrzrr}r{)r rrstartZcommentsendrZcommentr r r getcommentsAsJ  "   $ & rc@s eZdZdS) EndOfBlockN)rrrr r r rrnsrc@seZdZddZddZdS) BlockFindercCs.d|_d|_d|_d|_d|_d|_d|_dS)NrFr)rislambdastartedpassline indecoratordecoratorhasargslast)rr 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|tjkrd|_|d |_|jrt|jr|j rd|_nr|jrnj|tj kr|j d |_ d|_nL|tj kr|j d |_ |j d kr"tn"|j d kr"|tj tj fkr"tdS) N@Tdefclasslambda()Frr)rrr)rrrrrtokenizeNEWLINErrINDENTrDEDENTCOMMENTNL)rrtokenZsrowcolZerowcolr|r r r tokeneater{sB       zBlockFinder.tokeneaterN)rrrrrr r r rrps rc CsZt}y,tjt|j}x|D]}|j|qWWnttfk rJYnX|d|jS)N) rrgenerate_tokensiter__next__rrIndentationErrorr)rZ blockfindertokensZ_tokenr r rgetblocks rcCsbt|}t|\}}t|r"|j}t|s>t|rF|jjdkrF|dfSt||d|dfSdS)Nzrr) ryrr2rrr4rco_namer)r rrr r rgetsourceliness rcCst|\}}dj|S)Nr)rr)r rrr r r getsources rcCsVg}|jtdddx:|D]2}|j||jf||kr|jt||||qW|S)Nrr)rI)rQrrNrCwalktree)classeschildrenparentrTrr r rrs rFcCsi}g}xn|D]f}|jrbxZ|jD]<}||kr4g||<|||krN||j||r ||kr Pq Wq||kr|j|qWx|D]}||kr~|j|q~Wt||dS)N)rCrNr)runiquerrootsrrr r r getclasstrees"      r Argumentszargs, varargs, varkwcCs t|\}}}}t||||S)N) _getfullargsr)coargsvarargs kwonlyargsvarkwr r rgetargssr c Cst|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) r6rrv co_argcount co_varnamesco_kwonlyargcountrr" CO_VARARGSCO_VARKEYWORDS) rnargsrVZnkwargsr r stepr r r r rrs"    rArgSpeczargs varargs keywords defaultscCsDtjdtddt|\}}}}}}}|s.|r6tdt||||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)warningswarnDeprecationWarninggetfullargspecrur)rwr r r defaultsr kwonlydefaultsannr 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|jjD]} | j} | j } | t kr|j | nv| t kr|j | | j | jk r|| j f7}nJ| tkr| }n<| tkr|j | | j | jk r| j | | <n| tkr| }| j| jk r| j|| <qW| sBd} |sLd}t|||||| |S)NF)follow_wrapper_chainsskip_bound_argsigclszunsupported callablereturn)_signature_from_callable Signaturercrreturn_annotationempty parametersvaluesrjrD_POSITIONAL_ONLYrN_POSITIONAL_OR_KEYWORDdefault_VAR_POSITIONAL _KEYWORD_ONLY _VAR_KEYWORD annotationr) rwsigexr r r r r annotations kwdefaultsparamrjrDr r rrAsT            rArgInfozargs varargs keywords localscCs t|j\}}}t||||jS)N)r rr6f_locals)framer r r r r r getargvaluessr9cCsVt|dddkr t|jddSt|trN|jd|fkr>|jS|jd|jSt|S)NrZtypingztyping.rrr~)rBreprreplacer rrr)r0Z base_moduler r rformatannotations r<cst|ddfdd}|S)Nrcs t|S)N)r<)r0)rr r_formatannotationsz5formatannotationrelativeto.._formatannotation)rB)r r=r )rrformatannotationrelativetos  r>cCsd|S)N*r )rDr r rrHsrHcCsd|S)Nz**r )rDr r rrHscCs dt|S)N=)r:)rEr r rrHscCsd|S)Nz -> r )textr r rrHsc s(fdd} g}|r(t|t|}xFt|D]:\}}| |}|rb||krb|| |||}|j|q2W|dk r|j|| |n|r|jd|rx:|D]2}| |}|r||kr|| ||7}|j|qW|dk r|j| | |ddj|d}dkr$|| d7}|S)Ncs(|}|kr$|d|7}|S)Nz: r )argrg)r3r< formatargr rformatargandannotationsz-formatargspec..formatargandannotationr?rz, rr#)rt enumeraterNr)r r r rr rr3rC formatvarargs formatvarkw formatvalueZ formatreturnsr<rDspecsZ firstdefaultrrBspecZ kwonlyargrgr )r3r<rCr formatargspecs2     rKcCsd|S)Nr?r )rDr r rrHscCsd|S)Nz**r )rDr r rrHscCs dt|S)Nr@)r:)rEr r rrHsc Cs|||fdd}g} x&tt|D]} | j||| q"W|rZ| j||||||rx| j|||||ddj| dS)NcSs|||||S)Nr )rDlocalsrCrHr r rconvertsz formatargvalues..convertrz, r)rrtrNr) r r r rLrCrFrGrHrMrIrr r rformatargvaluess rNcsfdd|D}t|}|dkr,|d}n>|dkr@dj|}n*dj|dd}|dd=dj||}td |||rzd nd |dkrd nd |fdS)Ncsg|]}|krt|qSr )r:)r[rD)r)r rr]sz&_missing_arguments..rrrz {} and {}z , {} and {}z, z*%s() missing %i required %s argument%s: %s positionalz keyword-onlyrrrP)rtrvrr)f_nameZargnamesposr)rVmissingrtailr )r)r_missing_argumentss    rUc st||}tfdd|D}|r:|dk} d|f} n2|rTd} d|t|f} nt|dk} tt|} d} |rd} | |dkrd nd||dkrd ndf} td || | rd nd|| |dkr| rd nd fdS) Ncsg|]}|kr|qSr r )r[rB)r)r rr]sz_too_many..rz at least %dTz from %d to %drz7 positional argument%s (and %d keyword-only argument%s)rz5%s() takes %s positional argument%s but %d%s %s givenZwasZwere)rtrr) rQr Zkwonlyr ZdefcountZgivenr)ZatleastZ kwonly_givenpluralr1Z kwonly_sigmsgr )r)r _too_many s$    rXcOs6|d}|dd}t|}|\}}}}} } } |j} i} t|rV|jdk rV|jf|}t|}t|}|rrt|nd}t||}x t|D]}||| ||<qW|rt||d| |<t|| }|ri| |<xd|j D]X\}}||kr|st d| |f|| ||<q|| kr,t d| |f|| |<qW||kr^| r^t | || |||| ||kr|d||}x&|D]}|| kr~t | |d| q~Wx8t |||dD] \}}|| kr||| |<qWd}x>| D]6}|| kr| r|| kr| || |<n|d7}qW|r2t | | d| | S)Nrrz*%s() got an unexpected keyword argument %rz(%s() got multiple values for argument %rTF)rrrrrtrrrbrKrArrXrUrE)Zfunc_and_positionalZnamedrwrOrJr r r rr rrrQZ arg2valueZnum_posZnum_argsZ num_defaultsnrZpossible_kwargskwrEZreqrBrSkwargr r r getcallargs!sd                 r\ ClosureVarsz"nonlocals globals builtins unboundc Cst|r|j}t|s$tdj||j}|jdkr:i}nddt|j|jD}|j }|j dt j }t |rt|j }i}i}t}xn|jD]d}|dkrqy||||<Wqtk ry||||<Wntk r|j|YnXYqXqWt||||S) Nz'{!r}' is not a Python functioncSsi|]\}}|j|qSr ) cell_contents)r[varZcellr r r vsz"getclosurevars.. __builtins__NoneTrueFalse)rbrcrd)rrrrrvr! __closure__zip co_freevars __globals__rrr@rrKco_namesKeyErrorrPr]) rwcodeZ nonlocal_varsZ global_nsZ builtin_nsZ global_varsZ builtin_varsZ unbound_namesrDr r rgetclosurevarsas8   rl Tracebackz+filename lineno function code_context indexcCst|r|j}|j}n|j}t|s2tdj|t|p@t|}|dkr|d|d}yt |\}}Wnt k rd}}YqXt dt |t ||}||||}|d|}nd}}t|||jj||S)Nz'{!r} is not a frame or traceback objectrrr)r2 tb_linenorf_linenor4rrvrrrrmaxrrtrmrr)r8contextlinenorrrrindexr r r getframeinfos$rtcCs|jS)N)ro)r8r r r getlinenosru FrameInfor8cCs6g}x,|r0|ft||}|jt||j}qW|S)N)rtrNrvf_back)r8rq framelist frameinfor r rgetouterframess  rzcCs8g}x.|r2|jft||}|jt||j}qW|S)N)rrtrNrvtb_next)tbrqrxryr r rgetinnerframess  r}cCsttdrtjdSdS)N _getframer)rrrr~r r r r currentframesrcCsttjd|S)Nr)rzrrr~)rqr r rstacksrcCsttjd|S)Nr)r}rrexc_info)rqr r rtracesrcCstjdj|S)Nrl)rr@r)klassr r r_static_getmrosrc Cs8i}ytj|d}Wntk r(YnXtj||tS)Nr@)r __getattribute__rOdictr _sentinel)riattrZ instance_dictr r r_check_instances rc CsFx@t|D]4}tt|tkr y |j|Stk r<Yq Xq WtS)N)r_shadowed_dictrrr@rj)rrentryr r r _check_classs  rc Cs&y t|Wntk r dSXdS)NFT)rr)rir r r_is_types  rc Csntjd}x^t|D]R}y|j|d}Wntk r>YqXt|tjko`|jdko`|j|ks|SqWt S)Nr@) rr@rrrjr rrr^r)r dict_attrrZ class_dictr r rrs   rc Cst}t|s>t|}t|}|tks2t|tjkrBt||}n|}t||}|tk r|tk rtt|dtk rtt|dtk r|S|tk r|S|tk r|S||krxDtt|D]4}tt|tkry |j |St k rYqXqW|tk r|St |dS)Nrr) rrrrr rrrrr@rjrO)rirr,Zinstance_resultrrZ klass_resultrr r rgetattr_statics6     r GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSEDcCs,|jr tS|jdkrtS|jjdkr(tStS)Nrr) gi_runningrgi_framerf_lastirr) generatorr r rgetgeneratorstateGs   rcCs:t|stdj|t|dd}|dk r2|jjSiSdS)Nz '{!r}' is not a Python generatorr)r)rrvrBrr7)rr8r r rgetgeneratorlocalsYs  r CORO_CREATED CORO_RUNNINGCORO_SUSPENDED CORO_CLOSEDcCs,|jr tS|jdkrtS|jjdkr(tStS)Nrr) cr_runningrcr_framerrrr) coroutiner r rgetcoroutinestateqs   rcCs"t|dd}|dk r|jSiSdS)Nr)rBr7)rr8r r rgetcoroutinelocalss r from_bytesc Cs6yt||}Wntk r"dSXt|ts2|SdS)N)rBrOr _NonUserDefinedCallables)r\Z method_namemethr r r"_signature_get_user_defined_methods  rcCs|j}t|j}|jpf}|jp$i}|r2||}y|j||}Wn6tk rx}zdj|} t| |WYdd}~XnXd} x |jD]\} } y|j | } Wnt k rYnlX| j t kr|j | q| j tkr| |krd} | j| d|| <n|j | jq| j tkr"| j| d|| <| r| j tkrV|| jtd}||| <|j| q| j ttfkrr|j| q| j tkr|j | jqW|j|jdS)Nz+partial object {!r} has incorrect argumentsFT)r,)rj)r()r(rrAr keywords bind_partialrrvru argumentsrjrjr*rr+r;rDr. move_to_endr/r-r)) wrapped_sigpartialZ extra_argsZ old_params new_paramsZ partial_argsZpartial_keywordsZbar2rWZtransform_to_kwonly param_namer5Z arg_valueZ new_paramr r r_signature_get_partialsL              rcCsnt|jj}| s&|djttfkr.td|dj}|ttfkrR|dd}n|t k rbtd|j |dS)Nrzinvalid method signaturerzinvalid argument type)r() rbr(r)rjr/r.rur+r*r-r;)r1paramsrjr r r_signature_bound_methods  rcCs&t|p$t|p$t|tp$|ttfkS)N)r8rr rrr )rir r r_signature_is_builtins rcCst| st|rdSt|dd}t|dd}t|dt}t|dt}t|dd}t|tjot|to|dkszt|to|dkst|t ot|t S)NFrr! __defaults____kwdefaults____annotations__) callablerrB_voidr r r5rrbr)rirDrkrr4r3r r r_signature_is_functionlike!s       rcCs<|jd}|dkr|jd}|jd}|jd}|d|S)N,rr:r@rr)find)rJrRZcposr r r_signature_get_bound_param:s    rcCs$|s|ddfSd}d}dd|jdD}t|j}tj|}d}d}g}|j} d} tj} tj} t|} x|D]} | j | j }}|| kr|dkr|rd}qnd}| d7} qn|d krd}| d}qn|| kr|d kr| }qn|rd}|| ko|d ks| d | ||dkrn| d qnWdj |}|||fS)NcSsg|]}|jdqS)ascii)encode)r[lr r rr]dsz6_signature_strip_non_python_syntax..rFrrTr/$rz,  r) rrrrrNrOP ERRORTOKENnextrstringr) signatureself_parameterlast_positional_onlyrrZ token_streamZ delayed_commaZskip_next_commarArPZcurrent_parameterrrtrrclean_signaturer r r"_signature_strip_non_python_syntaxQsP       rTcsV|jt|\}}}d|d}ytj|}Wntk rFd}YnXt|tjsbtdj||j d} gj t d}it |dd} | rt jj| d}|r|jt jjddfdd  G fd d d tjffd d } t| jj} t| jj} tj| | dd}|dk r8jnjx.parse_namecsyt|}Wn>tk rLyt|}Wntk rFtYnXYnXt|trbtj|St|ttfrztj |St|t rtj |S|dkrtj |StdS)NTF)TFN) eval NameError RuntimeErrorr rastZStrintfloatZNumbytesZBytesZ NameConstant)rrE) module_dictsys_module_dictr r wrap_values       z&_signature_fromstr..wrap_valuecs$eZdZfddZfddZdS)z,_signature_fromstr..RewriteSymbolicscs`g}|}x"t|tjr*|j|j|j}q Wt|tjs>t|j|jdj t |}|S)Nr~) r rrZrNrrENamerrqrreversed)rrarYrE)rr rvisit_Attributes    z<_signature_fromstr..RewriteSymbolics.visit_Attributecst|jtjst|jS)N)r ZctxrZLoadrurq)rr)rr r visit_Namesz7_signature_fromstr..RewriteSymbolics.visit_NameN)rrrrrr )rr rRewriteSymbolicss rcs|}|krdS|rp|tk rpyj|}tj|}Wntk rR}YnX|kr`dS|k rl|n|}j||ddS)N)r,r0)_emptyZvisitrZ literal_evalrurN)Z name_nodeZ default_noder,rDo) Parameterrr'invalidrjr(rr rps   z_signature_fromstr..p) fillvaluer)rj)r&)'_parameter_clsrrparse SyntaxErrorr ZModulerurvZbodyr'r rBrrrrr@copyZNodeTransformerrr r itertools zip_longestPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrErZvarargVAR_POSITIONAL KEYWORD_ONLYrfr Z kw_defaultsr[ VAR_KEYWORDrrr;)r\rirr!rrrZprogramrroZ module_namerr rrrrDr,_selfZ self_isboundZ self_ismoduler ) rrr'rrjrr(rrrr_signature_fromstrsj                 rcCsBt|stdj|t|dd}|s4tdj|t||||S)Nz%{!r} is not a Python builtin function__text_signature__z#no signature found for builtin {!r})rrrvrBrur)r\rwr!rr r r_signature_from_builtin&s rcCsd}t|s(t|rd}ntdj||j}|j}|j}|j}t|d|}|j }||||} |j } |j } |j } | rt | } nd} g}|| }x4|d|D]$}| j|t}|j|||tdqWxBt||dD].\}}| j|t}|j|||t| |dqW|jt@rH|||}| j|t}|j|||tdxJ| D]B}t}| dk rl| j|t}| j|t}|j|||t|dqNW|jt@r||}|jt@r|d7}||}| j|t}|j|||td||| jdt|d S) NFTz{!r} is not a Python functionr)r0rj)r0rjr,rr#)r&__validate_parameters__)rrrrvrr!rrrbrrrrrtrrrNr+rEr"rr-r.rr/)r\rwZis_duck_functionrZ func_codeZ pos_countZ arg_namesrOZkeyword_only_countZ keyword_onlyr3rr4Zpos_default_countr(Znon_default_countrDr0offsetr,rsr r r_signature_from_function6sj                     r)r r!c!Cst|stdj|t|tjrDt|j|||d}|r@t|S|S|rtt |ddd}t|tjrtt||||dSy |j }Wnt k rYn&X|dk rt|t stdj||Sy |j }Wnt k rYnvXt|tjrLt|j|||d}t||d}t|jjd}|jtjkr(|St|jj}|f|} |j| dSt|s`t|rjt||St|rt|||d St|tjrt|j|||d}t||Sd}t|trt t|d } | dk rt| |||d}nJt |d } | dk r t| |||d}n$t |d } | dk r0t| |||d}|dkr:xL|j!ddD]:} y | j"}Wnt k rnYnX|rJt#|||SqJWt|j!kr:|j$t%j$kr|j&t%j&krt'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)r r!r"cSs t|dS)N __signature__)r)ror r rrHsz*_signature_from_callable..)rmz1unexpected object {!r} in __signature__ attributer)r()r!__call____new__rrz(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)+rrrvr r rr$rrryrrOr%_partialmethod functools partialmethodrwrrbr(r)rjrrr;rrrrrrrrrlrrrr rrrurr7)rir r!r"r1rrZfirst_wrapped_paramZ sig_paramsrZcallnewZinitrFZtext_sigr2rWr r rr$s                             r$c@s eZdZdS)rN)rrrr r r rrP src@s eZdZdS)rN)rrrr r r rrT src@s(eZdZdZdZdZdZdZddZdS) _ParameterKindrrrcCs|jS)N)_name_)rr r r__str___ sz_ParameterKind.__str__N) rrrrrrrrrr r r rrX s rzpositional-onlyzpositional or keywordzvariadic positionalz keyword-onlyzvariadic keywordc@seZdZd ZeZeZeZ e Z e Z eZeedddZdd Zd d Zed d ZeddZeddZeddZeeeedddZddZddZddZddZdS)!r_name_kind_default _annotation)r,r0c Cs"yt||_Wn$tk r2td|dYnX|tk rf|jttfkrfd}|jt|j}t|||_||_ |tkrtdt |t sdjt |j }t||ddko|ddjr|jtkrd }|jt|j}t|t|_d j|dd}|jstd 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)rrrurr-r/rv_get_paramkind_descrrrr rrrrisdigitr+r* isidentifierr)rrDrjr,r0rWr r rr s4   zParameter.__init__cCs t||j|jf|j|jdfS)N)rr)rrrrr)rr r r __reduce__ s zParameter.__reduce__cCs|d|_|d|_dS)Nrr)rr)rstater r r __setstate__ s zParameter.__setstate__cCs|jS)N)r)rr r rrD szParameter.namecCs|jS)N)r)rr r rr, szParameter.defaultcCs|jS)N)r)rr r rr0 szParameter.annotationcCs|jS)N)r)rr r rrj szParameter.kind)rDrjr0r,cCsL|tkr|j}|tkr|j}|tkr*|j}|tkr8|j}t|||||dS)N)r,r0)rrrrrr)rrDrjr0r,r r rr; szParameter.replacecCsj|j}|j}|jtk r(dj|t|j}|jtk rDdj|t|j}|tkrVd|}n|t krfd|}|S)Nz{}:{}z{}={}r?z**) rjrrrrvr<rr:r-r/)rrj formattedr r rr s    zParameter.__str__cCsdj|jj|S)Nz <{} "{}">)rvrr)rr r r__repr__ szParameter.__repr__cCst|j|j|j|jfS)N)hashrDrjr0r,)rr r r__hash__ szParameter.__hash__cCsJ||kr dSt|tstS|j|jkoH|j|jkoH|j|jkoH|j|jkS)NT)r rNotImplementedrrrr)rotherr r r__eq__ s    zParameter.__eq__N)rrrr)rrr __slots__r*rr+rr-rr.rr/rrr'rr r r_rDr,r0rjrr;rrrrr r r rrt s((    rc@sdeZdZdZddZeddZedd Zed d Zd d Z ddZ ddZ ddZ ddZ dS)BoundArgumentsr _signature __weakref__cCs||_||_dS)N)rr)rrrr r rr szBoundArguments.__init__cCs|jS)N)r)rr r rr# szBoundArguments.signaturec Cs|g}xn|jjjD]^\}}|jttfkr*Py|j|}Wntk rNPYqX|jtkrf|j |q|j |qWt |S)N) rr(rArjr/r.rrjr-extendrNrb)rr rr5rBr r rr ' s  zBoundArguments.argsc Csi}d}x|jjjD]x\}}|sF|jttfkr6d}n||jkrFd}q|sLqy|j|}Wntk rnYqX|jtkr|j|q|||<qW|S)NFT) rr(rArjr/r.rrjupdate)rkwargsZkwargs_startedrr5rBr r rr> s&    zBoundArguments.kwargsc Cs|j}g}x|jjjD]v\}}y|j|||fWqtk r|jtk rX|j}n"|jt krhf}n|jt krxi}nw|j||fYqXqWt ||_dS)N) rrr(rArNrjr,rrjr-r/r)rrZ new_argumentsrDr5valr r rapply_defaults\ s    zBoundArguments.apply_defaultscCs2||kr dSt|tstS|j|jko0|j|jkS)NT)r rrrr)rrr r rrx s   zBoundArguments.__eq__cCs|d|_|d|_dS)Nrr)rr)rr r r rr  s zBoundArguments.__setstate__cCs|j|jdS)N)rr)rr)rr r r __getstate__ szBoundArguments.__getstate__cCsDg}x(|jjD]\}}|jdj||qWdj|jjdj|S)Nz{}={!r}z <{} ({})>z, )rrArNrvrrr)rr rBrEr r rr szBoundArguments.__repr__N)rrr)rrrrrr_rr rrrr rrr r r rr s   rc@seZdZd,ZeZeZeZ d-eddddZ e dd Z e d d Z e dd d dZeddZeddZeedddZddZddZddZddddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+ZdS).r%_return_annotation _parametersNT)r&rc Cs|dkrt}n|rt}t}d}xt|D]\}}|j} |j} | |krjd} | jt|t| } t| n| |krzd}| }| ttfkr|j t kr|rd} t| nd}| |krdj| } 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)r[r5r r rr sz%Signature.__init__..)rr*rErjrDrvrrur+r,rr MappingProxyTyperr) rr(r&rrZtop_kindZ kind_defaultsidxr5rjrDrWr r rr s>         zSignature.__init__cCstjdtddt||S)Nz_inspect.Signature.from_function() is deprecated since Python 3.5, use Signature.from_callable()r)r)rrrr)r\rwr r r from_function s zSignature.from_functioncCstjdtddt||S)Nz^inspect.Signature.from_builtin() is deprecated since Python 3.5, use Signature.from_callable()r)r)rrrr)r\rwr r r from_builtin s zSignature.from_builtin)follow_wrappedcCst|||dS)N)r"r )r$)r\rir$r r r from_callable szSignature.from_callablecCs|jS)N)r)rr r rr( szSignature.parameterscCs|jS)N)r)rr r rr& szSignature.return_annotation)r(r&cCs0|tkr|jj}|tkr |j}t|||dS)N)r&)rr(r)rr)rr(r&r r rr; s  zSignature.replacecCs8tdd|jjD}dd|jjD}|||jfS)Ncss|]}|jtkr|VqdS)N)rjr.)r[r5r r rr sz(Signature._hash_basis..cSsi|]}|jtkr||jqSr )rjr.rD)r[r5r r rr` sz)Signature._hash_basis..)rbr(r)r&)rr kwo_paramsr r r _hash_basis szSignature._hash_basiscCs(|j\}}}t|j}t|||fS)N)r' frozensetr)r)rrr&r&r r rr! s zSignature.__hash__cCs*||kr dSt|tstS|j|jkS)NT)r r%rr')rrr r rr& s  zSignature.__eq__F)rcCst}t|jj}f}t|}xxy t|}Wntk ry t|} Wntk rbPYnX| jtkrrPn| j|kr| jt krd} | j | jd} t | d| f}PnH| jt ks| j tk r| f}Pn*|r| f}Pnd} | j | jd} t | dYq$Xy t|} Wn tk r&t ddYq$X| jt tfkrBt dd| jtkrn|g} | j|t| || j<P| j|krt dj | jdd||| j<q$Wd} xtj||D]} | jt kr| } q| jtkr֐q| j} y|j| }WnHtk r2| r.| jtkr.| j tkr.t dj | ddYn(X| jt krRt dj | jd||| <qW|r| dk r|||| j<nt dj tt|d|j||S)NzA{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})rrr(r)r StopIterationrjr-rDr*rvrr/r,rr.rrbrchainrrj_bound_arguments_cls)rr rrrr(Z parameters_exZarg_valsZarg_valr5rWr)Z kwargs_paramrr r r_bind- s                   zSignature._bindcOs|dj|dd|S)Nrr)r,)r rr r rbind szSignature.bindcOs|dj|dd|ddS)NrrT)r)r,)r rr r rr szSignature.bind_partialcCs t|t|jjfd|jifS)Nr)rrbrr)r)rr r rr  szSignature.__reduce__cCs|d|_dS)Nr)r)rr r r rr  szSignature.__setstate__cCsdj|jj|S)Nz<{} {}>)rvrr)rr r rr szSignature.__repr__c Csg}d}d}xr|jjD]d}t|}|j}|tkr8d}n|rJ|jdd}|tkrXd}n|tkrr|rr|jdd}|j|qW|r|jddjdj |}|j t k rt |j }|dj|7}|S)NFTrr?z({})z, z -> {}) r(r)rrjr*rNr-r.rvrr&rr<) rrgZrender_pos_only_separatorZrender_kw_only_separatorr5r rjZrenderedZannor r rr s0      zSignature.__str__)rr)N)rrrrrrrr+rr'rrfr"r#r%r_r(r&rr;r'rrr,r-rr r rrr r r rr% s06    r%)r$cCstj||dS)N)r$)r%r%)rir$r r rr srcCsddl}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|| }qW| j t jkrt dt jd td|jrt dj |t dj t| t dj | j|| krxt dj t| jt| drt dj | jn6yt|\}}Wntk rYnXt dj |t dn 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.rzFailed to import {} ({}: {}))rrr~z#Can't get info for builtin modules.rz Target: {}z Origin: {}z Cached: {}z Loader: {}__path__zSubmodule search path: {}zLine: {}r)argparserArgumentParser add_argument parse_argsr partition import_modulercrvrrprintrrstderrexitrrBbuiltin_module_namesZdetailsr __cached__r:rrr1rr)r2rparserr targetZmod_nameZ has_attrsZattrsrirrhrWpartspart__rrr r r_main sV     rBr)rri)N)N)N)F)N)r)r8)r)r)r)r)T)T) __author__r.rZdiscollections.abcr-enumZimportlib.machineryrrrrrrrrrr rrroperatorrrrglobalsZmod_dictZCOMPILER_FLAG_NAMESrArWrXr=rrrrrrrrrr#r$r%r'r)r+r0r2r4r6r8r9rGrYrZrkrJryr}rrrrrrrrrrrrrrcrrrrrrrrr rrrrrr6r9r<r>rrKrNrUrXr\r]rlrmrtru_fieldsrvrzr}rrrr rrrrrrrrrrrrrrrrrrrrrZ_WrapperDescriptorallZ_MethodWrapperrr@Z_ClassMethodWrapperr7rrrrrrrrrrrr$rrIntEnumrrr*rr+rr-rr.rr/Z_PARAM_NAME_MAPPING __getitem__rrrr%rrBrr r r rsd            , t$ ;   .I-7      [   (> 5        0   L H  RH k: