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
U
¸ý°dÄâã@sÈdZddlmZddlmZddlmZddlmZddlmZddlmZddlm    Z    dd    lm
Z
dd
lm Z dd lm Z dd lm Z dd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZ ddlmZddl!m"Z"ddl#m$Z$ddl#m%Z%dd l#m&Z&dd!l'm(Z(ddl'mZ)dd"l*m+Z+dd#l*m,Z,dd$l*m-Z-dd%lm.Z.e r>dd&l/m0Z0dd'lm1Z1dd(l2m3Z3dd)l4m5Z5dd*l6m7Z7dd+l8m9Z9dd,l:m;Z;dd-l<m=Z=dd.l>m?Z?dd/l#m@Z@dd0l'mAZAe d1ed2ZBe d3eCd2ZDe E¡ZFeeGee eGeffZHd4d5d6d7œd8d9„ZIe Jd:¡dzd<d=„ƒZKejLd>d?d@e Jd:¡d{dAdBdCdDdEœdFdG„ƒƒZMdHdIdJdKdLdMœdNdO„ZNdPdPdPdPdQej.ej.dQdQdRœ    dHdSdTdUdVdWdXdCdYdZdCdCd[œ d\d]„ZOdPdPdPdPdPdQej.ej.dQdQd^œ
dHdSd_dUdVdWdXd`dCdYdZdCdCdaœ dbdc„ZPd|ddde„ZQd}dfdg„ZRdhdi„ZSd~djdk„ZTdldm„ZUdndo„ZVdpdq„ZWdrds„ZXdtdu„ZYGdvdw„dwƒZZdxdy„Z[dPS)zßprivate module containing functions used to convert database
rows into object instances and associated state.
 
the functions here are called primarily by Query, Mapper,
as well as some of the attribute loading strategies.
 
é)Ú annotations)ÚAny)ÚDict)ÚIterable)ÚList)ÚMapping)ÚOptional)ÚSequence)ÚTuple)Ú TYPE_CHECKING)ÚTypeVar)ÚUnioné)Ú
attributes)Úexc)Ú path_registry)Ú_DEFER_FOR_STATE)Ú_RAISE_FOR_STATE)Ú_SET_DEFERRED_EXPIRED)Ú PassiveFlag)Ú FromStatement)ÚORMCompileState)Ú QueryContext)Ú    _none_set)Ú    state_stré)Úutil)Ú result_tuple)ÚChunkedIteratorResult)Ú FrozenResult)ÚSimpleResultMetaData)Úselect)Ú ForUpdateArg)ÚLABEL_STYLE_TABLENAME_PLUS_COL)Ú SelectState)Ú
EMPTY_DICT)Ú_IdentityKeyType)ÚLoaderCallableStatus)Ú    ORMOption)ÚMapper)ÚQuery)ÚSession)Ú InstanceState)Ú CursorResult)Ú_ExecuteOptions)ÚResult)ÚSelectÚ_T)ÚboundÚ_OzCursorResult[Any]rz Result[Any])ÚcursorÚcontextÚreturnc sÈtƒˆ_ˆjrd‰ˆjjˆ_n
d‰iˆ_ˆj}|j}ˆjj oVt|j    ƒdkoV|j    dj
‰zFt t ‡‡fdd„ˆjj    DƒŽƒ\‰}}ˆj rœˆjs’ˆjrœt d¡‚Wn0tk
rÎt ¡ˆ ¡W5QRXYnXdd    „‰d
d „‰ˆjjr‡‡fd d„ˆjj    Dƒ}n‡‡‡fd d„ˆjj    Dƒ}t|||d}‡‡‡‡‡fdd„}ˆj dd¡rht |dƒƒ‰‡fdd„}t||ˆˆˆjjd}    |    j t|ˆd¡|    _ˆjj r°dd„}
d|
f|    _!ˆj rÄ|      ˆj ¡|    S)a¤Return a :class:`.Result` given an ORM query context.
 
    :param cursor: a :class:`.CursorResult`, generated by a statement
     which came from :class:`.ORMCompileState`
 
    :param context: a :class:`.QueryContext` object
 
    :return: a :class:`.Result` object representing ORM results
 
    .. versionchanged:: 1.4 The instances() function now uses
       :class:`.Result` objects and has an all new interface.
 
    FTrrcsg|]}| ˆˆ¡‘qS©)Z row_processor)Ú.0Ú query_entity)r5r4r7úMd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/orm/loading.pyÚ
<listcomp>qsÿzinstances.<locals>.<listcomp>zØCan't use yield_per with eager loaders that require uniquing or row buffering, e.g. joinedload() against collections or subqueryload().  Consider the selectinload() strategy for better flexibility in loading objects.cSst d¡‚dS)Nz@Can't use the ORM yield_per feature in conjunction with unique()©Úsa_excÚInvalidRequestError)Úentryr7r7r:Ú
_no_unique‡sÿzinstances.<locals>._no_uniquecs‡fdd„}|S)Ncst dˆ¡‚dS)NzkCan't apply uniqueness to row tuple containing value of type %r; this datatype produces non-hashable valuesr<©Úobj©Údatatyper7r:Úgos
þÿz,instances.<locals>._not_hashable.<locals>.gor7)rDrEr7rCr:Ú _not_hashableŒs z instances.<locals>._not_hashablecs0g|](}ˆjrˆn|js$|js$|jr(tnd‘qS©N)Ú    yield_perÚuse_id_for_hashÚ_non_hashable_valueZ_null_column_typeÚid©r8Úent)r@r5r7r:r;—s
øÿþýücs<g|]4}ˆjrˆn$|js*|jr*ˆ|jjƒn |jr4tnd‘qSrG)rHrIrJÚcolumnÚtyperKrL)r@rFr5r7r:r;¤súÿÿÿÿ)Z_unique_filtersc3sÖ|}iˆ_|r ˆ |¡}|s(qÒnˆ ¡}ˆrHˆd‰‡fdd„|Dƒ}n‡fdd„|Dƒ}ˆrÄ|rptˆj ¡ƒ}ˆjrªtˆj ¡ƒ}ˆj ¡|D]\}}| ˆ|¡q’qp|rĈj ¡ˆj |¡|V|sqÒqdS)Nrcsg|] }ˆ|ƒ‘qSr7r7)r8Úrow©Úprocr7r:r;Ãsz-instances.<locals>.chunks.<locals>.<listcomp>cs"g|]‰t‡fdd„ˆDƒƒ‘qS)csg|] }|ˆƒ‘qSr7r7)r8rR©rPr7r:r;Æsz8instances.<locals>.chunks.<locals>.<listcomp>.<listcomp>)Útuple)r8)ÚprocessrSr:r;Ås)    ÚpartialsZ    fetchmanyZ _raw_all_rowsÚlistÚpost_load_pathsÚitemsÚclearÚinvokeÚupdate)ÚsizerHÚfetchÚrowsZtop_level_post_loadsZ
post_loadsÚpathÚ    post_load)r5r4Ú is_top_levelrUÚ single_entityrQr:Úchunks³s:
 
ÿ    ÿ
 
 zinstances.<locals>.chunksZprebuffer_rowsNcstˆƒSrG)Úiter)r])Ú _prebufferedr7r:rdës)Zsource_supports_scalarsÚrawZdynamic_yield_per)ÚfilteredZis_single_entitycSst d¡‚dS)Nz~The unique() method must be invoked on this Result, as it contains results that include joined eager loads against collectionsr<rAr7r7r:Úrequire_uniquesÿz!instances.<locals>.require_unique)"Ú
_new_runidÚrunidZtop_level_contextrXÚ compile_stateZ_has_mapper_entitiesÚ load_optionsZ_only_return_tuplesÚlenÚ    _entitiesZsupports_single_entityrWÚziprHZloaders_require_bufferingZloaders_require_uniquingr=r>Ú    ExceptionrZ safe_reraiseÚcloseZ_legacy_uniquingr Úexecution_optionsÚgetrr5Z_is_server_sideÚ _attributesÚunionÚdictZmulti_row_eager_loadersZ_unique_filter_state) r4r5rlrhÚlabelsÚextraZunique_filtersZ row_metadatardÚresultrir7)r@rFrfr5r4rbrUrcr:Ú    instancesNs„ 
 ÿ
ý þÿÿ
    ÿþÿ
 
 
 
ö ø ÿ2  û 
ÿ
 
 r{zsqlalchemy.orm.contextTc     sìtjj‰|r| ¡ˆjj|dd}|j}z´d|_‡fdd„t|jƒDƒ}dd„|jDƒ}t    |dd„|jDƒƒ}g}    | 
¡D]T}
|D]<} |
| dk    r„|j t   |
| ¡t  |
| ¡|iid|
| <q„|     ||
ƒ¡q|| |    ¡W¢S||_XdS)    azMerge a :class:`_engine.FrozenResult` back into a :class:`_orm.Session`,
    returning a new :class:`_engine.Result` object with :term:`persistent`
    objects.
 
    See the section :ref:`do_orm_execute_re_executing` for an example.
 
    .. seealso::
 
        :ref:`do_orm_execute_re_executing`
 
        :meth:`_engine.Result.freeze`
 
        :class:`_engine.FrozenResult`
 
    F©Úlegacycs g|]\}}t|ˆjƒr|‘qSr7©Ú
isinstanceÚ _MapperEntity©r8ÚiÚe©Ú querycontextr7r:r;-s þz'merge_frozen_result.<locals>.<listcomp>cSsg|]
}|j‘qSr7©Z _label_namerLr7r7r:r;2scSsg|]
}|j‘qSr7©Z_extra_entitiesrLr7r7r:r;5sN©ÚloadÚ
_recursiveZ_resolve_conflict_map)rÚ    preloadedÚ orm_contextÚ
_autoflushÚORMSelectCompileStateÚ_create_entities_collectionÚ    autoflushÚ    enumeraterorZ rewrite_rowsÚ_mergerÚinstance_stateÚ instance_dictÚappendÚ with_new_rows) ÚsessionÚ    statementÚ frozen_resultr‰ÚctxrÚmapped_entitiesÚkeysÚ keyed_tuplerzÚnewrowr‚r7r„r:Úmerge_frozen_results@ÿ
þÿ    û rŸz:func:`_orm.merge_result`zyThe function as well as the method on :class:`_orm.Query` is superseded by the :func:`_orm.merge_frozen_result` function.)Ú alternativez
Query[Any]z>Union[FrozenResult, Iterable[Sequence[Any]], Iterable[object]]Úboolz"Union[FrozenResult, Iterable[Any]])ÚqueryÚiteratorr‰r6c    svtjj‰|j‰ˆrˆ ¡t|tƒr4|}t|jƒ}nd}ˆj    j
|dd}ˆj }zdˆ_ | ojt |j ƒdk}|r¢t|j dˆjƒr˜‡‡fdd„|Dƒ}nt|ƒ}n¤‡fd    d„t|j ƒDƒ}g}d
d„|j Dƒ}    t|    d d„|j Dƒƒ}
|D]\} t| ƒ} |D]<} | | dk    røˆjt | | ¡t | | ¡ˆiid | | <qø| |
| ƒ¡qè|rZ| |¡W¢St|ƒW¢SW5|ˆ_ XdS) z Merge a result into the given :class:`.Query` object's Session.
 
    See :meth:`_orm.Query.merge_result` for top-level documentation on this
    function.
 
    NTr|Frrc    s,g|]$}ˆjt |¡t |¡ˆiid‘qS)rˆ)r’rr“r”)r8Úinstance)r‰r—r7r:r;wsùûz merge_result.<locals>.<listcomp>cs g|]\}}t|ˆjƒr|‘qSr7r~rr„r7r:r;„s þcSsg|]
}|j‘qSr7r†rLr7r7r:r;ŠscSsg|]
}|j‘qSr7r‡rLr7r7r:r;srˆ)rr‹rŒr—rrrreÚdatarŽrrrnror€rWr‘rr’rr“r”r•r–)r¢r£r‰r™ršrrcrzr›rœrrPržr‚r7)r‰r…r—r:Ú merge_resultKs^
 ÿ ø
 
þÿ   û r¦r+z
Mapper[_O]z_IdentityKeyType[_O]rz)Union[LoaderCallableStatus, Optional[_O]])r—ÚmapperÚkeyÚpassiver6cCsœ|j |¡}|dk    r”t |¡}|jr6|j |¡s6tjS|jr|tj    @sLtj
S|tj @sZ|Sz|  ||¡Wn$t jk
rŽ| |g¡YdSX|SdSdS)zqLook up the given key in the given session's identity map,
    check the object for expired state if found.
 
    N)Ú identity_maprtrr“Úinheritsr§ÚisaZPASSIVE_CLASS_MISMATCHZexpiredZSQL_OKZPASSIVE_NO_RESULTZRELATED_OBJECT_OKZ _load_expiredÚorm_excÚObjectDeletedErrorZ_remove_newly_deleted)r—r§r¨r©r¤Ústater7r7r:Úget_from_identity¥s"
 
 
 
 r°NF)    rmÚ refresh_stateÚwith_for_updateÚonly_load_propsÚ no_autoflushÚbind_argumentsrsÚrequire_pk_colsÚis_user_refreshzUnion[Select, FromStatement]zOptional[_IdentityKeyType]zOptional[Sequence[ORMOption]]zOptional[InstanceState[Any]]zOptional[ForUpdateArg]zOptional[Iterable[str]]zMapping[str, Any]r.) r—r˜r¨rmr±r²r³r´rµrsr¶r·c    CsD|dk    r|d} |d} nd} } t||| ||||| |||    |
| d S)z.Load the given identity key from the database.Nrr©
rmr±r²r³Úidentity_tokenr´rµrsr¶r·)Úload_on_pk_identity)r—r˜r¨rmr±r²r³r´rµrsr¶r·Úidentr¹r7r7r:Ú load_on_identÌs&
ór¼r¸zOptional[Tuple[Any, ...]]z Optional[Any]) r—r˜Úprimary_key_identityrmr±r²r³r¹r´rµrsr¶r·c
    sL|} |  ¡}|jrt‚|dkr$tj}|jtjkr8tj    }n|j}|dk    rÒ| j
d}|j \}‰d|kr¢‡fdd„t |j |ƒDƒ}t ||¡}t|ƒt|ƒkr¢t d¡t |ddi¡f|_‡fdd    „t ||j ƒDƒ}nd}|dk    rêd}||_n| jdk    rd}| j|_nd
}| r”|r”ˆs$t d ¡‚ˆjj}‡fd d„| |¡Dƒ}|rdt d |›dˆj›d¡‚ˆjj}|D]"}||jrp| |¡}q”qpˆr¾ˆjr¾|dˆj j!i7}|j"ˆjŽ}t#||||ˆ|| d\}}||_d|_$|rö|dd
i7}tj% &|
d|i¡}
|j'|||
|    d (¡ )¡}z
| *¡WSt+j,k
rFYdSXdS)z6Load the given primary key identity from the database.NZplugin_subjectcs"h|]\}}|dkrˆ|j’qSrG©r¨)r8ÚcolÚvalue©Ú _get_paramsr7r:Ú    <setcomp>sþz&load_on_pk_identity.<locals>.<setcomp>zofully NULL primary key identity cannot load any object.  This condition may raise an error in a future release.Z
_orm_adaptTcsi|]\}}ˆ|j|“qSr7r¾)r8Zid_valÚ primary_keyrÁr7r:Ú
<dictcomp>1sÿz'load_on_pk_identity.<locals>.<dictcomp>Fz9refresh_state is required when require_pk_cols is presentcs h|]}ˆj|j ¡r|’qSr7)ÚattrsÚhistoryÚ has_changes)r8r¨)r±r7r:rÃJsþz7Please flush pending primary key changes on attributes z  for mapper z! before proceeding with a refreshÚ _current_path)Ú version_checkr³r±r¹r·rZ_sa_orm_load_options)Úparamsrsrµ)-Z_cloneZ_is_lambda_elementÚAssertionErrorrZdefault_load_optionsÚ_compile_optionsr$Zdefault_select_compile_optionsrÚdefault_compile_optionsZ_propagate_attrsÚ _get_clauserprÄÚsql_utilZadapt_criterion_to_nullrnrÚwarnZ_deep_annotateZ_where_criteriaZ_for_update_argr=Ú ArgumentErrorr§Z_primary_key_propkeysÚ
differencer>Ú_propsZ_is_relationshiprvrmÚ    load_pathÚparentÚoptionsÚ_set_get_optionsZ    _order_byr%Z
merge_withÚexecuteÚuniqueÚscalarsZoner­Z NoResultFound)r—r˜r½rmr±r²r³r¹r´rµrsr¶r·r¢ÚqÚcompile_optionsr§rÏZnonesrËrÊZrefresh_state_prokeysrÈÚmpÚpZnew_compile_optionsrzr7)rÂr±r:rºós°
ÿÿ
 
 
 
þ ÿÿ
ÿþ 
 ÿ
þ ÿ" 
 
 ù
 
 ÿü ÿ 
rºc
Cs|i}i}    |r||    d<|r ||    d<|r4||    d<d|d<|rDt|ƒ|d<|rP||    d<|r\||    d<|    rh||    7}|rt||7}||fS)    NZ_version_checkZ_populate_existingZ_refresh_stateTZ_for_refresh_stateZ_only_load_propsZ_identity_tokenZ_is_user_refresh)Ú    frozenset)
Z compile_optZload_optÚpopulate_existingrÊr³r±r¹r·rÝrmr7r7r:rجs(  rØc    Ks´|r| |¡}
n|j}
i} | |jd| ¡|oBt|ƒdkoB|dj} |
D]6} |r\| j|kr\qH| j||||f||| | dœ|    —ŽqH|dk    r°||jk    r°|r¢|j    |}n|}| 
|¡dS)NÚmemoized_setupsréÿÿÿÿ)r³Úcolumn_collectionZmemoized_populatorsÚcheck_for_adapt) Z_iterate_polymorphic_propertiesZ_polymorphic_propertiesÚsetrrnÚis_aliased_classr¨ÚsetupÚpolymorphic_onÚcolumnsr•)rlr§r9r`ÚadapterräZwith_polymorphicr³Úpolymorphic_discriminatorÚkwZpoly_propertiesÚquick_populatorsrårÀÚpdr7r7r:Ú_setup_entity_queryÏs@ ÿüø    ÷ ÿþ rðcCst dt|ƒf¡dS)NamLoading context for %s has changed within a load/refresh handler, suggesting a row refresh operation took place. If this event handler is expected to be emitting row refresh operations within an existing load or refresh operation, set restore_load_context=True when establishing the listener to ensure the context remains unchanged when the event handler completes.)rrÑr)r¯r7r7r:Ú_warn_for_runid_changed    s
úÿrñc
s>ˆ
j‰ˆj}
dˆ
f} | |
j| d¡} | dkrˆ
j} ˆ dk    rT|  ‡
fdd„ˆ Dƒ¡} | ˆjdt¡}g}ggggggdœ}ˆdkrªˆ
j}ˆrž‡fdd„|Dƒ}| |¡‰nd‰||ˆd    œ} | D]ò}||kr¦||}|t    krô|d
|j |j f¡n°|t kr|d  
|j d f¡n|tkr6|d
|j |jf¡nnd}ˆr`ˆj|}|dk    r`| |d ¡}|sr| |d ¡}|rŽ|d  
|j |f¡n| ˆ||ˆ
|ˆ|¡q¾| 
|¡q¾| |
j| | ¡| d}dd„| ¡Dƒ‰| dD]}| ˆ||ˆ
|ˆˆ¡qäˆj‰ˆjjjr ˆjj|n|‰ˆjj‰ˆjp8ˆ
j‰ tˆ
jjjƒ‰tˆ
jjj ƒ‰tˆjjj!ƒ‰ ˆ rtˆjjj!‰    tj"‰tj#‰ˆjj$‰ˆj%‰ˆj&‰ˆj'‰ˆrЈ
j(}|dk    r̈rÀˆj|}| |¡‰nd‰ˆsn|    dk    rnd|jf}|ˆjkrˆj|j)dkrˆj|j*d}nd}ˆ
 +||    ¡}|rn||    k    rnˆ dksHt,‚t-ˆ|||    |ƒ}t. /ˆˆ|j0|||¡t. 1ˆˆˆ ¡‰ˆržˆj ‰ˆdkrªˆ
 2ˆ¡‰n d‰| d‰ˆ
