NL i!ddlmZddlmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZmZddlmZddlmZddlmZddlmZGddeZy ) ) annotations)AssignmentStmtBlock Decorator ExpressionFuncDefFuncItemImport LambdaExpr MemberExprMypyFileNameExprNode SymbolNodeVar)ExtendedTraverserVisitor)Type)Errors)MissingTypesVisitorceZdZdZ dfd ZddZdfd Zdfd Zdfd ZddZ ddZ dfd Z dfd Z dd Z dd Zdd ZddZddZxZS)PreBuildVisitoraMypy file AST visitor run before building the IR. This collects various things, including: * Determine relationships between nested functions and functions that contain nested functions * Find non-local variables (free variables) * Find property setters * Find decorators of functions * Find module import groups The main IR build pass uses this information. ct|i|_i|_g|_t |_i|_i|_i|_ ||_ i|_ d|_ ||_ ||_t||_yN)super__init__free_variablessymbols_to_funcsfuncsset prop_settersencapsulating_funcs nested_funcsfuncs_to_decoratorsdecorators_to_removemodule_import_groups_current_import_grouperrors current_filermissing_types_visitor)selfr'r(r$types __class__s c/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/irbuild/prebuildvisitor.pyrzPreBuildVisitor.__init__(s @B=?&( +.%DF 79EG ?S! AC!48"$ &2%8%?"c2t|tsd|_y)NT) isinstancer r&)r*os r-visitzPreBuildVisitor.visit[s!V$)-D &r.c|jr%|jj|jt||Sr) is_alias_defrvalueacceptr)rvisit_assignment_stmt)r*stmtr,s r-r7z%PreBuildVisitor.visit_assignment_stmt`s6    KK  t99 :w,T22r.c@d|_t| |d|_yr)r&r visit_block)r*blockr,s r-r:zPreBuildVisitor.visit_blockgs %)" E"%)"r.c|jrt|jdtrB|jdjdk(r&|jj |j nz|jj}|j |jvr/|j|j }t|D]}||=|sy||j|j <t|1|y)Nrsetter) decoratorsr0r namer addfunccopyr$reversedr#rvisit_decorator)r*decdecorators_to_store to_removeir,s r-rDzPreBuildVisitor.visit_decoratorls >>#..+Z8S^^A=N=S=SW_=_!!%%chh/&)nn&9&9&;#88t888 $ 9 9#(( CI%i03/23/5H((2 $r.cH|j||j|yr) visit_funcvisit_symbol_node)r*fdefs r-visit_func_defzPreBuildVisitor.visit_func_defs  t$r.c&|j|yr)rJr*exprs r-visit_lambda_exprz!PreBuildVisitor.visit_lambda_exprs r.cN|jrT|jj|jdgj||jd|j|<|jj|t |||jjyN)rr! setdefaultappendr"rrJpop)r*rAr,s r-rJzPreBuildVisitor.visit_funcs~ ::  $ $ / / 2 C J J4 P'+jjnD  d # $ 4  r.c|j)|j|jj|n|g|j|<||_t||yr)r&r%rVr visit_import)r*impr,s r-rYzPreBuildVisitor.visit_importsU  % % 1  % %d&@&@ A H H M.1UD % %c *),D & S!r.c|t|jttfr|j |jyyr)r0noderrrKrOs r-visit_name_exprzPreBuildVisitor.visit_name_exprs+ dii#w 0  " "499 - 1r.c&|j|yr)rK)r*vars r- visit_varzPreBuildVisitor.visit_vars s#r.c|jsy||jvr|j|}|j|jd|r]|jd|j|<|jj |jdt j |y|j||jdr|j|yy|jd|j|<yrS)rr is_parentrrUrr@add_free_variable)r*symbol orig_funcs r-rKz!PreBuildVisitor.visit_symbol_nodeszz  T** *--f5I~~djjni8 15 2%%f-##..tzz"~suEII&Q 4::b>:&&v. ;-1JJrND ! !& )r.cp||jvry|j|}||k(xs|j||S)NF)r"rb)r*fitemchildparents r-rbzPreBuildVisitor.is_parents? )) )""5)?$.."??r.c|j|}|jj|tj |yr)rrrUrr@)r*rdrAs r-rcz!PreBuildVisitor.add_free_variables7$$V, &&tSU377?r.) r'rr(r r$zdict[FuncDef, list[int]]r+zdict[Expression, Type]returnNone)r1rrkbool)r8rrkrl)r;rrkrl)rErrkrl)rLrrkrl)rPr rkrl)rAr rkrl)rZr rkrl)rPrrkrl)r_rrkrl)rdrrkrl)rgr rhr rkrm)__name__ __module__ __qualname____doc__rr2r7r:rDrMrQrJrYr]r`rKrbrc __classcell__)r,s@r-rrs 1@1@1@7 1@ & 1@  1@f 3* %6% "".$;:@@r.rN) __future__r mypy.nodesrrrrrr r r r r rrrrmypy.traverserr mypy.typesr mypyc.errorsr mypyc.irbuild.missingtypevisitorrrr.r-rzs;" 4@@.@r.