U e5d @sdZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlmZddlmZmZeZejD]\ZZeede<qdZddZd d Zd d Z d dZ!ddZ"e#edrddZ$nddZ$e#edr&ddZ%nddZ%ddZ&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`daZLdbdcZMdddeZNddgdhZOedidjZPdkdlZQedmdnZRdodpZSedqdrZTdsdtZUedudvZVdwdxZWddydzZXd{d|ZYdddd}iieZd~dddddddeXf ddZ[eZddddddfddZ\ddZ]ddZ^ddZ_eddZ`ddZaeddZbdddZcddZdeddebjeZfdddZgdddZhddZidddZjdddZkelZmddZnddZoddZpddZqddZremfddZsdZtdZudZvdZwddZxddZydZzdZ{dZ|dZ}ddZ~dd„ZeejZeejZeejdZeeeejfZddńZdddDŽZddɄZdd˄Zdd̈́ZddτZddфZdddԄZdddքZddd؄ZdddٜddۄZGdd݄d݃ZGdd߄d߃ZGdddejZejZejZejZejZejZededededediZGdddZGdddZGdddZddddZddZedkredS()zKa-Ping Yee z'Yury Selivanov N) attrgetter) namedtuple OrderedDictZCO_icCs t|tjSN) isinstancetypes ModuleTypeobjectr /usr/lib64/python3.8/inspect.pyismodule?sr cCs t|tSr)rtyper r r r isclassHsrcCs t|tjSr)rr MethodTyper r r r ismethodPsrcCs:t|st|st|rdSt|}t|do8t|d S)NF__get____set__rr isfunctionrhasattrr tpr r r ismethoddescriptorZsrcCs8t|st|st|rdSt|}t|dp6t|dS)NFr __delete__rrr r r isdatadescriptornsrMemberDescriptorTypecCs t|tjSr)rrrr r r r ismemberdescriptor~srcCsdSNFr r r r r rsGetSetDescriptorTypecCs t|tjSr)rrrr r r r isgetsetdescriptorsr cCsdSrr r r r r r scCs t|tjSr)rr FunctionTyper r r r rs rcCs6t|r|j}qt|}t|s&dSt|jj|@Sr)r__func__ functools_unwrap_partialrbool__code__co_flags)fflagr r r _has_code_flags  r*cCs t|tSr)r*Z CO_GENERATORobjr r r isgeneratorfunctionsr-cCs t|tSr)r*Z CO_COROUTINEr+r r r iscoroutinefunctionsr.cCs t|tSr)r*ZCO_ASYNC_GENERATORr+r r r isasyncgenfunctionsr/cCs t|tjSr)rrAsyncGeneratorTyper r r r isasyncgensr1cCs t|tjSr)rr GeneratorTyper r r r isgeneratorsr3cCs t|tjSr)rr CoroutineTyper r r r iscoroutinesr5cCs6t|tjp4t|tjr(t|jjt@p4t|tj j Sr) rrr4r2r%gi_coder'ZCO_ITERABLE_COROUTINE collectionsabc Awaitabler r r r isawaitables    r:cCs t|tjSr)rr TracebackTyper r r r istracebacksr<cCs t|tjSr)rr FrameTyper r r r isframes r>cCs t|tjSr)rrCodeTyper r r r iscodesr@cCs t|tjSr)rrBuiltinFunctionTyper r r r isbuiltinsrBcCs t|pt|pt|pt|Sr)rBrrrr r r r isroutine&srCcCst|tsdS|jt@rdStt|tjs0dSt|dr>dS|j D]\}}t |ddrHdSqH|j D]6}t |ddD]$}t ||d}t |ddrzdSqzqjdS)NFT__abstractmethods____isabstractmethod__r ) rr __flags__TPFLAGS_IS_ABSTRACT issubclassr8ABCMetar__dict__itemsgetattr __bases__)r namevaluebaser r r isabstract-s"        rQc Cst|r|ft|}nd}g}t}t|}z:|jD].}|jD]\}}t|tj rD| |qDq6Wnt k r|YnX|D]~} zt || } | |krt Wn:t k r|D]}| |jkr|j| } qqYqYnX|r|| r| | | f| | q|jddd|S)Nr cSs|dS)Nrr )Zpairr r r nzgetmembers..key)rgetmrosetdirrMrJrKrrDynamicClassAttributeappendAttributeErrorrLaddsort) r Z predicatemroresults processednamesrPkvrUrOr r r getmembersEs:        rd Attributezname kind defining_class objectc CsTt|}tt|}tdd|D}|f|}||}t|}|D].}|jD]\}}t|tjrR| |qRqDg} t } |D]} d} d} d}| | krzz| dkrt dt || } Wn"t k r}zW5d}~XYnXt | d| } | |krzd} d}|D] }t || d}|| kr|}q|D]B}z| || }Wntk rXYq(YnX|| kr(|}q(|dk rz|} |D]0}| |jkr~|j| }| |kr|} qq~| dkrq| dk r| n|}t|ttjfrd}|}nFt|ttjfrd}|}n*t|trd}|}nt|r,d }nd }| t| || || | q| S) Ncss|]}|ttfkr|VqdSr)rr ).0clsr r r s z'classify_class_attrs..rJz)__dict__ is special, don't want the proxy __objclass__z static methodz class methodpropertymethoddata)rVrtuplerXrJrKrrrYrZrW ExceptionrL __getattr__r[ staticmethodBuiltinMethodType classmethodClassMethodDescriptorTyperjrCrer\)rgr^ZmetamroZ class_basesZ all_basesrarPrbrcresultr`rNZhomeclsZget_objZdict_objexcZlast_clsZsrch_clsZsrch_objr,kindr r r classify_class_attrsss                    rwcCs|jSr)__mro__)rgr r r rVsrVstopcs|dkrdd}n fdd}|}t||i}t}||rx|j}t|}||ks`t||krntd||||<q6|S)NcSs t|dSN __wrapped__rr(r r r _is_wrapperszunwrap.._is_wrappercst|do| Sr{r}r~ryr r rsz!wrapper loop when unwrapping {!r})idsysgetrecursionlimitr|len ValueErrorformat)funcrzrr(ZmemoZrecursion_limitZid_funcr ryr unwraps    rcCs|}t|t|Sr) expandtabsrlstrip)lineZexpliner r r indentsizesrcCsNtj|j}|dkrdS|jdddD]}t||}q.t|sJdS|S)N.)rmodulesget __module__ __qualname__splitrLr)rrgrNr r r _findclasss rc Cst|rT|jD]@}|tk rz |j}Wntk r<YqYnX|dk r|SqdSt|r|jj}|j}t|rt t ||dd|jkr|}n|j }n$t |r|j}t |}|dkst |||k rdSnt |r|j}|j}t|r|jd||jkr|}n|j }nt|trP|j}|j}t |}|dksJt |||k rdSnnt|sdt|r|j}|j}t |||k rdSt|rt |dd}t|tr||kr||SndS|jD]F}zt ||j}Wntk rYqYnX|dk r|SqdS)Nr"r __slots__)rrxr __doc__r[rr"__name____self__rL __class__rrrBrrrjfgetrrrirdict)r,rPdocrNselfrgrslotsr r r _finddoc sn               rc Cshz |j}Wntk r YdSX|dkrRz t|}Wnttfk rPYdSXt|ts`dSt|Sr)rr[r TypeErrorrstrcleandoc)r rr r r getdoc^s   rcCsz|d}Wntk r(YdSXtj}|ddD]*}t|}|rf_coder@ co_filenamerr)r moduler r r getfiles.   rcCsTtj|}ddtjD}||D]"\}}||r,|d|Sq,dS)NcSsg|]}t| |fqSr )r)rfsuffixr r r sz!getmodulename..)ospathbasename importlib machinery all_suffixesr]endswith)rZfnamesuffixesZneglenrr r r getmodulenames   rcst|tjjdd}|tjjdd7}tfdd|Dr`tjdtjj dntfddtjj Dr~dStj rSt t |dddk rStjkrSdS)Nc3s|]}|VqdSrrrfsfilenamer r rhsz getsourcefile..rc3s|]}|VqdSrrrrr r rhs __loader__)rrrDEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESanyrrsplitextSOURCE_SUFFIXESEXTENSION_SUFFIXESexistsrL getmodule linecachecache)r Zall_bytecode_suffixesr rr getsourcefiles"    rcCs,|dkrt|pt|}tjtj|Sr)rrrrnormcaseabspath)r _filenamer r r getabsfilesrc Cst|r |St|dr$tj|jS|dk rD|tkrDtjt|Szt||}Wntk rhYdSX|tkrtjt|Stj D]\\}}t|rt|dr|j }|t |dkrq|t |<t|}|j t|<ttj|<q|tkrtjt|Stjd}t|ds"dSt||j rJt||j }||krJ|Stjd}t||j r|t||j } | |kr||SdS)Nrr__main__rbuiltins)r rrrrr modulesbyfilerrcopyrKr_filesbymodnamerrrrealpathrL) r rfilemodnamerr(mainZ mainobjectZbuiltinZ builtinobjectr r r rsJ           rc Cst|}|rt|n$t|}|dr4|dszsource 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)|(.*(?rr@rr IndexError) r rrrrNZpatZ candidatesrrlnumrr r r findsourcesf                 rc Cs.zt|\}}Wnttfk r*YdSXt|rd}|rT|ddddkrTd}|t|krz||dkrz|d}qT|t|kr||dddkrg}|}|t|kr||dddkr||||d}qd|Sn>|dkr*t ||}|d}|dkr*|| dddkr*t |||kr*|| g}|dkr|d}|| }|dddkrt |||kr|g|dd<|d}|dkrq|| }qt|r|ddkrg|dd<q|r |ddkr g|dd<qd|SdS) Nrz#!r)#rrr) rrrr rstriprZrrrr)r rrstartZcommentsendrZcommentr r r getcommentsRsL      $ $ rc@s eZdZdS) EndOfBlockNrrrr r r r rsrc@seZdZddZddZdS) BlockFindercCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)NrFr)rislambdastartedpassline indecoratordecoratorhasargslast body_col0rr r r __init__szBlockFinder.__init__cCsr|jsB|jsB|dkrd|_n|dkr8|dkr2d|_d|_d|_n,|dkrZ|jrVd|_n|dkrv|jrtd|_d|_n|tjkrd|_|d|_|jrt|jr|jsd|_n|jrn|tj kr|j dkr|jr|d |_ |j d |_ d|_n|tj kr|j d |_ |j dkrntnV|tj krL|j dk rn|d |j krn|d|_n"|j dkrn|tj tjfkrntdS) N@T)defclasslambdar()Frr)rrrrrtokenizeNEWLINErrINDENTrrDEDENTCOMMENTNL)rrtokenZsrowcolZerowcolrr r r tokeneatersL              zBlockFinder.tokeneaterN)rrrrr r r r r rs rc CsVt}z(tt|j}|D]}|j|qWnttfk rFYnX|d|jSr) rrgenerate_tokensiter__next__r rIndentationErrorr)rZ blockfindertokensZ_tokenr r r getblocksrcCsbt|}t|\}}t|r"|j}t|s>t|rF|jjdkrF|dfSt||d|dfSdS)Nzrr) rrr<rr r>rco_namerr rrr r r getsourceliness  rcCst|\}}d|S)Nr)rrrr r r getsources rcCsRg}|jtddd|D]2}|||jf||kr|t||||q|S)NrrrT)r]rrZrMwalktree)classeschildrenparentr_rr r r rsrFcCsi}g}|D]d}|jr^|jD]>}||kr0g||<|||krJ||||r||krqpqq ||kr ||q |D]}||krv||qvt||dSr)rMrZr)runiquerrootsrrr r r getclasstrees"      r Argumentszargs, varargs, varkwc Cst|std||j}|j}|j}t|d|}t||||}d}||7}d}|jt@rx|j|}|d}d}|jt @r|j|}t ||||S)Nz{!r} is not a code objectrr) r@rr co_varnames co_argcountco_kwonlyargcountlistr' CO_VARARGSCO_VARKEYWORDSr) coranargsZnkwargsargs kwonlyargsstepvarargsvarkwr r r getargss"    r,ArgSpeczargs varargs keywords defaultscCsDtjdtddt|\}}}}}}}|s.|r6tdt||||S)Nzhinspect.getargspec() is deprecated since Python 3.0, use inspect.signature() or inspect.getfullargspec()r stacklevelzgFunction has keyword-only parameters or annotations, use inspect.signature() API which can support them)warningswarnDeprecationWarninggetfullargspecrr-)rr'r*r+defaultsr(kwonlydefaultsannr r r getargspec-sr7 FullArgSpeczGargs, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotationsc Cs|zt|ddtd}Wn,tk r@}ztd|W5d}~XYnXg}d}d}g}g}d}i} d}i} |j|jk r||j| d<|jD]} | j} | j } | t kr| | | j | jk r|| j f7}nv| t kr| | | j | jk r|| j f7}nJ| tkr| }n<| tkr*| | | j | jk r8| j | | <n| tkr8| }| j| jk r| j| | <q| sZd} |sdd}t||||||| | S)NFfollow_wrapper_chainsskip_bound_argsigclszunsupported callabler return)_signature_from_callable Signaturernrreturn_annotationempty parametersvaluesrvrN_POSITIONAL_ONLYrZdefault_POSITIONAL_OR_KEYWORD_VAR_POSITIONAL _KEYWORD_ONLY _VAR_KEYWORD annotationr8)rsigexr'r*r+Z posonlyargsr(r4 annotations kwdefaultsparamrvrNr r r r3Nsb             r3ArgInfozargs varargs keywords localscCs t|j\}}}t||||jSr)r,rrPf_locals)framer'r*r+r r r getargvaluessrScCsVt|dddkr t|ddSt|trN|jd|fkr>|jS|jd|jSt|S)Nrtypingztyping.rrr)rLreprreplacerrrr)rJZ base_moduler r r formatannotations rWcst|ddfdd}|S)Nrcs t|Sr)rW)rJrr r _formatannotationsz5formatannotationrelativeto.._formatannotation)rL)r rYr rXr formatannotationrelativetos  rZr cCsd|SN*r rNr r r rRrSrRcCsd|SN**r r]r r r rRrScCs dt|SN=rUrOr r r rRrScCsd|S)Nz -> r )textr r r rRrSc s<ddlm} | dtddfdd}g}|rBt|t|}t|D]:\}}||}|rz||krz|| |||}||qJ|dk r||||n|r|d|r|D]2}||}|r||kr|| ||7}||q|dk r|| ||d d |d }d kr8|| d 7}|S) Nr)r1zc`formatargspec` is deprecated since Python 3.5. Use `signature` and the `Signature` object directlyrr.cs(|}|kr$|d|7}|S)Nz: r )argrtrMrW formatargr r formatargandannotationsz-formatargspec..formatargandannotationr\r, rr=)r0r1r2r enumeraterZr)r'r*r+r4r(r5rMrg formatvarargs formatvarkw formatvalueZ formatreturnsrWr1rhspecsZ firstdefaultrrespecZ kwonlyargrtr rfr formatargspecs<        rpcCsd|Sr[r r]r r r rRrScCsd|Sr^r r]r r r rRrScCs dt|Sr`rbrcr r r rRrSc Cs|||fdd}g} tt|D]} | ||| q |rV| ||||||rt| |||||dd| dS)NcSs|||||Srr )rNlocalsrgrmr r r convert sz formatargvalues..convertrrir)rrrZr) r'r*r+rqrgrkrlrmrrrnrr r r formatargvaluess  rscsfdd|D}t|}|dkr,|d}n>|dkr@dj|}n*dj|dd}|dd=d ||}td |||rzd nd |dkrd nd|fdS)Ncsg|]}|krt|qSr rb)rfrNrCr r rsz&_missing_arguments..rrrz {} and {}z , {} and {}riz*%s() missing %i required %s argument%s: %s positional keyword-onlyrr)rrrr)f_nameZargnamesposrCramissingrtailr rtr _missing_argumentss     r|c 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|sd nd fdS) Ncsg|]}|kr|qSr r )rfrertr r r)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)rrr) rxr'Zkwonlyr*ZdefcountZgivenrCZatleastZ kwonly_givenZpluralrKZ kwonly_sigmsgr rtr _too_many's*    r~cOst|}|\}}}}}} } |j} i} t|rB|jdk rB|jf|}t|} t|}|r^t|nd}t| |}t|D]}||| ||<qt|rt||d| |<t||}|ri| |<| D]T\}}||kr|st d| |f|| ||<q|| krt d| |f|| |<q| |kr<|ssz"getclosurevars.. __builtins__)NoneTrueFalse)rr"rrrr& __closure__zip co_freevars __globals__rrrJr rWco_namesKeyErrorr\r) rcodeZ nonlocal_varsZ global_nsZ builtin_nsZ global_varsZ builtin_varsZ unbound_namesrNr r r getclosurevarszs>    r Tracebackz+filename lineno function code_context indexrcCst|r|j}|j}n|j}t|s2td|t|p@t|}|dkr|d|d}zt |\}}Wnt k rd}}YqXt dt |t ||}||||}|d|}nd}}t|||jj||S)Nz'{!r} is not a frame or traceback objectrrr)r< tb_linenorf_linenor>rrrrrrmaxrrrrr)rRcontextlinenorrrrindexr r r getframeinfos$rcCs|jSr)rrRr r r getlinenosr FrameInforcCs2g}|r.|ft||}|t||j}q|Sr)rrZrf_back)rRr framelist frameinfor r r getouterframess rcCs4g}|r0|jft||}|t||j}q|Sr)rrrZrtb_next)tbrrrr r r getinnerframess rcCsttdrtdSdS)N _getframer)rrrr r r r currentframesrcCsttd|S)Nr)rrrrr r r stacksrcCsttd|S)Nr)rrexc_inforr r r tracesrcCstjd|S)Nrx)rrJr)klassr r r _static_getmrosrcCs8i}zt|d}Wntk r(YnXt||tSNrJ)r __getattribute__r[rr _sentinel)r,attrZ instance_dictr r r _check_instances rc CsHt|D]:}tt|tkrz|j|WStk r@YqXqtSr)r_shadowed_dictrrrJr)rrentryr r r _check_class s rcCs(z t|Wntk r"YdSXdSNFT)rrr+r r r _is_types  rc Csntjd}t|D]V}z||d}Wntk r<YqXt|tjkr`|jdkr`|j|ks|Sqt Sr) rrJrrrrrrrir)r dict_attrrZ class_dictr r r rs   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||krtt|D]:}tt|tkrz|j |WSt k rYqXq|tk r|St |dS)Nrr) rrrrrrrrrrJrr[)r,rrEZinstance_resultrrZ klass_resultrr r r getattr_static+s:    r GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSEDcCs,|jr tS|jdkrtS|jjdkr(tStSNr) gi_runningrgi_framerf_lastirr) generatorr r r getgeneratorstate`s   rcCs:t|std|t|dd}|dk r2|jjSiSdS)Nz{!r} is not a Python generatorr)r3rrrLrrQ)rrRr r r getgeneratorlocalsrs  r CORO_CREATED CORO_RUNNINGCORO_SUSPENDED CORO_CLOSEDcCs,|jr tS|jdkrtS|jjdkr(tStSr) cr_runningrcr_framerrrr) coroutiner r r getcoroutinestates   rcCs"t|dd}|dk r|jSiSdS)Nr)rLrQ)rrRr r r getcoroutinelocalss r from_bytescCs8zt||}Wntk r$YdSXt|ts4|SdSr)rLr[r_NonUserDefinedCallables)rgZ method_nameZmethr r r "_signature_get_user_defined_methods  rc Cs|j}t|}|jpd}|jp$i}|r2||}z|j||}Wn6tk rx}zd|} t| |W5d}~XYnXd} |D]\} } z|j | } Wnt k rYnjX| j t kr| | q| j tkr| |krd} | j| d|| <n| | jq| j tkr| j| d|| <| r| j tkrN|| jtd}||| <|| q| j ttfkrj|| q| j tkr| | jq|j|dS)Nr z+partial object {!r} has incorrect argumentsFT)rErvrB)rBrrKr'keywords bind_partialrrr argumentsrrvrDrrFrVrNrH move_to_endrIrGrC) wrapped_sigpartialZ extra_argsZ old_params new_paramsZ partial_argsZpartial_keywordsZbarLr}Ztransform_to_kwonly param_namerOZ arg_valueZ new_paramr r r _signature_get_partialsL              rcCslt|j}|r$|djttfkr,td|dj}|ttfkrP|dd}n|t k r`td|j |dS)Nrzinvalid method signaturerzinvalid argument typer) rmrBrCrvrIrHrrFrDrGrV)rKparamsrvr r r _signature_bound_methods  rcCs&t|p$t|p$t|tp$|ttfkSr)rBrrrrr r+r r r _signature_is_builtin.s rcCst|rt|rdSt|dd}t|dd}t|dt}t|dt}t|dd}t|tjot|to|dksxt|to|dkst|t ot|t S)NFrr& __defaults____kwdefaults____annotations__) callablerrL_voidrrr?rrmr)r,rNrr4rNrMr r r _signature_is_functionlike:s       rcCs<|d}|dkr|d}|d}|d}|d|S)N,rr:rar)find)roryZcposr r r _signature_get_bound_paramSs    rcCs |s|ddfSd}d}dd|dD}t|j}t|}d}d}g}|j} d} tj} tj} t|} |D]} | j | j }}|| kr|dkr|rd}qld}| d7} ql|d krd}| d}ql|| kr|d kr| }ql|rd}|| kr|d ks| d | ||dkrl| d qld |}|||fS)NcSsg|]}|dqS)ascii)encode)rflr r r r}sz6_signature_strip_non_python_syntax..rFrrTr/$rri r) rrrrrZr OP ERRORTOKENnextrstringr) signatureself_parameterlast_positional_onlyrrZ token_streamZ delayed_commaZskip_next_commardr\Zcurrent_parameterrrtrrclean_signaturer r r "_signature_strip_non_python_syntaxjsP      rTc s`ddl|jt|\}}}d|d}z|}Wntk rNd}YnXt|jsjtd||j d} gj t d}it |dd} | rt j| d}|r|jt j fdd fdd  G fd d d jffd d } t| jj} t| jj} tj| | dd}|dk rJjnjttt|D](\}\}}| ||||kr`jq`| jjrj| | jjjt| jj | jj!D]\}}| ||q| jj"rj#| | jj"|dk rRt |dd}|dk }t$|}|r8|s,|r8%dndj&jd} | d<||j dS)Nrzdef fooz: passz"{!r} builtin has invalid signaturercs|jdk rtd|jS)Nz'Annotations are not currently supported)rJrre)node)astr r parse_names z&_signature_fromstr..parse_namec s|zt|}Wn>tk rLzt|}Wntk rFtYnXYnXt|tttttt dfrr |StdSr) eval NameError RuntimeErrorrrintfloatbytesr%rZConstant)rrO)r module_dictsys_module_dictr r wrap_values z&_signature_fromstr..wrap_valuecs(eZdZfddZfddZdS)z,_signature_fromstr..RewriteSymbolicscs\g}|}t|jr(||j|j}qt|js:t||jdt |}|S)Nr) rrerZrrONamerrrreversed)rrarrOrrr r visit_Attributes    z<_signature_fromstr..RewriteSymbolics.visit_Attributecst|jjst|jSr)rZctxZLoadrr)rrrr r visit_Namesz7_signature_fromstr..RewriteSymbolics.visit_NameN)rrrr r r rr r RewriteSymbolicss r cs|}|krdS|rp|tk rpz|}|}Wntk rR}YnX|kr`dS|k rl|n|}||ddSNrErJ)_emptyZvisitZ literal_evalrrZ)Z name_nodeZ default_noderErNo) Parameterr rrAinvalidrvrBrr r ps   z_signature_fromstr..p) fillvaluerrr@)'r_parameter_clsrparse SyntaxErrorrZModulerrZbodyrAr rLrrrrJrZNodeTransformerrr'r4 itertools zip_longestPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrjr"ZvarargVAR_POSITIONAL KEYWORD_ONLYrr(Z kw_defaultsr VAR_KEYWORDr rrV)rgr,rr;rrrZprogramrr(Z module_namerr'r4rrrNrEZ_selfZ self_isboundZ self_ismoduler ) rr rrArrvrrBrrrr _signature_fromstrsn                   rcCsBt|std|t|dd}|s4td|t||||S)Nz%{!r} is not a Python builtin function__text_signature__z#no signature found for builtin {!r})rrrrLrr)rgrr;rr r r _signature_from_builtin<s r!c CsHd}t|s(t|rd}ntd|t|dd}|rFt||||S|j}|j}|j}|j }|j } |d|} |j } |||| } |j } |j }|j}|rt|}nd}g}||}| }| d|D]<}|rtnt}| |t}|||||d|r|d8}qt| |dD]L\}}|r&tnt}| |t}|||||||d|r|d8}q|jt@r||| }| |t}||||td| D]B}t}|dk r||t}| |t}||||t|dq|jt@r2|| }|jt@r |d7}||}| |t}||||td||| d t|d S) NFTrr r)rJrvr)rJrvrEr=r@__validate_parameters__)rrrrrLrrr&r rco_posonlyargcountr!rrrrrDrFrrrZrjr'r#rGrHr$rI)rgrr;Zis_duck_functionrrZ func_codeZ pos_countZ arg_namesZ posonly_countrvZkeyword_only_countZ keyword_onlyrMr4rNZpos_default_countrBZnon_default_countZ posonly_leftrNrvrJoffsetrErr r r _signature_from_functionLs                        r&)r:r;c Cst|std|t|tjrDt|j|||d}|r@t|S|S|rtt |ddd}t|tjrtt||||dSz |j }Wnt k rYn&X|dk rt|t std||Sz |j }Wnt k rYnvXt|tjrLt|j|||d}t||d}t|jd}|jtjkr(|St|j}|f|} |j| d St|s`t|rnt|||d St|rt|||d St|tjrt|j|||d}t||Sd}t|trt t|d } | dk rt| |||d}nJt |d } | dk rt| |||d}n$t |d } | dk r4t| |||d}|dkr@|j!ddD]>} z | j"}Wnt k rpYnX|rLt#|||SqLt|j!kr@|j$t%j$kr|j&t%j&kr|'t%St(d|nrt|t)s@t t|d } | dk r@zt| |||d}Wn8t(k r>}zd|}t(||W5d}~XYnX|dk r\|rXt|S|St|tj*r|d|}t(|t(d|dS)Nz{!r} is not a callable objectr9cSs t|dS)N __signature__r}r~r r r rRrSz*_signature_from_callable..ryz1unexpected object {!r} in __signature__ attributerrr)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)+rrrrrrr>r"rrr'r[r?_partialmethodr# partialmethodrrrmrBrCrvrrrVrrr&rr!rrrrxr rrr r) from_callablerrrA)r,r:r;r<rKr+rZfirst_wrapped_paramZ sig_paramsrZcallnewZinitrPZtext_sigrLr}r r r r>s                            r>c@s eZdZdS)rNrr r r r rt src@s eZdZdS)rNrr r r r rx src@s4eZdZdZdZdZdZdZddZe dd Z d S) _ParameterKindrrrcCs|jSr)_name_rr r r __str__ sz_ParameterKind.__str__cCst|Sr)_PARAM_NAME_MAPPINGrr r r description sz_ParameterKind.descriptionN) rrrrrrrrr2rjr4r r r r r.| sr.zpositional-onlyzpositional or keywordzvariadic positionalrwzvariadic keywordc@seZdZdZeZeZeZ e Z e Z eZeedddZddZddZed d Zed d Zed dZeddZeeeedddZddZddZddZddZdS)r)_name_kind_default _annotationr cCszt||_Wn$tk r2td|dYnX|tk rd|jttfkrdd}||jj}t|||_||_ |tkrtdt |t sdt |j }t||ddkr|ddr|jtkrd }||jj}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 {}rrrzLimplicit arguments must be passed as positional or keyword arguments, not {}z implicit{}z"{!r} is not a valid parameter name)r.r6rrrGrIrr4r7r8rrrrrisdigitrFrD isidentifierr5)rrNrvrErJr}r r r r s6   zParameter.__init__cCs t||j|jf|j|jdfS)Nr7r8)rr5r6r7r8rr r r __reduce__ s  zParameter.__reduce__cCs|d|_|d|_dS)Nr7r8r;rstater r r __setstate__ s zParameter.__setstate__cCs|jSr)r5rr r r rN szParameter.namecCs|jSr)r7rr r r rE szParameter.defaultcCs|jSr)r8rr r r rJ szParameter.annotationcCs|jSr)r6rr r r rv szParameter.kind)rNrvrJrEcCsL|tkr|j}|tkr|j}|tkr*|j}|tkr8|j}t|||||dSr )rr5r6r8r7r)rrNrvrJrEr r r rV szParameter.replacecCs|j}|j}|jtk r(d|t|j}|jtk rb|jtk rPd|t|j}nd|t|j}|tkrtd|}n|t krd|}|S)Nz{}: {}z{} = {}z{}={}r\r_) rvr5r8rrrWr7rUrGrI)rrv formattedr r r r2 s    zParameter.__str__cCsd|jj|S)Nz <{} "{}">rrrrr r r __repr__# szParameter.__repr__cCst|j|j|j|jfSr)hashrNrvrJrErr r r __hash__& szParameter.__hash__cCsJ||kr dSt|tstS|j|jkoH|j|jkoH|j|jkoH|j|jkSNT)rrNotImplementedr5r6r7r8rotherr r r __eq__) s     zParameter.__eq__N)rrrrrDrrFrrGrrHrrIrrrArr<r?rjrNrErJrvrrVr2rBrDrIr r r r r s4(     rc@sdeZdZdZddZeddZeddZedd Zd d Z d d Z ddZ ddZ ddZ dS)BoundArguments)r _signature __weakref__cCs||_||_dSr)rrK)rrrr r r rG szBoundArguments.__init__cCs|jSr)rKrr r r rK szBoundArguments.signaturec Cs~g}|jjD]d\}}|jttfkr*qvz|j|}Wntk rRYqvYqX|jtkrj| |q| |qt |Sr) rKrBrKrvrIrHrrrGextendrZrm)rr'rrOrer r r r'O s    zBoundArguments.argsc Csi}d}|jjD]x\}}|sD|jttfkr4d}n||jkrDd}q|sJqz|j|}Wntk rlYqX|jtkr||q|||<q|Sr) rKrBrKrvrIrHrrupdate)rkwargsZkwargs_startedrrOrer r r rOf s&    zBoundArguments.kwargsc Cs|j}g}|jjD]x\}}z||||fWqtk r|jtk rV|j}n$|jt krfd}n|jt krvi}nYq|||fYqXqt ||_dS)Nr ) rrKrBrKrZrrErrvrGrIr)rrZ new_argumentsrNrOvalr r r apply_defaults s    zBoundArguments.apply_defaultscCs2||kr dSt|tstS|j|jko0|j|jkSrE)rrJrFrrrGr r r rI s   zBoundArguments.__eq__cCs|d|_|d|_dS)NrKrrKrr=r r r r? s zBoundArguments.__setstate__cCs|j|jdS)NrRrRrr r r __getstate__ szBoundArguments.__getstate__cCs@g}|jD]\}}|d||qd|jjd|S)Nz{}={!r}z <{} ({})>ri)rrKrZrrrr)rr'rerOr r r rB szBoundArguments.__repr__N)rrrrrrjrr'rOrQrIr?rSrBr r r r rJ4 s   rJc@seZdZdZeZeZeZ d+eddddZ e ddZ e d d Z e dd d d ZeddZeddZeedddZddZddZddZddddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*ZdS),r?)_return_annotation _parametersNTr"c Cs|dkrt}n|rt}t}d}t|D]\}}|j} |j} | |krdd} | |j| j} t| n| |krtd}| }| ttfkr|j t kr|rd} t| nd}| |krd| } t| ||| <q*ntdd|D}t ||_ ||_dS)NFz7wrong parameter order: {} parameter before {} parameterz-non-default argument follows default argumentTzduplicate parameter name: {!r}css|]}|j|fVqdSrr]rfrOr r r rh sz%Signature.__init__..)rrDrjrvrNrr4rrFrErrMappingProxyTyperUrT) rrBr@r#rZtop_kindZ kind_defaultsidxrOrvrNr}r r r r sD       zSignature.__init__cCstjdtddt||S)Nz_inspect.Signature.from_function() is deprecated since Python 3.5, use Signature.from_callable()rr.)r0r1r2r&rgrr r r from_function s zSignature.from_functioncCstjdtddt||S)Nz^inspect.Signature.from_builtin() is deprecated since Python 3.5, use Signature.from_callable()rr.)r0r1r2r!rYr r r from_builtin s zSignature.from_builtinfollow_wrappedcCst|||dS)N)r<r:)r>)rgr,r]r r r r,# szSignature.from_callablecCs|jSr)rUrr r r rB) szSignature.parameterscCs|jSrrTrr r r r@- szSignature.return_annotation)rBr@cCs0|tkr|j}|tkr |j}t|||dS)Nr)rrBrCrTr)rrBr@r r r rV1 s zSignature.replacecCs8tdd|jD}dd|jD}|||jfS)Ncss|]}|jtkr|VqdSr)rvrHrVr r r rhA s z(Signature._hash_basis..cSsi|]}|jtkr|j|qSr )rvrHrNrVr r r rD s z)Signature._hash_basis..)rmrBrCr@)rr kwo_paramsr r r _hash_basis@ szSignature._hash_basiscCs(|\}}}t|}t|||fSr)r` frozensetrCrC)rrr_r@r r r rDI s zSignature.__hash__cCs*||kr dSt|tstS||kSrE)rr?rFr`rGr r r rIN s  zSignature.__eq__Frc Cst}t|j}d}t|}z t|}Wntk r z t|} Wntk rfYYqYnX| jtkrzYqn| j|kr| jt krd} | j | jd} t | d| f}YqnP| jt ks| j tk r| f}Yqn.|r| f}Yqnd} | j | jd} t | dYq Xz t|} Wn tk r:t ddYq X| jt tfkrVt dd| jtkr|g} | |t| || j<q| j|kr| jt krt dj | jdd||| j<q d} t||D]} | jt kr| } q| jtkrq| j} z|| }WnFtk rN|sJ| jtkrJ| j tkrJt dj | ddYn(X| jt krnt dj | jd||| <q|r| dk r||| j<nt dj tt|d|||S)Nr zA{arg!r} parameter is positional only, but was passed as a keyword)rez$missing a required argument: {arg!r}ztoo many positional argumentsz$multiple values for argument {arg!r}z*got an unexpected keyword argument {arg!r})rrrBrCr StopIterationrvrGrNrDrrrIrErrHrMrmrchainrr_bound_arguments_cls)rr'rOrrrBZ parameters_exZarg_valsZarg_valrOr}rCZ kwargs_paramrr r r _bindU s                  zSignature._bindcOs |||Srrfrr'rOr r r bind szSignature.bindcOs|j||ddS)NTrbrgrhr r r r szSignature.bind_partialcCs t|t|jfd|jifSNrT)rrmrUrCrTrr r r r< szSignature.__reduce__cCs|d|_dSrjr^r=r r r r? szSignature.__setstate__cCsd|jj|S)Nz<{} {}>rArr r r rB szSignature.__repr__c Csg}d}d}|jD]d}t|}|j}|tkr6d}n|rH|dd}|tkrVd}n|tkrp|rp|dd}||q|r|ddd |}|j t k rt |j }|d|7}|S)NFTrr\z({})riz -> {}) rBrCrrvrDrZrGrHrrr@rrW) rrtZrender_pos_only_separatorZrender_kw_only_separatorrOr@rvZrenderedZannor r r r2 s0       zSignature.__str__)N)rrrrrrrJrerrArrrrZr[r,rjrBr@rrVr`rDrIrfrirr<r?rBr2r r r r r? s: 7     r?r\cCstj||dS)Nr\)r?r,)r,r]r r r r src Csddl}ddl}|}|jddd|jddddd |}|j}|d \}}}z||}} WnNtk r} z0d |t | j | } t | t jd t d W5d} ~ XYnX|r|d} | }| D]} t|| }q| j t jkrt dt jd t d|jrt d |t d t| t d | j|| krxt d t| jt| drt d | jn6zt|\}}Wntk rYnXt d |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)actionrkrzFailed to import {} ({}: {}))rrrz#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_modulernrrrprintrstderrexitrrLbuiltin_module_namesZdetailsr __cached__rUrrrnrr)rorparserr'targetZmod_nameZ has_attrsattrsr,rrur}partspart__rr r r _main$ s`      rr)N)N)N)F)N)r)r)r)r)r)r )T)T)T) __author__r8disZcollections.abcr7enumimportlib.machineryrrrrrrrr rr0r#roperatorrrrglobalsZmod_dictZCOMPILER_FLAG_NAMESrKrbrcrGr rrrrrrr rr*r-r.r/r1r3r5r:r<r>r@rBrCrQrdrerwrVrrrrrrrrrrrrrrrrnrrrrrrrrr,r-r7r8r3rPrSrWrZrrprsr|r~rrrrrr_fieldsrrrrrrr rrrrrrrrrrrrrrrrrrrrr(Z_WrapperDescriptorallZ_MethodWrapperrrJZ_ClassMethodWrapperrArrrrrrrrrr!r&r>rrIntEnumr.rrDrrFrrGrrHrrIr3rrJr?rrrr r r r sx            , t$ >   .N->     ]   ; < 5        0   L H   _ K k: