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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
U
¸ý°dýEã@sdZddlmZddlZddlZddlZddlmZddlmZddlm    Z    ddlm
Z
ddlm Z dd    lm Z dd
lm Z dd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"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*m0Z0dd(l1m2Z2dd)l3m4Z4dd*l3m5Z5dd+l6m7Z7dd,l6m8Z8dd-l6m9Z9dd.l6m:Z:d/d0lm;Z;d/dlmZd/d1lm6Z6d/d2l<m=Z=d/d3l>m?Z?d/d4l@mAZAd/d5l@mBZBd/d6l6mCZCd/d7lDmEZEd/d8lDmFZFd/d9lDmGZGd/d:lDmHZHd/d;lDmIZId/d<lDmJZJer6dd=lmKZKdd>lmLZLdd?l$mMZMdd@lNmOZOddAlmPZPd/dBlQmRZRd/dCl@mSZSd/dDlTmUZUedEedFZVe eWefZXeeedGfe
eWeffZYGdHdI„dIeHe ƒZZGdJdK„dKeZe eHƒZ[GdLdM„dMeIƒZ\dNdOdPœdQdR„Z]dNdSdPœdTdU„Z^dNdVdPœdWdX„Z_d•dNdZdSd[d\œd]d^„Z`d_d`dPœdadb„ZadcdNdddedfœdgdh„Zbdcd_didjdkdlœdmdn„Zce6 ddo¡dpdSdqœdrds„ƒZedpdZd_dSdtœdudv„ZfGdwdx„dxƒZgGdydz„dzegƒZhGd{d|„d|eƒZiGd}d~„d~egƒZje6 ddo¡ddZdpd€œdd‚„ƒZkGdƒd„„d„ejƒZldNdZd…d†d‡œdˆd‰„ZmdNdZd†dŠœd‹dŒ„Zndpdpd†dœdŽd„Zodeo_pdZd‘d†d’œd“d”„ZqdS)–z(Internal implementation for declarative.é)Ú annotationsN)ÚAny)ÚCallable)Úcast)ÚDict)ÚIterable)ÚList)ÚMapping)Ú
NamedTuple)ÚNoReturn)ÚOptional)ÚSequence)ÚTuple)ÚType)Ú TYPE_CHECKING)ÚTypeVar)ÚUnioné)Ú
attributes)Ú clsregistry)Úexc)Úinstrumentation)Ú    mapperlib)Ú_O)Úattr_is_internal_proxy)ÚInstrumentedAttribute)ÚQueryableAttribute)Ú_is_mapped_class)ÚInspectionAttr)ÚCompositeProperty)ÚSynonymProperty)Ú_AttributeOptions)Ú_DCAttributeOptions)Ú_IntrospectsAnnotations)Ú_MappedAttribute)Ú _MapsColumns)ÚMapperProperty)ÚMapper)ÚColumnProperty)Ú MappedColumn)Ú_extract_mapped_subtype)Ú_is_mapped_annotation)Ú class_mapper)Úde_stringify_annotationé)Úevent)Úutil)Ú
expression)Ú_NoArg)ÚColumn)ÚTable)Ú topological)Ú_AnnotationScanType)Ú
is_fwd_ref)Ú
is_literal)ÚProtocol)Ú    TypedDict)Útyping_get_args)Ú
_ClassDict)Ú _RegistryType)ÚMapped)Ú declared_attr)Ú ClassManager)Ú NamedColumn)ÚMetaData)Ú
FromClauseÚ_T)Úbound.c@s:eZdZUdZded<ded<ded<dd    d
œd d „Zd S)ÚMappedClassProtocolzªA protocol representing a SQLAlchemy mapped class.
 
    The protocol is generic on the type of class, use
    ``MappedClassProtocol[Any]`` to allow any mapped class.
    ÚstrÚ__name__ú
Mapper[_O]Ú
__mapper__rCÚ    __table__rr)ÚkwÚreturncKsdS©N©)ÚselfrLrOrOúOd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/orm/decl_base.pyÚ__call__eszMappedClassProtocol.__call__N)rHÚ
__module__Ú __qualname__Ú__doc__Ú__annotations__rRrOrOrOrQrFZs
 
rFc@sVeZdZUdZded<ded<ded<ded    <d
ed <d d œdd„Zd d œdd„ZdS)Ú_DeclMappedClassProtocolz:Internal more detailed version of ``MappedClassProtocol``.rBÚmetadatarGÚ __tablename__Ú _MapperKwArgsÚ__mapper_args__úOptional[_TableArgsType]Ú__table_args__úOptional[_DataclassArguments]Ú_sa_apply_dc_transformsÚNone©rMcCsdSrNrO©rPrOrOrQÚ__declare_first__rsz*_DeclMappedClassProtocol.__declare_first__cCsdSrNrOrbrOrOrQÚ__declare_last__usz)_DeclMappedClassProtocol.__declare_last__N)rHrSrTrUrVrcrdrOrOrOrQrWis
rWc@sNeZdZUded<ded<ded<ded<ded<ded<ded<d    ed
<d S) Ú_DataclassArgumentszUnion[_NoArg, bool]ÚinitÚreprÚeqÚorderÚ unsafe_hashÚ
match_argsÚkw_onlyz'Union[_NoArg, Callable[..., Type[Any]]]Údataclass_callableN©rHrSrTrVrOrOrOrQreys
reú    Type[Any]z3Optional[Union[_DeferredMapperConfig, Mapper[Any]]]©ÚclsrMcCs0t |¡rt |¡St|ƒr(t|ddSdSdS)NF)Ú    configure)Ú_DeferredMapperConfigÚhas_clsÚconfig_for_clsrr,©rqrOrOrQÚ_declared_mapping_info„s
 
 
 rwÚboolcCs.t |¡rt|ddd St|ƒr&dSdSdS)a‰return True if this class will be used as a superclass to set in
    'inherits'.
 
    This includes deferred mapper configs that aren't mapped yet, however does
    not include classes with _sa_decl_prepare_nocascade (e.g.
    ``AbstractConcreteBase``); these concrete-only classes are not set up as
    "inherits" until after mappers are configured using
    mapper._set_concrete_base()
 
    Ú_sa_decl_prepare_nocascadeT©ÚstrictFN)rsrtÚ_get_immediate_cls_attrrrvrOrOrQÚ_is_supercls_for_inherits‘s
ÿr}úOptional[Type[Any]]cCs\|tkr dS|j dd¡rB|jD]}t|ƒ}|dk    r |Sq dSt|ƒ}|rT|jS|SdS)NÚ __abstract__F)ÚobjectÚ__dict__ÚgetÚ    __bases__Ú"_resolve_for_abstract_or_classicalÚ_dive_for_cls_managerÚclass_)rqÚbase_ÚsupZ
clsmanagerrOrOrQr„§s
 
r„FrGz Optional[Any])rqÚattrnamer{rMcCs†|dks t‚t|tƒsdS||jkr.t||ƒS|jdd…D]D}t|ƒdk    }||jkr<||ksr|rn||jkr<n|s<t||ƒSq<dS)a¯return an attribute of the class that is either present directly
    on the class, e.g. not on a superclass, or is from a superclass but
    this superclass is a non-mapped mixin, that is, not a descendant of
    the declarative base and is also not classically mapped.
 
    This is used to detect attributes that indicate something about
    a mapped class independently from any mapped classes that it may
    inherit from.
 
    rNrT)ÚAssertionErrorÚ
issubclassr€rÚgetattrÚ__mro__r…rƒ)rqr‰r{ÚbaseZ_is_classical_inheritsrOrOrQr|½s( 
 
 
 
ÿýýýür|úType[_O]zOptional[ClassManager[_O]]cCs&|jD]}t |¡}|r|SqdSrN)rrÚopt_manager_of_class)rqrŽÚmanagerrOrOrQr…äs
ÿ
r…r=r<úOptional[_MapperConfig])ÚregistryrqÚdict_rMcCst |||di¡SrN)Ú _MapperConfigÚ setup_mapping)r“rqr”rOrOrQÚ_as_declarativeòsr—úOptional[FromClause]rZrI)r“rqÚtableÚ    mapper_kwrMcCst||||ƒtd|ƒjS)NzMappedClassProtocol[_O])Ú_ImperativeMapperConfigrrJ)r“rqr™ršrOrOrQÚ_mapperûsrœzsqlalchemy.orm.decl_apir)ÚobjrMcCstjjj}t||tjfƒSrN)r0Ú    preloadedÚ orm_decl_apiÚ_declared_attr_commonÚ
isinstanceZ classproperty)rr rOrOrQÚ_is_declarative_propss
r¢)rÚnamerqrMcCs2t|ƒr*t|ddƒr&t d||f¡dSdSdS)NÚ
_cascadingFz~@declared_attr.cascading is not supported on the %s attribute on class %s.  This attribute invokes for subclasses in any case.T)r¢rŒr0Úwarn)rr£rqrOrOrQÚ_check_declared_props_nocascade s þÿr¦c@s”eZdZUdZded<ded<ded<ded    <ed
d d d dddœdd„ƒZd
dddœdd„Zddddœdd„Zd#dddœdd„Z    dddœd d!„Z
d"S)$r•)rqÚ    classnameÚ
propertiesÚdeclared_attr_regÚ __weakref__rorqrGr§z_util.OrderedDict[str, Union[Sequence[NamedColumn[Any]], NamedColumn[Any], MapperProperty[Any]]]r¨zDict[declared_attr[Any], Any]r©r=rr<r˜rZr’)r“Úcls_r”r™ršrMcCs|t |¡}|r*|j|kr*t d|›d¡‚|j dd¡r<dSt|dddpRt|dƒ}|rht    |||||ƒSt
|||||ƒSdS)    NúClass z, already has been instrumented declarativelyrFryTrzZ_sa_decl_prepare) rrr†rÚInvalidRequestErrorrr‚r|ÚhasattrrsÚ_ClassScanMapperConfig)rqr“r«r”r™ršr‘Z    defer_maprOrOrQr–.s:    
 
ÿÿþÿÿz_MapperConfig.setup_mapping)r“r«ršcCsxt |td¡|_|j|_t ¡|_i|_|     dd¡sNt
j |jd|||j dn&t  |j¡}|rd|jstt d|j¡‚dS)Nr«Ú non_primaryF)Úfinalizer“Údeclarative_scanZ init_methodztClass %s has no primary mapper configured.  Configure a primary mapper first before setting up a non primary Mapper.)r0Zassert_arg_typeÚtyperqrHr§Ú OrderedDictr¨r©r‚rZregister_classÚ constructorrrÚ    is_mappedrr­)rPr“r«ršr‘rOrOrQÚ__init__Ms&
 û 
þÿz_MapperConfig.__init__rD)r‰ÚvaluerMcCst |j¡}| ||¡|SrN)rÚmanager_of_classrqZinstall_member)rPr‰r¸r‘rOrOrQÚset_cls_attributeis  z_MapperConfig.set_cls_attribute.ú Mapper[Any]©ršrMcCs
tƒ‚dSrN)ÚNotImplementedError©rPršrOrOrQÚmaposz_MapperConfig.mapr`cCs| |¡dSrN)r¿r¾rOrOrQÚ_early_mappingrsz_MapperConfig._early_mappingN).) rHrSrTÚ    __slots__rVÚ classmethodr–r·rºr¿rÀrOrOrOrQr•s
r•csReZdZdZdddddœ‡fdd„ Zejfdd    d
œd d „Zdd d
œdd„Z‡Z    S)r›)Ú local_tableÚinheritsr=rr˜rZ)r“r«r™ršc    shtƒ |||¡| d|¡|_tj:| dd¡sFt |j    |j
|j ¡|  |¡|  |¡W5QRXdS)NrKr°F)Úsuperr·rºrÃrÚ_CONFIGURE_MUTEXr‚rÚ    add_classr§rqÚ_class_registryÚ_setup_inheritancerÀ)rPr“r«r™rš©Ú    __class__rOrQr·ys ÿ
z _ImperativeMapperConfig.__init__r»r¼cCst}| d||j|jf|Ž¡S)NrJ)r'rºrqrérPršZ
mapper_clsrOrOrQr¿Žs
þz_ImperativeMapperConfig.mapr`cCsœ|j}| dd¡}|dkr‚g}|jD]0}t|ƒ}|dkr:q$t|ƒr$||kr$| |¡q$|r’t|ƒdkrxt d||f¡‚|d}nt    |t
ƒr’|j }||_ dS)NrÄrú&Class %s has multiple mapped bases: %rr) rqr‚rƒr„r}ÚappendÚlenrr­r¡r'r†rÄ)rPršrqrÄÚinherits_searchr‡ÚcrOrOrQrɖs* 
  ÿÿ
 
z*_ImperativeMapperConfig._setup_inheritance)
rHrSrTrÁr·r0Ú
EMPTY_DICTr¿rÉÚ __classcell__rOrOrÊrQr›vsr›c@sFeZdZUded<ded<ded<ded<d    ed
<d ed <d ed<dS)Ú_CollectedAnnotationr6Úraw_annotationzOptional[Type[Mapped[Any]]]Úmapped_containerzUnion[Type[Any], str]Úextracted_mapped_annotationrxÚ is_dataclassrÚ
attr_valuerGÚoriginating_moduleroÚoriginating_classNrnrOrOrOrQrÔ´s
rÔcs2eZdZUdZdZded<ded<ded<d    ed
<d ed <d ed <ded<ded<ded<ded<ded<ded<ded<ded<ded<ded <ded!<d"ed#<ded$<dd%dd d&d'œ‡fd(d)„ Zd*d+œd,d-„Zd%d.d/œd0d1„Zd2d3d4d5hZ    e
  d6¡Z d7d8d/œd9d:„Z d*d+œd;d<„Zd*d+œd=d>„Zed%d?d@œdAdB„ƒZedCd%d?d*dDœdEdF„ƒZedCd*dGœdHdI„ƒZdJdKd7dLdMdNdOœdPdQ„Zd7dJdMd*dRœdSdT„Zd8d.dd7dUdVœdWdX„Zd*d+œdYdZ„Zd*d+œd[d\„Zdpd d*d^œd_d`„Zdadbdcœddde„Zd&d*dfœdgdh„Zd&d*dfœdidj„Zd&d*dfœdkdl„Zejfd&dmdfœdndo„Z ‡Z!S)qr¯)r“Ú clsdict_viewÚcollected_attributesÚcollected_annotationsrÃÚpersist_selectableÚdeclared_columnsÚcolumn_orderingÚ column_copiesÚ
table_argsÚ    tablenameÚ mapper_argsÚmapper_args_fnrÄÚsingleÚallow_dataclass_fieldsÚdataclass_setup_argumentsÚis_dataclass_prior_to_mappingÚallow_unmapped_annotationsFr=r“r<rÜzDict[str, _CollectedAnnotation]rÞúDict[str, Any]rÝr˜rÃrßzutil.OrderedSet[Column[Any]]ràzDict[Column[Any], int]rázRDict[Union[MappedColumn[Any], Column[Any]], Union[MappedColumn[Any], Column[Any]]]râz Optional[str]räúMapping[str, Any]rår\rãz&Optional[Callable[[], Dict[str, Any]]]rær~rÄrxrçrêrër^rérèrrZ)r“r«r”r™ršc        s@|rt |¡ntj|_tƒ |||¡||_d|_i|_i|_    t 
¡|_ i|_ i|_ d|_t|jddƒ|_}t|jddƒp„t|jƒ|_t |¡|_}t|dƒ}|rª|r¸|r¸t d¡‚t|oÀ|ƒ|_| ¡| ¡| ¡tjRt  !|j"|j|j#¡| $|¡| %¡| &¡| '|¡| (|¡| )|¡W5QRXdS)NFr_Z__allow_unmapped__Ú__sa_dataclass_metadata_key__z‘SQLAlchemy mapped dataclasses can't consume mapping information from dataclass.Field() objects if the immediate class is not already a dataclass.)*r0Z immutabledictrÒrÜrÅr·r“rßrÝrÞZ
OrderedSetràrárârçrŒrqrérxrëÚ dataclassesrØrêr|rr­rèÚ_setup_declared_eventsÚ_scan_attributesÚ_setup_dataclasses_transformsrrÆrrÇr§rÈÚ_setup_inheriting_mapperÚ_extract_mappable_attributesÚ_extract_declared_columnsÚ _setup_tableÚ_setup_inheriting_columnsrÀ)    rPr“r«r”r™ršZdcaZcldZsdkrÊrOrQr·ýs^ ÿ
ÿ
ÿþÿ
 
 ÿ    ÿ
 
 
z_ClassScanMapperConfig.__init__r`racsXtˆjdƒr*t td¡ddœ‡fdd„ ƒ}tˆjdƒrTt td¡ddœ‡fd    d
„ ƒ}dS) NrdÚafter_configuredr`racstdˆjƒ ¡dS©Nú_DeclMappedClassProtocol[Any])rrqrdrOrbrOrQrøNsÿzG_ClassScanMapperConfig._setup_declared_events.<locals>.after_configuredrcÚbefore_configuredcstdˆjƒ ¡dSrù)rrqrcrOrbrOrQrûVsÿzH_ClassScanMapperConfig._setup_declared_events.<locals>.before_configured)r|rqr/Z listens_forr')rPrørûrOrbrQrðKs  
 
z-_ClassScanMapperConfig._setup_declared_eventszCallable[[str, Any], bool]rpcsˆ|jrtˆdƒ‰nd‰ˆs2ddddœ‡fdd„ }nR‡fd    d
„t ˆ¡Dƒ‰‡fd d
„t ˆ¡Dƒ‰tƒ‰ddddœ‡‡‡‡fd d„ }|S) z‘Produce a function that checks if a class has overridden an
        attribute, taking SQLAlchemy-enabled dataclass fields into account.
 
        rîNrGrrx)ÚkeyrrMcstˆ||ƒ|k    SrN)rŒ)rürrvrOrQÚattribute_is_overriddenmszR_ClassScanMapperConfig._cls_attr_override_checker.<locals>.attribute_is_overriddencs$i|]}ˆ|jkr|j|jˆ“qSrO©rXr£©Ú.0Úf©Úsa_dataclass_metadata_keyrOrQÚ
<dictcomp>rs
þzE_ClassScanMapperConfig._cls_attr_override_checker.<locals>.<dictcomp>cs$i|]}ˆ|jkr|j|jˆ“qSrOrþrÿrrOrQrws
þcs–t|ƒr|j}ˆ |ˆ¡}t|ƒr(|j}||kr4dS|ˆk    r@dSˆ |ˆ¡}tˆ||ƒ}||krddS|ˆk    rzt|tƒrzdS||kr†dS|ˆk    r’dSdS)NFT)r¢Úfgetr‚rŒr¡r)rürÚretZ    all_field)ÚabsentÚall_datacls_fieldsrqÚlocal_datacls_fieldsrOrQrýs.   
ÿ)rèr|r0Údataclass_fieldsÚlocal_dataclass_fieldsr€)rPrqrýrO)rrrqr    rrQÚ_cls_attr_override_checker\s"ÿ
þ
þ(z1_ClassScanMapperConfig._cls_attr_override_checkerrKr[rYr]z ^(?:_sa_|__)roz2Callable[[], Iterable[Tuple[str, Any, Any, bool]]]cs¬t |¡‰t|ƒ‰|j‰|j‰‡‡fdd„t tˆƒtˆƒ¡Dƒ‰|jrTt|dƒ‰nd‰ˆstddœ‡‡‡fdd„ }n4d    d
„t     |¡Dƒ‰ˆ‰ddœ‡‡‡‡‡‡fd d„ }|S) z¸produce a function to iterate the "attributes" of a class
        which we want to consider for mapping, adjusting for SQLAlchemy fields
        embedded in dataclass fields.
 
        cs"g|]}ˆ |¡r|ˆkr|‘qSrO)Úmatch)rÚn)Ú_include_dundersÚ_match_exclude_dundersrOrQÚ
<listcomp>Ás
üz=_ClassScanMapperConfig._cls_attr_resolver.<locals>.<listcomp>rîNz$Iterable[Tuple[str, Any, Any, bool]]racs‡‡fdd„ˆDƒS)Nc3s&|]}|ˆ |¡ˆ |¡dfVqdS)FN©r‚)rr£)Úcls_annotationsÚcls_varsrOrQÚ    <genexpr>Õs ûüz`_ClassScanMapperConfig._cls_attr_resolver.<locals>.local_attributes_for_class.<locals>.<genexpr>rOrO)rrÚnamesrOrQÚlocal_attributes_for_classÒs ùzM_ClassScanMapperConfig._cls_attr_resolver.<locals>.local_attributes_for_classcSsi|] }|j|“qSrO)r£)rÚfieldrOrOrQràsz=_ClassScanMapperConfig._cls_attr_resolver.<locals>.<dictcomp>c3sdˆD]Z}ˆ |d¡}|rDˆ|jkrD|jt|jˆƒˆ |j¡dfVq|ˆ |¡ˆ |¡dfVqdS)NTF)r‚rXr£Ú_as_dc_declaredattr)r£r)rrr
Úfixed_sa_dataclass_metadata_keyrrrOrQræs ÿ
þÿþ)
r0Úget_annotationsÚvarsrrZmerge_lists_w_orderingÚlistrèr|r )rPrqrrO)rrrrr
rrrrQÚ_cls_attr_resolver²s0
 ÿþÿÿz)_ClassScanMapperConfig._cls_attr_resolverc    sh|j}td|ƒ‰|j}|j}|j}|j}d}d}}d}    d|k}
| |j¡} g} |jD]R} | |k    oht| ƒ}|     | ¡}|s’| |k    r’| 
|| |
| ¡}ni}|   | |||f¡qV| D]\} }}}|  |¡|ƒD]p\}}}}||kr´|dkr$t |||ƒ}|s²|r |r²ddœ‡fdd„ }|}nŽ|dkrTt |||ƒ}|    s²|rL|r²ˆj}    n^|d    krÌt |||ƒ}|s²|rz|r²ˆj}t|tttdƒfƒs t d
¡‚| |k    r²d }nqÌqÌ|rät|ƒrÌ|jsÌt d | j|| |f¡qÌqÌ| |k    rht|ttfƒrq̐q>t|tƒrt d ¡‚q>t|ƒr,|dk    s6t‚|j r„||krZt d||f¡| !||¡||<||<}t"|||ƒnl|r¬t#||dƒ}t|t$ƒs¶| %¡}n
t#||ƒ}t|t$ƒràt&|ƒràt|j'tƒsà|j(}|||<||<t|ttfƒr|j)dkr|j*|_)| +|| ,¡| d |¡n:t-||| ƒrX|
sÌ||ksÌ| |dƒsÌt‚qÌn| .| ||¡qÌ|rÄ||ks†|||k    rÄ| ||ƒr–t‚t|ƒr¨| %¡}|||<| +||| d|¡qÌ| +||| d|¡}|dk    oè|j/dk    }|dk    rú|j0n|}|dkr.|
s.|r.|dk    r"|ntƒ||<qÌ||krÌ|||<qÌq®|rR|    sRd}||_1|    |_2||_3dS)NrúrKr[rìracs
tˆjƒSrN)Údictr[rO©Ú cls_as_DeclrOrQÚ_mapper_args_fnHsz@_ClassScanMapperConfig._scan_attributes.<locals>._mapper_args_fnrYr]z3__table_args__ value must be a tuple, dict, or NoneTz‚Regular (i.e. not __special__) attribute '%s.%s' uses @declared_attr, but owning class %s is mapped - not applying to subclass %s.zÂMapper properties (i.e. deferred,column_property(), relationship(), etc.) must be declared as @declared_attr callables on declarative mixin classes.  For dataclass field() objects, use a lambda:zXAttribute '%s' on class %s cannot be processed due to @declared_attr.cascading; skippingF)4rqrrÜrÝrârr rr}rÚ_produce_column_copiesrÎÚupdater¦rYr]r¡Útuplerr³rÚ ArgumentErrorr¢Z_quietr0r¥rHr3r)r&r­rŠr¤Ú__get__ÚsetattrrŒrrrZoriginal_propertyZ
descriptorÚdocrUÚ_collect_annotationZ_collect_return_annotationr+Ú_warn_for_decl_attributesrÖrÙrãräræ)rPrqrÜrÝrârrærãZinherited_table_argsräÚ fixed_tablerýÚbasesrŽZ class_mappedrZlocally_collected_columnsr£rÚ
annotationÚis_dataclass_fieldZ
check_declr"rÚcollected_annotationr¶Z generated_objrOr rQrñös„
 
 
 üüÿû
û
 
ÿÿÿ    
ÿÿ ÿÿ
 üÿ
 ÿ
 
ýÿ
þ ÿ  
 
ÿþÿýþ
ÿ ÿþûÿþÿ
ÿ 
ÿÿ
þÿ
ýÿý  z'_ClassScanMapperConfig._scan_attributesc    spˆj}|sdSdˆjjkr.t dˆj›d¡‚t t¡‰ddddœ‡‡fdd    „ ‰t     ˆj¡}|dk    sht
‚‡fd
d „‡‡fd d „ˆj   ¡DƒDƒ}ˆr܈  ¡D]>\}}t jdˆj›dd dd „|Dƒ¡›d|›ddddqœi}i}|D]P}t|ƒdkr|\}    }
n,t|ƒdkr&|\}    }
} | ||    <n
ds0t
‚|
||    <qè|  ¡D]\} } tˆj| | ƒqBˆ |ˆj|¡dS)NÚ__dataclass_fields__r¬zý is already a dataclass; ensure that base classes / decorator styles of establishing dataclasses are not being mixed. This can happen if a class that inherits from 'MappedAsDataclass', even indirectly, is been mapped with '@registry.mapped_as_dataclass'rGrorx)rürÛrMcs&|ˆjk    r"d|jkr"ˆ| |¡dS)Nr1T)rqrrÎ)rürÛ)rPÚwarn_for_non_dc_attrsrOrQÚ_allow_dataclass_field&s ÿþzT_ClassScanMapperConfig._setup_dataclasses_transforms.<locals>._allow_dataclass_fieldc s.g|]&\}}}t |||ˆj |tj¡¡‘qSrO)r!Z!_get_arguments_for_make_dataclassrÝr‚r2ÚNO_ARG)rrüÚannorÖrbrOrQr4súüzH_ClassScanMapperConfig._setup_dataclasses_transforms.<locals>.<listcomp>c    3sV|]N\}\}}}}}}}ˆ||ƒr|ˆjks<tˆj|tƒs||rF|n||fVqdSrN)rÝr¡r)    rrüZraw_annorÖZ mapped_annoZis_dcrÙrÚrÛ)r3rPrOrQr;s$
 
ÿé
ýzG_ClassScanMapperConfig._setup_dataclasses_transforms.<locals>.<genexpr>zWhen transforming z to a dataclass, attribute(s) ú, css|]}t|ƒVqdSrN©rg)rrürOrOrQrasz originates from superclass a , which is not a dataclass.  This usage is deprecated and will raise an error in SQLAlchemy 2.1.  When declaring SQLAlchemy Declarative Dataclasses, ensure that all mixin classes and other superclasses which include attributes are also a subclass of MappedAsDataclass.z2.0Zdcmx©Úcoder.éF)rérqrrr­Ú collectionsÚ defaultdictrrr¹rŠrÞÚitemsr0Zwarn_deprecatedÚjoinrÏr(Ú_apply_dataclasses_to_any_class)rPrér‘Z
field_listrÛZ non_dc_attrsrÚdefaultsÚitemr£ÚtpÚspecÚkÚvrO)r3rPr2rQròsV  ÿ    
 
 òù'ý(
ô
 
 
 
 
ÿz4_ClassScanMapperConfig._setup_dataclasses_transformsz!Mapping[str, _AnnotationScanType])ÚklassrMc     Cslt |¡}i}| ¡D]P\}}t|||ƒr^t|||j|tdƒdddd}|rf|\}}|||<q|||<q|S)NF©Úrequiredr/Ú expect_mapped)r0rr=r+r*rSr³)    rqrFrZnew_annor£r.Ú    extractedÚinnerÚ_rOrOrQÚ(_update_annotations_for_non_mapped_class‚s&
 ø
 
 
z?_ClassScanMapperConfig._update_annotations_for_non_mapped_classre)rérFÚuse_annotationsrMc
CsÎ| |¡|d}|tjkr"tj}|r@t|ddƒ}td|ƒ|_nd}zjz||fdd„| ¡DƒŽWnFt    t
fk
rª}z$t j d|j ›d|›dd    d
|‚W5d}~XYnXW5|rÈ|dkrÂ|`n||_XdS) NrmrVrìcSs(i|] \}}|tjk    r|dkr||“qS)rm)r2r4)rrDrErOrOrQr¹s
 
þzJ_ClassScanMapperConfig._apply_dataclasses_to_any_class.<locals>.<dictcomp>zAPython dataclasses error encountered when creating dataclass for z: zN. Please refer to Python dataclasses documentation for additional information.Zdcter8)Ú_assert_dc_argumentsr2r4rïZ    dataclassrŒrrVr=Ú    TypeErrorÚ
ValueErrorrr­rH)rqrérFrNrmZrestoredÚexrOrOrQr?s6
 
 ÿþþûú z6_ClassScanMapperConfig._apply_dataclasses_to_any_class)Ú    argumentsrMcCsTddddddddh}t|ƒ |¡}|rPd     d
d „t|ƒDƒ¡}t d |›d ¡‚dS)Nrfrgrirhrjrlrkrmr6css|] }|›VqdSrNrO)rÚargrOrOrQràsz>_ClassScanMapperConfig._assert_dc_arguments.<locals>.<genexpr>zDataclass argument(s) z are not accepted)ÚsetÚ
differencer>Úsortedrr&)rqrSÚallowedZdisallowed_argsÚmsgrOrOrQrOÒsø
 
ÿz+_ClassScanMapperConfig._assert_dc_argumentsrGr6zOptional[bool]rzOptional[_CollectedAnnotation])r£rÕrÛrIrÙrMc
Cs ||jkr|j|S|dkr dS|j}|j}|dkr`t|tjƒ}| o\| o\|dkp\t|tƒ}nd}d}t||j|j    |t
|ƒd||oˆ| d}    |    dkršdS|    \}
} |dkrüt |
ƒsüt |
ƒD]@} t| t ƒsÔt| ddrèt|j| |j    dd} t| tƒrº|  ¡}qºt|| |
|||j    |ƒ|j|<} | S)NFrGT)Z check_generic)Zinclude_generic)rÞrêrër¡rïÚFieldr$r*rqrSr³r8r;rGr7r-r#Zfound_in_pep593_annotatedrÔ)rPr£rÕrÛrIrÙrØZallow_unmappedr/rJr×rÖÚelemÚcarOrOrQr*åsl    
 
 ÿû    ÷   ÿü
 
