ML i2UdZddlmZddlZddlZddlZddlZddlZddlZddl m Z m Z ddl m Z ddlZddlZddlZddlZddlZddlZddlmZddlmZmZddlmZmZdd lmZmZmZm Z m!Z!dd l"m#Z#m$Z$dd l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXdd lYmZZ[dd l\m]Z]ddl^m_Z_ddl`maZaddlbmcZcmdZdddlemfZfmgZgddlhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvddlmwZwmxZxmyZymzZzddl{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZddlmZgdZded<gdZded<hdZded<GddZZGdd Zd!Zded!<d"Zded"<d#Zded#<d$Zded$<d%Zded%<d&Zded&<d'Zded(<Gd)d*eeZdPd+ZdQd,ZGd-d.ej4j6ZdPd/ZdRd0ZGd1d2ej>j@ZGd3d4ejej4j6ZdSd5ZGd6d7ej4j6ZdTd8ZdUd9ZdVd:ZdWd;ZdXd<ZdYd=Z dZd>Z d[d?Zd\d@Zd]dAZ d^dBZd_dCZd`dDZ dadEZdFdFdFdFdFdGdH dbdIZdcdJZdKZdLZdddMZdedfdNZedOk(reyy)ga,Generator of dynamically typed draft stubs for arbitrary modules. The logic of this script can be split in three steps: * parsing options and finding sources: - use runtime imports be default (to find also C modules) - or use mypy's mechanisms, if importing is prohibited * (optionally) semantically analysing the sources using mypy (as a single set) * emitting the stubs text: - for Python modules: from ASTs using ASTStubGenerator - for C modules using runtime introspection and (optionally) Sphinx docs During first and third steps some problematic files can be skipped, but any blocking error during second step will cause the whole program to stop. Basic usage: $ stubgen foo.py bar.py some_directory => Generate out/foo.pyi, out/bar.pyi, and stubs for some_directory (recursively). $ stubgen -m urllib.parse => Generate out/urllib/parse.pyi. $ stubgen -p urllib => Generate stubs for whole urllib package (recursively). For C modules, you can get more precise function signatures by parsing .rst (Sphinx) documentation for extra information. For this, use the --doc-dir option: $ stubgen --doc-dir /Python-3.4.2/Doc/library -m curses Note: The generated stubs should be verified manually. TODO: - maybe use .rst docs also for Python modules - maybe export more imported names if there is no __all__ (this affects ssl.SSLError, for example) - a quick and dirty heuristic would be to turn this on if a module has something like 'from x import y as _y' - we don't seem to always detect properties ('closed' in 'io', for example) ) annotationsN)IterableIterator)Final)build) CompileErrorErrors)InvalidSourceListcreate_source_list) BuildSourceFindModuleCacheModuleNotFoundReason SearchPathsdefault_lib_path) ModuleInspect is_pyc_only)3 ARG_NAMEDARG_POSARG_STAR ARG_STAR2 IS_ABSTRACT NOT_ABSTRACTAssignmentStmtBlock BytesExprCallExprCastExprClassDefComparisonExpr ComplexExprConditionalExpr DecoratorDictExprDictionaryComprehension EllipsisExpr ExpressionExpressionStmt FloatExprFuncBaseFuncDef GeneratorExprIfStmtImport ImportAll ImportFrom IndexExprIntExpr LambdaExprListComprehensionListExpr MemberExprMypyFileNameExprOpExprOverloadedFuncDefSetComprehensionSetExpr SliceExprStarExpr StatementStrExprTempNode TupleExpr TypeAliasStmtTypeInfo UnaryExprVar)Options)DATACLASS_FIELD_SPECIFIERS)find_dataclass_transform_spec)MAGIC_METHODS_POS_ARGS_ONLY)ArgSig FunctionSig)InspectionStubGeneratorgenerate_stub_for_c_module)TYPING_BUILTIN_REPLACEMENTSBaseStubGenerator CantImport ClassInfoFunctionContextcommon_dir_prefix fail_missingfind_module_path_and_all_py3generate_guardedinfer_method_arg_typesinfer_method_ret_typeremove_misplaced_type_commentsreport_missing walk_packages)all_yield_expressionshas_return_statementhas_yield_expressionhas_yield_from_expression) DATACLASS_TRANSFORM_NAMESOVERLOAD_NAMES TPDICT_NAMESTYPE_VAR_LIKE_NAMESTYPED_NAMEDTUPLE_NAMESAnyType CallableTypeInstance TupleTypeType UnboundTypeget_proper_type) NodeVisitor)packagesvendorvendored_vendor_vendored_packagesrVENDOR_PACKAGES)z/six.py z /vendored/z/vendor/z /_vendor/z/_vendored_packages/ BLACKLIST>__eq____ge____gt____le____lt____ne____hash____iter__METHODS_WITH_RETURN_VALUEc`eZdZdZ ddZy)rFzPRepresents stubgen options. This class is mutable to simplify testing. c||_||_||_||_||_||_||_||_||_| |_ | |_ | |_ | |_ | |_ ||_||_||_||_yN) pyversion no_importinspectdoc_dir search_path interpreterdecointerpreter parse_only ignore_errorsinclude_private output_dirmodulesrmfilesverbosequiet export_lessinclude_docstrings)selfrrrrrrrrrrrrmrrrrrs R/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypy/stubgen.py__init__zOptions.__init__s*#"  &&*$*.$      &"4N)$rtuple[int, int]rboolrrrstrr list[str]rrrrrrrrrrrrrmrrrrrrrrrrrreturnNone)__name__ __module__ __qualname____doc__rrrrFrFs &5"&5&5 &5  &5  &5&5&5&5&5&5&5&5&5&5 !&5"#&5$!%&5& '&5rrFcVeZdZdZ d ddZd dZed dZed dZy) StubSourcezA single source for stub: can be a Python or C module. A simple extension of BuildSource that also carries the AST and the value of __all__ detected at runtime. NcDt||d|_||_d|_yr)r source runtime_allast)rmodulepathrs rrzStubSource.__init__s#"$5 &$(rc"d|jdS)Nz StubSource())rrs r__repr__zStubSource.__repr__sT[[M++rc.|jjSr)rrrs rrzStubSource.modules{{!!!rc.|jjSr)rrrs rrzStubSource.paths{{r)NN)rrr str | Nonerlist[str] | Nonerr)rr)rr) rrrrrrpropertyrrrrrrrs`UY))!+)AQ) ),""  rrEMPTYFUNCCLASS EMPTY_CLASSVAR NOT_IN_ALLz ERROR_MARKERceZdZdZd fd Zd!dZd"dZd#dZd$dZ d%dZ d&dZ d'd Z d(d Z d)d Z d*d Zd+d Zd,dZd-dZd.dZd/dZd0dZd1dZd2dZd3dZd4dZd5dZd6dZd7dZd8dZd9dZd:dZd;dZd AliasPrinterzVisitor used to collect type aliases _and_ type variable definitions. Visit r.h.s of the definition to get the string representation of type alias. c0||_t| yr)stubgensuperr)rr __class__s rrzAliasPrinter.__init__s  rcT|jj|}g}t|j|j|j D]\}}}|t k(r!|j|j|1|tk(r$|jd|j|z^|tk(r$|jd|j|z|tk(r&|j|d|j|td|d|ddj|dS) N***=zUnknown argument kind z in call(, r) calleeacceptzip arg_namesargs arg_kindsrappendrrr ValueErrorjoin)rnoderrnameargkinds rvisit_call_exprzAliasPrinter.visit_call_expr"s##D)"4>>499dnnM JOD#tw CJJt,-! C#**T"223" D3::d#334" tfAcjj&6%789 #9$x!HII J499T?+1--rc|jj|}|tvr$|jjt|dSt |}|jj j ||S)NF)require)r get_fullnamerNadd_nameget_qualified_nameimport_tracker require_name)rrfullnamequalnames r_visit_ref_exprzAliasPrinter._visit_ref_expr4sg<<,,T2 2 2<<(()DX)NX](^ ^%d+ ##00:rc$|j|Srrrrs rvisit_name_exprzAliasPrinter.visit_name_expr<s##D))rc$|j|Srrros rvisit_member_exprzAliasPrinter.visit_member_expr?s##A&&rc,t|jSr)reprvaluers r_visit_literal_nodez AliasPrinter._visit_literal_nodeBsDJJrc$|j|Srrrs rvisit_str_exprzAliasPrinter.visit_str_exprG''--rc*d|j|S)Nbrrs rvisit_bytes_exprzAliasPrinter.visit_bytes_exprJs4++D1233rc$|j|Srrrs rvisit_int_exprzAliasPrinter.visit_int_exprMrrc$|j|Srrrs rvisit_float_exprzAliasPrinter.visit_float_exprPrrc$|j|Srrrs rvisit_complex_exprzAliasPrinter.visit_complex_exprSrrc|jj|j}|dk(rwt|jt rBdj |jjDcgc]}|j|c}S|jj|S|dk(rSt|jt r|jjdS|jj|dS|jj|}|jj|}t|dkDr6|jdr%|jdr|d d jd }|d |d Scc}w)Nz typing.Unionz | ztyping.Optional_typeshed.Incompletez | Nonerr,[])rrbase isinstanceindexrAritemsrrlen startswithendswithrstrip)rr base_fullnameitemrrs rvisit_index_exprzAliasPrinter.visit_index_exprVs6 11$))< N *$**i0zzAQAQ"R4;;t#4"RSS::$$T* * - -$**i0||,,-CDDjj''-.g6 6yy% !!$' u:>e..s3s8K!BK&&s+Eqq!!#Ss(E<ct|jdk(rdnd}ddjfd|jD|dS)Nrrrrc3@K|]}|jywrr.0nrs r z0AliasPrinter.visit_tuple_expr..h@QXXd^@r)rrr)rrsuffixs` rvisit_tuple_exprzAliasPrinter.visit_tuple_exprfs@DJJ1,"499@TZZ@@A&KKrcTddjfd|jDdS)Nrrc3@K|]}|jywrr r s rrz/AliasPrinter.visit_list_expr..krrrrrrs` rvisit_list_exprzAliasPrinter.visit_list_exprjs&499@TZZ@@ACCrcTddjfd|jDdS)N{rc3@K|]}|jywrr r s rrz.AliasPrinter.visit_set_expr..nsAahhtnAr}rrs` rvisit_set_exprzAliasPrinter.visit_set_exprms&DIIAdjjAAB"EErcg}|jD]K\}}t|tsJ|j|j |d|j |Mddj |dS)N: rrr)rrr?rrr)rr dict_itemskeyrs rvisit_dict_exprzAliasPrinter.visit_dict_exprpsx '' KJCc7+ ++   D!1 2"U\\$5G4HI J KDIIj)*"--rcy)N...rrs rvisit_ellipsiszAliasPrinter.visit_ellipsisxsrc|jj|d|jd|jj|S)N )leftroprightrs r visit_op_exprzAliasPrinter.visit_op_expr{s9&&--%&avQqww~~d/C.DEErcT|j|jj|Sr)r(exprrrs rvisit_unary_exprzAliasPrinter.visit_unary_expr~s#$$ d+,--rc4|j|jj|nd|j|jj|ndg}|j*|j |jj|dj |S)Nr :) begin_indexr end_indexstriderr)rrblockss rvisit_slice_exprzAliasPrinter.visit_slice_exprsw*+--*CAMM  &() (?AKK  t $R  88  MM!((//$/ 0xxrc>d|jj|S)Nr)r,rrs rvisit_star_exprzAliasPrinter.visit_star_exprs166==&'((rc8|jjdSNrrrrs rvisit_lambda_exprzAliasPrinter.visit_lambda_expr||$$%;<|jst| |yyris_unreachabler visit_block)rblockrs rr{zReferenceFinder.visit_blocks## G  &$rcN|jj|jyr)rrrbr)res rrzReferenceFinder.visit_name_exprs affrcn|j|jjt||yr)add_reftyperrvisit_instance)rtrs rrzReferenceFinder.visit_instances$ QVV[[! q!rcT|jr|j|jyyr)rr)rrs rvisit_unbound_typez"ReferenceFinder.visit_unbound_types 66 LL  rcH|jD]}|j|yr)rr)rrrs rvisit_tuple_typez ReferenceFinder.visit_tuple_types!GG D KK  rc~|jD]}|j||jj|yr) arg_typesrret_type)rrrs rvisit_callable_typez#ReferenceFinder.visit_callable_types3;; C JJt   $rc|jj|d|vr6|jddd}|jj|d|vr5yy)N.rr)rrrbrsplit)rrs rrzReferenceFinder.add_refsG hXosA.q1H IIMM( #Xorrk)r|rrr)r~r7rr)rrgrr)rrjrr)rrhrr)rrfrr)rrrr) rrrrrr{rrrrrrrPrQs@rrqrqs.;$'"!  $rrqceZdZdZ d. d/fd Zed0dZd1fd Zd2dZd3dZ d4dZ d5dZ d6d Z d7d Z d8d Zd8d Zd9d Zd:fd Zd;dZd;dZddZd?dZd?dZd@dZdAdZd?dZdAdZdBdZdCdDdZ dE dFdZ dGdZ!dHfd Z"dId!Z#dJd"Z$dKd#Z% dL dMd$Z&dNd%Z'dEdOd&Z(dPd'Z)dQd(Z*dd)dRd*Z+dSd+Z,dTd,Z-dUfd- Z.xZ/S)VrNz#Generate stub text from a mypy AST.ct|||||g|_gg|_t|_g|_||_t|_ d|_ d|_ d|_ y)NFr) rr _decorators_varsr_state _class_stackanalyzedr_ method_namesprocessing_enumprocessing_dataclassdataclass_field_specifier)r_all_rrrrrs rrzASTStubGenerator.__init__sb >PQ&(')d  ,.  &)e$$)!:<&rc<|jr|jdSdS)Nr)rrs r_current_classzASTStubGenerator._current_classs (,(9(9t  $CtCrc|j|_|j|_|jt |t ||_t|!||jyr) r module_namerset_defined_namesrXrsreferenced_namesrvisit_mypy_filecheck_undefined_namesrrrs rrz ASTStubGenerator.visit_mypy_file"sT::FF  1!45 5a 8 " ""$rcd}|jD]}t|ts|j|jj |jj rO|j||s5|j|j|jjsd}|jjr|j|j|jy)zD@property with setters and getters, @overload chain and some others.FTN) rrr"is_private_namefuncrrprocess_decoratorrf is_overloadclear_decorators)rroverload_chainrs rvisit_overloaded_func_defz*ASTStubGenerator.visit_overloaded_func_def*sGG (DdI.##DIINNDII4F4FG  " "4 (!##DII.99((%)N&&##DII.%%' (rc|j||}|j||}|j|}t|j|||Sr)_get_func_args_get_func_returnformat_type_argsrKr)rfunc_defctxrretname type_argss rget_default_function_sigz)ASTStubGenerator.get_default_function_sig>sK""8S1''#6))(3 8==$CCrc Dg}|jtv}d}t|jD]\}}|j}|j } |j} t |jtr|jj|nd} |dk(xr| dk(} |dk(xr| dk(} d}| r.| s,| s*t t| ts|j| }|r|jr|dz }| jr,td|Ds|j!t#dd}|j$rP|s|j'|j$d }|j)|j$\}}|r.t+|d kr |}n| t,k(rd| } n| t.k(rd | } |j!t#| |t1|j$| |r|j3|t#d |j4t7d|Drt9|j|j4j:|Dcgc]}|jc}}|jdk(r6|j<j?d|j<jAd||}|Scc}w)Nrrclsrc3RK|]}|jjd!yw)rN)rrr rs rrz2ASTStubGenerator._get_func_args..as*T388+>+>s+C*Ts%'rr#Fcan_be_incompleter)default default_value/c3XK|]"}|jduxr|jdu$yw)NF)rrrs rrz2ASTStubGenerator._get_func_args..vs/. :=CHH  5!5 5. s(*__exit__types)!rrI enumerate argumentsvariablerrunanalyzed_typerfrrkreprint_annotationpos_onlyis_namedanyrrJ initializerget_str_type_of_nodeget_str_default_of_noderrrrinsert class_infoallrWself_varr add_importr)rrrractually_pos_only_argspos_only_marker_positioniarg_varrrannotated_type is_self_arg is_cls_argtypenamerpotential_defaultvalidrnew_argss rrzASTStubGenerator._get_func_argsDsq"#/J!J#$  -( GAt--C99D88Da//>!!++A. q&3TV^Ka1DEMJ#'Hk*"/."A7K#44^DH%$--(A-(}}s*Tt*T'T F3K(G#889I9I]b8cH+/+G+GHXHX+Y(!5S!23s:/G!4&z"D6{ KKtXtD4D4D/EU\] M( R $ KK0&+ > >> %#. AE. + .#..113MCHH3MHxx:%##..w7##009# 4Ns8J c|jdk7rmt|jtrStt |jj t ry|j|jj S|jtk(s|jtvryt|j}||St|s t|r|jd}d}d}d}t|r|jdx}}nYt|D]K\}} |j &t#|j s|jd}| s;|jd}Mt%|r|jd}||d}|d|d|d|dS| |d|d|dS|d|dSt%|s|jt&k(ryy)Nrzcollections.abc.Generatorrrrrr)rrrrfrkrrerabstract_statusrr|rXr^r_rr\r,rur]r) rrrrgenerator_name yield_name send_name return_namer, in_assignments rrz!ASTStubGenerator._get_func_returns 66Z Jq/@/@,$O/!*;*;*D*DEwO,,Q->->-G-GHH   +qvv9R/R'/  N  "&?&B!]]+FGNJ$(I&*K(+)-7M)NN Y+@+CJ'D-yy,\$))5L%)]]3I%J $$(MM2H$I J $A&"mm,BC &$ &I():,b 2k]RSTT&():,b 1EE():,a88#A&1+<+< +Lrc|jjsy|jjd}t|tr0t|jtr|jj Sy)Nr)bodyrr'r,r?r)rrr,s r_get_func_docstringz$ASTStubGenerator._get_func_docstringsJyy~~yy~~a  dN + 499g0N99?? "rc|jxr;|jxr-|jj|jj }|ry|j |j|jsB|j|js'|j|jr|js|jy|jr)|jttfvr|j!d|jsLt#|}|D]<\}}}||j$vr|j'|||}|s,|j!|>|j(rgt+|j,r$|j,dj.j}nd}d} |j(D]} t1| j|| } nd} t3|j4|j|j7||j8t:k7| } |j=|j|j?|| } |jA| |jB| } |jE| |jF|jH| jJD]}|j!|dz|jt|_ y)N rr)parent)rr docstring is_abstractr) is_coroutine decoratorsr)&rrinforTrplugin_generatedrr is_not_in_allis_recorded_namerr is_top_levelrrrrbfind_self_initializersrget_initrrrrrQrRrrrr record_namerget_signaturessig_generatorsformat_func_defrrr)rris_dataclass_generated self_initsinitr annotation init_coderr class_defr default_sigsigsoutputs rrfzASTStubGenerator.visit_func_defsU MM ad77 aAFFLL2277!+/J!.. T &y~~x S  TJ((..q1))\9!    33As; "";0C0CSI** q~~$:J:JVYVcVc+  $F HHVd] # $  rc|j|jj|jjry|j ||j |jyr)rrrrrrfrs rvisit_decoratorz ASTStubGenerator.visit_decoratorsE    QVV__ =  q! AFF#rcd|j_|jD]0}|}t|tr |j }t|t tfs9t|}|j|}|dvr|j|dm|dvr%d|j_ |j|d|dk(r)|j|dt|j_ |dvr|jdd }|s|jj!d |t#d d }|j|d|j|xsd d dt|j_ K|t$vr&|j|dd|j_y|j'dr|j|d|t(vr:t+|}|j,j/d|j1|t|t tfst+|}|j,j/d|j1|3y )zsProcess a series of decorators. Only preserve certain special decorators such as @abstractmethod. F)zbuiltins.propertyzbuiltins.staticmethodzbuiltins.classmethodzfunctools.cached_propertyT)r)zasyncio.coroutinezasyncio.coroutines.coroutineztypes.coroutinezabc.abstractmethod)zabc.abstractpropertyzabc.abstractstaticmethodzabc.abstractclassmethodrrabcz abc.abstractNz.abstractmethod)z.setterz.deleter@)rroriginal_decoratorsrrrr7r5rr add_decoratoris_awaitable_coroutinerr rpartitionrrrrarr`rrrr) rr decoratordrr abc_modulebuiltin_decorator_replacementps rrz"ASTStubGenerator.process_decorators6 #../ CIA!X&HHa(J!78)!,H((+H ""8$"? 15-""8$"?11""8$"?)4& &005a8 !''225908^9L9N0O-""#@u"U""j&9E%:/#JY]"^)4&^+""8$"?%)"""#:;""8%"@66 &  ''!I,<, &  ''!I,<,x {5'EF  # #  11!++>I HH ~i[3 4   " ==&CA&FFdF(,D %-1-B-BD * "   2aff% t||  !{{k)co$& S!,,#'<<#3CR#88#C R %DKDKE$)!)+& b!$rc Bg}t|}|j|jzD]}t|tt fr0|j |dk7s/|jt|Jt|tr!|j|j|{t|ts|j|r|j|}t|jdtsJ|jdj }|"|j|j#d dj%d|D}|j#d}|j|d|d|d O|j'|r"|j|j||j|j#d|j(j+D]6\} } | d k(r | j|xsd } |j| d | 8|S) z%Get list of base classes for a class.zbuiltins.objectrrrc34K|]\}}d|d|dyw)rrrNr)r frs rrz2ASTStubGenerator.get_base_types..s"*Qtq!Qqe2aS?*Qtyping.NamedTuplerz, [z])rr#r)rbase_type_exprsremoved_base_type_exprsrr7r5rrrr0rr is_namedtuple_get_namedtuple_fieldsrr?rrris_typed_namedtuplekeywordsr) rcdefr)rr nt_fieldsr fields_strnamedtuple_namerrprocessed_values rrzASTStubGenerator.get_base_typesqs "  ((4+G+GG MD$: 67$$T*.??%%&8&>?D),!!$++a.1D(+%%d+ $ ; ;D AI%diilG<<<#yy|11H ("))$--8N*OP !%*Qy*Q!QJ&*mm4G&HO%%(98,c*UW&XY--d3%%dkk!n5%%dmm4J&KLA MB ==..0 ;KD%{"#ll1o6O   a'89 :  ; rcg}t|}|jD]}|j|rK|j|j ||j j t|d|_|j|sq|j|j ||j j t||S)NT) rr is_dataclassrrrrrris_dataclass_transform)rr8rrr s rrz%ASTStubGenerator.get_class_decoratorss "   HA  #!!!((1+.##001CA1FG,0)**1-!!!((1+.##001CA1FG Hrcbt|tr |j}|j|dk(S)Nzdataclasses.dataclass)rrrrrr,s rr>zASTStubGenerator.is_dataclasss, dH %;;D  &*AAArct|tr |j}|j|tvryt |x}d|_|j|_yy)NTF) rrrrr`rHrr%r)rr,r,s rr?z'ASTStubGenerator.is_dataclass_transformsX dH %;;D   T "&? ?1$7 7D D(,D %-1-B-BD *rc>|jst| |yyrryrs rr{zASTStubGenerator.visit_blocks  G  " rcg}|jD]}t|trt|jtr|j |js|j |jr.|j||j|jd|j|jr.|j||j|jdt|tr|j|jr|j|jst|jxrt|j dddk(}|r |j#||jdk|js|j#||jt|t$t&frM|j(}t|jt*r|jj(}n dgt-|z}n|g}|jg}d}d}t/||D]\} } t| ts|j1| j|j| } | sAd}|s/|j3r|j4t6t8fvrd| z} d}|j;| |j=| j|j|t?|r t8|_yy)NFr TypeAliasT)is_explicit_type_aliasr) r[rr7rvaluerr4r6process_namedtupler is_typeddictprocess_typeddictis_alias_expressionrrrgetattrrprocess_typealiasrAr4rrhrrrrrrrrbrr) rrfoundlr\rFrrr(foundrrrs rrhz&ASTStubGenerator.visit_assignment_stmtsbii/ !F&(+ 188X0N%%ahh/43K3KAHH3U++FAHH=MM%($$QXX.**6188<MM%(68,,,QXX6,,V[[9%%V'!&&&$*G;*V'***6188TX*Y((**6188<&9h"78 a//;9:9J9J9P9PK#'&3u:"5K 001 CE$'{$; 4 jdH-==AHHjID $"t'8'8':t{{SXZ]R^?^#'$;D"&C((3 4 MM% _/ !b v;DK rc>|j|jdk(S)Nzcollections.namedtuple)rrrAs rr4zASTStubGenerator.is_namedtuples  -1IIIrcD|j|jtvSr)rrrdrAs rr6z$ASTStubGenerator.is_typed_namedtuples  -1GGGrc^|j|r|jd}t|tr+|jj ddj }nXt|ttfrAg}|jD]/}t|tsy|j|j1ny|r#|jd}|Dcgc]}||fc}SgS|j|r|jd}t|ttfsyg}t|}|jD]y}t|trt|jdk(sy|j\}} t|tsy|j|j| j|f{|Sycc}w)Nrrr&rr)r4rrr?rreplacesplitr4rArrrr6rrr) rcall fields_arg field_namesfield incomplete field_namefieldsr field_types rr5z'ASTStubGenerator._get_namedtuple_fieldss   d #1J*g.(..66sC@FFH J9(=> '--4E%eW5#&&u{{34 !]]+AB CNOZZ0OO  % %d +1Jj8Y*?@,.FT"A#)) H"5)4U[[9IQ9N).& J!*g6 z//1B1B11EFG  HM'Ps F*c |jtk(r|jdt|jdt s|j |y|j|}||j |y|jd}|jd|jd|d}t|dk(r |j|dt|_y|jttfvr|jd|j|d|D])\}}|j|jd|d |d+t|_y) Nrrr1rr):r r)rrrbrrr?annotate_as_incompleter5rrrrrr)rr\rGr[r+rf_namef_types rrHz#ASTStubGenerator.process_namedtuple!s$ ;;%  HHTN&++a.'2  ' ' / ,,V4 >  ' ' /  12||nF6;;-qrB v;!  HH {&) *%DK{{5%.0 HH {"% &"( DDLL>fXRxrBC DDKrcD|j|jtvSr)rrrbrAs rrIzASTStubGenerator.is_typeddict;s  -==rc |jtk(r|jdt|jdt s|j |yg}d}t|jdkDr|jdtk(rt|jdts|j |y|jdjD]E\}}t|t s|j |y|j|j|fGt|jdkDr|jdtk7s|jddk7r|j |y|jd}nlt!|jdd|jddD]C\}}t|t"s|j |y|dk(r|}1|j||fEt%|} t'd|DrH|j|j(|j*d|j-| dt.|_y|j1d} || d |j-| z } |j(d |j*d | d } t|dk(r |j| d t2|_y|jt4tfvr|jd|j| d|D]8\} } |j|j(d| d| j-| d:t|_y)Nrrrrtotalc3rK|]/\}}|j xstj|1ywr) isidentifierkeyword iskeyword)r r _s rrz5ASTStubGenerator.process_typeddict..`s3TFC3##%%?):):3)??Ts57 = ztyping_extensions.TypedDictz, total=rrr^rr_r)rrrbrrr?r`rrrr#rrrrrrrrrrrrrrrr)rr\rGrre attr_name attr_typearg_namerrr+rr key_types rrJz"ASTStubGenerator.process_typeddict>s ;;%  HHTN&++a.'2  ' ' / .0#' v{{ a F$4$4Q$77$Bfkk!nh7++F3(. A(<(< ;$ 9!)W5//7 iooy9:  ; 6;;!###A&)3v7G7G7Jg7U//7 A!$V%5%5ab%96;;qr?!K 2 #!(C0//7w&ELL(C1 2   TeT T HH ~fkk]#fmmA6F5GrJ KDKMM"?@E 8ELLO#455<<.v{{m1UG2FI5zQI;f-.) ;;uen4HHTNI;b)*%*QMCHH ~T#b9K8LBOPQ# rc|jd}|j|j|jd|dt|_y)Nrrr)rrbrrrr)rr\rYs rr`z'ASTStubGenerator.annotate_as_incompleteus=]]#9:  DLL>&++b B?@ rTct|tr"j|jtvryt|t r| St|t r=|jdvry|jdk(r| Sj|j St|tryjrm|xr%t|jtttfxst|jtxr&j!|jj" St|t$r\t|j&t r%j|j&jrit|j&trj!t)|j&sމj|j&j+drt|j,t.r|j,j0}n |j,g}|j&jdk(rIt3|dk(r;|\}}t|t r|g}n"t|t4r|j0|gz}nyt7fd|DSt|t8rK|j:d k(r<j=|j>d xrj=|j@d Sy) zReturn True for things that look like target for an alias. Used to know if assignments look like type aliases, function alias, or module alias. TTrueFalseFr)z builtins.ztyping.ztyping_extensions.zcollections.abc.Callablerc3DK|]}j|dyw)F top_levelN)rK)r rrs rrz7ASTStubGenerator.is_alias_expression..s!Ut//U/CUs |rw)!rrrrrcr%r7rrr5rrr*r"r6rCis_private_memberrr0rrrrrArrr4rr8r(rKr'r))rr,rxindicesrrets` rrKz$ASTStubGenerator.is_alias_expressionzsG dH %$*;*;DKK*HL_*_ l + = h 'yy--f$$}$// ::: j )dmmJtyy7Ix*HI3dii2A,,TYY-?-?@@  A i (  8 ,T5I5I$))..5Y499j1../A$))/LM%%dii0;;V $**i0****::,yy~~+G 0A# cdL1"eGh/"jjC50G UWUU U f %$''S.++ U,H**4::*G Hrct|}|rX|jjd|j|j|j d|j |dn<|j|j|j d|j |d|j|j |jdj|j y)NrEz: TypeAlias = rrkr) rrrrbrrrrrr)rr\rGrFrs rrMz"ASTStubGenerator.process_typealiass   !    , ,[ 9 HH ~fkk].qAQ@RRTU V HH ~fkk]#fmmA6F5GrJ K % 2fkk*rc dt|}|jj}|jj}|j |}|j |j d||d|j|d|j||jdj|y)z7Type aliases defined with the `type` keyword (PEP 695).ztype rkrrN) rrrr,rrbrrrrr)rrrrrGrs rrjz&ASTStubGenerator.visit_type_alias_stmts  vv{{))!,  DLL>tfYKs6==;K:LBOP  2d#rcF|jd}t|trrt|jdtrUt|jdt r8|jdj dk(rd|jdjvryt|%|y)Nrrr__main__) r,rroperandsr7r?rrr visit_if_stmt)rrr,rs rrzASTStubGenerator.visit_if_stmts~vvay t^ ,4==+X64==+W5 a %%3dmmA.444  a rc`|jdd|jz|jdy)Nzfrom rz import * )add_import_linerelativeidrs rvisit_import_allz!ASTStubGenerator.visit_import_alls+ uS1::%5$6qttfKHIrct}g}t|j|j\}}|jrMt j j|j|||jjd\}}|s|}n|}|dk(ry|jD]k\}} |dk(r|jtdg'|j||| dur|jj||} |j!|| fm|jj#d|z|z||j$dj'd|D|D]\}} |j)| xs||j*rN|jD cgc]%\}} ||j*vr| ||j,vr|'} }} |j/| yycc} }w)Nz .__init__.py __future__six)rNrrc3.K|] \}}|xs|ywrr)r raliass rrz5ASTStubGenerator.visit_import_from..sL eemtmLs)r_translate_module_namerrrr"r#correct_relative_importrrrT visit_importr-should_reexportrreexportradd_import_fromrextendrrIGNORED_DUNDERSupdate) rrexported_names import_namesrr full_moduleokras_namerrTs rvisit_import_fromz"ASTStubGenerator.visit_import_froms#&5 0qzzB   "ii??  (FDII4F4F~4VOK$  K \ ! WW 1MD'u}!!&-"9:##D+wd7JK##,,T2   w 0 1 ++C(NV,C\R 2L|LL' ,KD%   U]d + , ::$%77D%4::%%-DH\H\<\E  ! !% ( s *G c|jD]i\}}|jj||||jdd}n|}|jdj ||j |ky)Nrrr)idsrrrTrrr)rrras_id target_names rrzASTStubGenerator.visit_importso *IB    * *2u 5} hhsmA. # JJrN ! !+ .   [ ) *rc||jdvry|j|s|j|ry|jdj|||j |}t |t r|js|jdk(r|jjjd|jvr}|j|}|d|dz }nb|jr(|j|\}}|j |d|dS|j"r|j |dS|j|}|j%|}|j |d ||dS) zReturn initializer for a variable. Return None if we've generated one already or if the variable is internal. rNrrrrkrz = ... r)rrrrrrrjrrr module_forgetTYPING_MODULE_NAMESrrrrrget_assign_initializer)rr\rGrr final_argrrjs rrzASTStubGenerator.get_inits] TZZ^ #    '4+=+=f+E 2f%  !,,Z8H:{3"OOw.''2266w?4C[C[[!55f= a {!,,  ! !!99&ANKll^F83{m2> >  & &ll^F884 4008H11&9 ,,xr(K=CCrc|jsy|jjr1|jjjrt|tsy|j r}t|t rP|j|j}||jxstvrt|}d|j|St|tr |jsyy)z5Does this rvalue need some special initializer value?r z = ...rk)rris_named_tuplerr@rrrrrrGrrno_rhs)rrGrrs rrz'ASTStubGenerator.get_assign_initializer*s""    $ $##((77vx0  $ $&(+,,V]]; > > \B\]$T*A q!1 233vx0V]]rcz|r|jj||jjd|y)Nr)rrrr)rrrs rr zASTStubGenerator.add_decoratorDs3     , ,T 2 !D6 +rc8|jjyr)rclearrs rrz!ASTStubGenerator.clear_decoratorsIs  rcN|jd}tfd|DS)Nrc3@K|]}j|ywr)r)r partrs rrz5ASTStubGenerator.is_private_member..Ns@$4''-@r)rTr)rrpartss` rrzz"ASTStubGenerator.is_private_memberLs"s#@%@@@rrc|j|}t|tryt|tryt|tryt|t ryt|t ryt|tra|jdvrSt|j|jt s)t|j|jt ryt|tr|jdvry|r|jd Sy ) Nintrbytesfloatcomplex)-+rrrrr )maybe_unwrap_unary_exprrr1r?rr(r r8r(r'r)r7rr)rrGrs rrz%ASTStubGenerator.get_str_type_of_nodePs--f5 fg & fg & fi ( fi ( fk * ff %&))z*A$66v{{C[QU_,,V\\:KV! fh 'FKK;L,L ==!78 8rcht|ts|Sd}|j|vrjt|trX|j|vs*t|jtt t tfs |S|j}t|trX|S|jdk(rt|tr|jdk7s t|jttfs |St|jtr|jjdvr |S|j}t|tr|S|S)a Unwrap (possibly nested) unary expressions. But, some unary expressions can change the type of expression. While we want to preserve it. For example, `~True` is `int`. So, we only allow a subset of unary expressions to be unwrapped. )rrnotrr) rrDr(r,r1r(r r7r)rr,math_opss rrz(ASTStubGenerator.maybe_unwrap_unary_expris $ *K 77h T9-77(**IIKK3Kyy T9- K 77e T9-77e#:dii(IAV+WKdii2tyy~~M^7^Kyy T9- K rct|tr|jdvr|jdfSyt|ttfr|j dfSt|t rGt|jttfr&|j|jj dfSyt|trt|j dfSt|tr*dt|j jddzdfSt|trig}|jD]+}|j|\}}|sy|j!|-t#|dk(rdnd}d d j%|z|z}|dfSt|t&rWg}|jD]+}|j|\}}|sy|j!|-d d j%|zd z}|dfSt|t(rZg}|jD]+}|j|\}}|sy|j!|-|rd d j%|zdz}|dfSyt|t*ryg}|jD]M\}} |y|j|\} } |j| \} } | r| sy|j!| d| Od d j%|zdz}|dfSy)zGet a string representation of the default value of a node. Returns a 2-tuple of the default and whether or not it is valid. )rrsrtTrz\\\rz,)rrrrrrrr)r#F)rr7rr1r(rrDr,r(r?rrrSrArrrrrr4r;r#)rrGitems_defaultsr~ e_defaultrclosingrkv k_defaultk_valid v_defaultv_valids rrz(ASTStubGenerator.get_str_default_of_nodes fh '{{77{{D((nm) 4 5ll^d* *  *&++';< ))V[[%6%6$78$>>dc ( %t+ +  *fll+33FDAA4G G  *N\\ %#'#?#?#B 5PO%%i0  % #&n"5":$ . 99GC}$  )N\\ %#'#?#?#B 5:9%%i0  %  . 99C?}$  (N\\ )#'#?#?#B 5&%%%i0  ) "!DIIn$==CG"D=( )N %19&*%A%A!%D" 7%)%A%A!%D" 7G  %% 2i[&AB % . 99C?}$rc|j||dz|z}|s<||jvr.|jr||jvr|s|d|jzvryt ||||S)Nr)rasyncioT)rrrrrrr)rrr name_is_alias is_privaters rrz ASTStubGenerator.should_reexportst))$ c0AD0HI D111ZZ44+?+?#?#58P8P#PP w&t[-HHr)NFFFF) rrrrrrrrrrrr)rzClassDef | None)rr6rr)rr9rr)rr*rrRrrK)rr*rrRrz list[ArgSig])rr*rrRrr)rr*rrrm)rr"rr)r,r&rrrl)r8rrrr,r&rr)rrrrrn)r,rrr)rUrrzlist[tuple[str, str]] | None)r\r7rGrrr)r\r7rr)T)r,r&rxrrr)F)r\r7rGr&rFrrrro)rr,rr)rr.rr)rr/rr)rr-rrr)r\rrGr&rz Type | Nonerr)rGr&rr)rrrrrrrk)rrrr)rGr&rrrr)r,r&rr&)rGr&rztuple[str, bool])rrrrrrrr)0rrrrrrrrrrrrrrfrrrrcrrr>r?r{rhr4r6r5rHrIrJr`rKrMrjrrrrrrr rrzrrrrrPrQs@rrNrNs-#' %!#( === =  = ! = =.DD%((D @D(T8t$ 5Cn '4%l*X B # 5nJH"H 4>5$n 5pTY + +(2 +LP +  +$ !J#)J*JN"D"D#-"D;F"D "DH4, !AUY2 D>@ I IrrNcft}|D]}t|tr|j|j/t|t r&|j|j jet|tsv|jD]}|jt|g|Sr) r_rr*rbrr"rr9rrr)rresultdefnrs rrrs UF9 dG $ JJtyy ! i ( JJtyy~~ & / 0  9 /78 9 9 MrceZdZddZddZy) SelfTraversercg|_yr)resultsrs rrzSelfTraverser.__init__s BD rc&|jd}t|trrt|jtrW|jj dk(r=|j j|j |j|jfyyyy)Nrr) r[rr5r,r7rrrrGr)rrr\s rrhz#SelfTraverser.visit_assignment_stmtso1 vz *6;;1   F* LL  ahh8I8I J K+2 +rNrkrn)rrrrrhrrrrrsELrrcPt}|j||jS)znFind attribute initializers in a method. Return a list of pairs (attribute name, r.h.s. expression). )rrr)fdef traversers rrrs# IKK    rct|tr |jSt|tr$t |j d|jSt S)Nr)rr7rr5rr,r)rs rrrsD!Xvv Az "$QVV,-Qqvvh77rcp|Dcgc]&}|jt|jr%|(c}Scc}wr)ris_blacklisted_path)rrs rremove_blacklisted_modulesr s7$  (;CVW]WbWbCc  s&33cg}g}|D]:}t|jr|j|*|j|<||fSr)rrr)r py_modules pyc_modulesmods rsplit_pyc_from_pyrsPJK# sxx   s #   c " #  ""rc4tfdtDS)Nc3>K|]}|tdzvyw)rN)normalize_path_separators)r substrrs rrz&is_blacklisted_path..s!Zfv3D9D@AZs)rrsrs`rrrs ZPYZ ZZrcPtjdk(r|jddS|S)Nwin32rr)sysplatformrSrs rrrs#&)llg&=4<<c "G4GrcN|js |jr|jr9t|j|j|j|j }g}nt |j|j|j|j\}}nF t|j|}|Dcgc]"}t|j|j $}}g}t#|}t%|\}}|||fS#t$r}tt||d}~wwxYwcc}w)zsCollect files for which we need to generate stubs. Return list of py modules, pyc modules, and C modules. N)rmrrfind_module_paths_using_searchrrfind_module_paths_using_importsrrr rr SystemExitrrrrrr) options mypy_optsr c_modules source_listr~mpyc_modpy_mods rcollect_build_targetsr#s7??   7!1!173F3FHYHYJ+-I%D!1!17??GMM% !J  ,,W]]IFK=HHqj1662H H +J7J' 3OGV 7I %%! ,SV$! + ,HsC<3'D"< DDDc 6t5}g}g}tt|||}||z}|Dcgc]}t|r|}}|D]N} t |||} | s|jt|.| \} } |jt|| | P||fcdddScc}w#t $rX} t j} |rtjj| |st|| j| Yd} ~ d} ~ wwxYw#1swYyxYw)zFind path and runtime value of __all__ (if possible) for modules and packages. This function uses runtime Python imports to get the information. N)rlistr[is_non_library_modulerUrP traceback format_excrstderrwriterZmessagerr)rrmrrrrrrOrrr~tbrrs rrrCs% %G') &( ]7Hg>?E/" *?*DC   FC 5gsGL  C1$*!k!!*S$ "DE F9$/%%   ))+JJ$$R("3 26  %%sN$DB&B&D B+AD&D+ D 4ADDD  DDc|jdry|jddjdryd|vs d|vsd|vsd |vryy ) z0Does module look like a test module or a script?) z.testsz.testz.testing_tests _test_suite test_util test_utils test_basez .__main__z .conftestz.setupTrrtest_z.tests.z.test.z .testing.z .SelfTest.F)rrTrrs rrrds]   ||C''0V v  & 6 ! rctD]c}dD]\}|d|}|jd|zs||k(r |r|dfccSd|zdz|vs8|dz|jd|zdzdzdfccSe||fS)N)z six.movesrrrr)rrr partition)rrpkgaltrs rrrsN% NCuAcU^FsV|,61AhAv V|c!V+Sy6#3#3C&L34F#G#JJAMM  NN 8 rcg}ttjj|d}t dt |zddt |}t |dd}|D]O}|j|} t| trt|| d} n| } |jt|| Q|D]m} |j| } | rt| tj| D cgc]"} t| j| j $}} |j#|o|D cgc]} t%| jr| }} |Scc} wcc} w)aFind sources for modules and packages requested. This function just looks for source files at the file system level. This is used if user passes --no-import, and will not find C modules. Exit if some of the modules or packages can't be found. N)rr)fscacher)rr"rdefault_data_dirrtupler find_modulerrrTrrfind_modules_recursive NOT_FOUNDrrrr)rrmrrr typeshed_path search_pathscacherm_result module_pathpackagep_resultrsourcess rrrs7 "F$TZZ%@%@%BItTMvk(::BE-DXYL L$ EE7$$V, h 4 5  *K"K j567//8  "6"@"@ A9ABA:ahh/BB g  GA'.*s<1ahh.Fs)Tfv}}'' S(89Ts25)rDrrrrrzProcessed %d modulesrz Generated zGenerated files under )r*rsortedrBrrrrrSr#basenamerrrrVrrPrrrrrrrMrrr;rSr() rrrrrrLall_module_namesrrK num_modulesrs @rgenerate_stubsrX%sW%I)>w )R&J Y{*Y6K< <<j'*<*|j|}tjdd?}tj|_ |j|jzr|jr|j!d@|j"r|j$r|j!dA|j&r|j(r|j!dBt+j,|j.dCDt1dQidE|dF|j2d|j&dG|j4dH|j6j9dIdJ|jdK|j:d |j(dL|j<d'|j.d/|jd5|jd7|jdM|j$dN|j"dO|j>dP|j@S)RNrr)progusage descriptionfromfile_prefix_charsz--ignore-errors store_truez7ignore errors when trying to generate stubs for modules)actionhelpz --no-importz{don't import the modules, just parse and analyze them (doesn't work with C extension modules and might not respect __all__)z --no-analysisz --parse-onlyrzdon't perform semantic analysis of sources, just parse them (only applies to Python modules, might affect quality of stubs. Not compatible with --inspect-mode))destr_r`z--inspect-moderzimport and inspect modules instead of parsing source code.This is the default behavior for c modules and pyc-only packages, but it is also useful for pure python modules with dynamically generated members.z--include-privatezqgenerate stubs for objects and members considered private (single leading underscore and no trailing underscores)z --export-lesszQdon't implicitly export all names imported from other modules in the same packagez--include-docstringsz*include existing docstrings with the stubsz-vz --verbosezshow more verbose messagesz-qz--quietzshow fewer messagesz --doc-dirPATHr zuse .rst documentation in PATH (this may result in better stubs in some cases; consider setting this to DIR/Python-X.Y.Z/Doc/library))metavarrr`z --search-pathzaspecify module search directories, separated by ':' (currently only used if --no-import is given)z-oz--outputroutz2change the output directory [default: %(default)s])rcrarr`z-mz--modulerMODULErz5generate stub for module; can repeat for more modules)r_rcrarr`z-pz --packagePACKAGErmz7generate stubs for package recursively; can be repeatedrrz-generate stubs for given files or directories)rcnargsrar`z --versionversionz %(prog)s )r_rhrz3May only specify one of: modules/packages or files.z.Cannot specify both quiet and verbose messageszACannot specify both --parse-only/--no-analysis and --inspect-modeT)exist_okrrrrr/rrrrrrrr)!argparseArgumentParserHEADER DESCRIPTION add_argumentr"rh __version__ parse_argsr version_info executablerrrmrerrorrrrrr#rJrrFrrrrTrrrr)rparsernsrs r parse_optionsrvjs  $ $ f+UXF  F    .   X  B   `   9  k,Eab i CXY (  8     A     D    F   <   I{T\\=U=U/U   4 B  !$I^^BN zzBKKBHH JK xxBJJ EF zzbmm XYKK -   ,,      NN((-   NN  && == ** ==    hh   hh  NN! "00# rc tjjddtjvs2dtjvs tjj ddt |tjddn|}t|y)Nrr rrr) r"r#check_python_versionrrrrvargvrX)rrs rmainrzs_II""9- #((NcSXXo 2DLCHHQRLdCG7rr)rVr6rset[str])r[zIterable[Expression]rz Iterator[str]r)rzlist[Statement]rr{)rr)rz)list[tuple[str, Expression, Type | None]])rr&rr)rlist[StubSource]rr|)rr|r)tuple[list[StubSource], list[StubSource]])rrrr)rrrr)rrFrrrz;tuple[list[StubSource], list[StubSource], list[StubSource]]) rrrmrrrrrrr})rrrr)rrrrrztuple[str, int]) rrrmrrrrrrr|)r(rFrr)rrr*rrr) rr|rrr*rrrrr)rrrKrrrrrrrrrrrrrrLrrr)rrFrr)rrrrFr)rrrr)rrrrjrhr#os.pathrrcollections.abcrrtypingr mypy.buildr"mypy.mixedtraverser mypy.parsemypy.traverser mypy.util mypy.versionr mypy.errorsrr mypy.find_sourcesr r mypy.modulefinderr r rrrmypy.moduleinspectrr mypy.nodesrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrE mypy.optionsrFrmypy.plugins.dataclassesrGmypy.semanal_sharedrHmypy.sharedparserI mypy.stubdocrJrK mypy.stubgencrLrM mypy.stubutilrNrOrPrQrRrSrTrUrVrWrXrYrZr[r\r]r^r_ mypy.typesr`rarbrcrdrerfrgrhrirjrk mypy.visitorrlrr__annotations__rsr|rrrrrrrrrrrXrZrTraverserVisitorrSrsrumixedtraverserMixedTraverserVisitorrqrNrrrrrrrrrrrrrr*r9rBrPrXrlrmrvrzrrrrrs&P#  .,C:44444444444444j0?=8,M     %]\ 5 $5 ,5,5^  8ueu" U" U E  eP/;s#P/f 8$t~~66$. >'$d))??'$TTI($..*I*ITIn  LDNN33 L #[H& &!,&@&@% %"+%6:%CG%.%B< "+:CP_B,,S S.2SBMSX\S S:!$/ / / /  /  ///// /d7Pt = HV zFr