zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
U
¸ý°d[$ã@s€ddlmZddlZddlmZddlmZddlmZddlmZddlmZddlm    Z    dd    lm
Z
dd
lm Z dd lm Z dd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!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&m+Z+dd%l&m,Z,dd&l&m-Z-e d'eeefd(Z.Gd)d*„d*ƒZ/d+d,d-œd.d/„Z0d0d+d1d2d3œd4d5„Z1d0d+d6d7œd8d9„Z2d0d+d6d7œd:d;„Z3d0d2d<œd=d>„Z4d0d2d<œd?d@„Z5d0d,d<œdAdB„Z6d0d,d<œdCdD„Z7d0d2d<œdEdF„Z8d0d,d<œdGdH„Z9d0dIdJdKœdLdM„Z:d0dNd2dOœdPdQ„Z;dId+dRd2dSœdTdU„Z<dVd+d+d+d2dWœdXdY„Z=e    dZd[œd\d+d2d]d^œd_d`„ƒZ>e    d\d+dadbd^œdcd`„ƒZ>dd[œd\d+ddd6d^œded`„Z>dfdgdhœdidj„Z?dkdldmœdndo„Z@dIdpdpdqœdrds„ZAdtdIdudvœdwdx„ZBdS)yé)Ú annotationsN)ÚAny)ÚIterable)ÚIterator)ÚList)ÚOptional)Úoverload)ÚTuple)ÚType)ÚTypeVar)ÚUnion)ÚCallExpr)ÚClassDef)ÚCLASSDEF_NO_INFO)ÚContext)Ú
Expression)ÚFuncDef)ÚIfStmt)ÚJsonDict)Ú
MemberExpr)ÚNameExpr)Ú    Statement)ÚSymbolTableNode)Ú    TypeAlias)ÚTypeInfo)ÚClassDefContext)ÚDynamicClassDefContext)ÚSemanticAnalyzerPluginInterface)Údeserialize_and_fixup_type)Úmap_type_from_supertype)Ú CallableType)Úget_proper_type)ÚInstance)ÚNoneType)Ú TypeVarType)Ú UnboundType)Ú    UnionTypeÚ    _TArgType)Úboundc@sZeZdZdddddddœdd„Zd    d
œd d „Zddd œdd„Zedd    dddœdd„ƒZdS)ÚSQLAlchemyAttributeÚstrÚintzOptional[Type]rÚNone)ÚnameÚlineÚcolumnÚtypÚinfoÚreturncCs"||_||_||_||_||_dS©N)r-r.r/Útyper1)Úselfr-r.r/r0r1©r6úOd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/ext/mypy/util.pyÚ__init__7s
zSQLAlchemyAttribute.__init__r)r2cCs$|js
t‚|j|j|j|j ¡dœS)N)r-r.r/r4)r4ÚAssertionErrorr-r.r/Ú    serialize)r5r6r6r7r:Es 
üzSQLAlchemyAttribute.serialize)Úsub_typer2cCs&t|jtƒsdSt|j||jƒ|_dS)zxExpands type vars in the context of a subtype when an attribute is
        inherited from a generic super type.
        N)Ú
isinstancer4r$rr1)r5r;r6r6r7Úexpand_typevar_from_subtypeNs z/SQLAlchemyAttribute.expand_typevar_from_subtyper)r1ÚdataÚapir2cCs,| ¡}t| d¡|ƒ}|f||dœ|—ŽS)Nr4)r0r1)ÚcopyrÚpop)Úclsr1r>r?r0r6r6r7Ú deserializeWszSQLAlchemyAttribute.deserializeN)Ú__name__Ú
__module__Ú __qualname__r8r:r=Ú classmethodrCr6r6r6r7r)6s
        r)r*Úbool)r-r2cCstt d|¡ƒS)Nz    ^__.+?__$)rHÚreÚmatch)r-r6r6r7Úname_is_dundercsrKrrr,)r1Úkeyr>r2cCs||j di¡|<dS©NZ
sqlalchemy©ÚmetadataÚ
setdefault)r1rLr>r6r6r7Ú_set_info_metadatagsrQz Optional[Any])r1rLr2cCs|j di¡ |d¡SrM)rOÚget)r1rLr6r6r7Ú_get_info_metadataksrScCs0|jr,|jD]}t||ƒ}|dk    r |Sq dSr3)ÚmrorS)r1rLÚbaserOr6r6r7Ú_get_info_mro_metadataos 
 
 
rV)r1r2cCs|j di¡dSrMrN©r1r6r6r7Úestablish_as_sqlalchemyxsrXcCst|ddƒdS©NÚis_baseT©rQrWr6r6r7Ú set_is_base|sr\cCst|dƒ}|dkSrY©rS©r1rZr6r6r7Ú get_is_base€s
r_cCst|dƒ}|dkSrY)rVr^r6r6r7Úhas_declarative_base…s
r`cCst|ddƒdS©NZ    has_tableTr[rWr6r6r7Ú set_has_tableŠsrbcCst|dƒ}|dkSrar]r^r6r6r7Ú get_has_tableŽs
rcrz#Optional[List[SQLAlchemyAttribute]])r1r?r2cCsJt|dƒ}|dkrdSg}|D]&}t |||¡}| |¡| |¡q|S)NÚmapped_attributes)rSr)rCr=Úappend)r1r?rdÚ
attributesr>Úattrr6r6r7Úget_mapped_attributes“sÿ
 rhzList[SQLAlchemyAttribute])r1rfr2cCst|ddd„|DƒƒdS)NrdcSsg|] }| ¡‘qSr6)r:)Ú.0Ú    attributer6r6r7Ú
<listcomp>¬sz)set_mapped_attributes.<locals>.<listcomp>r[)r1rfr6r6r7Úset_mapped_attributes¦s
 ýrlr)r?ÚmsgÚctxr2cCsd|}| ||¡S)NzQLAlchemy Mypy plugin] %s)Úfail)r?rmrnr6r6r7ro°sroz.Union[ClassDefContext, DynamicClassDefContext])rnÚmoduleÚ symbol_nameÚasnamer2cCs8|jj|jjj}||kr4|jj|j|}|||<dSr3)r?ÚmodulesZ
cur_mod_idÚnames)rnrprqrrÚmodule_globalsZ
lookup_symr6r6r7Ú
add_globalµs  ÿrv.)Ú
expr_typesr z#Optional[Union[CallExpr, NameExpr]])Úcallexprr-rwr2cCsdSr3r6©rxr-rwr6r6r7Úget_callexpr_kwargÅsrzz!Tuple[TypingType[_TArgType], ...]zOptional[_TArgType]cCsdSr3r6ryr6r6r7rzÌsz%Optional[Tuple[TypingType[Any], ...]]cCsTz|j |¡}Wntk
r&YdSX|j|}t||dk    rB|nttfƒrP|SdSr3)Ú    arg_namesÚindexÚ
ValueErrorÚargsr<rr )rxr-rwZarg_idxÚkwargr6r6r7rzÖs
ÿzIterable[Statement]zIterator[Statement])Ústmtsr2ccsR|D]H}t|tƒrFt|jdtƒrF|jdjdkrF|jdjEdHq|VqdS)Nrztyping.TYPE_CHECKING)r<rÚexprrÚfullnameÚbody)r€Zstmtr6r6r7Úflatten_typecheckingêsÿþýr„rz#Optional[Union[Instance, TypeInfo]])Úcalleer2cCsŽt|ttfƒrŠt|jtƒrP|jjrLt|jjtƒrLt|jjjƒ}t|t    ƒrL|SdSt|jt
ƒrxt|jj ƒ}t|t    ƒrŠ|Snt|jt ƒrŠ|jSdSr3) r<rrÚnoderr4r r!Úret_typer"rÚtargetr)r…r‡Z target_typer6r6r7Útype_for_calleeös 
 
 r‰r
)r?r0r2cs’t|tƒs|S|jdkr>tˆt‡fdd„|jDƒtƒgƒƒSˆ |j|¡}|dk    rŠt|tƒrŠt|j    t
ƒrŠ|j    }t |‡fdd„|jDƒƒS|SdS)zÔTake 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.
 
    rcsg|]}tˆ|ƒ‘qSr6)Úunbound_to_instance)riZtyp_arg©r?r6r7rksz'unbound_to_instance.<locals>.<listcomp>Ncs$g|]}t|tƒrtˆ|ƒn|‘qSr6)r<r%rŠ)riÚargr‹r6r7rk.sþÿ ) r<r%r-rŠr&r~r#Úlookup_qualifiedrr†rr")r?r0r†Z
bound_typer6r‹r7rŠ    s4    
 
ÿÿþÿþ
ý
üþ
rŠrzOptional[TypeInfo])rBr?r2cCsD|jtkr>| |j|¡}|dkr$dS|r4t|jtƒs8t‚|jS|jSr3)r1rrr-r<r†rr9)rBr?Úsymr6r6r7Ú info_for_cls9s
r)CÚ
__future__rrIÚtypingrrrrrrr    r
Z
TypingTyper r Z
mypy.nodesr rrrrrrrrrrrrrZ mypy.pluginrrrZmypy.plugins.commonrZ mypy.typeopsrZ
mypy.typesr r!r"r#r$r%r&r'r)rKrQrSrVrXr\r_r`rbrcrhrlrorvrzr„r‰rŠrr6r6r6r7Ú<module>s‚                                      -    
ÿ ü 0