ù    z*_ClassScanMapperConfig._collect_annotation)rqrürÑrMcCs(t|tjƒr$t d|›d|›d¡dS)Nú Attribute 'ú ' on class zë appears to be a non-schema SQLAlchemy expression object; this won't be part of the declarative mapping. To map arbitrary expressions, use ``column_property()`` or a similar function such as ``deferred()``, ``query_expression()`` etc. )r¡r1Ú ColumnElementr0r¥)rPrqrürÑrOrOrQr+2s ÿz0_ClassScanMapperConfig._warn_for_decl_attributesz0Dict[str, Union[Column[Any], MappedColumn[Any]]])Úattributes_for_classrýr,rÛrMcCsd|j}|j}i}|j}|ƒD]@\}    }
} } |s–|
dkr–t| ||ƒr–||    |
ƒrNq| |    | |d|
¡} | dk    rn| jn|
}
|
dkr€tƒ}
|
||    <t||    |
ƒqt|
t    tfƒr||    |
ƒr°q| |    | |d|
¡} | dk    rÐ| jn|
}
|    |krd|krt
|
ddƒpô|    |dj ks|
j r:|
j D]*}|j dk    r|j jdkrt d¡‚q|
 ¡||
<}|||    <t||    |ƒq|S)NTrKr£z®Columns with foreign keys to non-table-bound columns must be declared as @declared_attr callables on declarative mixin classes.  For dataclass field() objects, use a lambda:.)rqrÜrâr+r*rÙr)r(r¡r3rŒrÑZ foreign_keysZ _table_columnr™rr­Z_copy)rPr`rýr,rÛrqr”Zlocally_collected_attributesrâr£rr.rØr0ZfkZcopy_rOrOrQr#?s|    ÿþ
ý
ÿÿý
ÿÿýÿÿþ
ÿ
þÿ
z-_ClassScanMapperConfig._produce_column_copiesc sì|j}|j}|j}|j}t|ddd}|jp0|j}t|jƒ}t    |ƒD] }||krTqD||‰t
ˆƒr†ˆj rzt   d|j¡t||ƒ‰n4tˆtƒrºˆj|k    rºˆj|krºtˆjƒ‰t||ˆƒtˆtƒrötˆƒdkrötˆdttfƒröt   d|¡qDnè|rtˆtjƒrqDnÎtˆttfƒsN| |¡| ||ˆ¡|sDt||ˆƒqDn|dkrnt d    |›d
¡‚nptˆtƒr’t ||j! "ˆˆ¡ƒnLtˆt#ƒr4|j$ "|d ¡\}    }
} } } }}|
dk    sÎ|    dkr*z ˆ %||j&||||
|    | | ¡    Wn8t'k
r&}zt (d |    ›d ¡|‚W5d}~XYnXn
|s4t)‚tˆtƒrވj*r¶|s¶tˆt+ƒrhddddg}n
dddg}‡fdd„|Dƒ}t (d|›d|›dd ,t-dd„|Dƒƒ¡›d¡‚tˆt+t.fƒsÞ| |¡t||ˆƒqDˆ||<qDdS)NryTrzzUse of @declared_attr.cascading only applies to Declarative 'mixin' and 'abstract' classes.  Currently, this flag is ignored on mapped class %srrz‘Ignoring declarative-like tuple value of attribute '%s': possibly a copy-and-paste error with a comma accidentally placed at the end of the line?)rXzAttribute name 'z-' is reserved when using the Declarative API.)NNNFNNNz7Could not resolve all types within mapped annotation: "zU".  Ensure all types are written correctly and are imported within the module in use.rfÚdefault_factoryrgÚdefaultcs(h|] }tˆjd|›ƒtjk    r|’qS)Z dataclasses_)rŒZ_attribute_optionsr2r4©rÚa©r¸rOrQÚ    <setcomp>4sÿýþzF_ClassScanMapperConfig._extract_mappable_attributes.<locals>.<setcomp>r]r^z# includes dataclasses argument(s): r6css|]}t|ƒVqdSrNr7rcrOrOrQr>szF_ClassScanMapperConfig._extract_mappable_attributes.<locals>.<genexpr>zF but class does not specify SQLAlchemy native dataclass configuration.)/rqrÝr¨rr|rërêrxrérr¢r¤r0r¥rŒr¡rr†rür r(r%rÏr3r$rïrZr"Úpopr+rr­Ú_undefer_column_namerâr‚r#rÞr²r“Ú    NameErrorr&rŠZ_has_dataclass_argumentsr&r>rWr%)rPrqrÝÚ    our_stuffrZ late_mappedZexpect_annotations_wo_mappedZlook_for_dataclass_thingsrDr.rÖr×rØrÙrÚrÛÚneÚargnamesÚargsrOrerQrô›sòÿþ
ýÿ ÿþý
 ÿ
þýþÿÿ
 
 
ÿ  ÿ     ÿø
÷ 
ÿû
 ÿþ ü
 
þ    *ÿ
 
z3_ClassScanMapperConfig._extract_mappable_attributesc
Cs2|j}|j}|j}t t¡}t| ¡ƒD]Æ\}}t|t    ƒr¬|j
}|rN|||<n||=|j D]N\}}    t|t ƒs|||j  |¡| |¡|    ||<|dkrZ||jkrZ|||<qZq(t|tƒr(|j dk    sÄt‚||j  |¡| |¡||jkr(||=q(| ¡D]4\}
} t| ƒdkrøt d|j|
d t| ƒ¡f¡qødS)NrzzOn class %r, Column object %r named directly multiple times, only one will be used: %s. Consider using orm.synonym insteadr6)r¨ràrár;r<rUrr=r¡r%Úmapper_property_to_assignÚcolumns_to_assignrr£Úaddrür3rŠrÏr0r¥r§r>rW) rPrjràráZname_to_prop_keyrürÑZ mp_to_assignÚcolZ
sort_orderr£ÚkeysrOrOrQrõZs<
 
 
 
 
 
 
 
 üÿz0_ClassScanMapperConfig._extract_declared_columnsN)r™rMcsz|j}td|ƒ}|j}|j}|j}|j}|j‰t |¡}d|kr0|dkr0t    |dƒrntt
t t   |j¡ƒ}    nt }    |dk    rpd}
i} |rÌt|tƒr˜|} n4t|tƒrÌt|dtƒrÈ|dd…|d}
} n|}
| d¡} | râ| | d<| d    ¡} | rød
| d <t|‡fd d „d}| d|    || |¡f||
ž| Ž¡}n@|dkr@|j}|rp|D]$}|j |¡sJt d|j¡‚qJ||_dS)NúMappedClassProtocol[Any]rKÚ __table_cls__rOéÿÿÿÿrZ__autoload_with__Ú autoload_withZ __autoload__TÚautoloadcs ˆ |d¡S)Nrr)rÑ©rárOrQÚ<lambda>Ãóz5_ClassScanMapperConfig._setup_table.<locals>.<lambda>©rüz8Can't add additional column %r when specifying __table__)rqrrärãrÜràrárr¹r®rr4r0Úunbound_method_to_callablertr¡rr%r‚rWrºÚ_metadata_for_clsrKrÑZcontains_columnrr&rürÃ)rPr™rqr!rärãrÜràr‘Z    table_clsrmZtable_kwrvrwZsorted_columnsrÑrOrxrQrö–st
 
 
 
þ
 
 
 
 
 
þþüûþ
ÿÿz#_ClassScanMapperConfig._setup_tablezClassManager[Any]rB)r‘rMcCs&t|jddƒ}|dk    r|S|jjSdS)NrX)rŒrqr“rX)rPr‘ÚmetarOrOrQr}Üsz(_ClassScanMapperConfig._metadata_for_clsr¼cCsº|j}| dd¡}|dkr‚g}|jD]0}t|ƒ}|dkr:q$t|ƒr$||kr$| |¡q$|r’t|ƒdkrxt d||f¡‚|d}nt    |t
ƒr’|j }||_ |j }d|kr¶|jdkr¶d|_dS)NrÄrrÍrrKT)rqr‚rƒr„r}rÎrÏrr­r¡r'r†rÄrÜrärç)rPršrqrÄrÐr‡rÑrÜrOrOrQróãs0 
  ÿÿ
 
z/_ClassScanMapperConfig._setup_inheriting_mapperc
 
Cs`|j}|j}|j}|j}|dkrF|jdkrFt|dƒsFt d|¡‚n|jr\t|jƒ}|dk    sdt    ‚|j}|j
}|dkr\|rˆt  d¡‚|r²t |t ƒs²t  d|j›d|j›d¡‚|D]¤}    |dk    sÆt    ‚|    j|jkr|j|    j|    kræq¶t  d|    ›d|j›d    |j|    j›d
¡‚|    jr t  d ¡‚tr6t |t ƒs6t    ‚| |    ¡|dk    r¶||k    r¶| |    ¡q¶dS) NZ __no_table__zwClass %r does not have a __table__ or __tablename__ specified and does not inherit from an existing table-mapped class.z?Can't place __table_args__ on an inherited class with no table.z9Can't declare columns on single-table-inherited subclass z ; superclass z is not mapped to a TablezColumn 'r^z! conflicts with existing column 'zs'.  If using Declarative, consider using the use_existing_column parameter of mapped_column() to resolve conflicts.zDCan't place primary key columns on an inherited class with no table.)rÃrqrãràrÄr|rr­rwrŠrßr&r¡r4r£rÑrHÚ primary_keyrÚ append_columnZ_refresh_for_new_column)
rPršr™rqrãràZinherited_mapper_or_configÚinherited_tableZinherited_persist_selectablerqrOrOrQr÷shÿþýþÿ
 ÿ