j3rºt4j5‰nt4j‰‡‡‡‡‡‡‡‡‡    ‡
‡ ‡ ‡ ‡‡‡‡‡‡‡‡‡‡‡‡fdd„}ˆ
j6r:|    s:ˆs:‡‡‡‡fdd„}t7|ˆ|ˆ
|||ˆ|ƒ    }|S)z]Produce a mapper level row processor callable
    which processes rows into mapped instances.ÚgettersNc3s|]}ˆj|VqdSrG)rÔ)r8Úk©r§r7r:Ú    <genexpr>?sz&_instance_processor.<locals>.<genexpr>râ)ÚnewÚquickÚdeferredÚexpireÚexistingÚeagercsg|]}ˆj|‘qSr7)rê)r8Úc)rër7r:r;Vsz'_instance_processor.<locals>.<listcomp>)Úcached_populatorsÚtodoÚprimary_key_getterrörùFr÷rýcSsi|]\}}|t|ƒ“qSr7)rW)r8r¨rÀr7r7r:rŦsz'_instance_processor.<locals>.<dictcomp>rþÚloader))Zselectinload_polymorphicTÚentitiesrÿc
s¨ˆr,ˆ}| ¡}ˆ|ƒ}|jˆk}d}d}n¶ˆˆ|ƒˆf}ˆ |¡}|dk    rŽˆ|ƒ}ˆ|ƒ}|jˆk}| }d}ˆrâˆrâ|sâtˆ    |||ˆƒnTˆ|dƒrždSd}d}d}ˆ    j ¡}ˆ|ƒ}ˆ|ƒ}||_ˆ|_ˆ|_ˆ     ||¡ˆ }ˆ|kròd}|sü|r
|rˆs|sˆ|_
ˆ|_ t ˆ||||ˆ||ˆ ƒ    |rö|j}    |r–ˆrn|j j |ˆ¡|j|    krnt|ƒˆ rˆˆj|ƒ|j|    krÂt|ƒn,ˆrÂ|j j |ˆˆ
¡|jˆkrÂt|ƒ|sÐ|jröˆrêˆ
rê| |ˆ
¡n | |ˆ¡ˆr¤ˆ |d¡nš|j}
|ˆjk}|r0|
s0ˆ drŠtˆ||||ˆ|
ˆ ƒ} |rŠˆr~|j}    |j j |ˆ| ¡|j|    kr~t|ƒ| || ¡ˆr¤ˆjr¤ˆ |d¡|S)NTFrrû)rBrkrtÚ_validate_version_idÚ class_managerZ new_instancer¨r¹Ú
session_idZ_add_unpresentrmrÕÚ_populate_fullÚmanagerÚdispatchr‰rñr—ÚrefreshÚmodifiedZ_commitZ _commit_allÚ    add_stateÚunloadedrVÚ_populate_partialZinvoke_all_eagers) rPr¯r¤Údict_ÚisnewZ currentloadÚloaded_instanceÚ identitykeyZeffective_populate_existingZexisting_runidr Úto_load)r5Úidentity_classr¹r”r“Úis_not_primary_keyÚload_evtrÕÚloaded_as_persistentr§r³Úpersistent_evtráÚ
populatorsrarÿÚpropagated_loader_optionsÚ refresh_evtÚrefresh_identity_keyr±rkrÚsession_identity_maprÊÚversion_id_getterr7r:Ú    _instancesØ
ý
 
 ÿ     
 
ÿÿ÷    
ÿ   
ø    z&_instance_processor.<locals>._instancecs&ˆˆ|ƒˆf}ˆ|dƒs|SdSdS)Nrr7)rPr)rr¹rrÿr7r:Ú ensure_no_pk¨sý z)_instance_processor.<locals>.ensure_no_pk)8Z_identity_classrlrtrZ    _prop_setÚ intersectionr%rÄZ _tuple_getterrr•r¨Z_deferred_column_loaderrrZ_raise_column_loaderrêÚ_getterZcreate_row_processorrærYrÚ current_pathr`r—rªráZalways_refreshr¡rrr‰rrr“r”Zhash_keyrkr¹rÊÚversion_id_colZstrategyZ
local_optsZ_should_selectin_loadrÌÚ_load_subclass_via_inÚPostLoadÚcallable_for_pathr§Ú for_contextÚ_identity_key_from_stateÚallow_partial_pksrÚ
issupersetÚpolymorphic_mapÚ_decorate_polymorphic_switch)r9r§r5rzr`rër³r±rìÚ_polymorphic_fromrlZ
getter_keyròÚpropsrîrþrýZpk_colsÚpropr¿ÚgetterZ adapted_colr"r¨Úoption_entitiesZselectin_load_viaZ    callable_rrr7)rër5rr¹r”r“rrrÕrr§r³rrárrarÿrrrr±rkrrrÊrr:Ú_instance_processors:
ÿÿú     ý
 
ÿ
 
 
ÿ
 
  ù  ÿÿý
 
 
 
þûú    
ÿ<" ÷ r1csj|j‰|j}|jdk    }tˆjjƒdk‰|js0|rDˆ ||¡\‰‰‰n ˆj\‰‰‰‡‡‡‡‡‡fdd„}|S)Nrcs¢ˆs‡fdd„|Dƒ}|sdS|j}ˆf|jˆf}ˆj|Ž}|jj|_|jd|ji7_|jrp|jdd}|j     
|t ‡fdd„|Dƒd¡  ¡  ¡ ¡dS)Ncs$g|]\}}|j ˆ¡r||f‘qSr7)r§Z+_would_selectin_load_only_from_given_mapper)r8ÚsÚvrôr7r:r;Ýs þz:_load_subclass_via_in.<locals>.do_load.<locals>.<listcomp>rÉT)rács,g|]$\}}ˆr|jddn|jd‘qS)rrr¾)r8r¯Z
load_attrs)Úzero_idxr7r:r;ôsÿ)Z primary_keys)r¢Z _with_optionsr×rlrÎrÍrÖrársr—rÙrwrÚrÛÚall)r5r`ÚstatesÚ    load_onlyZeffective_entityZ
orig_queryr×Zq2©Z disable_optZ
enable_optr§r0rÜr4r7r:Údo_loadÖs*
þ
 
 
þÿþz&_load_subclass_via_in.<locals>.do_load)r§r«rnZ base_mapperrÄrçZ_subclass_load_via_inZ_subclass_load_via_in_mapper)r5r`ÚentityZpolymorphic_fromr0Zpolymorphic_from_mapperZnot_against_basemostr9r7r8r:r#Âs
 
