L i& ddlmZddlZddlmZddlmZddlmZddlmZddlmZddlm Z dd lm Z dd lm Z dd lm Z dd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddl#m$Z$ddl%m&Z&ddl%m'Z'dd l%m(Z(dd!l)m*Z*dd"l+m,Z,dd#l-m.Z.dd$l-m/Z/dd%l-m0Z0dd&l-m1Z1dd l-m Z dd'l-m2Z2dd(l-m3Z3dd)l-m4Z4e5ejljod*Dcgc]}ejpd+|se9| c}Z:e:d,k\Z;e d-eeef.Z<Gd/d0Z=dJd1Z>dKd2Z?dLd3Z@dLd4ZAdMd5ZBdMd6ZCdNd7ZDdNd8ZEdMd9ZFdNd:ZG dOd;ZHdPd<Z dQd=ZIdRd>ZJ dSd?ZKe d@dA dTdBZLe dUdCZLddA dVdDZLdWdEZMdXdFZN dYdGZO dZdHZPd[dIZQycc}w)\) annotationsN)Any)Iterable)Iterator)List)Optional)overload)Tuple)Type)TypeVar)Union)version) format_type)CallExpr)ClassDef)CLASSDEF_NO_INFO)Context) Expression)FuncDef)IfStmt)JsonDict) MemberExpr)NameExpr) Statement)SymbolTableNode) TypeAlias)TypeInfo)Options)ClassDefContext)DynamicClassDefContext)SemanticAnalyzerPluginInterface)deserialize_and_fixup_type)map_type_from_supertype) CallableType)get_proper_type)Instance)NoneType) TypeVarType) UnboundType) UnionType.z^\d+$) _TArgType)boundc^eZdZ ddZddZddZe d dZy) SQLAlchemyAttributecJ||_||_||_||_||_yN)namelinecolumntypeinfo)selfr4r5r6typr8s ^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/ext/mypy/util.py__init__zSQLAlchemyAttribute.__init__?s'     c|jsJ|j|j|jt |jdS)N)r4r5r6r7)r7r4r5r6serialize_type)r9s r; serializezSQLAlchemyAttribute.serializeMs9yyyIIIIkk"499-   r=ct|jtsyt|j||j|_y)zxExpands type vars in the context of a subtype when an attribute is inherited from a generic super type. N) isinstancer7r(r#r8)r9sub_types r;expand_typevar_from_subtypez/SQLAlchemyAttribute.expand_typevar_from_subtypeVs-$))[1 +DIIxK r=cn|j}t|jd|}|d||d|S)Nr7)r:r8)copyr"pop)clsr8dataapir:s r; deserializezSQLAlchemyAttribute.deserialize_s9yy{(&)93?.s...r=N) r4strr5intr6rNr:zOptional[Type]r8rreturnNone)rOr)rCrrOrP)r8rrJrrKr!rOr1)__name__ __module__ __qualname__r<r@rD classmethodrLrFr=r;r1r1>s           L///- /  //r=r1c@ttjd|S)Nz ^__.+?__$)boolrematch)r4s r;name_is_dunderrYks t, --r=cB||jjdi|<yN sqlalchemymetadata setdefault)r8keyrJs r;_set_info_metadataraos6:DMM\2.s3r=cZ|jjdij|dSr[)r^get)r8r`s r;_get_info_metadatardss& ==  \2 . 2 23 ==r=cb|jr#|jD]}t||}||cSyr3)mrord)r8r`baser^s r;_get_info_mro_metadatarhws8 xxHH D)$4H#  r=c<|jjdiyr[r]r8s r;establish_as_sqlalchemyrksMM\2.r=ct|ddyNis_baseTrarjs r; set_is_baserpstY-r=c"t|d}|duSrmrdr8rns r; get_is_baserts y1G d?r=c"t|d}|duSrm)rhrss r;has_declarative_baservs$T95G d?r=ct|ddyN has_tableTrorjs r; set_has_tablerzst[$/r=c"t|d}|duSrxrrrss r; get_has_tabler|s {3G d?r=ct|d}|yg}|D];}tj|||}|j||j |=|SNmapped_attributes)rdr1rLrDappend)r8rKr attributesrJattrs r;get_mapped_attributesrsm3E !3 ,.J! "..tT3? ((.$ r=c<tr t||St|Sr3)mypy_14_mypy_format_type)typ_optionss r;rrs w// &&r=c `t|d|Dcgc]}|jc}ycc}wr~)rar@)r8r attributes r;set_mapped_attributesrs. 0:;9   ; >N ^#&)ggoof&=&C&C ' ",v $r=.) expr_typescyr3rFcallexprr4rs r;get_callexpr_kwargrs+.r=cyr3rFrs r;rrs r=c |jj|}|j|}t |||n t t fr|Sy#t$rYywxYwr3) arg_namesindex ValueErrorargsrBrr)rr4rarg_idxkwargs r;rrsd $$**40 MM' "E Z3z(H9M  sA AAc#K|D]q}t|tr[t|jdtr>|jdjdk(r"|j dj Ed{n|sy7 w)Nrztyping.TYPE_CHECKING)rBrexprrfullnamebody)stmtsstmts r;flatten_typecheckingrsi tV $499Q<2 ! %%)??yy|(( ( (J )sA+A<-A:. A<c6t|ttfrt|jtrv|jj r_t|jj t r;t|jj j}t|tr|Syt|jtr2t|jj}t|tr|Syt|jtr |jSyr3) rBrrnoderr7r$r%ret_typer&rtargetr)calleer target_types r;type_for_calleers&:x01 fkk7 +{{Jv{{/?/?$N*6;;+;+;+D+DEh1#O  Y /)&++*<*<=K+x0""  X .;;  r=c  t|ts|S|jdk(rCt|t |j Dcgc]}t||c}t gzS|j|j|}|vt|trft|jtrL|j}t||j Dcgc] }t|tr t||n|"c}S|Scc}wcc}w)zTake the UnboundType that we seem to get as the ret_type from a FuncDef and convert it into an Instance/TypeInfo kind of structure that seems to work as the left-hand type of an AssignmentStatement. r) rBr)r4unbound_to_instancer*rr'lookup_qualifiedrrrr&)rKr:typ_argr bound_typeargs r;rrs c; '  xx:#  BE((Kw$S'2K:,      # .D  t_ - tyy( +YY  88   "#{3(S1    5L  s C; %D c|jturI|j|j|}|y|rt |j t sJ|j S|jSr3)r8rrr4rBrr)rIrKsyms r; info_for_clsrHsW xx##""388S1 ;z#((H555xx 88Or=c |jS#t$rYnwxYwt|dr1td|jD|_|jSt|dr|j }|jS)Nrc3XK|]"}t|dr|jn|$yw)resolve_string_annotationN)hasattrr).0as r; z!serialize_type..[s8 19:++- s(*r)r@ Exceptionrtuplerr)r:s r;r?r?Us }}    sF XX    ==? 1 2++- ==?s  )r4rMrOrV)r8rr`rMrJrrOrP)r8rr`rMrO Optional[Any])r8rrOrP)r8rrOrV)r8rrKr!rOz#Optional[List[SQLAlchemyAttribute]])rr rrrOrM)r8rrzList[SQLAlchemyAttribute]rOrP)rKr!rrMrrrOrP) rz.Union[ClassDefContext, DynamicClassDefContext]rrMrrMrrMrOrP)rrr4rMrrPrOz#Optional[Union[CallExpr, NameExpr]])rrr4rMrz!Tuple[TypingType[_TArgType], ...]rOzOptional[_TArgType])rrr4rMrz%Optional[Tuple[TypingType[Any], ...]]rOr)rzIterable[Statement]rOzIterator[Statement])rrrOz#Optional[Union[Instance, TypeInfo]])rKr!r:r rOr )rIrrKr!rOzOptional[TypeInfo])r:r rOzUnion[str, JsonDict])R __future__rrWtypingrrrrrr r r TypingTyper r mypyr mypy.messagesrr mypy.nodesrrrrrrrrrrrrrr mypy.optionsr mypy.pluginrr r!mypy.plugins.commonr" mypy.typeopsr# mypy.typesr$r%r&r'r(r)r*r __version__splitrXrN_versrr.r1rYrardrhrkrprtrvrzr|rrrrrrrrrr?)xs0r;rs# %:'!! &  '.7:0#&""  ((..s3Mxrxx!7LSVM  6/ KuXx-?'@ A */*/Z.;>/.  0  8(&'  9  , 7 ,  , ,  ,  ,  9<..!.26.(. .   2    9=  6   ( &/ (//3/ /d   7  Ns H3 H