ÿÿ  ÿÿ
ÿþÿz0_ClassScanMapperConfig._setup_inheriting_columnsc sΈj}ˆjrˆ ¡}ni}|r(| |¡d|krFt|ƒ}| |d¡dD]&}||krJ||}ˆj ||¡||<qJd|krš‡fdd„t |d¡Dƒ|d<d|krÖ|d}t|t    ƒrº|j
}|ˆj k    rÖt   d|d¡‚ˆj ræˆj |d<ˆj r´| dd    ¡s´tˆj d    ƒ‰ˆj}d
|krX‡fd d „|jDƒ ˆjp6d ¡|d
<}| dd„ˆjDƒ¡t| ¡ƒD]N\}}    t|    tjƒs~qd|ˆjkrdˆj|}
t|
tƒrd|    g|
j||<qd| ¡} || d<| ˆ_dS)Nr¨)Zversion_id_colZpolymorphic_onrcsg|]}ˆj ||¡‘qSrO)râr‚)rrErbrOrQresÿzD_ClassScanMapperConfig._prepare_mapper_arguments.<locals>.<listcomp>rÄz:mapper inherits argument given for non-inheriting class %sZconcreteFÚexclude_propertiescsh|]}|ˆjkr|j’qSrO)Z_columntopropertyrü©rrÑ)Úinherited_mapperrOrQrfƒs
þzC_ClassScanMapperConfig._prepare_mapper_arguments.<locals>.<setcomp>rOcSsg|]
}|j‘qSrOr{rƒrOrOrQr‰s)r¨rær$rrâr‚r0Zto_listr¡r'r†rÄrr­r,rÃrÑÚunionr‚Údifference_updateràrr=r1r_Z_propsr(ÚcolumnsÚcopyrå) rPršr¨rårDrEZ inherits_argrr‚rqÚpZresult_mapper_argsrO)r„rPrQÚ_prepare_mapper_argumentsNsf
 
 
 þ
 
 
ÿÿ
 
 
þ
ü ÿ
 
 z0_ClassScanMapperConfig._prepare_mapper_argumentsr»cCsL| |¡t|jdƒr,tdt |jj¡ƒ}nt}| d||j|j    f|j
Ž¡S)NÚ__mapper_cls__zType[Mapper[Any]]rJ) rŠr®rqrr0r|r‹r'rºrÃrårÌrOrOrQr¿Ÿs
 ÿþþz_ClassScanMapperConfig.map)N)"rHrSrTrÁÚ is_deferredrVr·rðr rÚreÚcompilerrrñròrÂrMr?rOr*r+r#rôrõrör}rór÷rŠr0rÒr¿rÓrOrOrÊrQr¯¾sj
 
NNü
Do4M \@<F!JQr¯rí)Úfield_metadatarrMcCs6tjj}||}t|ƒr.t||jƒs.| |¡S|SdSrN)r0ržrŸÚcallabler¡r?)rrÚdecl_apirrOrOrQr±s
 
