a DOg @sdZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlmZddlmZmZeZejD]\ZZeede<qdZddZd d Z d 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,Z0d-d.Z1d/d0Z2d1d2Z3d3d4Z4d5d6Z5dd7d8Z6ed9d:Z7d;d<Z8d=d>Z9dd?d@dAZ:dBdCZ;dDdEZdJdKZ?dLdMZ@dNdOZAdPdQZBddRdSZCiZDiZEddTdUZFGdVdWdWeGZHGdXdYdYejIZJdZd[ZKd\d]ZLGd^d_d_eGZMGd`dadaZNdbdcZOdddeZPdfdgZQdhdiZRddkdlZSedmdnZTdodpZUedqdrZVdsdtZWedudvZXdwdxZYedydzZZd{d|Z[dd}d~Z\ddZ]ddddiie^dddddddde\f ddZ_e^ddddddfddZ`ddZaddZbddZceddZdddZeeddZfdddZgddZheddefjiZjdddZkdddZlddZmdddZndddZoepZqddZrddZsddZtddZuddZveqfddZwdZxdZydZzdZ{ddZ|ddZ}dZ~dZdZdZddĄZddƄZeejZeejZeejdZeeeejfZddɄZddd˄Zdd̈́ZddτZddфZddӄZddՄZddd؄ZdddڄZddd܄Zdddݜdd߄ZGdddZGdddZGdddejZejZejZejZejZejZededededediZGdddZGdddZGdddZddddZddZedkredS()zKa-Ping Yee z'Yury Selivanov N) attrgetter) namedtuple OrderedDictZCO_icCs t|tjSN) isinstancetypes ModuleTypeobjectr /usr/lib64/python3.9/inspect.pyismodule@sr cCs t|tSr)rtyper r r r isclassIsrcCs t|tjSr)rr MethodTyper r r r ismethodQsrcCs:t|st|st|rdSt|}t|do8t|d S)NF__get____set__rr isfunctionrhasattrr tpr r r ismethoddescriptor[srcCs8t|st|st|rdSt|}t|dp6t|dS)NFr __delete__rrr r r isdatadescriptorosrMemberDescriptorTypecCs t|tjSr)rrrr r r r ismemberdescriptorsrcCsdSNFr 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 yzYn0|D]|} zt || } | |vrt Wn8t y|D]}| |jvr|j| } qqYqYn0|r|| r| | | f| | q|jddd|S)Nr cSs|dS)Nrr )Zpairr r r ozgetmembers..key)rgetmrosetdirrMrJrKrrDynamicClassAttributeappendAttributeErrorrLaddsort) r predicatemroresults processednamesrPkvrUrOr r r getmembersFs:          re Attributezname kind defining_class objectc CsTt|}tt|}tdd|D}|f|}||}t|}|D].}|jD]\}}t|tjrR| |qRqDg} t } |D]} d} d} d}| | vrzz| dkrt dt || } Wn$t y}z WYd}~nd}~00t | d| } | |vrzd} d}|D] }t || d}|| ur|}q|D]@}z| || }WntyXYq*Yn0|| ur*|}q*|durz|} |D]0}| |jvr~|j| }| |vr|} qq~| durq| dur| n|}t|ttjfrd}|}nFt|ttjfrd}|}n*t|trd}|}nt|r,d }nd }| t| || || | q| S) Ncss|]}|ttfvr|VqdSr)rr ).0clsr r r rSz'classify_class_attrs..rJz)__dict__ is special, don't want the proxy __objclass__z static methodz class methodpropertymethoddata)rVrtuplerXrJrKrrrYrZrW ExceptionrL __getattr__r[ staticmethodBuiltinMethodType classmethodClassMethodDescriptorTyperkrCrfr\)rhr_ZmetamroZ class_basesZ all_basesrbrPrcrdresultrarNZhomeclsZget_objZdict_objexcZlast_clsZsrch_clsZsrch_objr,kindr r r classify_class_attrsts                    rxcCs|jSr)__mro__)rhr r r rVsrVstopcs|durdd}n fdd}|}t||i}t}||rx|j}t|}||vs`t||krntd||||<q6|S)NcSs t|dSN __wrapped__rr(r r r _is_wrapperszunwrap.._is_wrappercst|do| Sr|r~rrzr r rsz!wrapper loop when unwrapping {!r})idsysgetrecursionlimitr}len ValueErrorformat)funcr{rr(memoZrecursion_limitZid_funcr rzr unwraps    rcCs|}t|t|Sr) expandtabsrlstrip)lineZexpliner r r indentsizesrcCsNtj|j}|durdS|jdddD]}t||}q.t|sJdS|S)N.)rmodulesget __module__ __qualname__splitrLr)rrhrNr r r _findclasss rc Cs t|rR|jD]>}|turz |j}Wnty:YqYn0|dur|SqdSt|r|jj}|j}t|rt t ||dd|jur|}n|j }n$t |r|j}t |}|dust |||urdSnt |r|j}|j}t|r|jd||jkr|}n|j }nt|trN|j}|j}t |}|dusHt |||urdSnnt|sbt|r|j}|j}t |||urdSt|rt |dd}t|tr||vr||SndS|jD]D}zt ||j}WntyYqYn0|dur|SqdS)Nr"r __slots__)rryr __doc__r[rr"__name____self__rL __class__rrrBrrrkfgetrrrjrdict)r,rPdocrNselfrhrslotsr r r _finddoc!sn                rc Csdz |j}WntyYdS0|durNz t|}WnttfyLYdS0t|ts\dSt|Sr)rr[r TypeErrorrstrcleandoc)r rr r r getdoc_s    rcCsz|d}Wnty&YdS0tj}|ddD]*}t|}|r:t||}t||}q:|rz|d|d<|tjkrtdt|D]}|||d||<q|r|ds| q|r|ds| dqd |SdS)N rr) rr UnicodeErrorrmaxsizerrminrangepopjoin)rlinesZmarginrZcontentindentir r r rrs&     (    rcCst|r(t|ddr|jStd|t|rht|drZtj |j }t|ddrZ|jStd|t |rv|j }t |r|j}t|r|j}t|r|j}t|r|jStdt|jdS)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 {})r rLrrrrrrrrrrr"rr&r<tb_framer>f_coder@ co_filenamerr)r moduler r r getfiles.   rcCsTtj|}ddtjD}||D]"\}}||r,|d|Sq,dS)NcSsg|]}t| |fqSr )r)rgsuffixr r r sz!getmodulename..)ospathbasename importlib machinery all_suffixesr]endswith)rfnamesuffixesZneglenrr r r getmodulenames   rcst|tjjdd}|tjjdd7}tfdd|Dr`tjdtjj dntfddtjj Dr~dStj rSt t |dddurStjvrSdS)Nc3s|]}|VqdSrrrgsfilenamer r rirSz getsourcefile..rc3s|]}|VqdSrrrrr r rirS __loader__)rrrDEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESanyrrsplitextSOURCE_SUFFIXESEXTENSION_SUFFIXESexistsrL getmodule linecachecache)r Zall_bytecode_suffixesr rr getsourcefiles"    rcCs,|durt|pt|}tjtj|Sr)rrrrnormcaseabspath)r _filenamer r r getabsfilesrc Cst|r |St|dr$tj|jS|durD|tvrDtjt|Szt||}Wntt fyjYdS0|tvrtjt|Stj D]\\}}t|rt|dr|j }|t |dkrq|t |<t|}|jt|<ttj|<q|tvr tjt|Stjd}t|ds$dSt||jrLt||j}||urL|Stjd}t||jr~t||j} | |ur~|SdS)Nrr__main__rbuiltins)r rrrrr modulesbyfilerrFileNotFoundErrorcopyrKr_filesbymodnamerrrrealpathrL) r rfilemodnamerr(mainZ mainobjectZbuiltinZ builtinobjectr r r rsJ           rc@s eZdZdS)ClassFoundExceptionNrrrr r r r rsrc@s(eZdZddZddZeZddZdS) _ClassFindercCsg|_||_dSr)stackqualname)rrr r r __init__ sz_ClassFinder.__init__cCs<|j|j|jd|||j|jdS)Nz)rrZrN generic_visitrrnoder r r visit_FunctionDefs    z_ClassFinder.visit_FunctionDefcCsb|j|j|jd|jkrJ|jr4|jdj}n|j}|d8}t||||j dS)Nrrr) rrZrNrrdecorator_listlinenorrr)rr line_numberr r r visit_ClassDefs z_ClassFinder.visit_ClassDefN)rrrrrZvisit_AsyncFunctionDefrr r r r r src Cst|}|rt|n$t|}|dr4|dszsource code not availablezcould not get source coderzcould not find class definitionco_firstlinenoz"could not find function definitionrz>^(\s*def\s)|(\s*async\s+def\s)|(.*(?rr@rrrecompile IndexErrormatch) r rrrrsourceZtreeZ class_findererlnumpatrr r r findsource)s`                   rc Cs,zt|\}}Wnttfy(YdS0t|rd}|rR|ddddkrRd}|t|krx||dvrx|d}qR|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|| }qr|r|ddkrg|dd<q|r|ddkrg|dd<qd|SdS) Nrz#!r)r#rrr) rrrr rstriprZrrrr)r rrstartZcommentsendrZcommentr r r getcommentsmsH      $ $r c@s eZdZdS) EndOfBlockNrr r r r r rSr c@seZdZddZddZdS) BlockFindercCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)NrFr)rislambdastartedpassline indecoratordecoratorhasargslast body_col0rr r r rszBlockFinder.__init__cCsr|jsB|jsB|dkrd|_n|dvr8|dkr2d|_d|_d|_n,|dkrZ|jrVd|_n|dkrv|jrtd|_d|_n|tjkrd|_|d|_|jrt|jr|jsd|_n|jrn|tj kr|j dur|jr|d |_ |j d |_ d|_n|tj kr|j d |_ |j dkrntnV|tj krL|j durn|d |j krn|d|_n"|j dkrn|tj tjfvrntdS) N@T)defclasslambdar()Frr)r rr rrtokenizeNEWLINErr INDENTrrDEDENTCOMMENTNL)rrtokenZsrowcolZerowcolrr r r tokeneatersL              zBlockFinder.tokeneaterN)rrrrr!r r r r r s r c CsTt}z(tt|j}|D]}|j|qWnttfyDYn0|d|jSr) r rgenerate_tokensiter__next__r!r IndentationErrorr)rZ blockfindertokensZ_tokenr r r getblocksr'cCsbt|}t|\}}t|r"|j}t|s>t|rF|jjdkrF|dfSt||d|dfSdS)Nzrr) rrr<rr r>rco_namer'r rrr r r getsourceliness  r*cCst|\}}d|S)Nr)r*rr)r r r getsources r+cCsRg}|jtddd|D]2}|||jf||vr|t||||q|S)NrrrT)r]rrZrMwalktree)classeschildrenparentr`cr r r r,sr,FcCsi}g}|D]d}|jr^|jD]>}||vr0g||<|||vrJ||||r||vrqpqq ||vr ||q |D]}||vrv||qvt||dSr)rMrZr,)r-uniquer.rootsr0r/r r r getclasstrees     r3 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_VARKEYWORDSr4) corbnargsZnkwargsr kwonlyargsstepvarargsvarkwr r r getargs+s"    rAArgSpeczargs 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)warningswarnDeprecationWarninggetfullargspecrrB)rrr?r@defaultsr=kwonlydefaultsannr r r getargspecHsrL FullArgSpeczGargs, varargs, varkw, defaults, kwonlyargs, kwonlydefaults, annotationsc Cszzt|ddtd}Wn.tyB}ztd|WYd}~n d}~00g}d}d}g}g}i}d} i} |j|jurz|j|d<|jD]} | j} | j } | t ur| | | j | jur| | j f7} nv| t ur| | | j | jur| | j f7} nJ| tur| }n<| tur(| | | j | jur6| j | | <n| tur6| }| j| jur| j|| <q| sXd} | sbd} t||||| || |S)NFfollow_wrapper_chainsskip_bound_argsigclszunsupported callabler return)_signature_from_callable Signaturerorreturn_annotationempty parametersvaluesrwrN_POSITIONAL_ONLYrZdefault_POSITIONAL_OR_KEYWORD_VAR_POSITIONAL _KEYWORD_ONLY _VAR_KEYWORD annotationrM)rsigexrr?r@ posonlyargsr= annotationsrI kwdefaultsparamrwrNr r r rHis\              rHArgInfozargs varargs keywords localscCs t|j\}}}t||||jSr)rArrff_locals)framerr?r@r r r getargvaluessricCsjt|dddkr t|ddSt|tjr4t|St|trb|jd|fvrR|j S|jd|j St|S)Nrtypingztyping.rrr) rLreprreplacerr GenericAliasrrrr)r_Z base_moduler r r formatannotations  rncst|ddfdd}|S)Nrcs t|Sr)rn)r_rr r _formatannotationsz5formatannotationrelativeto.._formatannotation)rL)r rpr ror formatannotationrelativetos  rqr cCsd|SN*r rNr r r rRrSrRcCsd|SN**r rtr r r rRrScCs dt|SN=rkrOr r r rRrScCsd|S)Nz -> r )textr r r rRrSc s<ddlm} | dtddfdd}g}|rBt|t|}t|D]:\}}||}|rz||krz|| |||}||qJ|dur||||n|r|d|r|D]2}||}|r||vr|| ||7}||q|dur|| ||d d |d }d vr8|| d 7}|S) Nr)rFzc`formatargspec` is deprecated since Python 3.5. Use `signature` and the `Signature` object directlyrrCcs(|}|vr$|d|7}|S)Nz: r )argrurcrn formatargr r formatargandannotationsz-formatargspec..formatargandannotationrsr, rrR)rErFrGr enumeraterZr)rr?r@rIr=rJrcr~ formatvarargs formatvarkw formatvalueZ formatreturnsrnrFrspecsZ firstdefaultrr|specZ kwonlyargrur r}r formatargspecs<        rcCsd|Srrr rtr r r rRrScCsd|Srur rtr r r rRrScCs dt|Srwryrzr r r rR rSc Cs|||fdd}g} tt|D]} | ||| q |rV| ||||||rt| |||||dd| dS)NcSs|||||Srr )rNlocalsr~rr r r convert'sz formatargvalues..convertrrr)rrrZr) rr?r@rr~rrrrrrr r r formatargvaluess  rcsfdd|D}t|}|dkr,|d}n>|dkr@dj|}n*dj|dd}|dd=d ||}td |||rzd nd |dkrd nd|fdS)Ncsg|]}|vrt|qSr ry)rgrNrXr r r4rSz&_missing_arguments..rrrz {} and {}z , {} and {}rz*%s() missing %i required %s argument%s: %s positional keyword-onlyrr)rrrr)f_nameZargnamesposrXrbmissingrtailr rr _missing_arguments3s    rc 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|]}|vr|qSr r )rgr|rr r rErSz_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) rrZkwonlyr?ZdefcountZgivenrXZatleastZ kwonly_givenpluralr`Z kwonly_sigmsgr rr _too_manyCs*    rcOst|}|\}}}}}} } |j} i} t|rB|jdurB|jf|}t|} t|}|r^t|nd}t| |}t|D]}||| ||<qt|rt||d| |<t||}|ri| |<| D]T\}}||vr|st d| |f|| ||<q|| vrt 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 getclosurevarss<      r Tracebackz+filename lineno function code_context indexrcCst|r|j}|j}n|j}t|s2td|t|p@t|}|dkr|d|d}zt |\}}Wnt yd}}Yq0t dt |t ||}||||}|d|}nd}}t|||jj||S)Nz'{!r} is not a frame or traceback objectrrr)r< tb_linenorf_linenor>rrrrrrmaxrrrrr()rhcontextrrrrrindexr r r getframeinfos$ rcCs|jSr)rrhr r r getlinenosr FrameInforcCs2g}|r.|ft||}|t||j}q|Sr)rrZrf_back)rhr 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 currentframe srcCsttd|S)Nr)rrrrr r r rsrcCsttd|S)Nr)rrexc_inforr r r tracesrcCstjd|S)Nry)rrJr)klassr r r _static_getmrosrcCs6i}zt|d}Wnty&Yn0t||tSNrJ)r __getattribute__r[rr _sentinel)r,attrZ instance_dictr r r _check_instance s  rc CsFt|D]8}tt|turz|j|WSty>Yq0qtSr)r_shadowed_dictrrrJr)rrentryr r r _check_class)s  rcCs&z t|Wnty YdS0dSNFT)rrr+r r r _is_type2s   rc Csltjd}t|D]T}z||d}Wnty:Yq0t|tjur^|jdkr^|j|us|Sqt Sr) rrJrrrrrrrjr)r dict_attrrZ class_dictr r r r9s    rc Cst}t|s>t|}t|}|tus2t|tjurBt||}n|}t||}|tur|turtt|dturtt|dtur|S|tur|S|tur|S||urtt|D]8}tt|turz|j |WSt yYq0q|tur|St |dS)Nrr) rrrrrrrrrrJrr[)r,rrZZinstance_resultrrZ klass_resultrr r r getattr_staticGs:     r GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSEDcCs,|jr tS|jdurtS|jjdkr(tStSNr) gi_runningrgi_framerf_lastirr) generatorr r r getgeneratorstate|s   rcCs:t|std|t|dd}|dur2|jjSiSdS)Nz{!r} is not a Python generatorr)r3rrrLrrg)rrhr r r getgeneratorlocalss  r CORO_CREATED CORO_RUNNINGCORO_SUSPENDED CORO_CLOSEDcCs,|jr tS|jdurtS|jjdkr(tStSr) cr_runningrcr_framerrrr) coroutiner r r getcoroutinestates   rcCs"t|dd}|dur|jSiSdS)Nr)rLrg)rrhr r r getcoroutinelocalss r from_bytescCs6zt||}Wnty"YdS0t|ts2|SdSr)rLr[r_NonUserDefinedCallables)rhZ method_namemethr r r "_signature_get_user_defined_methods   rc Cs|j}t|}|jpd}|jp$i}|r2||}z|j|i|}Wn8ty~}z d|} t| |WYd}~n d}~00d} |D]\} } z|j | } Wnt yYnl0| j t ur| | q| j tur| |vrd} | j| d|| <n| | jq| j tur | j| d|| <| r| j turT|| jtd}||| <|| q| j ttfvrp|| q| j tur| | jq|j|dS)Nr z+partial object {!r} has incorrect argumentsFT)rZrwrW)rWrrKrkeywords bind_partialrrr argumentsrrwrYrr[rlrNr] move_to_endr^r\rX) wrapped_sigpartial extra_argsZ old_params new_paramsZ partial_argsZpartial_keywordsZbararZtransform_to_kwonly param_namereZ arg_valueZ new_paramr r r _signature_get_partialsL                rcCslt|j}|r$|djttfvr,td|dj}|ttfvrP|dd}n|t ur`td|j |dS)Nrzinvalid method signaturerzinvalid argument typer) rnrWrXrwr^r]rr[rYr\rl)r`paramsrwr r r _signature_bound_method0s  rcCs&t|p$t|p$t|tp$|ttfvSr)rBrrrrr r+r r r _signature_is_builtinJs rcCst|rt|rdSt|dd}t|dd}t|dt}t|dt}t|dd}t|tjot|to|dusxt|to|dust|t ot|t S)NFrr& __defaults____kwdefaults____annotations__) callablerrL_voidrrr?rrnr)r,rNrrIrdrcr r r _signature_is_functionlikeVs       rcCs<|d}|dkr|d}|d}|d}|d|S)N,rr:rxr)find)rrZcposr r r _signature_get_bound_paramos    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)rglr r r rrSz6_signature_strip_non_python_syntax..rFrrTr/$rr r) rr#r$rrZr OP ERRORTOKENnextrstringr) signatureself_parameterlast_positional_onlyrrZ token_streamZ delayed_commaZskip_next_commar{r\Zcurrent_parameterrr trr clean_signaturer r r "_signature_strip_non_python_syntaxsP      rTc s^ddl|jt|\}}}d|d}z|}WntyLd}Yn0t|jshtd||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}|durHjnjttt|D](\}\}}| ||||kr^jq^| jjrj| | jjjt| jj | jj!D]\}}| ||q| jj"rj#| | jj"|durPt |dd}|du}t$|}|r6|s*|r6%dndj&jd} | d<||j dS)Nrzdef fooz: passz"{!r} builtin has invalid signaturercs|jdurtd|jS)Nz'Annotations are not currently supported)r_rr|)r)rr r parse_names z&_signature_fromstr..parse_namec sxzt|}Wn:tyHzt|}WntyBtYn0Yn0t|tttttt dfrn |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) rrfrZrrONamerrrreversed)rrarrOrrr r visit_Attributes    z<_signature_fromstr..RewriteSymbolics.visit_Attributecst|jjst|jSr)rctxZLoadrrrrr r visit_Namesz7_signature_fromstr..RewriteSymbolics.visit_NameN)rrrr r"r rr r RewriteSymbolicss r#cs|}|urdS|rn|turnz|}|}WntyP}Yn0|ur^dS|urj|n|}||ddSNrZr_)_emptyrZ literal_evalrrZ)Z name_nodeZ default_noderZrNo) Parameterr#rrVinvalidrwrWrr r ps    z_signature_fromstr..p) fillvaluerrrU)'r_parameter_clsrr SyntaxErrorrZModulerrbodyrVr rLrrrrJrZNodeTransformerrrrI itertools zip_longestPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrr8varargVAR_POSITIONAL KEYWORD_ONLYrr= kw_defaultsr VAR_KEYWORDr rrl)rhr,rrPrr rZprogramrr( module_namer*rrIr#rrNrZZ_selfZ self_isboundZ self_ismoduler ) r(r#rrVr)rwrrWrrrr _signature_fromstrsn                    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})rrrrLrr:)rhrrPrr r r _signature_from_builtinXs 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}|dur||t}| |t}||||t|dq|jt@r2|| }|jt@r |d7}||}| |t}||||td||| d t|d S) NFTrr;r)r_rwr)r_rwrZrRrU__validate_parameters__)rrrrrLr:r-r&r6r5co_posonlyargcountr7rrrrrYr[rr&rZrr'r9r\r]r:r^)rhrrPZis_duck_functionrr(Z func_code pos_count arg_namesZ posonly_countrZkeyword_only_countZ keyword_onlyrcrIrdZpos_default_countrWZnon_default_countZ posonly_leftrNrwr_offsetrZrr r r _signature_from_functionhs                        rC)rOrPc Cstjt|||d}t|s(td|t|tjrN||j }|rJt |S|S|rvt |ddd}t|tjrv||Sz |j }Wnt yYn&0|durt|tstd||Sz |j}Wnt yYnn0t|tjrB||j}t||d}t|jd}|jtjur|St|j} |f| } |j| d St|sVt|rdt|||d St|r|t|||d St|tjr||j}t||Sd}t|trt t|d } | dur|| }nld} t |d } t |d }d |j!vr| } n0d |j!vr |} n| dur| } n|dur*|} | dur<|| }|dur@|j"ddD]<}z |j#}Wnt yvYn0|rTt$|||SqTt|j"vr@|j%t&j%ur|j't&j'ur|(t&St)d|nlt|t*s@t t|d } | dur@z || }Wn:t)y>}z d|}t)||WYd}~n d}~00|dur\|rXt |S|St|tj+r|d|}t)|t)d|dS)NrNz{!r} is not a callable objectcSs t|dS)N __signature__r~rr r r rRrSz*_signature_from_callable..rzz1unexpected object {!r} in __signature__ attributerrr)rP__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),r#rrSrrrrrrr"rrrDr[rT_partialmethod partialmethodrrrnrWrXrwr(r5rlrrrCrr<rrrJryr;r:rr rF from_callablerrrA)r,rOrPrQZ_get_signature_ofr`rHrZfirst_wrapped_paramZ sig_paramsrcallZfactory_methodnewinitrPZtext_sigrarr r r rSs                                      rSc@s eZdZdS)rNrr r r r r} src@s eZdZdS)r&Nrr r r r r& sr&c@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) rrrr2r3r5r6r8rQrkrSr r r r rM srMzpositional-onlyzpositional or keywordzvariadic positionalrzvariadic keywordc@seZdZdZeZeZeZ e Z e Z eZeedddZddZddZed d Zed d Zed dZeddZeeeedddZddZddZddZddZdS)r()_name_kind_default _annotationr%cCszt||_Wn"ty0td|dYn0|turb|jttfvrbd}||jj}t|||_||_ |tur~tdt |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)rMrUrr&r\r^rrSrVrWrrrrrisdigitr[rY isidentifierrT)rrNrwrZr_rr r r r s6    zParameter.__init__cCs t||j|jf|j|jdfS)NrVrW)rrTrUrVrWrr r r __reduce__ s  zParameter.__reduce__cCs|d|_|d|_dS)NrVrWrZrstater r r __setstate__ s zParameter.__setstate__cCs|jSr)rTrr r r rN szParameter.namecCs|jSr)rVrr r r rZ szParameter.defaultcCs|jSr)rWrr r r r_ szParameter.annotationcCs|jSr)rUrr r r rw szParameter.kind)rNrwr_rZcCsL|tur|j}|tur|j}|tur*|j}|tur8|j}t|||||dSr$)rrTrUrWrVr)rrNrwr_rZr r r rl szParameter.replacecCs|j}|j}|jtur(d|t|j}|jturb|jturPd|t|j}nd|t|j}|tkrtd|}n|t krd|}|S)Nz{}: {}z{} = {}z{}={}rsrv) rwrTrWr&rrnrVrkr\r^)rrw formattedr r r rQ s    zParameter.__str__cCsd|jj|S)Nz <{} "{}">rrrrr r r __repr__, szParameter.__repr__cCst|j|j|j|jfSr)hashrNrwr_rZrr r r __hash__/ szParameter.__hash__cCsJ||ur dSt|tstS|j|jkoH|j|jkoH|j|jkoH|j|jkSNT)rr(NotImplementedrTrUrVrWrotherr r r __eq__2 s     zParameter.__eq__N)rrrrrYr2r[r3r\r5r]r6r^r8r&rVrr[r^rkrNrZr_rwrrlrQrarcrhr r r r r( s2(     r(c@sdeZdZdZddZeddZeddZedd Zd d Z d d Z ddZ ddZ ddZ dS)BoundArguments)r _signature __weakref__cCs||_||_dSr)rrj)rr rr r r rP szBoundArguments.__init__cCs|jSr)rjrr r r r T szBoundArguments.signaturec Cs|g}|jjD]b\}}|jttfvr*qtz|j|}WntyPYqtYq0|jtkrh| |q| |qt |Sr) rjrWrKrwr^r]rrr\extendrZrn)rrrrer|r r r rX s     zBoundArguments.argsc Csi}d}|jjD]v\}}|sD|jttfvr4d}n||jvrDd}q|sJqz|j|}WntyjYq0|jtkr||q|||<q|Sr) rjrWrKrwr^r]rrupdate)rkwargsZkwargs_startedrrer|r r r rno s&     zBoundArguments.kwargsc Cs|j}g}|jjD]v\}}z||||fWqty|jturT|j}n$|jt urdd}n|jt urti}nYq|||fYq0qt ||_dS)Nr ) rrjrWrKrZrrZr&rwr\r^r)rrZ new_argumentsrNrevalr r r apply_defaults s     zBoundArguments.apply_defaultscCs2||ur dSt|tstS|j|jko0|j|jkSrd)rrirer rrfr r r rh s   zBoundArguments.__eq__cCs|d|_|d|_dS)Nrjrrjrr\r r r r^ s zBoundArguments.__setstate__cCs|j|jdS)Nrqrqrr r r __getstate__ szBoundArguments.__getstate__cCs@g}|jD]\}}|d||qd|jjd|S)Nz{}={!r}z <{} ({})>r)rrKrZrrrr)rrr|rOr r r ra szBoundArguments.__repr__N)rrrrrrkr rrnrprhr^rrrar r r r ri= s   ric@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),rT)_return_annotation _parametersNTr=c Cs|durt}n|rt}t}d}|D]}|j}|j} ||kr\d} | |j|j} t| n||krld}|}|ttfvr|jt ur|rd} t| nd}| |vrd| } t| ||| <q&ntdd|D}t ||_ ||_ dS)NFz7wrong parameter order: {} parameter before {} parameterz-non-default argument follows default argumentTzduplicate parameter name: {!r}css|]}|j|fVqdSrrtrgrer r r ri rSz%Signature.__init__..)rrYrwrNrrSrr[rZr&rMappingProxyTypertrs) rrWrUr>rZtop_kindZ kind_defaultsrerwrNrr r r r s@       zSignature.__init__cCstjdtddt||S)Nz_inspect.Signature.from_function() is deprecated since Python 3.5, use Signature.from_callable()rrC)rErFrGrCrhrr r r from_function szSignature.from_functioncCstjdtddt||S)Nz^inspect.Signature.from_builtin() is deprecated since Python 3.5, use Signature.from_callable()rrC)rErFrGr<rwr r r from_builtin szSignature.from_builtinfollow_wrappedcCst|||dS)N)rQrO)rS)rhr,r{r r r rI+ szSignature.from_callablecCs|jSr)rtrr r r rW1 szSignature.parameterscCs|jSrrsrr r r rU5 szSignature.return_annotation)rWrUcCs0|tur|j}|tur |j}t|||dS)Nr,)rrWrXrsr)rrWrUr r r rl9 s zSignature.replacecCs8tdd|jD}dd|jD}|||jfS)Ncss|]}|jtkr|VqdSr)rwr]rur r r riI s z(Signature._hash_basis..cSsi|]}|jtkr|j|qSr )rwr]rNrur r r rL s z)Signature._hash_basis..)rnrWrXrU)rr kwo_paramsr r r _hash_basisH szSignature._hash_basiscCs(|\}}}t|}t|||fSr)r~ frozensetrXrb)rrr}rUr r r rcQ s zSignature.__hash__cCs*||ur dSt|tstS||kSrd)rrTrer~rfr r r rhV s  zSignature.__eq__Frc Csi}t|j}d}t|}z t|}Wntyz t|} Wnty`YYqYn0| jtkrtYqn| j|vr| jtkrd} | j | jd} t | d| f}YqnP| jt ks| j t ur| f}Yqn.|r| f}Yqnd} | j | jd} t | dYq0z t|} Wnty2t ddYq0| jt tfvrNt dd| jtkr||g} | |t| || j<q| j|vr| jtkrt dj | jdd||| j<qd} t||D]} | jt kr| } q| jtkrq| j} z|| }WnDtyD|s@| jtkr@| j t ur@t dj | ddYn(0| jtkrdt dj | jd||| <q|r| dur||| j<nt dj tt|d|||S)Nr zA{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})r#rWrXr  StopIterationrwr\rNrYrrr^rZr&r]rlrnr0chainrr_bound_arguments_cls)rrrnrrrWZ parameters_exZarg_valsZarg_valrerrXZ kwargs_paramrr r r _bind] s                   zSignature._bindcOs |||Srrrrrnr r r bind szSignature.bindcOs|j||ddS)NTrrrr r r r szSignature.bind_partialcCs t|t|jfd|jifSNrs)rrnrtrXrsrr r r r[ szSignature.__reduce__cCs|d|_dSrr|r\r r r r^ szSignature.__setstate__cCsd|jj|S)Nz<{} {}>r`rr r r ra szSignature.__repr__c Csg}d}d}|jD]d}t|}|j}|tkr6d}n|rH|dd}|tkrVd}n|tkrp|rp|dd}||q|r|ddd |}|j t urt |j }|d|7}|S)NFTrrsz({})rz -> {}) rWrXrrwrYrZr\r]rrrUr&rn) rruZrender_pos_only_separatorZrender_kw_only_separatorrer_rwZrenderedZannor r r rQ s0       zSignature.__str__)N)rrrrr(r-rirr&rVrrsrxryrIrkrWrUrrlr~rcrhrrrr[r^rarQr r r r rT s: 6     rTrzcCstj||dS)Nrz)rTrI)r,r{r r r r ' sr c Csddl}ddl}|}|jddd|jddddd |}|j}|d \}}}z||}} WnPty} z8d |t | j | } t | t jd t d WYd} ~ n d} ~ 00|r|d} | }| D]} t|| }q| j t jvrt dt jd t d|jrt d |t d t| t d | j|| urzt d t| jt| drt d | jn4zt|\}}WntyYn0t 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)actionrrzFailed 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_modulerorrrprintrstderrexitrrLbuiltin_module_namesdetailsr __cached__rkrrrrr+)rrparserrtargetmod_nameZ has_attrsattrsr,rrvrpartspart__rr r r _main, s\       rr)N)N)N)F)N)r)r)r)r)r)r )T)T)T) __author__r8rdiscollections.abcr7enumimportlib.machineryrr0rrrrrr rrEr#roperatorrrrglobalsZmod_dictZCOMPILER_FLAG_NAMESrKrcrdrGr rrrrrrr rr*r-r.r/r1r3r5r:r<r>r@rBrCrQrerfrxrVrrrrrrrrrrrrrrorZ NodeVisitorrrr r r r'r*r+r,r3r4rArBrLrMrHrfrirnrqrrrrrrrrrrr_fieldsrrrrrrr rrrrrrrrrrrrrrrrrrrrrEZ_WrapperDescriptorallZ_MethodWrapperrrJZ_ClassMethodWrapperrArrrrrrrrr:r<rCrSrr&IntEnumrMr2rYr3r[r5r\r6r]r8r^rRr(rirTr rrr r r r sp            , t$ >   /D->     \   ; < 5        0   L H   _ 8 j: