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
U
¸ý°dj–ã@sUdZddlmZddlmZddlZddlZddlZddlZddlm    Z    ddlm
Z
ddlm Z ddlm Z dd    lm Z dd
lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddl m!Z!ddl m"Z"ddl m#Z#ddl m$Z$ddl m%Z%ddlm&Z&ddlm'Z'd d!lm(Z(d d"lm)Z*d d#lm+Z+d d$lm,Z,d dlmZd d%l,m-Z-d d&l,m.Z.d d'l/m0Z0d d(l1m2Z2d d)l1m3Z3d d*l1m4Z4ejr*dd+l5m6Z6dd,l5m7Z7dd-lm8Z8dd.lm9Z9dd/lm:Z:dd0l;m<Z<dd1l=m>Z>dd2l?m@Z@dd3lAmBZBdd4lAmCZCdd5lDmEZEd d6lFmGZGd d7lHmIZId d8lJmKZKd d9lJmLZLd d:l/mMZMd d;l/mNZNd d<lOmPZPd d=lQmRZRd d>lSmTZTd d?l1mUZUd d@l1mVZVd dAl1mWZWd dBl1mXZXedCe    dDZYedEe    dDZZGdFdG„dGe$eYƒZ[ee\dHdIdJdKfZ]edLe    dDZ^e _¡Z`dMeadN<GdOdP„dPe#e^e"e[e^ƒZbGdQdR„dRebeYeeYƒZcGdSdT„dTe[eYƒZdGdUdV„dVe[eYƒZeGdWdX„dXeeeYeeYƒZfdS)YzŸDescriptor properties are more "auxiliary" properties
that exist as configurational elements, but don't participate
as actively in the load/persist ORM loop.
 
é)Ú annotations)Ú is_dataclassN)ÚAny)ÚCallable)ÚDict)ÚList)ÚNoReturn)ÚOptional)ÚSequence)ÚTuple)ÚType)Ú TYPE_CHECKING)ÚTypeVar)ÚUnioné)Ú
attributes)Úutil)Ú_DeclarativeMapped)ÚLoaderCallableStatus)ÚMapped)Ú PassiveFlag)ÚSQLORMOperations)Ú_AttributeOptions)Ú_IntrospectsAnnotations)Ú _MapsColumns)ÚMapperProperty)ÚPropComparator)Ú    _none_set)Úde_stringify_annotationé)Úevent)Úexc)Úschema)Úsql©Ú
expression)Ú    operators)Ú BindParameter)Ú
is_fwd_ref)Ú    is_pep593)Útyping_get_args)Ú _InstanceDict)Ú _RegistryType)ÚHistory)ÚInstrumentedAttribute)ÚQueryableAttribute)ÚORMCompileState)Ú_ClassScanMapperConfig)ÚMapper)ÚColumnProperty©Ú MappedColumn)Ú InstanceState)Ú
Connection)ÚRow)Ú_DMLColumnArgument)Ú    _InfoType)Ú
ClauseList)Ú ColumnElement)Ú OperatorType)ÚColumn)ÚSelect)Ú_AnnotationScanType)ÚCallableReference)ÚDescriptorReference)ÚRODescriptorReferenceÚ_T)ÚboundÚ_PTc@sXeZdZUdZdZded<dZdZded<ej    fdd    d
d d œd d„Z
dddœdd„Z dS)ÚDescriptorPropertyzO:class:`.MapperProperty` which proxies access to a
    user-defined descriptor.Nú Optional[str]ÚdocFzDescriptorReference[Any]Ú
descriptorúInstanceState[Any]r+rr-©ÚstateÚdict_ÚpassiveÚreturncCs
tƒ‚dS©N)ÚNotImplementedError©ÚselfrMrNrO©rUúVd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/orm/descriptor_props.pyÚ get_historyeszDescriptorProperty.get_historyú Mapper[Any]ÚNone©ÚmapperrPcsðˆ‰G‡fdd„dtjƒ}ˆjdkrHtˆjˆjdƒ}ˆ ˆj|¡rH|ˆ_ˆjdkr ddddœ‡fdd„ }dddœ‡fd    d
„ }dddœ‡fd d „ }t|||d ˆ_t ˆj¡ˆj    jˆjˆj‡‡fdd„ˆj
ˆd}|ˆjƒ|_ ˆj   ˆj|¡dS)NcsZeZdZdZdZdZeddœ‡fdd„ ƒZddœd    d
„Ze    j
fd d d ddœ‡fdd„ Z dS)z7DescriptorProperty.instrument_class.<locals>._ProxyImplFTÚbool©rPcsˆjSrQ)Ú uses_objects©rT©ÚproprUrVr^uszDDescriptorProperty.instrument_class.<locals>._ProxyImpl.uses_objectsÚstr©ÚkeycSs
||_dSrQrc)rTrdrUrUrVÚ__init__ysz@DescriptorProperty.instrument_class.<locals>._ProxyImpl.__init__rKr+rr-rLcsˆ |||¡SrQ)rWrSr`rUrVrW|szCDescriptorProperty.instrument_class.<locals>._ProxyImpl.get_historyN) Ú__name__Ú
__module__Ú __qualname__Zaccepts_scalar_loaderZload_on_unexpireZ
collectionÚpropertyr^rerÚ PASSIVE_OFFrWrUr`rUrVÚ
_ProxyImplpsürkrrY)ÚobjÚvaluerPcst|ˆj|ƒdSrQ)ÚsetattrÚname)rlrmr_rUrVÚfset‹sz1DescriptorProperty.instrument_class.<locals>.fset)rlrPcst|ˆjƒdSrQ)Údelattrro©rlr_rUrVÚfdelŽsz1DescriptorProperty.instrument_class.<locals>.fdelcs t|ˆjƒSrQ)Úgetattrrorrr_rUrVÚfget‘sz1DescriptorProperty.instrument_class.<locals>.fget)rurprscs
ˆ ˆ¡SrQ)Ú_comparator_factoryrU)r[rTrUrVÚ<lambda>šóz5DescriptorProperty.instrument_class.<locals>.<lambda>)rIZoriginal_property)rZ AttributeImplrJrtÚclass_rdZ_is_userland_descriptorriZcreate_proxied_attributeÚparentrIÚimplÚ class_managerZinstrument_attribute)rTr[rkÚdescrprsruÚ
proxy_attrrU)r[rarTrVÚinstrument_classms*
 
 
 ú z#DescriptorProperty.instrument_class) rfrgrhÚ__doc__rIÚ__annotations__r^Z_links_to_entityrrjrWrrUrUrUrVrGZs
 ürGz
Column[_T]zMappedColumn[_T]zInstrumentedAttribute[_T]z
Mapped[_T]Ú_CCzFweakref.WeakKeyDictionary[Type[Any], Callable[[Any], Tuple[Any, ...]]]Ú_composite_gettersc s0eZdZUdZded<ded<ded<ded    <dad
d d d
d
d
d œd dddddddddœ    ‡fdd„Zdddœ‡fdd„ Zdddœd d!„Zdd"œd#d$„Ze    ƒZ
dd"œd%d&„Z e   d'¡d(d)d*dd+d,d-d-ddd.œ
d/d0„ƒZdd"œd1d2„Ze   d'¡e   d3¡d)d*dd+dd4œd5d6„ƒƒZe jd7d"œd8d9„ƒZe je   d:¡d;d"œd<d=„ƒƒZe je   d:¡d>d"œd?d@„ƒƒZedAd"œdBdC„ƒZedDd"œdEdF„ƒZe   d:¡dd"œdGdH„ƒZdd"œdIdJ„Ze jdKd"œdLdM„ƒZdNd"œdOdP„ZejfdQdRdSdTdUœdVdW„ZddXdœdYdZ„Z Gd[d\„d\e!j"e#ƒZ$Gd]d^„d^e%e&ƒZ'd+d"œd_d`„Z(‡Z)S)bÚCompositePropertyzöDefines a "composite" mapped attribute, representing a collection
    of columns as one attribute.
 
    :class:`.CompositeProperty` is constructed using the :func:`.composite`
    function.
 
    .. seealso::
 
        :ref:`mapper_composite`
 
    z$Union[Type[_CC], Callable[..., _CC]]Úcomposite_classz#Tuple[_CompositeAttrType[Any], ...]Úattrsz=CallableReference[Optional[Callable[[_CC], Tuple[Any, ...]]]]Ú_generated_composite_accessorzType[Comparator[_CC]]Úcomparator_factoryNF)Úattribute_optionsÚactive_historyÚdeferredÚgrouprˆÚinfozCUnion[None, Type[_CC], Callable[..., _CC], _CompositeAttrType[Any]]z_CompositeAttrType[Any]úOptional[_AttributeOptions]r\rHzOptional[Type[Comparator[_CC]]]úOptional[_InfoType]r)    Ú_class_or_attrr†r‰rŠr‹rŒrˆrÚkwargsc
s tƒj|dt|tttjfƒr4|f||_d|_n ||_||_||_    ||_
||_ |dk    r^|n|j j |_d|_|dk    r‚|j |¡t |¡| ¡| ¡dS©N)r‰)ÚsuperreÚ
isinstancerrbr#r<r†r…rŠr‹rŒÚ    __class__Ú
Comparatorrˆr‡rÚupdaterÚset_creation_orderÚ_create_descriptorÚ_init_accessor)
rTrr‰rŠr‹rŒrˆrr†r‘©r•rUrVreËs& ÿý 
zCompositeProperty.__init__rXrYrZcstƒ |¡| ¡dSrQ)r“rÚ_setup_event_handlers©rTr[r›rUrVrós z"CompositeProperty.instrument_classr‚zTuple[Any, ...]©rmrPc
Cs`|jr| |¡Sz
|j}Wn:tk
rT}zt d|jj›d¡|‚W5d}~XYnX|ƒSdS)NzComposite class zX is not a dataclass and does not define a __composite_values__() method; can't get state)r‡Ú__composite_values__ÚAttributeErrorÚsa_excÚInvalidRequestErrorr…rf)rTrmÚaccessorZaerUrUrVÚ_composite_values_from_instance÷s
 
ÿüz1CompositeProperty._composite_values_from_instancer]cCs | ¡dS)zwInitialization which occurs after the :class:`.Composite`
        has been associated with its parent mapper.
 
        N)Ú_setup_arguments_on_columnsr_rUrUrVÚdo_initszCompositeProperty.do_initcsTdddœ‡fdd„ ‰ddddœ‡‡fdd„ }dddœ‡‡fd    d
„ }tˆ||ƒˆ_d S) ztCreate the Python descriptor that will serve as
        the access point on instances of the mapped class.
 
        r)ÚinstancerPcs†t ˆ¡}t ˆ¡}ˆj|krx‡fdd„ˆjDƒ}ˆj|krx|jdk    sPt |¡sxˆj|Ž|ˆj<|jj     
|ˆj ˆjg¡|  ˆjd¡S)Ncsg|]}tˆ|ƒ‘qSrU)rt©Ú.0rd©r§rUrVÚ
<listcomp>szFCompositeProperty._create_descriptor.<locals>.fget.<locals>.<listcomp>) rÚ instance_dictÚinstance_staterdÚ_attribute_keysrÚ
issupersetr…ÚmanagerÚdispatchÚrefreshÚ_COMPOSITE_FGETÚget)r§rNrMÚvaluesr_rªrVrus$
 
 
 
ÿ    
ÿÿÿz2CompositeProperty._create_descriptor.<locals>.fgetrY)r§rmrPcs¸t |¡}t |¡}|jˆj}|jjr2ˆ|ƒ}n| ˆjtj    ¡}|jj
D]}|||||j ƒ}qJ||ˆj<|dkrŒˆj D]}t ||dƒqxn(tˆj ˆ |¡ƒD]\}}t |||ƒqždSrQ)rr¬r­r°rdr±Ú_active_historyr´rÚNO_VALUEÚsetr{r®rnÚzipr¤)r§rmrNrMÚattrÚpreviousÚfnrd©rurTrUrVrp0s"
 
 
 
 
þ z2CompositeProperty._create_descriptor.<locals>.fsetcsŠt |¡}t |¡}|jˆj}|jjr@ˆ|ƒ}| ˆjd¡n| ˆjtj    ¡}|jˆj}|j 
|||j ¡ˆj D]}t ||dƒqtdSrQ)rr­r¬r°rdr±r¶Úpoprr·Úremover{r®rn)r§rMrNrºr»rdr½rUrVrsGs
 
 
z2CompositeProperty._create_descriptor.<locals>.fdelN)rirJ)rTrprsrUr½rVr™sz$CompositeProperty._create_descriptorúsqlalchemy.orm.propertiesr1r,z    Type[Any]rbzOptional[Type[Mapped[Any]]]zOptional[_AnnotationScanType])
Ú    decl_scanÚregistryÚclsÚoriginating_modulerdÚmapped_containerÚ
annotationÚextracted_mapped_annotationÚis_dataclass_fieldrPc
Cs
tjjj}
|jdkr(|dkr(| ||¡|} t| ƒr@t| ƒd} | r²|jdkr²t| t    ƒsdt
| ddr¬|dkrœt | dƒr|| j nt    | ƒ} t  d| ›d| ›d¡‚t|| |dd} | |_t|jƒrÎ| ||||¡n0|jD](} t| |
tjfƒrÔ| jdkrÔt  d    ¡‚qÔ| ¡dS)
NrT)Z check_genericÚ__forward_arg__zCan't use forward ref z9 for composite class argument; set up the type as Mapped[ú])Zinclude_genericzIComposite class column arguments must be named unless a dataclass is used)rÚ    preloadedÚorm_propertiesr5r…Z_raise_for_requiredr)r*r”rbr(ÚhasattrrÉr¡Ú ArgumentErrorrrÚ_setup_for_dataclassr†r"r>rorš)rTrÁrÂrÃrÄrdrÅrÆrÇrÈr5ZargumentZstr_argrºrUrUrVÚdeclarative_scanYsP
ÿþ   ÿÿýÿÿ
 
ÿþÿz"CompositeProperty.declarative_scancs¶t|jƒr`t|jdƒs`t |j¡}tjdd„|j ¡Dƒމt    |jƒdkrZ‡fdd„|_
nˆ|_
|jdk    r²t |jt ƒr²|jt kr²|j
dk    r˜|j
t |j<nt|jdƒr²dd„t |j<dS)NrŸcSsg|]
}|j‘qSrU)ro)r©ÚprUrUrVr«™sz4CompositeProperty._init_accessor.<locals>.<listcomp>rcs
ˆ|ƒfSrQrUrr©ÚgetterrUrVrwœrxz2CompositeProperty._init_accessor.<locals>.<lambda>cSs| ¡SrQ©rŸrrrUrUrVrw¬rx)rr…rÍÚinspectÚ    signatureÚoperatorÚ
attrgetterÚ
parametersrµÚlenr‡r”Útyperƒ)rTÚinsprUrÒrVrš“s6 ÿ ÿÿ
þý
þÿ þÿz CompositeProperty._init_accessorzsqlalchemy.orm.decl_base)rÂrÃrÄrdrPc
 
CsÐtjjj}tjj}t |j¡}t     |j
  ¡|j ¡D]˜\}}    |dkrnt  dt|j ƒ›d|jj›dt|j
ƒ›¡‚|    dkrŒ|ƒ}    |j |    f7_ t|    |ƒr°|     |||||j|j¡q2t|    tjƒr2| |j|    ¡q2dS)Nznumber of composite attributes z3 exceeds that of the number of attributes in class ú )rrËrÌr5Z orm_decl_baserÕrÖr…Ú    itertoolsÚ zip_longestrÙrµr†r¡rÎrÚrfr”Zdeclarative_scan_for_compositerorÆr"r>Z_undefer_column_name)
rTrÂrÃrÄrdr5Ú    decl_baserÜÚparamrºrUrUrVrÏ®s2    
 ÿ $ÿ
ú z&CompositeProperty._setup_for_dataclassú!Sequence[QueryableAttribute[Any]]cs‡fdd„ˆjDƒS)Ncsg|]}tˆjj|jƒ‘qSrU)rtrzryrd©r©rar_rUrVr«Ùsz:CompositeProperty._comparable_elements.<locals>.<listcomp>©Úpropsr_rUr_rVÚ_comparable_elements×sz&CompositeProperty._comparable_elementszorm.propertieszSequence[MapperProperty[Any]]cCsªg}tjjj}|jD]}t|tƒr4|jj|dd}nLt|t    j
ƒrN|jj |}n2t||ƒrh|jj |j }nt|t jƒr||j}nd}t|tƒsšt d|›¡‚| |¡q|S)NF)Z_configure_mapperszYComposite expects Column objects or mapped attributes/attribute names as arguments, got: )rrËrÌr5r†r”rbrzZ get_propertyr"r>Ú_columntopropertyÚcolumnrr.rirr¡rÎÚappend)rTrår5rºrarUrUrVråÛs$
 
 
 
 
ÿ zCompositeProperty.propszSequence[Column[Any]]cstjjj‰‡fdd„|jDƒS)Ncs0g|](}t|tjˆfƒrt|ˆƒr(|jn|‘qSrU)r”r"r>rè)r©Úar4rUrVr«úsþz-CompositeProperty.columns.<locals>.<listcomp>)rrËrÌr5r†r_rUr4rVÚcolumnsös
 
þzCompositeProperty.columnszOptional[MapperProperty[_CC]]cCs|SrQrUr_rUrUrVÚmapper_property_to_assignsz+CompositeProperty.mapper_property_to_assignz$List[Tuple[schema.Column[Any], int]]cCsdd„|jDƒS)NcSsg|]}|jdkr|df‘qS)Nr)Útable)r©ÚcrUrUrVr«s
z7CompositeProperty.columns_to_assign.<locals>.<listcomp>)rër_rUrUrVÚcolumns_to_assignsz#CompositeProperty.columns_to_assigncCsPtjjj}|jD]:}t||ƒs"qn|}|j|_|jrB|j|_d|_|j    |_    qdS)zwPropagate configuration arguments made on this composite
        to the target columns, for those that apply.
 
        ))r‹T)Z
