ML i dZddlmZddlmZmZmZmZmZm Z m Z m Z m Z ddl mZddlmZddlmZmZmZmZmZmZmZGddeZd d d Z dd Zy )zLFind line-level reference information from a mypy AST (undocumented feature)) annotations) LDEF ExpressionFuncDef MemberExprMypyFileNameExprRefExpr SymbolNodeTypeInfo)TraverserVisitor)tuple_fallback) FunctionLikeInstance TupleTypeTypeTypeTypeTypeVarLikeTypeget_proper_typecLeZdZdfd Zdfd Zdfd Zd fd Zd dZxZS) RefInfoVisitorc>t|||_g|_yN)super__init__type_mapdata)selfr __class__s R/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypy/refinfo.pyrzRefInfoVisitor.__init__s   -/ cFt|||j|yr)rvisit_name_exprrecord_ref_exprrexprrs r r#zRefInfoVisitor.visit_name_expr#s % T"r!cFt|||j|yr)rvisit_member_exprr$r%s r r(z RefInfoVisitor.visit_member_expr's !$' T"r!c|jr2|jD]"}t|tst||$yt||yr)expanded isinstancerrvisit_func_def)rfuncitemrs r r,zRefInfoVisitor.visit_func_def+sC ==  1dG,G*40 1 G "4 (r!cd}|jtk7rd|jvr |j}nt|tr|j j |j}d}t|jtr|jj}|rt||}|r|d|j}|sd|j}|4|jj|j|j|dyy)N.z*.)linecolumntarget)kindrfullnamer+rrgetr&r node type_fullnamenamerappendr1r2)rr&r5typsymtfns r r$zRefInfoVisitor.record_ref_expr3s 99  !5}}H j )--##DII.CC$))W-iinn#C-"%a {3H {+   II  dii4;;RZ[ \ r!)rdict[Expression, Type]returnNone)r&r r?r@)r&rr?r@)r-rr?r@)r&r r?r@) __name__ __module__ __qualname__rr#r(r,r$ __classcell__)rs@r rrs0 ##)]r!rNct|}t|tr|jjSt|t rt |jSt|trA|jr1t|tr |jSt |jSt|trt t|St|trt |jSyr)rr+rtyper5rr8r.r is_type_objr fallbackrrr upper_bound)r;r7s r r8r8Fs # C#x xx   C "SXX&& C &3??+< dH %== S\\** C #^C011 C )S__-- r!cRt|}|j||jSr)racceptr)treervisitors r get_undocumented_ref_info_jsonrNWs$X&GKK <<r!r)r;rr7zSymbolNode | Noner?z str | None)rLrrr>r?zlist[dict[str, object]])__doc__ __future__r mypy.nodesrrrrrr r r r mypy.traverserr mypy.typeopsr mypy.typesrrrrrrrrr8rNr!r rVscR"   ,'&]%&]R" 4r!