a 3dgc @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/local/lib/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)rZfnamesuffixesZneglenrr 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 Cs~t|r |St|dr$tj|jS|durD|tvrDtjt|Szt||}WntyfYdS0|tvrtjt|Stj D]\\}}t|rt|dr|j }|t |dkrq|t |<t|}|j t|<ttj|<q|tvrtjt|Stjd}t|ds dSt||j rHt||j }||urH|Stjd}t||j rzt||j } | |urz|SdS)Nrr__main__rbuiltins)r rrrrr modulesbyfilerrcopyrKr_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      $ $rc@s eZdZdS) EndOfBlockNrr r r r rrSrc@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 r r r rtokenizeNEWLINErrINDENTrrDEDENTCOMMENTNL)rrtokenZsrowcolZerowcolrr r r tokeneatersL              zBlockFinder.tokeneaterN)rrrrrr r r r r s r c CsTt}z(tt|j}|D]}|j|qWnttfyDYn0|d|jSr) r rgenerate_tokensiter__next__rrIndentationErrorr)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,rootsr.r-r r r getclasstrees     r1 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_VARKEYWORDSr2) corbnargsZnkwargsr kwonlyargsstepvarargsvarkwr r r getargs+s"    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@)rrr=r>defaultsr;kwonlydefaultsannr r r getargspecHsrJ 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 annotationrK)rsigexrr=r> posonlyargsr; annotationsrG kwdefaultsparamrwrNr r r rFis\              rFArgInfozargs varargs keywords localscCs t|j\}}}t||||jSr)r?rrdf_locals)framerr=r>r r r getargvaluessrgcCsVt|dddkr t|ddSt|trN|jd|fvr>|jS|jd|jSt|S)Nrtypingztyping.rrr)rLreprreplacerrrr)r]Z base_moduler r r formatannotations rkcst|ddfdd}|S)Nrcs t|Sr)rk)r]rr r _formatannotationsz5formatannotationrelativeto.._formatannotation)rL)r rmr rlr formatannotationrelativetos  rnr cCsd|SN*r rNr r r rRrSrRcCsd|SN**r rqr r r rRrScCs dt|SN=rirOr 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)rDzc`formatargspec` is deprecated since Python 3.5. Use `signature` and the `Signature` object directlyrrAcs(|}|vr$|d|7}|S)Nz: r )argrurark formatargr r formatargandannotationsz-formatargspec..formatargandannotationrpr, rrP)rCrDrEr enumeraterZr)rr=r>rGr;rHrar{ formatvarargs formatvarkw formatvalueZ formatreturnsrkrDr|specsZ firstdefaultrryspecZ kwonlyargrur rzr formatargspecs<        rcCsd|Sror rqr r r rRrScCsd|Srrr rqr r r rRrScCs dt|Srtrvrwr r r rRrSc Cs|||fdd}g} tt|D]} | ||| q |rV| ||||||rt| |||||dd| dS)NcSs|||||Srr )rNlocalsr{rr r r convert%sz formatargvalues..convertrr}r)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 rv)rgrNrVr r r2rSz&_missing_arguments..rrrz {} and {}z , {} and {}r}z*%s() missing %i required %s argument%s: %s positional keyword-onlyrr)rrrr)f_nameZargnamesposrVrbmissingrtailr rr _missing_arguments1s    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 )rgryrr r rCrSz_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=ZdefcountZgivenrVZatleastZ kwonly_givenpluralr^Z kwonly_sigmsgr rr _too_manyAs*    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<|srGr;rHrIrZ arg2valueZnum_posZnum_argsZ num_defaultsnrZpossible_kwargskwrOZreqryrkwargr r r getcallargsVsf             r ClosureVarsz"nonlocals globals builtins unboundc Cst|r|j}t|s$td||j}|jdur:i}nddt|j|jD}|j }| dt j }t |rt|j }i}i}t}|jD]`}|dvrqz||||<Wqtyz||||<Wnty||Yn0Yq0qt||||S)N{!r} is not a Python functioncSsi|]\}}||jqSr ) cell_contents)rgvarZcellr r r sz"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&)rfcontextrrrrrindexr r r getframeinfos$ rcCs|jSr)rrfr r r getlinenosr FrameInforcCs2g}|r.|ft||}|t||j}q|Sr)rrZrf_back)rfr 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_instances  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_type0s   rc Csltjd}t|D]T}z||d}Wnty:Yq0t|tjur^|jdkr^|j|us|Sqt Sr) rrJrrrrrrrjr)r dict_attrrZ class_dictr r r r7s    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,rrXZinstance_resultrrZ klass_resultrr r r getattr_staticEs:     r GEN_CREATED GEN_RUNNING GEN_SUSPENDED GEN_CLOSEDcCs,|jr tS|jdurtS|jjdkr(tStSNr) gi_runningrgi_framerf_lastirr) generatorr r r getgeneratorstatezs   rcCs:t|std|t|dd}|dur2|jjSiSdS)Nz{!r} is not a Python generatorr)r3rrrLrre)rrfr 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)rLre)rrfr 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)rXrwrU)rUrrKrkeywords bind_partialrrr argumentsrrwrWrrYrjrNr[ move_to_endr\rZrV) wrapped_sigpartial extra_argsZ old_params new_paramsZ partial_argsZpartial_keywordsZbar_rZtransform_to_kwonly param_namercZ 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) rnrUrVrwr\r[rrYrWrZrj)r^paramsrwr r r _signature_bound_method.s  rcCs&t|p$t|p$t|tp$|ttfvSr)rBrrrrr r+r r r _signature_is_builtinHs 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,rNrrGrbrar r r _signature_is_functionlikeTs       rcCs<|d}|dkr|d}|d}|d}|d|S)N,rr:rur)find)rrZcposr r r _signature_get_bound_paramms    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"rrZrOP ERRORTOKENnextrstringr) signatureself_parameterlast_positional_onlyrrZ token_streamZ delayed_commaZskip_next_commarxr\Zcurrent_parameterrrtrrclean_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]rry)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)rrrrrr rr r RewriteSymbolicss r cs|}|urdS|rn|turnz|}|}WntyP}Yn0|ur^dS|urj|n|}||ddSNrXr])_emptyrZ literal_evalrrZ)Z name_nodeZ default_noderXrNo) Parameterr rrTinvalidrwrUrr r ps    z_signature_fromstr..p) fillvaluerrrS)'r_parameter_clsrr SyntaxErrorrZModulerrbodyrTr rLrrrrJrZNodeTransformerrrrG itertools zip_longestPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDr~r6varargVAR_POSITIONAL KEYWORD_ONLYrr; kw_defaultsr VAR_KEYWORDr rrj)rhr,rrNr r r Zprogramrr( module_namer'rrGr!rrNrXZ_selfZ self_isboundZ self_ismoduler ) r%r rrTr&rwrrUrrrr _signature_fromstrsn                    r7cCsBt|std|t|dd}|s4td|t||||S)Nz%{!r} is not a Python builtin function__text_signature__z#no signature found for builtin {!r})rrrrLrr7)rhrrNrr r r _signature_from_builtinVs r9c 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) NFTrr8r)r]rwr)r]rwrXrPrS__validate_parameters__)rrrrrLr7r*r&r4r3co_posonlyargcountr5rrrrrWrYrr#rZr~r'r7rZr[r8r\)rhrrNZis_duck_functionrr%Z func_code pos_count arg_namesZ posonly_countrZkeyword_only_countZ keyword_onlyrarGrbZpos_default_countrUZnon_default_countZ posonly_leftrNrwr]offsetrXrr r r _signature_from_functionfs                        r@)rMrNc Cst|std|t|tjrDt|j|||d}|r@t|S|S|rtt |ddd}t|tjrtt||||dSz |j }Wnt yYn&0|durt|t std||Sz |j }Wnt yYnv0t|tjrHt|j|||d}t||d}t|jd}|jtjur$|St|j}|f|} |j| d St|s\t|rjt|||d St|rt|||d St|tjrt|j|||d}t||Sd}t|trt t|d } | durt| |||d}nJt |d } | dur t| |||d}n$t |d } | dur0t| |||d}|dur<|j!ddD]<} z | j"}Wnt yjYn0|rHt#|||SqHt|j!vr<|j$t%j$ur|j&t%j&ur|'t%St(d|ntt|t)s.rzz1unexpected object {!r} in __signature__ attributerrr)rN__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)+rrrrrrrQr"rrrAr[rR_partialmethodr# partialmethodrrrnrUrVrwr%r2rjrrr@rr9rrrryr8r7rr rC from_callablerrrA)r,rMrNrOr^rErZfirst_wrapped_paramZ sig_paramsrcallnewinitrPZtext_sigr_rr r r rQs                               rQc@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) rrrr/r0r2r3r5rNrkrPr r r r rJ srJzpositional-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)rJrRrr#rZr\rrPrSrTrrrrrisdigitrYrW isidentifierrQ)rrNrwrXr]rr r r r s6    zParameter.__init__cCs t||j|jf|j|jdfS)NrSrT)rrQrRrSrTrr r r __reduce__ s  zParameter.__reduce__cCs|d|_|d|_dS)NrSrTrWrstater r r __setstate__ s zParameter.__setstate__cCs|jSr)rQrr r r rN szParameter.namecCs|jSr)rSrr r r rX szParameter.defaultcCs|jSr)rTrr r r r] szParameter.annotationcCs|jSr)rRrr r r rw szParameter.kind)rNrwr]rXcCsL|tur|j}|tur|j}|tur*|j}|tur8|j}t|||||dSr!)rrQrRrTrSr)rrNrwr]rXr r r rj szParameter.replacecCs|j}|j}|jtur(d|t|j}|jturb|jturPd|t|j}nd|t|j}|tkrtd|}n|t krd|}|S)Nz{}: {}z{} = {}z{}={}rprs) rwrQrTr#rrkrSrirZr\)rrw formattedr r r rN' s    zParameter.__str__cCsd|jj|S)Nz <{} "{}">rrrrr r r __repr__= szParameter.__repr__cCst|j|j|j|jfSr)hashrNrwr]rXrr r r __hash__@ szParameter.__hash__cCsJ||ur dSt|tstS|j|jkoH|j|jkoH|j|jkoH|j|jkSNT)rr%NotImplementedrQrRrSrTrotherr r r __eq__C s     zParameter.__eq__N)rrrrrWr/rYr0rZr2r[r3r\r5r#rTrrXr[rkrNrXr]rwrrjrNr^r`rer r r r r% s2(     r%c@sdeZdZdZddZeddZeddZedd Zd d Z d d Z ddZ ddZ ddZ dS)BoundArguments)r _signature __weakref__cCs||_||_dSr)rrg)rr rr r r ra szBoundArguments.__init__cCs|jSr)rgrr r r r e szBoundArguments.signaturec Cs|g}|jjD]b\}}|jttfvr*qtz|j|}WntyPYqtYq0|jtkrh| |q| |qt |Sr) rgrUrKrwr\r[rrrZextendrZrn)rrrrcryr r r ri s     zBoundArguments.argsc Csi}d}|jjD]v\}}|sD|jttfvr4d}n||jvrDd}q|sJqz|j|}WntyjYq0|jtkr||q|||<q|Sr) rgrUrKrwr\r[rrupdate)rkwargsZkwargs_startedrrcryr r r rk s&     zBoundArguments.kwargsc Cs|j}g}|jjD]v\}}z||||fWqty|jturT|j}n$|jt urdd}n|jt urti}nYq|||fYq0qt ||_dS)Nr ) rrgrUrKrZrrXr#rwrZr\r)rrZ new_argumentsrNrcvalr r r apply_defaults s     zBoundArguments.apply_defaultscCs2||ur dSt|tstS|j|jko0|j|jkSra)rrfrbr rrcr r r re s   zBoundArguments.__eq__cCs|d|_|d|_dS)NrgrrgrrYr r r r[ s zBoundArguments.__setstate__cCs|j|jdS)Nrnrnrr r r __getstate__ szBoundArguments.__getstate__cCs@g}|jD]\}}|d||qd|jjd|S)Nz{}={!r}z <{} ({})>r})rrKrZrrrr)rrryrOr r r r^ szBoundArguments.__repr__N)rrrrrrkr rrkrmrer[ror^r r r r rfN s   rfc@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),rR)_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|fVqdSrrqrgrcr r r ri rSz%Signature.__init__..)rrWrwrNrrPrrYrXr#rMappingProxyTyperqrp) rrUrSr;rZtop_kindZ kind_defaultsrcrwrNrr r r r s@       zSignature.__init__cCstjdtddt||S)Nz_inspect.Signature.from_function() is deprecated since Python 3.5, use Signature.from_callable()rrA)rCrDrEr@rhrr r r from_function$ szSignature.from_functioncCstjdtddt||S)Nz^inspect.Signature.from_builtin() is deprecated since Python 3.5, use Signature.from_callable()rrA)rCrDrEr9rtr r r from_builtin0 szSignature.from_builtinfollow_wrappedcCst|||dS)N)rOrM)rQ)rhr,rxr r r rF< szSignature.from_callablecCs|jSr)rqrr r r rUB szSignature.parameterscCs|jSrrprr r r rSF szSignature.return_annotation)rUrScCs0|tur|j}|tur |j}t|||dS)Nr))rrUrVrpr)rrUrSr r r rjJ s zSignature.replacecCs8tdd|jD}dd|jD}|||jfS)Ncss|]}|jtkr|VqdSr)rwr[rrr r r riZ s z(Signature._hash_basis..cSsi|]}|jtkr|j|qSr )rwr[rNrrr r r r] s z)Signature._hash_basis..)rnrUrVrS)rr kwo_paramsr r r _hash_basisY szSignature._hash_basiscCs(|\}}}t|}t|||fSr)r{ frozensetrVr_)rrrzrSr r r r`b s zSignature.__hash__cCs*||ur dSt|tstS||kSra)rrRrbr{rcr r r reg 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)ryz$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!rUrVr StopIterationrwrZrNrWrrr\rXr#r[rirnr-chainrr_bound_arguments_cls)rrrkrrrUZ parameters_exZarg_valsZarg_valrcrrVZ kwargs_paramrr r r _bindn s                   zSignature._bindcOs |||Srrrrrkr r r bind szSignature.bindcOs|j||ddS)NTr}rrr r r r szSignature.bind_partialcCs t|t|jfd|jifSNrp)rrnrqrVrprr r r rX szSignature.__reduce__cCs|d|_dSrryrYr r r r[ szSignature.__setstate__cCsd|jj|S)Nz<{} {}>r]rr r r r^ 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)NFTrrpz({})r}z -> {}) rUrVrrwrWrZrZr[rrrSr#rk) rruZrender_pos_only_separatorZrender_kw_only_separatorrcr\rwZrenderedZannor r r rN s0       zSignature.__str__)N)rrrrr%r*rfrr#rTrrsrurvrFrkrUrSrrjr{r`rerrrrXr[r^rNr r r r rR s: 6     rRrwcCstj||dS)Nrw)rRrF)r,rxr r r r 8 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_namesZdetailsr __cached__rirrrrr))rrparserrtargetZmod_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.abcr7enumZimportlib.machineryrr-rrrrrrrrCr#roperatorrrrglobalsZmod_dictZCOMPILER_FLAG_NAMESrKrcrdrGr rrrrrrr rr*r-r.r/r1r3r5r:r<r>r@rBrCrQrerfrxrVrrrrrrrrrrrrrrorZ NodeVisitorrrrrr r%r(r)r*r1r2r?r@rJrKrFrdrgrkrnrrrrrrrrrrr_fieldsrrrrrrr rrrrrrrrrrrrrrrrrrrrrBZ_WrapperDescriptorallZ_MethodWrapperrrJZ_ClassMethodWrapperrArrrrrrrrr7r9r@rQrr#IntEnumrJr/rWr0rYr2rZr3r[r5r\rOr%rfrRr rrr r r r sp            , t$ >   /D->     \   ; < 5        0   L H   _ K j: