id/~dZddlmZddlZddlmZddlmZddlmZddlm Z dd l m Z dd l m Z dd l mZdd l mZd dlmZd dlm Z d dlm Ze jZdZe jdd!dZdZ d"dZ d#dZ d"dZdZ d#dZdZdZdZ dZ!dZ"Gdde#Z$d Z%dS)$zprivate 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. )absolute_importN) attributes)exc) path_registry)strategy_options)_DEFER_FOR_STATE)_SET_DEFERRED_EXPIRED) _none_set) state_str)utilc#B Kt_i_j}j}|r|rt }nfd} t tfdjD\}|stj d| i_ j r j }|sdSn}|rd fd|D}n fd|D}jD]\} } | | |rtj||}|D]} | Vj sdS#t$$rEtj5dddYdS#1swxYwYYdSwxYw) z$Return an ORM result as an iterator.c\tdtj|DS)Nc3LK|]\}}|jrt|n|V dSN)use_id_for_hashid).0entitems K/opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/orm/loading.py z/instances..filter_fn..2sL!T!$ 3=BtHHH)tuplezip _entities)rowquerys r filter_fnzinstances..filter_fn1s=%(#%>%>rc>g|]}|S) row_processor)r query_entitycontextcursorrs r zinstances..:s;$!..ugvFFrresultTrc&g|] }|Sr"r")rrprocs rr'zinstances..Ps!333cS 333rc@g|]fdDS)c&g|] }|Sr"r")rr*rs rr'z(instances...Ss! ? ? ?tc ? ? ?rr")rr keyed_tupleprocesss @rr'zinstances..RsI K ? ? ? ?w ? ? ?@@rN) _new_runidrunidpost_load_paths_has_mapper_entitiesis_single_entityrlistrrrlightweight_named_tuplepartials _yield_per fetchmanyfetchallitemsinvoke unique_list Exception safe_reraiseclose)rr&r%filtered single_entityr labelsfetchrowspath post_loadrr-r*r.s``` @@@r instancesrG"sLLGM G)H*M   II      - (-   & I6xHHK !G  *(()9::E)) qz3333U333$ $+#:#@#@#B#B 0 0i  $//// 9'i88   # ; <       LLNNN                    sDA.E3BEEF,F FF FF FFzsqlalchemy.orm.queryTc  |j r  j} d _t|jdk}|r@t |jdjr fd|D}nt|}nԈfdt|jD}g}d|jD}tj d|} |D]} t| } |D]W} | | M tj | | tj| | ii | | <X|| | t!|| _S#| _wxYw) z@Merge a result into this :class:`_query.Query` object's Session.Frrc g|]@}tj|tj|iiAS)load _recursive_resolve_conflict_map)_mergerinstance_state instance_dict)rinstancerKsessions rr'z merge_result..vsc   !NN"1(;;"0::!#%.0 #   rcDg|]\}}t|j|Sr") isinstance _MapperEntity)riequerylibs rr'z merge_result..s@Aqa!788rcg|] }|j Sr") _label_name)rrs rr'z merge_result..s???CO???rr(NrJ)rR _autoflush autoflushlenrrTrUr4 enumeraterr5rNrrOrPappenditer)rXriteratorrKr\rAr(mapped_entitieskeysr-rnewrowrVrRs` ` @r merge_resultregsmG !I)&!EO,,1 " 3%/!,h.DEE (     %-   h%eo66O F??u???D6xFFK 3 3c(Aay,$+NN&5fQi@@&4VAY??!%')24 %3%%q  kk&112222F||%I%%%%s EE44 E=c|j|}|tj|}|jr&|j|s tjS|jrp|tj zs tj S|tj zs|S | ||n,#tj$r||gYdSwxYw|SdS)zqLook up the given key in the given session's identity map, check the object for expired state if found. N) identity_mapgetrrOinheritsmapperisaPASSIVE_CLASS_MISMATCHexpiredSQL_OKPASSIVE_NO_RESULTRELATED_OBJECT_OK _load_expiredorm_excObjectDeletedError_remove_newly_deleted)rRrjkeypassiverQstates rget_from_identityrxs #'',,H)(33 ? 55<#3#3F#;#; 54 4 = Z.. !33z;;   ##E73333-   --ug666tt tsB))%CCcZ||d}|d}ndx}}t||||||S)z.Load the given identity key from the database.Nrr ) refresh_statewith_for_updateonly_load_propsidentity_token)load_on_pk_identity)rrurzr{r|identr}s r load_on_identrsP  AQ!%%   #''%    rcX |)|}|n|}||}|j\} d|vrwt fdt |j|D} tj|| }t| t|krtj d| |dd}||_ t fdt ||jD} | |_| d} ||_n|jd} |j|_nd} |t%|| |||d|_ |S#t*j$rYdSwxYw)z6Load the given primary key identity from the database.Nc4g|]\}}||jSrru)rcolvalue _get_paramss rr'z'load_on_pk_identity..s6"U}  $(%}}rzofully NULL primary key identity cannot load any object. This condition may raise an error in a future release.TFc4g|]\}}|j|fSr"r)rid_val primary_keyrs rr'z'load_on_pk_identity..s:   'FK[)-v6   r)populate_existing version_checkr|rzr})_clone_get_condition _mapper_zero _get_clausesetrrsql_utiladapt_criterion_to_nullr]rwarn _adapt_clause _criteriondict_params_for_update_arg _get_optionsbool _order_byonerr NoResultFound) rprimary_key_identityrzr{r|r}qrjrnonesparamsrrs @rr~r~s LLNN  LLNN'##%%%+%7"k ' ' '&)*,@''E#:;NNK5zzS!56666  ook4?? "     +.(&*<,,      " +   * !1 NN}--#'#% AKuuww  ttsFF)(F)c  8|r||} n|j} i} ||jd| | D]#} |r | j|vr| j||||f||| d| $|2||jur+|r|j|} n|} || dSdSdS)Nmemoized_setups)r|column_collectionmemoized_populators) _iterate_polymorphic_properties_polymorphic_propertiesrrrusetuppolymorphic_oncolumnsr_)r%rjr$rEadapterrwith_polymorphicr|polymorphic_discriminatorkwpoly_propertiesquick_populatorsrpds r_setup_entity_queryr#s9 @@   !8HHW !24DEEE     uy??      ,/ 0   "- %V-B B B  +!:;BB*B  $$$$$ .- B BrcPtjdt|ddS)NzLoading context for aW 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.)rrr )rws r_warn_for_runid_changedrUs:II!*% 0 0 0 0  3rc  !"#$%&jrfdDjtjtj} !| fdD} |jdt} | D]} | | vr| | } | tur(d | j | j f@| tur#d | j dfld} r%j| }|||d} | s|| d} | r#d | j | f| ||| || j jjjrjj|zn|jj%jpjt5jjjt5jjj!t5jjjrjjjtj tj!jj"$j#&j$#j%s|d |jf}|jvrCj|j&d kr-'j|j(d |}n'd|}|r=||ur9JtS||}tT+|j,|||tT-rj ""."nd"j/r tj0n tj !"#$%&fd }j1r|sste||||}|S) z]Produce a mapper level row processor callable which processes rows into mapped instances.c*g|]}j|Sr")r)rcrs rr'z'_instance_processor..xs 777!7?1%777rNc32K|]}j|VdSr)_props)rkrjs rrz&_instance_processor..s*"M"M6=#3"M"M"M"M"M"MrrnewexpireFquickloader))selectinload_polymorphicTentitiesc r1}|}|}|j k}d}d}n tfdDf}"|}|>|}|}|j k}| }d}#r|st || ns|drdSd}d}d}j}|}|}||_|_!|_ " |||sr0|rss|_ |_ t |||| |r|j}|rjr:|jj| |j|krt#|r+ j||j|krt#|n=r;|jj| |j krt#|s|jr1rr||n||"r|dn|j} | jv}|r | sdrrt5 |||| } |rZrB|j}|jj| | |j|krt#|||| r jr|d|S)NTFc g|] }| Sr"r")rcolumnrs rr'z:_instance_processor.._instance.. s999vs6{999rreager)objr0rrh_validate_version_id class_manager new_instancerur} session_id_add_unpresent load_options load_path_populate_fullmanagerdispatchrKrrRrefreshmodified_commit _commit_all add_stateunloadedr6_populate_partialinvoke_all_eagers)$rrwrQdict_isnew currentloadloaded_instance identitykeyexisting_runidrto_loadrr%identity_classr}rPrOis_not_primary_keyload_evtrloaded_as_persistentrjr|persistent_evtpk_colsr populatorsrFpropagate_options refresh_evtrefresh_identity_keyrzr0rsession_identity_maprs$` r _instancez&_instance_processor.._instances! 4 H!Eyy{{H!M(++EK5(EK#OO 9999999::K ,// <>% h//&x00' '5$$. $33E;GGG Y 2+Y 2 ,+ ,3D ,%6""+ !    G "'"7; .33E7CCC ;.883E:::%;,,W_eDDD ;.883E::: 7M*22w{e++/666$GG$GG e_====))%1EFFF 1##E4000 ~H!11E 2H 2 7(; 2 ,  2";). .66ugwOOO ;.883E:::MM%111 2W6 2##E5111r)3r_identity_class collections defaultdictr4 _prop_set intersectionrhrr r r_ru_deferred_column_loaderr r_gettercreate_row_processorrr _current_pathrErRrgralways_refreshrrrrKrrrOrPhash_keyrr0r}strategy_should_selectin_load local_opts_load_subclass_via_inPostLoadcallable_for_pathrj for_context_identity_key_from_stateallow_partial_pks issupersetpolymorphic_map_decorate_polymorphic_switch)'rjr%r(rErr|rzr_polymorphic_frompropsrproprgetter adapted_colruselectin_load_via callable_rrr}rPrOrrrrrrrrrFrrrr0rrrs'`` ``` @@@@@@@@@@@@@@@@@@@@r_instance_processorr asZ( G87777w777+N(..J  E""""M"M"M"M_"M"M"MMMxx-y,, # # #"4(C&&&5!((Xt;<---8$++TXu,=>>>>D")/#"6K".!' U!C!C8#^^C77Fw'..&/ABBBB --vvw   % %vvw      1 = & +  #d**  #?71JV5JF(1677Hv+4<==K'/2GHHNM&7L.N,M)J)M ME+N .:# '$ $ $);C)@)IN * * !' < <"3'2:>!!!   !' < <'!!   !2:K!K!K#***-gt=NOOI  & &!(!!    $$WiIII $,0  '$*#B#B$$  $ 4&1&3WWWWWWWWWWWWWWWWWWWWWWWWWWWWWr  &7   1      %    rc|j}t|jjdk|jr||\n |j\fd}|S)Nrc(|j} f|jzfz|j|}|jr|d||j fd|DdS)N) cache_pathc*|Sr)r)rs rz8_load_subclass_via_in..do_load..sa&9&9&;&;rcZg|]'\}}r|jddn |jd(S)rrr)rrw load_attrszero_idxs rr'z:_load_subclass_via_in..do_load..sF%E:$,= ! Q1r) primary_keys) r_with_lazyload_options _with_optionsparent_populate_existing add_criteriarRrall) r%rEstates load_onlyeffective_entity orig_queryq2 disable_opt enable_optrrs rdo_loadz&_load_subclass_via_in..do_loads]  % % MJ4 4 ~ E K&    ( = OO;; < < < 7?"")/ #  #%%%%%r)rjr] base_mapperris_aliased_class_subclass_load_via_in_subclass_load_via_in_mapper) r%rEentityrjr rrrrs @@@@rrrs ]F6%122a7H I%+%A%A&%I%I":{{%+%H":{& Nrc x|r|j|_|dD]\} } | ||| <|rA|dD]7\} } || d| r|j| 8n*|dD]!\} } | r|j| "|dD]\} } | ||||dD]\} } | |||dS||jkrD||_|dD]\} } | |vr| ||| <|dD]\} } | |||dS|dD]\} } | |||dS)Nrrrdelayedexisting)r0popexpired_attributesaddr) r%rrwrrrrrrrur set_callable populators rrrs ))m %g. % %KCE#JJ  6%/%9 6 6!\ #t$$$6,00555 6 &0%9 6 6!\6,00555(/ ) )NC IeUC ( ( ( ((3 ) )NC IeUC ( ( ( ( ) ) eo % %$&g. ) )KC%#VC[[c )4 ) )NC IeUC ( ( ( ( ) ))4 ) )NC IeUC ( ( ( ( ) )rc|s-|j|}|dD]\} } | |vr | |||n|}||j|<|dD]\} } | |vr| ||| <|dD];\} } | |vr2|| d| r|j| <|dD]\} } | |vr | ||||dD]\} } | |vr | ||||dD]\} } | |vr | ||||S)Nr(rrrr'r)r6r)r*r+) r%rrwrrrrrrrur-rr,s rrrs -"5)(4 - -NCg~~ %,,, -")%g. ) )KCg~~#VC[[c !+H!5 6 6 Cg~~ #t$$$6,00555(/ - -NCg~~ %,,,(3 - -NCg~~ %,,,$W-))Y h   IeUC ( ( ( Nrc |j}|dS|r |j|}||||j||krKtjdt |d||||jd||ddS)Nz Instance 'z' has version id 'z3' which does not match database-loaded version id 'z'.)version_id_colr_get_state_attr_by_columnrrStaleDataErrorr )rjrwrrrr0s rrr!s*N9 8 ((v7LMM ~   $$%    005&"7N###      rc || nj Sr j  fd}tj| fd}|S)Nc j|}|urdSt|S#t$rtd|zwxYw)N)rz*No such polymorphic_identity %r is defined)rr KeyErrorAssertionError) discriminator sub_mapperrr%rjrEr(s rconfigure_subclass_mapperz?_decorate_polymorphic_switch..configure_subclass_mapperOs / >J V##t&"(      <}L  s +AcX|}||}|r ||S|Srr")rr7r instance_fnpolymorphic_instancesrs rpolymorphic_instancez:_decorate_polymorphic_switch..polymorphic_instanceesCN+  $-m.sK$E9='++O<< "r) rr PathRegistrycoercer@valuesr:rAclear) rDr%rEtokenrargrrrJs @rr;zPostLoad.invokes{  F)00667;|7J7J7L7L J J 3E?FC(, (9(9(;(;F  JwfdnIsIIIbIII rcZ|j|j}| |r||_|Sr)r1rhrErA)clsr%rEr|pls rrzPostLoad.for_contexts/  $ ( ( 3 3 >o>*BL rcP|j|jvo||j|jjvSr)rEr1r@)rDr%rErus r path_existszPostLoad.path_existss1 I0 0 Bw.ty9AA rc|j|jvr|j|j}ntx}|j|j<|||||f|j|<dSr)rEr1rr@) rRr%rErJrOloader_callablerPrrSs rrzPostLoad.callable_for_pathsZ 9/ / /(3BB6>jj @B(3"O_c2N 5rN) __name__ __module__ __qualname____doc__ __slots__rErr; classmethodrrUrr"rrrrps>>0I '''   [   [ OO[OOOrrc&|j}|s$tjdt|zt |j}d}|r,|j}j rj s ||}|qt| tjd|d||}|dur|r|j}nffdjD}|j|r$t+jdt|z|}t1j|rjrt1j|r$t9jdt|dSt| ||| }|r|tj|dSdS) z4initiate a column-based attribute refresh operation.zQInstance %s is not bound to a Session; attribute refresh operation cannot proceedFN*)r|rzc4g|]}j|jSr")_columntopropertyru)rrrjs rr'z*load_scalar_attributes..s169(-1rz_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).)rzr|)rRrrDetachedInstanceErrorr rrurattrsrcriconcrete_optimized_get_statementrroptionsrLoadundeferfrom_statementrr*sa_excInvalidRequestErrorrr issubsetrrr warn_limitedrs) rjrwattribute_namesrRhas_keyr( statement identity_keypk_attrss ` rload_scalar_attributesrssnmG  + 9>sCCDD ** /# F  B 9LL =C=OH'44X>> 024=e4D4DE "::5AAL  | , , 5;5M   !, / /   6%      F MM& ! ! +    06>(///00>>r)T)NNN)NNNN)&r[ __future__rrrrrrrrbaser r rr r rjsqlrcounterr/rG dependenciesrerxrr~rrr rrrrrobjectrrsr"rrr{s'&&&&&""""""''''''"""""" T\^^ BBBJ)**2&2&2&+*2&jBKO0 NNNNp"/%/%/%/%d   $"AAAAH @4)4)4)tD   61 1 1 h5O5O5O5O5Ov5O5O5OpP0P0P0P0P0r