instrumentTN)
rrËrÌr3rår”rŠr‹Z strategy_keyrŒ)rTr3raZcproprUrUrVr¥s
 
 
z-CompositeProperty._setup_arguments_on_columnscs
ddddœ‡fdd„ }dddddœ‡‡fd    d
„ }dddd dd œ‡fd d„ ‰ddddœ‡fdd„ }dddddœ‡fdd„ }tjˆjd|ddtjˆjd|ddtjˆjd|dddtjˆjd|dddtjˆjd|dddˆjjˆj}|j|j_ˆj|jj_dS) z>Establish events that populate/expire the composite attribute.rKr0rY)rMÚcontextrPcsˆ||ddddS)NF©Ú
is_refreshrU)rMrð)Ú_load_refresh_handlerrUrVÚ load_handlersz=CompositeProperty._setup_event_handlers.<locals>.load_handlerzOptional[Sequence[str]])rMrðÚto_loadrPcs.|rˆjh ˆj¡ |¡r*ˆ|||dddS)NTrñ)rdÚunionr®Ú intersection)rMrðrõ©rórTrUrVÚrefresh_handler$s ÿþz@CompositeProperty._setup_event_handlers.<locals>.refresh_handlerr\)rMrðrõròrPcs`ˆj}|r|ˆjkr"ˆj|kr"dSˆjD]}||kr(dSq(ˆj‡fdd„ˆjDƒŽ|ˆj<dS)Ncsg|]}ˆj|‘qSrU)Údictr¨©rMrUrVr«NszZCompositeProperty._setup_event_handlers.<locals>._load_refresh_handler.<locals>.<listcomp>)rúr³rdr®r…)rMrðrõròrNÚkr_rûrVró0s ÿÿþ
ÿzFCompositeProperty._setup_event_handlers.<locals>._load_refresh_handler)rMÚkeysrPcs,|dkstˆjƒ |¡r(|j ˆjd¡dSrQ)r¸r®r÷rúr¾rd)rMrýr_rUrVÚexpire_handlerQsz?CompositeProperty._setup_event_handlers.<locals>.expire_handlerrXr7)r[Ú
connectionrMrPcs|j ˆjd¡dS)zêAfter an insert or update, some columns may be expired due
            to server side defaults, or re-populated due to client side
            defaults.  Pop out the composite value here so that it
            recreates.
 
            N)rúr¾rd)r[rÿrMr_rUrVÚinsert_update_handlerWs zFCompositeProperty._setup_event_handlers.<locals>.insert_update_handlerZ after_insertT)ÚrawZ after_updateÚload)rÚ    propagater²ZexpireN)    r Úlistenrzr|rdr±r{rŠr¶)rTrôrùrþrr~rUrørVrœsR !ÿÿÿÿÿ
z'CompositeProperty._setup_event_handlersú Sequence[str]cCsdd„|jDƒS)NcSsg|]
}|j‘qSrUrcrãrUrUrVr«}sz5CompositeProperty._attribute_keys.<locals>.<listcomp>rär_rUrUrVr®{sz!CompositeProperty._attribute_keysz Callable[[Dict[str, Any]], None]csJˆjrˆj‰ndddœdd„‰dd„ˆjDƒ‰dd    d
œ‡‡‡fd d „ }|S) Nrz
Tuple[Any])ÚvalrPcSs| ¡SrQrÔ)rrUrUrVÚ
get_values‡szOCompositeProperty._populate_composite_bulk_save_mappings_fn.<locals>.get_valuescSsg|]
}|j‘qSrUrcrãrUrUrVr«ŠszOCompositeProperty._populate_composite_bulk_save_mappings_fn.<locals>.<listcomp>zDict[str, Any]rY)Ú    dest_dictrPc    s*| dd„tˆˆ| ˆj¡ƒƒDƒ¡dS)NcSsi|]\}}||“qSrUrU)r©rdrrUrUrVÚ
<dictcomp>ŽsÿzaCompositeProperty._populate_composite_bulk_save_mappings_fn.<locals>.populate.<locals>.<dictcomp>)r—r¹r¾rd)r©r†rrTrUrVÚpopulateŒsÿþÿzMCompositeProperty._populate_composite_bulk_save_mappings_fn.<locals>.populate)r‡rå)rTr rUr
rVÚ)_populate_composite_bulk_save_mappings_fns 
z;CompositeProperty._populate_composite_bulk_save_mappings_fnrKr+rr-rLc Csºg}g}d}|jD]j}|j}|j|j ||¡}    |     ¡r<d}|     ¡}
|
rT| |
¡n
| d¡|    j    rr| |    j    ¡q| d¡q|r t
  |j |Žgd|j |Žg¡St
  d|j |Žgd¡SdS)z>Provided for userland code that uses attributes.get_history().FTNrU) rårdr°r{rWZ has_changesÚ non_deletedÚextendréÚdeletedrr-r…) rTrMrNrOÚaddedrZ has_historyrardÚhistr rUrUrVrW˜s,
 
 
 
ýzCompositeProperty.get_historyzComposite.Comparator[_CC]cCs | ||¡SrQ)rˆrrUrUrVrv½sz%CompositeProperty._comparator_factorycs8eZdZdddœ‡fdd„ Zdddd    d
œd d „Z‡ZS) z!CompositeProperty.CompositeBundlez Composite[_T]r;)Ú    property_Úexprcs||_tƒj|jf|žŽdSrQ)rir“rerd)rTrrr›rUrVreÃsz*CompositeProperty.CompositeBundle.__init__z Select[Any]z#Sequence[Callable[[Row[Any]], Any]]rzCallable[[Row[Any]], Any])ÚqueryÚprocsÚlabelsrPcsdddœ‡‡fdd„ }|S)NzRow[Any]r)ÚrowrPcsˆjj‡fdd„ˆDƒŽS)Ncsg|] }|ˆƒ‘qSrUrU)r©Úproc©rrUrVr«ÓszXCompositeProperty.CompositeBundle.create_row_processor.<locals>.proc.<locals>.<listcomp>)rir…r©rrTrrVrÑsÿzDCompositeProperty.CompositeBundle.create_row_processor.<locals>.procrU)rTrrrrrUrrVÚcreate_row_processorËsz6CompositeProperty.CompositeBundle.create_row_processor)rfrgrhrerÚ __classcell__rUrUr›rVÚCompositeBundleÂsrc@sêeZdZUdZdZded<ejddœdd„ƒZd    dœd
d „Z    ejd    dœd d „ƒZ
dddœdd„Z ejddœdd„ƒZ dddœdd„Z dddœdd„Zdddœdd„Zdddœdd„Zdddœd d!„Zdddœd"d#„Zd$ddd%œd&d'„ZdS)(zCompositeProperty.Comparatora·Produce boolean, comparison, and other operators for
        :class:`.Composite` attributes.
 
        See the example in :ref:`composite_operations` for an overview
        of usage , as well as the documentation for :class:`.PropComparator`.
 
        .. seealso::
 
            :class:`.PropComparator`
 
            :class:`.ColumnOperators`
 
            :ref:`types_operators`
 
            :attr:`.TypeEngine.comparator_factory`
 
        Nz%RODescriptorReference[Composite[_PT]]rar;r]cCstj|jddiŽS)NrŒF)r%r;rær_rUrUrVÚclausesðs
ÿÿz$CompositeProperty.Comparator.clausesz&CompositeProperty.CompositeBundle[_PT]cCs|jSrQr$r_rUrUrVÚ__clause_element__ösz/CompositeProperty.Comparator.__clause_element__cCs*|j |j|j|jjdœ¡}t |j|¡S)N)Z parententityZ parentmapperÚ    proxy_key)rZ    _annotateZ _parententityrardr„r)rTrrUrUrVr%ùsýÿz'CompositeProperty.Comparator.expressionrz(Sequence[Tuple[_DMLColumnArgument, Any]]ržcCszt|tƒr|j}|dkr,dd„|jjDƒ}n>t|jjtƒrVt||jjƒrV|j |¡}nt     d|j|f¡‚t
t |j |ƒƒS)NcSsg|]}d‘qSrQrUr¨rUrUrVr« szDCompositeProperty.Comparator._bulk_update_tuples.<locals>.<listcomp>z)Can't UPDATE composite attribute %s to %r) r”r'rmrar®r…rÛr¤r¡rÎÚlistr¹ræ)rTrmrµrUrUrVÚ_bulk_update_tupless
ÿÿÿz0CompositeProperty.Comparator._bulk_update_tuplesrâcs(ˆjr‡fdd„ˆjjDƒSˆjjSdS)Ncsg|]}tˆjj|jƒ‘qSrU)rtÚ_adapt_to_entityÚentityrdrãr_rUrVr«sÿzECompositeProperty.Comparator._comparable_elements.<locals>.<listcomp>)r#rarær_rUr_rVræs
 
þz1CompositeProperty.Comparator._comparable_elementszColumnElement[bool])ÚotherrPcCs| tj|¡SrQ)Ú_comparer&Úeq©rTr%rUrUrVÚ__eq__$sz#CompositeProperty.Comparator.__eq__cCs| tj|¡SrQ)r&r&Úner(rUrUrVÚ__ne__'sz#CompositeProperty.Comparator.__ne__cCs| tj|¡SrQ)r&r&Últr(rUrUrVÚ__lt__*sz#CompositeProperty.Comparator.__lt__cCs| tj|¡SrQ)r&r&Úgtr(rUrUrVÚ__gt__-sz#CompositeProperty.Comparator.__gt__cCs| tj|¡SrQ)r&r&Úler(rUrUrVÚ__le__0sz#CompositeProperty.Comparator.__le__cCs| tj|¡SrQ)r&r&Úger(rUrUrVÚ__ge__3sz#CompositeProperty.Comparator.__ge__r=)r×r%rPcst|dkrdgtˆjjƒ}n ˆj |¡}‡fdd„tˆjj|ƒDƒ}ˆjrjˆjdk    sXt‚‡fdd„|Dƒ}tj    |ŽS)Ncsg|]\}}ˆ||ƒ‘qSrUrU)r©rêÚb)r×rUrVr«Esÿz9CompositeProperty.Comparator._compare.<locals>.<listcomp>csg|]}ˆ |¡‘qSrU)Úadapter)r©Úxr_rUrVr«Ks)
rÚrarær¤r¹r#r5ÚAssertionErrorr#Úand_)rTr×r%rµZ comparisonsrU)r×rTrVr&=s 
 þz%CompositeProperty.Comparator._compare)rfrgrhr€Ú__hash__rrÚmemoized_propertyrrr%r"rær)r+r-r/r1r3r&rUrUrUrVr–Øs$
 
    
r–cCst|jjjƒd|jS)NÚ.)rbrzryrfrdr_rUrUrVÚ__str__NszCompositeProperty.__str__)N)*rfrgrhr€rrerr¤r¦Úobjectr³r™rÚpreload_modulerÐršrÏr:ræråZnon_memoized_propertyrërirìrïr¥rœr®r rrjrWrvÚorm_utilZBundlerDrrrFr–r<rrUrUr›rVr„³sb
 üõ&(J"9'_ü%vr„c@seZdZdZdZdS)Ú    CompositeaSDeclarative-compatible front-end for the :class:`.CompositeProperty`
    class.
 
    Public constructor is the :func:`_orm.composite` function.
 
    .. versionchanged:: 2.0 Added :class:`_orm.Composite` as a Declarative
       compatible subclass of :class:`_orm.CompositeProperty`.
 
    .. seealso::
 
        :ref:`mapper_composite`
 
    TN©rfrgrhr€Z inherit_cacherUrUrUrVr@Rsr@cs6eZdZdZdddœdd„Zddœ‡fd    d
„ Z‡ZS) ÚConcreteInheritedPropertya4A 'do nothing' :class:`.MapperProperty` that disables
    an attribute on a concrete subclass that is only present
    on the inherited mapper, not the concrete classes' mapper.
 
    Cases where this occurs include:
 
    * When the superclass mapper is mapped against a
      "polymorphic union", which includes all attributes from
      all subclasses.
    * When a relationship() is configured on an inherited mapper,
      but not on the subclass mapper.  Concrete mappers require
      that relationship() is configured explicitly on each
      subclass.
 
    rXzType[PropComparator[_T]]rZcCsPd}|j ¡D]*}|j|j}t|ddƒdk    r|j}q:q|dk    sFt‚|||ƒS)Nrˆ)rzZiterate_to_rootZ_propsrdrtrˆr7)rTr[Zcomparator_callableÚmrÑrUrUrVrvvs  z-ConcreteInheritedProperty._comparator_factoryrYr]cs<tƒ ¡ddœ‡fdd„ ‰G‡‡fdd„dƒ}|ƒˆ_dS)Nrr]cstdˆjˆjˆjfƒ‚dS)NzgConcrete %s does not implement attribute %r at the instance level.  Add this property explicitly to %s.)r rzrdrUr_rUrVÚwarn‡s
ýÿz0ConcreteInheritedProperty.__init__.<locals>.warncsTeZdZdddddœ‡fdd„ Zddddœ‡fdd„ Zddddd    œ‡‡fd
d „ Zd S) zDConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProprr)ÚsrlrmrPcs
ˆƒdSrQrU)rErlrm©rDrUrVÚ__set__szLConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__set__)rErlrPcs
ˆƒdSrQrU)rErlrFrUrVÚ
__delete__“szOConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__delete__)rErlÚownerrPcs|dkrˆjSˆƒdSrQ)rJ)rErlrI©rTrDrUrVÚ__get__–szLConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__get__N)rfrgrhrGrHrKrUrJrUrVÚNoninheritedConcretePropsrL)r“rerJ)rTrLr›rJrVre„s
 z"ConcreteInheritedProperty.__init__)rfrgrhr€rvrerrUrUr›rVrBesrBc    s®eZdZUdZded<d&dddddd    d
d œ‡fd d „ ZesLeddœdd„ƒZe    j
ddœdd„ƒZ dddœdd„Z e jfdddddœdd „Ze     d!¡ddd"d#œd$d%„ƒZ‡ZS)'ÚSynonymPropertya8Denote an attribute name as a synonym to a mapped property,
    in that the attribute will mirror the value and expression behavior
    of another attribute.
 
    :class:`.Synonym` is constructed using the :func:`_orm.synonym`
    function.
 
    .. seealso::
 
        :ref:`synonyms` - Overview of synonyms
 
    z"Optional[Type[PropComparator[_T]]]rˆNrbzOptional[bool]z Optional[Any]rŽrrH)roÚ
map_columnrJrˆr‰rrIcsjtƒj|d||_||_||_||_|r2||_n|rF|jrF|j|_nd|_|r\|j     |¡t
  |¡dSr’) r“rerorNrJrˆrIr€rr—rr˜)rTrorNrJrˆr‰rrIr›rUrVre®s
 
 
 zSynonymProperty.__init__r\r]cCst|jj|jƒjjSrQ)rtrzryror{r^r_rUrUrVr^ËszSynonymProperty.uses_objectsz/Union[MapperProperty[_T], SQLORMOperations[_T]]cCsht|jj|jƒ}t|dƒr&t|jtƒsbt|tj    ƒr8|j
St|t ƒrF|St   d|jjj|j|f¡‚|jS)NrizGsynonym() attribute "%s.%s" only supports ORM mapped attributes, got %r)rtrzryrorÍr”rirrr/Z
comparatorrr¡r¢rf)rTrºrUrUrVÚ_proxied_objectÒs ÿ 
þÿzSynonymProperty._proxied_objectrXzSQLORMOperations[_T]rZcCs<|j}t|tƒr4|jr$| ||¡}n | ||¡}|S|SdSrQ)rOr”rrˆ)rTr[raÚcomprUrUrVrvés
 z#SynonymProperty._comparator_factoryrKr+rr-rLcCs"t|jj|jƒ}|jj|||dS)N)rO)rtrzryror{rW)rTrMrNrOrºrUrUrVrWõszSynonymProperty.get_historyrÀrY)rzÚinitrPcCsÂtjj}|jr¸|j|jjkr:t d|j    |jj
|jf¡‚nN|jj|j|j krˆ|j |jj|jj|j    krˆt d|j|j    |j    |jf¡‚|  |jj|j¡}|j |j    ||dd|j|_||_dS)Nz>Can't compile synonym '%s': no column on table '%s' named '%s'zpCan't call map_column=True for synonym %r=%r, a ColumnProperty already exists keyed to the name %r for column %rT)rQZ    setparent)rrËrÌrNrdZpersist_selectablerîr¡rÎroÚ descriptionrçr3Z_configure_propertyZ_mapped_by_synonymrz)rTrzrQÚ
propertiesrÑrUrUrVÚ
set_parentþs@ýþÿ
ÿÿ ÿýýýÿ ÿzSynonymProperty.set_parent)NNNNNN)rfrgrhr€rrer rir^rr:rOrvrrjrWr>rTrrUrUr›rVrMžs&
 ø ü    rMc@seZdZdZdZdS)ÚSynonymaKDeclarative front-end for the :class:`.SynonymProperty` class.
 
    Public constructor is the :func:`_orm.synonym` function.
 
    .. versionchanged:: 2.0 Added :class:`_orm.Synonym` as a Declarative
       compatible subclass for :class:`_orm.SynonymProperty`
 
    .. seealso::
 
        :ref:`synonyms` - Overview of synonyms
 
    TNrArUrUrUrVrU%s rU)gr€Ú
__future__rZ dataclassesrrÕrÞr×Útypingrrrrrr    r
r r r rrÚweakrefÚrrr?ÚbaserrrrrZ
interfacesrrrrrrrr r!r¡r"r#r%r&Z sql.elementsr'Z util.typingr(r)r*Ú_typingr+r,r-r.r/rðr0ràr1r[r2rSr3r5rMr6Z engine.baser7Z
engine.rowr8Z sql._typingr9r:r;r<Z sql.operatorsr=Z
sql.schemar>Zsql.selectabler?r@rArBrCrDrFrGrbZ_CompositeAttrTyper‚ÚWeakKeyDictionaryrƒrr„r@rBrMrUrUrUrUrVÚ<module>sÄ                                                                 Hüÿ     þ
 
ÿ$9