ÿ  %r#c     Cs|r |j|_|dD]\}    }
|
|ƒ||    <q|r^|dD]$\}    } | |    d¡| r6|j |    ¡q6n"|dD]\}    } | rf|j |    ¡qf|dD]\}    } | |||ƒqˆnt||jkrö||_|dD]\}    }
|    |kr¸|
|ƒ||    <q¸|dD]\}    } | |||ƒqÞn|dD]\}    } | |||ƒqþdS)Nr÷rùrörú)rkÚpopÚexpired_attributesÚaddrÕ) r5rPr¯r rrÕrrárr¨r/Ú set_callableÚ    populatorr7r7r:rþs.  
rc Cs|s`|r.|dD]\}}    ||kr|    |ƒ||<q|j|}
|dD]\}} ||
kr@| |||ƒq@n|}
|
|j|<|dD]\}}    ||
krv|    |ƒ||<qv|dD],\}} ||
krœ| |d¡| rœ|j |¡qœ|dD]\}} ||
krÒ| |||ƒqÒ|dD]\}} ||krø| |||ƒqø|
S)Nr÷rúrùrörû)rVr;r<r=) r5rPr¯r rrÕr rr¨r/rr?r>r7r7r:r 7s4
 
 r c    CsD| |||j¡||ƒkr@t dt|ƒ| |||j¡||ƒf¡‚dS)NzWInstance '%s' has version id '%s' which does not match database-loaded version id '%s'.)Z_get_state_attr_by_columnr"r­ZStaleDataErrorr)r§r¯r rPr/r7r7r:r]s&ÿþÿûþÿrc     sr|dk    r|‰nˆj‰ˆdkr ˆSˆr.ˆjˆ‰‡‡‡‡‡    ‡
fdd„}    t |    ¡‰ˆ
 ˆ¡‰‡‡‡‡‡‡fdd„}
|
S)Nc    sdzˆj|}Wn tk
r.td|ƒ‚Yn2X|ˆkr<dS| ˆ¡sJdStˆ|ˆˆˆˆˆdSdS)Nz*No such polymorphic_identity %r is definedF)r,)r*ÚKeyErrorrÌr¬r1)Ú discriminatorZ
sub_mapper)rër5r§r`r9rzr7r:Úconfigure_subclass_mapper„s&ÿ
 