rcsèeZdZUded<dZe ¡Zded<dddœd    d
„Ze    d d œd d„ƒZ
e
j d ddœdd„ƒZ
e dddœdd„ƒZ e d ddœdd„ƒZe d ddœdd„ƒZe d ddœdd„ƒZe d#d dddœdd„ƒZejfdd dœ‡fd!d"„ Z‡ZS)$rszweakref.ref[Type[Any]]Ú_clsTz?util.OrderedDict[weakref.ref[Type[Any]], _DeferredMapperConfig]Ú_configsrZr`r¼cCsdSrNrOr¾rOrOrQrÀÉsz$_DeferredMapperConfig._early_mappingroracCs| ¡SrN)r’rbrOrOrQrqÍsz_DeferredMapperConfig.cls)r†rMcCs t ||j¡|_||j|j<dSrN)ÚweakrefÚrefÚ_remove_config_clsr’r“)rPr†rOrOrQrqÑs)r•rMcCs|j |d¡dSrN)r“rg)rqr•rOrOrQr–Ösz(_DeferredMapperConfig._remove_config_clsrxcCst|tƒot |¡|jkSrN)r¡r³r”r•r“©rqr†rOrOrQrtÚsz_DeferredMapperConfig.has_clsr cCs2t|dƒr| ¡tj|dt |¡›dd‚dS)NÚ_sa_raise_deferred_configr¬zG has a deferred mapping on it.  It is not yet usable as a mapped class.)rY)r®r˜Úorm_excZUnmappedClassErrorZ_safe_cls_namer—rOrOrQÚraise_unmapped_for_clsßs 
ýz,_DeferredMapperConfig.raise_unmapped_for_clscCs|jt |¡SrN)r“r”r•r—rOrOrQruìsz$_DeferredMapperConfig.config_for_clszList[_DeferredMapperConfig])Úbase_clsÚsortrMcsr‡fdd„dd„|j ¡DƒDƒ}|s*|Sdd„|Dƒ‰g}ˆD] ‰| ‡‡fdd„ˆjDƒ¡q@tt ||¡ƒS)Ncs&g|]\}}|dk    rt|ˆƒr|‘qSrN)r‹)rÚmr«)r›rOrQrôs
þz:_DeferredMapperConfig.classes_for_base.<locals>.<listcomp>cSsg|]}||jf‘qSrOrv©rrrOrOrQröscSsi|] }|j|“qSrOrvržrOrOrQrýsz:_DeferredMapperConfig.classes_for_base.<locals>.<dictcomp>c3s&|]}|ˆkrˆ|ˆˆfVqdSrNrO)rr›)Ú all_m_by_clsÚm_clsrOrQrsþz9_DeferredMapperConfig.classes_for_base.<locals>.<genexpr>)r“ÚvaluesÚextendrƒrr5rœ)rqr›rœÚclasses_for_baseZtuplesrO)rŸr›r rQr£ðs
þþ
z&_DeferredMapperConfig.classes_for_baser»cs|j |jd¡tƒ |¡SrN)r“rgr’rÅr¿r¾rÊrOrQr¿sz_DeferredMapperConfig.map)T)rHrSrTrVrŒr0r´r“rÀÚpropertyrqÚsetterrÂr–rtršrur£rÒr¿rÓrOrOrÊrQrsÀs*
þ
 ÿrszMapperProperty[Any]r`)rqrür¸rMcCs6d|jkr$td|ƒ}dddœdd„}t|tƒr\t||ƒ||ƒj|dd|j ||¡nÆt|tƒr¾|j    }|j
D]6\}}t||ƒ||ƒj|dd|sr|j ||¡qr|r¼|j ||¡ndt|t ƒrØ|j ||¡nJt|t ƒr
|j |kr
t|j ƒ}|j ||¡nt |||¡|j ¡nt |||¡d    S)
z¹add an attribute to an existing declarative class.
 
    This runs through the logic to determine MapperProperty,
    adds it to the Mapper, adds a column to the mapped Table, etc.
 
    rJrsr4)ÚmcrMcSs*t|jtƒr|jSt d|j›d¡‚dS)Nz+Cannot add a new attribute to mapped class z) because it's not mapped against a table.)r¡rKr4rr­rH)r¦rOrOrQÚ_table_or_raises
  ÿz'_add_attribute.<locals>._table_or_raiseT)Zreplace_existingN)rrr¡r3rhr€rJZ add_propertyr%rnror&rrür r³Ú __setattr__Ú_expire_memoizations)rqrür¸Z
mapped_clsr§ÚmprqrLrOrOrQÚ_add_attribute s<
 
 
 
ÿ
 
ÿ
 
 r«)rqrürMcCsvd|jkrf||jkrftd|ƒjjsf|j|}t|ttttfƒrHt    dƒ‚qrt
  ||¡td|ƒj  ¡n t
  ||¡dS)NrJrsz<Can't un-map individual mapped attributes on a mapped class.) rrrJZ_dispose_calledr¡r3r%r&rr½r³Ú __delattr__r©)rqrür¸rOrOrQÚ_del_attributeAs.ÿþÿý
 
ÿÿ ÿ r­)rPÚkwargsrMcKsBt|ƒ}|D]0}t||ƒs,td||jfƒ‚t||||ƒq dS)a=A simple constructor that allows initialization from kwargs.
 
    Sets attributes on the constructed instance using the names and
    values in ``kwargs``.
 
    Only keys that are present as
    attributes of the instance's class are allowed. These could be,
    for example, any mapped columns or relationships.
    z(%r is an invalid keyword argument for %sN)r³r®rPrHr()rPr®r«rDrOrOrQÚ_declarative_constructorYs
 
 ÿr¯r·z Column[Any])rüÚcolumnrMcCs$|jdkr||_|jdkr ||_dSrN)rür£)rür°rOrOrQrhos
 
rh)F)rrUÚ
__future__rr;rïrÚtypingrrrrrrr    r
r r r rrrrrr”Úrrrr™rrÚ_typingrrrrrŽrrZdescriptor_propsrr Z
interfacesr!r"r#r$r%r&Zmapperr'r¨r(r)r0r*r+r,r-r/Zsqlr1Zsql.baser2Z
sql.schemar3r4r5Z util.typingr6r7r8r9r:r;r<r=r>r‘r?r@Z sql.elementsrArBZsql.selectablerCrDrGrZZ_TableArgsTyperFrWrerwr}r„r|r…r—rœZpreload_moduler¢r¦r•r›rÔr¯rrsr«r­r¯rHrhrOrOrOrQÚ<module>sÜ                                                                     ÿ'    
[>
~M4