ùz?_decorate_polymorphic_switch.<locals>.configure_subclass_mappercsŽˆ|ƒ}|dk    rfˆ|}|r$||ƒS|dkr\ˆ|ƒ}|rVt d|ˆˆj|ˆf¡‚qddSqŠˆ|ƒSn$ˆ|ƒ}|r†t d|ˆf¡‚ndSdS)NFzžRow with identity key %s can't be loaded into an object; the polymorphic discriminator column '%s' refers to %s, which is not a sub-mapper of the requested %szjRow with identity key %s can't be loaded into an object; the polymorphic discriminator column '%s' is NULL)r=r>r*)rPrArr)rr/Ú instance_fnr§Úpolymorphic_instancesrér7r:Úpolymorphic_instanceŸs6üüÿ 
þÿz:_decorate_polymorphic_switch.<locals>.polymorphic_instance)rérêrZ PopulateDictr ) rCr5r9r§rzr`rìrërrBrEr7) rër5rr/rCr§r`rDrér9rzr:r+os 
 
 
&r+c@sPeZdZdZdZdd„Zdd„Zdd„Zed    d
„ƒZ    ed d „ƒZ
ed d„ƒZ dS)r$z4Track loaders and states for "post load" operations.)Úloadersr6Ú    load_keyscCsi|_t ¡|_d|_dSrG)rFrÚ OrderedDictr6rG)Úselfr7r7r:Ú__init__Ís
zPostLoad.__init__cCs||j|<dSrG)r6)rIr¯Ú    overwriter7r7r:r
ÒszPostLoad.add_statec    st|js
dStj |¡}|j ¡D]D\}}‰}}}‡fdd„|j ¡Dƒ}|r |||||jf|ž|Žq |j ¡dS)Ncs&g|]\}}|jj ˆ¡r||f‘qSr7)rr§r¬)r8r¯rK©Úlimit_to_mapperr7r:r;åsþz#PostLoad.invoke.<locals>.<listcomp>)    r6rZ PathRegistryZcoercerFÚvaluesrYrGrZ)    rIr5r`Zeffective_contextÚtokenrÚargrír6r7rLr:r[Ùs4 ù
þÿÿÿzPostLoad.invokecCs$|j |j¡}|dk    r |r ||_|SrG)rXrtr`rG)Úclsr5r`r³Úplr7r7r:r&ðs zPostLoad.for_contextcCs|j|jko||j|jjkSrG)r`rXrF)rIr5r`r¨r7r7r:Ú path_exists÷s þzPostLoad.path_existsc    OsF|j|jkr|j|j}ntƒ}|j|j<||||||f|j|<dSrG)r`rXr$rF)    rQr5r`rMrOZloader_callablerPrírRr7r7r:r%þs úzPostLoad.callable_for_pathN) Ú__name__Ú
__module__Ú __qualname__Ú__doc__Ú    __slots__rJr
r[Ú classmethodr&rSr%r7r7r7r:r$Ès
 
r$c s8|j}|st dt|ƒ¡‚t|tj@ƒ}|r>| ˆj     ¡¡}ˆj
r|ˆj s|ˆ  ||¡}|dk    r|t ˆ|ƒ}t||d|||dSt|jƒ}|r’|j}    n<‡fdd„ˆjDƒ}
|j |
¡rÄt dt|ƒ¡‚ˆ |¡}    t |    ¡rވjrèt |    ¡rüt dt|ƒ¡dSt|tˆƒ t¡|    |||d} |r4| dkr4t |¡‚dS)    z4initiate a column-based attribute refresh operation.zQInstance %s is not bound to a Session; attribute refresh operation cannot proceedN)r³r±r´csg|]}ˆj|j‘qSr7)Z_columntopropertyr¨)r8r¿rôr7r:r;Dsz*load_scalar_attributes.<locals>.<listcomp>z_Instance %s cannot be refreshed - it's not  persistent and does not contain a full primary key.zwInstance %s to be refreshed doesn't contain a full primary key - can't be refreshed (and shouldn't be expired, either).)r±r³r´)r—r­ZDetachedInstanceErrorrr¡rZ NO_AUTOFLUSHrrÆrœr«ZconcreteZ_optimized_get_statementrr¼r¨rÄr<r=r>r'rÚissubsetr(r)rZ warn_limitedr!Zset_label_styler#r®) r§r¯Zattribute_namesr©r—r´r˜ZstmtZhas_keyZ identity_keyZpk_attrsrzr7rôr:Úload_scalar_attributesspÿÿ  
ú
 
 
ÿ þÿ
ÿÿþü ú r[)T)T)NNNNNN)NNN)NNNN)\rWÚ
__future__rÚtypingrrrrrrr    r
r r r Úrrr­rÚbaserrrrr5rrrrrrr=ZenginerZ engine.resultrrr Zsqlr!rÐZsql.selectabler"r#r$r%Ú_typingr&r'Z
interfacesr(r§r)r¢r*r—r+r¯r,Z engine.cursorr-Zengine.interfacesr.r/r0r1Úobjectr3ÚcounterrjÚstrZ_PopulatorDictr{Zpreload_modulerŸZbecame_legacy_20r¦r°r¼rºrØrðrñr1r#rr rr+r$r[r7r7r7r:Ú<module>
sâ                                                 B ;þýT,ó(,ò*=ø
*÷
:ö
0<9&YH