idU dZddlmZddlZddlZddlmZddlmZddlm Z ddlm Z dd lm Z dd lm Z dd lm Z dd lmZdd lmZddlmZddl mZddl mZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZ ddlm!Z! dIdZ"e j#$ddGddeZ%ej&e j#$d dGd!d"eZ'ej&e j#$d #Gd$d%e'Z(ej&e j#$d d &e j#$d 'Gd(d)eZ)Gd*d+e*Z+Gd,d-eZ,ej&e j-$d 'Gd.d/eZ.ej&e j-$d01e j-$d1Gd2d3e,Z/ej&e j-$d 1e j-$d41e j-$d51e j-$d61e j-$d71Gd8d9e,ej0Z1Gd:d;e*Z2e j-$d<1Gd=d>e,Z3ej&e j-$d?1Gd@dAe,Z4ej&e j-$dB1e j-$d1GdCdDe,Z5ej&e j-$dE1GdFdGe,ej0Z6dHZ7dS)JzWsqlalchemy.orm.interfaces.LoaderStrategy implementations, and related MapperOptions.)absolute_importN) attributes)exc) interfaces)loading) properties)query) unitofwork)util)_DEFER_FOR_STATE)_SET_DEFERRED_EXPIRED)LoaderStrategy)StrategizedProperty)_state_session) InstanceState) _none_set)aliased)event)inspect)log)sql)visitorsFc  8ttj|jg} g} |o|j|r!|jr| t|j|j j vr3|j j |j\| fd|r| tj |r)|j r |jr| fd|jD]} || j|jur| j|jsct)j| j|jf|||| |o|jp|jt0ju||||| p|j |jd | } | D]}|| |dS)N)defaultc6tj||jfiSN)orm_util_validator_eventskey)descpropfnoptss N/opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/orm/strategies.pyz%_register_attribute..Bs*x9dh  &*  c0tj|Sr)rbackref_listeners)r"r#backrefuselists r&r'z%_register_attribute..Ps:#?'7$$r() parent_tokenr,compare_function useobject extension trackparent typecallable callable_active_history impl_classsend_modified_eventsdoc)listr to_listr0r, single_parentappendsingle_parent_validatorr!parent validatorsr track_cascade_eventsback_populates_effective_sync_backrefself_and_descendants_propsget class_manager_attr_has_implrregister_attribute_implclass_ directionr ONETOMANYviewonlyr7)r#mapperr/r.r2r3proxy_propertyr4r5kw attribute_ext listen_hooksmr"hookr+r$r%r,s @@@@r&_register_attributerS)s2dnbAAABBML(DLG5T'53444 x4;)));)$(3D        =J;<<<%  t3       " (!! 18<< H    /00:: 5"!1#'%&>~)==)#-%)2]%G$-6GH%&'D,% ! !T4    9!!r() instrumentdeferredc6eZdZdZdZfdZ ddZdZxZS)UninstrumentedColumnLoaderzRepresent a non-instrumented MapperProperty. The polymorphic_on argument of mapper() often results in this, if the argument is against the with_polymorphic selectable. columnsc|tt||||jj|_dSr)superrW__init__parent_propertyrYselfr= strategy_key __class__s r&r\z#UninstrumentedColumnLoader.__init__s5 ($//88NNN+3 r(Nc b|jD]&}|r |j|}||'dSr)rYr;) r_context query_entitypathloadoptadaptercolumn_collectionkwargscs r& setup_queryz&UninstrumentedColumnLoader.setup_querysJ ( (A 'OA&  $ $Q ' ' ' ' ( (r(cdSr)r_rcrerfrLresultrg populatorss r&create_row_processorz/UninstrumentedColumnLoader.create_row_processors  r(r) __name__ __module__ __qualname____doc__ __slots__r\rkrp __classcell__ras@r&rWrWsqI44444 ( ( ( (       r(rWTc8eZdZdZdZfdZdZdZdZxZ S) ColumnLoaderz8Provide loading behavior for a :class:`.ColumnProperty`.)rY is_compositectt||||jj|_t |jd|_dS)Ncomposite_class)r[ryr\r]rYhasattrrzr^s r&r\zColumnLoader.__init__sL lD!!**6<@@@+3 #D$8:KLLr(c |jD]&} |r |j| } || '|jd} |r |j| } | ||j<dSNr)rYr;r]) r_rcrdrerfrgrhmemoized_populatorsrirjfetchs r&rkzColumnLoader.setup_queryss ( (A 'OA&  $ $Q ' ' ' ' Q  +OE*E49D0111r(cd|_|jdj}|jjp,|jdjp|jt|jv}t|j|d|j |dS)NTrF)r/r.r4) is_class_levelrYtyper]r4 primary_keyversion_id_colsetrScompare_values)r_rLcoltyper4s r&init_class_attributez!ColumnLoader.init_class_attributes",q/&  / :|A* :$DL(9(99    $3)       r(c|jD]N}|r |j|}||d} | r%|d|j| fdSO|d|jdfdS)NFquickexpireT)rY_getterr;r!) r_rcrerfrLrnrgrocolgetters r&rpz!ColumnLoader.create_row_processors < : :C +oc*^^C//F 7#**DHf+=>>>  x ' '4(8 9 9 9 9 9r() rqrrrsrtrur\rkrrprvrws@r&ryrysxCB)IMMMMM :::,   $ : : : : : : :r(ry)query_expressionc0eZdZfdZdZdZdZxZS)ExpressionColumnLoaderctt|||tjt fd|jjD|_dS)Nc3DK|]}| VdSr)compare).0rjnulls r& z2ExpressionColumnLoader.__init__..sA, , $% $ , , , , , , r() r[rr\rranyr]rY_have_default_expression)r_r=r`rras @r&r\zExpressionColumnLoader.__init__st $d++44V\JJJxzz(+, , , , )-)=)E, , , ) ) %%%r(c d} |rd|jvr|jdg} n|jr |jj} | dS| D]&} |r |j| } || '| d} |r |j| } | ||j<dS)N expressionr) local_optsrr]rYr;) r_rcrdrerfrgrhrrirYrjrs r&rkz"ExpressionColumnLoader.setup_querys  3|w'999),78GG  * 3*2G ? F ( (A 'OA&  $ $Q ' ' ' '   +OE*E49D0111r(c&|rd|jvr|jdg}|D]N} |r |j| } || d} | r%|d|j| fdSO|d|jdfdSdSdS)NrFrrT)rrYrr;r!) r_rcrerfrLrnrgrorYrrs r&rpz+ExpressionColumnLoader.create_row_processors  >|w'999),78G > >/!/#.CU33w'..&/ABBBEE8$++TXt,<===== > >99r(cpd|_t|j|d|jdjjddS)NTFr)r/r.accepts_scalar_loader)rrSr]rYrrr_rLs r&rz+ExpressionColumnLoader.init_class_attribute"sI"  !\!_1@"'       r()rqrrrsr\rkrprrvrws@r&rrse     :::<>>>$        r(r)rUrT) do_nothingcBeZdZdZdZfdZdZdZ d dZdZ xZ S) DeferredColumnLoaderzAProvide loading behavior for a deferred :class:`.ColumnProperty`.)rYgroupctt|||t|jdrt d|jj|_|jj|_dS)Nr|z8Deferred loading for composite types not implemented yet)r[rr\r}r]NotImplementedErrorrYrr^s r&r\zDeferredColumnLoader.__init__6so "D))226<HHH 4'): ; ; %M +3 )/ r(c|js0|jj}|d|j|fdS|d|jdfdS)NnewrF)rr]_deferred_column_loaderr;r!) r_rcrerfrLrnrgroset_deferred_for_local_states r&rpz)DeferredColumnLoader.create_row_processor?sl" ;$< ) u  $ $dh0L%M N N N N N x ' '5(9 : : : : :r(c|d|_t|j|d|jdjj|jddS)NTFr)r/r.r3expire_missing)rrSr]rYrr_load_for_staters r&rz)DeferredColumnLoader.init_class_attributeOsO"  !\!_1@*       r(Nc |r:d|jvr1t|j|jjs7|r*|jr#|jd|jzds |r7|j|vr.|j dj |||||||fi| dS|j rt||j <dSt||j <dS)N undefer_pkszundefer_group_%sF))rUF)rTT)rrrY intersectionr=_should_undefer_in_wildcardrrDr!r] _get_strategyrkrrr ) r_rcrdrerfrgrhronly_load_propsrNs r&rkz DeferredColumnLoader.setup_query[s2 I"W%777 %%22K;8  8J8&**&3U8 8%)H$?$? D . .;  !#         I8M  4 5 5 58H  4 5 5 5r(cjs tjS|tjzs tjSjj}jrfd|jD}njg}fd|D}t}|2tj dtj djd||}tj|j| tjtjS)Ncg|]H}t|tr1t|jtr|jjkA|jISrm) isinstancerstrategyrrr!)rpr_s r& z8DeferredColumnLoader._load_for_state..sba!455qz+?@@  Gtz)) *))r(c&g|] }|jv |Srm) unmodified)rkstates r&rz8DeferredColumnLoader._load_for_state..s&<<       r(cVfd}|dj|fdS)Ncjr5|jj||dSd|j<dSr)r,rget_implr! initializerdict_rowr_s r&invoke_no_loadz5NoLoader.create_row_processor..invoke_no_loadsJ| ' &&tx00;;E5IIIII"&dhr(rr;r!) r_rcrerfrLrnrgrors ` r&rpzNoLoader.create_row_processorsD ' ' ' ' ' 5  $(N!;<<<<|j o6|jjd|j d|jj|_|jrlt5|jD]:}||jjvr*|jj|D]}|j||j|<;|jd |dSdS) NrrrT)reverse_directionz%s lazy loading clause %sr use_proxies equivalentsz2%s will use query.get() to optimize instance loads)r[rr\ strategy_optsrrrrrr]_join_conditioncreate_lazy_clauserrrrrrloggerinfor, _get_clauserrL_equivalent_columnsrr8)r_r=r`join_conditionrrjras r&r\zLazyLoader.__init__s j$((>>>!/77B!/7>I ' 4 4 E-=  - - / /  O    !  - - - E E     !  % 4dDOLLL% % L   '*22  K;3  < D122 N N$+999![)       r(c|j|jc}gd}tj|id|ifd}tj|id|i}|fS)Ncd|_dSNF)unique) bindparams r&visit_bindparamzFLazyLoader._memoized_attr__simple_lazy_clause..visit_bindparamgs$I   r(rc|jvr*|j|jdfdS|j$|jd|jfdSdSr)_identifying_keyr;r!callablevalue)r bind_to_colparamss r&rzFLazyLoader._memoized_attr__simple_lazy_clause..visit_bindparamls)[88 ! #I$>?#+ y}dIODEEEEE,+r()rrrtraversecloned_traverse)r_ criterionrrrs @@r&"_memoized_attr__simple_lazy_clausez-LazyLoader._memoized_attr__simple_lazy_clausebs"&/43D ; % % % )R+)GHHH F F F F F F, rK9  &  r(c|j\}}|tj|d|DS|jj}|}t j|}|t jzr|t jz}i}|D]O\} } } | B|r(|t j zr| ||| |} n| ||| |} | || <P||fS)Ncg|]\}}}| Srmrm)rr!identrs r&rz4LazyLoader._generate_lazy_clause..sDDD$5CCDDDr() rsql_utiladapt_criterion_to_nullr]r=objr instance_dictINIT_OKLOAD_AGAINST_COMMITTED#_get_committed_state_attr_by_column_get_state_attr_by_column) r_rrr  param_keysrLorrr!r$rs r&_generate_lazy_clausez LazyLoader._generate_lazy_clause~s $ 8 : =3DDDDD %, IIKK(++ Z' ' * z) )G!+ C w)JJ"FFueWEE#<<ueWE F3KK&  r(c8tjd|d|d)N'z ' is not available due to lazy=')sa_excInvalidRequestError)r_rrrs r&_invoke_raise_loadzLazyLoader._invoke_raise_loads*((8<ddd C   r(c|js&|jjs|jr|js t jS|j }d}|t jzs|jr|t j zs|r t j S|j r<|t j zs-|jr|t j zr|||dt|}|sM|t j zr t j St!jdt%j|d|jd|jr||||}t j |vr t j St j|vr t jSt-j|rdS||j|||}||t jurdS|S|t jzr|t j zs t j S|||||S)Nrrz> is not bound to a Session; lazy load operation of attribute 'r)rlazy_loaded_from)r!r]load_on_pending _load_pending session_idrrrrNON_PERSISTENT_OKrrNO_RAISERELATED_OBJECT_OKr4rrrrr_get_ident_for_use_get NEVER_SETr issupersetr _identity_lookuprPASSIVE_CLASS_MISMATCH_emit_lazyload)r_rrpendingprimary_key_identityrinstances r&rzLazyLoader._load_for_states]y )(8 )+ ) #  )( (i-#*++ 0DL 0*66 0;B 0/ /   =j11  =L =Z99 =  # #E7G < < < '' ,, 4!33//%e,,,,dhhh8  < 4#'#>#>$$ +/CCC!33%)===!++#$899 t }}77 $!& 8H#z@@@4#Oj// 4!== 4"33"" U0'   r(cjj}tjzr|jn|jjfdjjDS)NcDg|]}j|S)rr)rpkrget_attrrr_rs r&rz5LazyLoader._get_ident_for_use_get..sD    HUE4#8#j !rdSn3t;jt>j" !rdSj r|d| fd  fd } ||fd | #} j$r| StK| } | r*| dkrt;j&djz| dSdS)Nc8|jSr)r r)rr_s r&r'z+LazyLoader._emit_lazyload..)st{)C)Cr(cP|dSr)_adapt_all_clauses_with_invoke_all_eagersqs r&r'z+LazyLoader._emit_lazyload..,s a**,,DDUKKr(T)fullcN|jjjSr) select_fromrLr] secondaryr_r_s r&r'z+LazyLoader._emit_lazyload..5s"!--K!5!?r(c,|dSr) autoflushr^s r&r'z+LazyLoader._emit_lazyload..>sQ[[%7%7r(rc.|Sr_set_lazyload_fromr_rs r&r'z+LazyLoader._emit_lazyload..Psa.B.B5.I.Ir(cP|jtjjjSr)order_byr r9r]rds r&r'z+LazyLoader._emit_lazyload..Xs#*!*\$"6"?@@r(c|j|jjjSr)optionsLoadfor_existing_path _current_pathr=lazyloadr!)r_revstrategy_optionss r&r'z+LazyLoader._emit_lazyload..gsFaii(-??OCJ7"(37++r(c.|Sr)filter)r_ lazy_clauses r&r'z+LazyLoader._emit_lazyload..zs+!6!6r(cJ|j|_|Sr)update_params)r_rs r&set_default_paramsz5LazyLoader._emit_lazyload..set_default_params~s# MM!) $ $ $AIHr(c.|Srrhrjs r&r'z+LazyLoader._emit_lazyload..s!*>*>u*E*Er(rzKMultiple rows returned with uselist=False for lazily-loaded attribute '%s' r)'r add_criteriar] bake_queriesspoilrcr!r NO_AUTOFLUSH load_options load_path_add_lazyload_optionsrrr4with_post_criteria_load_on_pk_identityr rLrl_reverse_propertyrIrr_use_getrrrr/r has_intersectionrrvalues _never_setallr,lenwarn)r_rtrrrDrr_rCeffective_pathr{rnlrwrrss`` ` @@@r&rBzLazyLoader._emit_lazyloads6 LLCCCCT J J  K K     #0  GGG      ) 5 NN    i-  9g 77 9 NN77 8 8 8   H #_T-ABN # #E$6 G G G < ! H''wGGG' ##$I$I$I$IJJ%%MM$+..0D    (  NN    '9  C !555L6"3<<<6 #88HH V  $X%7II t  "8#6  H H 4   D  # #E7N C C C 6666777      AgJJ   E E E E F F   2 3 3 SUU  < MF A q55IJ./ ay tr(c, |j |jsMtj|jt | }|d|j|fdS|js|jr) fd} |d|j| fdSdS)Nrc4||dSr)_reset)rrrr!s r&reset_for_lazy_callablez@LazyLoader.create_row_processor..reset_for_lazy_callables UC(((((r() r!rr"_instance_level_callable_processorrELoadLazyAttributer;populate_existingalways_refresh) r_rcrerfrLrnrgroset_lazy_callablerr!s @r&rpzLazyLoader.create_row_processorsh" J@"$5c4$@$@#!G!G  u  $ $dh0A%B C C C C C  & J&*? J ) ) ) ) ) u  $ $dh0G%H I I I I I J Jr()rqrrrsrtrur\rr!r/r4rr=r dependenciesrWrBrprvrws@r&rrs I/////b   0!!!8!!!@   V V V p    T-..%%/.%T899HH:9HT J J J J J J Jr(rc,eZdZdZdZejfdZdS)rz-serializable loader object used by LazyLoaderc,||_|j|_dSr)r!r`)r_r!initiating_strategys r&r\zLoadLazyAttribute.__init__s/<r(c|j}|jj}|j|}|j|j}|||Sr)r!rrLrCrr`r)r_rrr!rMr#rs r&rzLoadLazyAttribute.__call__sFh-.%c*#D$56''w777r(Nrrmr(r&rrsE77==='1&<888888r(r immediatec*eZdZdZdZ ddZdZdS)ImmediateLoaderrmc`|jd|dSN)rrr]rrrs r&rz$ImmediateLoader.init_class_attribute2 ** !   v & & & & &r(Nc dSrrm) r_rcrrerfrgrh parentmapperris r&rkzImmediateLoader.setup_querys  r(cVfd}|dj|fdS)Ncd|j||dSr)rr!rDrs r&load_immediatez.load_immediates- NN48 $ $ ( ( 6 6 6 6 6r(delayedr) r_rcrerfrLrnrgrors ` r&rpz$ImmediateLoader.create_row_processorsD 7 7 7 7 7 9$$dh%?@@@@@r(NN)rqrrrsrurrkrprmr(r&rrsXI'''     AAAAAr(rsubqueryceZdZdZfdZdZ ddZdZdZdZ d Z d Z d Z Gd d e ZdZdZdZxZS)SubqueryLoader) join_depthc|tt||||jj|_dSr)r[rr\r]rr^s r&r\zSubqueryLoader.__init__s4 nd##,,V\BBB.9r(c`|jd|dSrrrs r&rz#SubqueryLoader.init_class_attributerr(Nc h|jjsdS|jjr|jd||j}||jdd} | | } n|j} |jdtj j } | |z} | |jdsY|j r6|jj r|jj jnd|jzdz |j krdSn| |jrdS|| \} } }|jdt$f|j}||| | ||j}|j| }dt$f|d| i|_|d}||| \}}}|j|}|||||| }||| || }||}||jd|dS) Nrpath_with_polymorphic) subquery_pathNloaderrr orig_queryF)r _enable_eagerloads _yield_per _no_yield_perr]rDrrr PathRegistryrootcontainsrrqlengthcontains_mapperrL _get_leftmostr_generate_from_original_query entity_zeror _attributes_set_enable_single_crit_prep_for_joins add_columns _apply_joins_setup_options_setup_outermost_orderbyr)r_rcrrerfrgrhrriwith_poly_entityeffective_entity subq_pathleftmost_mapper leftmost_attrleftmost_relationshipr left_aliasr_to_join local_attr parent_aliass r&rkzSubqueryLoader.setup_querys}/ 4 F ] % 4 M ' ' 3 3 3D() 88   7    '/  #{ &** #X%:%?  $ }}W/::  #=6 3::k " ((F(**4;77    y ) )    !'++ > *GM  77    !        $ $%5 6 6 > *J #Y   % %e , ,,0,@,@  - - )\ AM: &    w L2B     9j:J K K  ) )! , , #Z33333r(cjtjd}|j|r|jdur|j|jc}n |dc}|j}fd|D}||fS)Nrrcfg|]-}tdjj|j.Sr)getattrr_columntopropertyr!)rrjrrs r&rz0SubqueryLoader._get_leftmost..ksL    ! #_%Fq%I%M     r()rer_class_to_mapperr=isar] local_columns)r_r subq_mapper leftmost_prop leftmost_colsrrs ` @r&rzSubqueryLoader._get_leftmost\sN / ! ==  KOOK ( ( G$ ! 44-1[$:N *O]]-8)A, *O]%3      #     }<.s0 #"8}8 M888r(FTc3$K|] }|jV dSr)table)rrjs r&rz?SubqueryLoader._generate_from_original_query..s$66Q666666r(use_mapper_path)_clone correlate _from_obj_set_select_fromr8rcolumn_descriptions_adapt_col_list _set_entitiesdistinct_target_key _distinctr?r _order_byrl_limit_offset with_labelsrr AliasedClass) r_rrrr orig_entityr_ target_colsrtembed_qrs r&rz,SubqueryLoader._generate_from_original_queryts      ) )$ / / {   '1'E   "'' 66   $$$3G $ & &AKK (66+66666  ;''221=AA"&AKE ;%  )2AK 8  1AK --//**,,* Wd   r(c g}t|}t|D]\\}\}}|dkr0||dz dj}||r|n|} n|} || |jf]t|dkr| nEt|dd} | j r| j ntj | j d j j} fd| D} || fS)NrrrTrcZg|]'}tjj|j(Srm)rr=rr!)rrjrr_s r&rz2SubqueryLoader._prep_for_joins..s@    L$+"?"B"F G G   r()r8pairs enumeraterLrr;r!rrrrrrr]r)r_rrrrirLr# prev_mapper to_appendr  local_colsrrs` @r&rzSubqueryLoader._prep_for_joinssJY__&&''!*5!1!1 2 2 A~1uu$AEl1o4 +6??6+B+BNKK " NNItx0 1 1 1 1 w<**D$ #{  (4K    )7          L00r(ct|}|dkr2t||dd|g}nu|dkr`t||dd|t||dd|g}n|dkrd|ddD}g}|r|d} t| d| d} |r"| |dd} n| |} || |t||dd|djg|zt||dd|gz}|D]} || d}|S)Nrrrrcg|]K}t|djstj|dn |dj|dfLS)rr)rrrrr)ritems r&rz/SubqueryLoader._apply_joins..sg #47++<(H)$q'222aG r(T)from_joinpoint)rrof_typepopr;r=join) r_r_rrrrltjmiddleinnerrattrs r&rzSubqueryLoader._apply_joinss'll !88 GAJqM22::;KLLGGAXX GAJqM22::<HH gbk!n55==$GG 1WW$AbDMFE #zz!}}tAwQ006<<q ! 55DD<< 55D T""" #WQZ]33;;E!HOLLML'"+a.99AA(  2 2DtD11AAr(ct||}|j|j}|jr |j|_|Sr)_with_current_path_conditional_options _with_options_populate_existing)r_r_rrrs r&rzSubqueryLoader._setup_optionssE   + + "A "J$< =  ( A#-#@A r(c|jjrM|jd}|jt j|jj}|j|}|Sr)r]rlr_target_adaptercopy_and_processr r9)r_r_ eagerjoineager_order_bys r&rz'SubqueryLoader._setup_outermost_orderby"s]   ( ,  AI&6GG T1:;;N N+Ar(c.eZdZdZdZdZdZdZdZdS)SubqueryLoader._SubqCollectionszGiven a :class:`_query.Query` used to emit the "subquery load", provide a load interface that executes the query at the first moment a value is needed. Nc||_dSr)subq)r_rs r&r\z(SubqueryLoader._SubqCollections.__init__9s DIIIr(cn|j||j||Sr)_data_loadrD)r_r!rs r&rDz#SubqueryLoader._SubqCollections.get<s-z! :>>#w// /r(ctjt|_t j|jdD]/\}}|j|d|D0dS)Nc|ddS)Nrrmxs r&r'z7SubqueryLoader._SubqCollections._load..Csqur(c3&K|] }|dV dS)rNrmrvvs r&rz8SubqueryLoader._SubqCollections._load..Ds&$7$7rRU$7$7$7$7$7$7r() collections defaultdictr8r itertoolsgroupbyrextend)r_rvs r&rz%SubqueryLoader._SubqCollections._loadAsn$066DJ!)$)__EE 8 81 1 $$$7$7Q$7$7$77777 8 8r(c@|j|dSdSr)rr)r_rrrs r&rz&SubqueryLoader._SubqCollections.loaderFs#z! "!r() rqrrrsrtrr\rDrrrmr(r&_SubqCollectionsr0sa      0 0 0  8 8 8      r(r+cF|jj|jjjst jd|z||j}||j d}|dS|j |j us Jd|jj } ||j d} | 1| |} | |j d| rfd| D} |jr||| | |dS||| | |dS)NJ'%s' does not support object population - eager loading cannot be applied.rzlSubquery session doesn't refer to that of our context. Are there broken context caching schemes being used?r$c*g|]}j|SrmrX)rrjrgs r&rz7SubqueryLoader.create_row_processor..ks AAA'/!,AAAr()r=rEr!implsupports_populationr2r3r]rDrrrr+rr,_create_collection_loader_create_scalar_loader) r_rcrerfrLrnrgrorrr$s ` r&rpz#SubqueryLoader.create_row_processorJso{(27K ,@BFG  D()xx*J77 < F|w... "/.. )7 hhw1=AA  //55K HHW' D D D  BAAAAjAAAJ <   * *j*       & &j*     r(cfdfd}|djf|dj|f|jr)|djjfdSdS)NcjtfdDd}|j|||dS)Nc g|] }| Srmrmrrrs r&rz_SubqueryLoader._create_collection_loader..load_collection_from_subq..{666Cs3x666r(rm)rDtuplerr!set_committed_value)rrr collectionr$rr_s ` r&load_collection_from_subqzKSubqueryLoader._create_collection_loader..load_collection_from_subqysr(6666:66677J NN48 $ $ 8 8uj     r(c8j|vr|||dSdSrr)rrrr;r_s r&&load_collection_from_subq_existing_rowzXSubqueryLoader._create_collection_loader..load_collection_from_subq_existing_rows3xu$$))%<<<<<%$r(rexistingeagerr;r!invoke_all_eagersr)r_rcr$rror=r;s` `` @r&r1z(SubqueryLoader._create_collection_loadervs        = = = = = = 5  $(,E!FGGG:%% X= >     $ G w  & &+2D'E F F F F F G Gr(cfdfd}|djf|dj|f|jr)|djjfdSdS)Nc jtfdDd}t|dkrtjdz|d}|j|||dS)Nc g|] }| Srmrmr6s r&rzWSubqueryLoader._create_scalar_loader..load_scalar_from_subq..r7r(rrLMultiple rows returned with uselist=False for eagerly-loaded attribute '%s' r)rDr8rr rrr!r9)rrrr:scalarr$rr_s ` r&load_scalar_from_subqzCSubqueryLoader._create_scalar_loader..load_scalar_from_subqs(6666:66677J:"" GIMN  ]F NN48 $ $ 8 8v N N N N Nr(c8j|vr|||dSdSrr)rrrrGr_s r&"load_scalar_from_subq_existing_rowzPSubqueryLoader._create_scalar_loader..load_scalar_from_subq_existing_rows3xu$$%%eUC88888%$r(rr>r?r@)r_rcr$rrorIrGs` `` @r&r2z$SubqueryLoader._create_scalar_loaders O O O O O O O 9 9 9 9 9 9 5  $(,A!BCCC:%% X9 :     $ G w  & &+2D'E F F F F F G Gr(r)rqrrrsrur\rrkrrrrrrobjectr+rpr1r2rvrws@r&rrs. I:::::'''a4a4a4a4F===0???B-1-1-1^222h   64***XGGG.GGGGGGGr(rjoinedczeZdZdZdZfdZdZ ddZdZd Z d Z d Z d Z dd Z dZdZdZdZxZS) JoinedLoaderzcProvide loading behavior for a :class:`.RelationshipProperty` using joined eager loading. )r_aliased_class_poolctt||||jj|_g|_dSr)r[rMr\r]rrNr^s r&r\zJoinedLoader.__init__s> lD!!**6<@@@.9#%   r(c`|jd|dSrrrs r&rz!JoinedLoader.init_class_attributerr(NFc *|jjsdS|jjr!|jr|jd||j}d} |r|||nd} | dur|||||| \} }} nu||j ds9|j r|j dz |j krdSn| |j rdS|||||||||\} }} }||j dd}|t!|j} nd} ||j}t'j||j ||| | | |j | |*dt+|jvrt/jddSdS) z@Add a left outer join to the statement that's being constructed.Nzjoined collectionFrrr)with_polymorphicrchained_from_outerjoinzDetected unaliased columns when generating joined load. Make sure to use aliased=True or flat=True when using joined loading with with_polymorphic().)r rrr,rr]_init_user_defined_eager_proc$_setup_query_on_user_defined_adapterrrrrrrL_generate_row_adapterrDrwith_polymorphic_mappersrr_setup_entity_queryrsecondary_columnsr2r3)r_rcrdrerfrgrhrrSrirRuser_defined_adapterclausesadd_to_collectionrs r&rkzJoinedLoader.setup_querys?}/ = F ] % =$, = M ' '(; < < <D() D . .w @ @ @  u , , 99tW6J  !!==!3X>> ?{Q889))$+66F**!&    !& 88   7    '&   &   $ DK #  K    -#9   'DC  %5 5 - - ,E  ( '- - r(cd|jvrdS|jj}||jdd}|dur|S|jd}|dd\}}|Pt |t r|j|}tj ||j j }n|| |jdr<||jd}tj||j j }n%|jj|j d}||jd||S)Neager_from_aliasF user_defined_eager_row_processor)rr)rrer=rDrrstrraliasr% ColumnAdapterrLrrr ORMAdapterr _polymorphic_adaptersr) r_rfrcrergrb root_mapperr#rs r&rTz*JoinedLoader._init_user_defined_eager_procsq W%7 7 75|"((   BE   %  N"#56 I T  %%% 1 ))%00,4;#BGG}}W/1HII #'88&(?$$ #-$ $ ? "-=AAK    BG   r(c||j|}|r4|r2||}||jd|n |r|}||jd||j}|||fS)Nr_)_get_entity_clausesr wraprrprimary_columns)r_rcrrergrZr\s r&rUz1JoinedLoader._setup_query_on_user_defined_adapterMs ,,W]GDD  + #7#<#s,Ca,G GG s #c #d.// / /, !-%***555 $ H H   ( * *  $ + +H 5 5 5',,r(c 2||jdd} | r| } n||} t| d|ft j| |jjddd} | j J|j j rd|_ |%|j d|j jn |j j} | sd}|j|j||||| | |f|j} ||jd| | || |fS)Nrjoinedloader_ormadapterTF)radapt_requiredallow_label_resolveanonymize_labels innerjoineager_row_processor)rDrrrr_memorrdrLr aliased_classr]r,multi_row_eager_loadersrrxcreate_eager_joinsr;_create_eager_joinrYr)r_rcrrerfrgrhrrSrrqr[rxr\s r&rVz"JoinedLoader._generate_row_adaptersl 88   7    ?'HH55g>>H(##)) & -    7 %!*  $000   ' 3.2G +"   " ";0D0N O O O%/   *&* ""))'&  $5 #%:GDDD!24JJJr(c ||j} n|} |jo |jj} d} ||jvrn| sl|jret j|j|j} t| dkrtj d| r|j| d} | d| }} | ||j}} |j | |}|rt|ddrit|j| |jr| n|j}t|j|j|j}nBtt-j|j|jd|j|j}n|j}|jJ| p| p|dkp |jj}|rSt-j||j|| p'|jjp|ot7|t8j|j|j}n|||||}||j| <|j|_|sit j |jj!D]J}| j"j#$|r)|r |j%|}|j&'|K|jj(rF|xj)|j*+tYj-|jj(z c_)dSdS) NrzCan't identify which query entity in which to joined eager load from. Please use an exact match when specifying the join path.rr{Trunnestedisouter _left_memo _right_memo).rLr|r _should_nest_selectable eager_joins from_clauser%#find_left_clause_that_matches_givenrnrr2r3 setdefaultrrr{_entity_for_mapperrr=rr!r]rrrrepresents_outer_join_ORMJoinrrJoin_splice_nested_inner_joinstop_on _find_columns primaryjoinpersist_selectablerjcontains_columnrYrjr;rlrrrr r9)r_rcrdrergrr[rxrSrshould_nest_selectablequery_entity_keyindexesclausedefault_towraptowrapefmonclauseattach_on_outsiderrs r&r~zJoinedLoader._create_eager_joins  &-KK&K  + 6 5     3 3 3* 4# 4B#\%<G7||a00  F ,WQZ8 4;1:v.  #'-  $// n    ,w66  g344GG"t{33%KK#3:tx9MNN") W%7H( +H$000' & >} >J& >'=    )%% M+AM*Kz&#(/K/K; K   II66fgxI1:,-)3  8 -$0 8 813CCCHH83%oc2+223777   ( ;  " ")::l4/899+;+; ; " " " " ; ;r(c :|durt|tjsJnt|tjjr|||j|||St|tjs6|d|ur*tj||j|d||dj SdS|||j |||j }|8d}|||j |||j }||dus JddSnd}|rR|js|js||}n[tj|j ||j|j|j }n-tj||j |j|j|j }|j|_|S) NFr`rrz9assertion failed attempting to produce joined eager loadsT)rr)rr)rrrrrn FromGroupingrelementr{rLrightrleftrr_splice_into_centerrr) r_rejoin_objr[rsplicing target_join right_splicers r&rz&JoinedLoader._splice_nested_inner_joinXs u  h(9:: : : : : #."= > > 11h&8 Hh&788 Bx8##()!' $R t44 (.'8X5I     L88hmWh8KK"E)))N*))t # L  # K,? $88EE $-M%$,'2  !)! ($0 I%0$? !r(c$|r|||nd}|dur5|}|jr|r||j}n.|jr|j}n||jd}|dS|j||r|SdS)NFry)rTrgrirDrrL_result_has_identity_key)r_rcrnrgrerfrZ decorators r&_create_eager_adapterz"JoinedLoader._create_eager_adapters D . .w @ @ @  u , ,,I ,9 ,%NN7?;;  ,#O !35JKKI u ; / / B B  5r(c |jj|jjjst jd|z||j}||||||} | durj|j} tj |j ||||j | } |j s||| | |dS||| | |dS|jd|||||||dS)Nr-Fr)r=rEr!r/r0r2r3r]rr_instance_processorrLrr,r2r1rrp) r_rcrerfrLrnrgroour_path eager_adapterr! _instances r&rpz!JoinedLoader.create_row_processorsO{(27K ,@BFG  ,-22 VWh    % %(C3 % I< **7CJOOOOO..S)Z  . .%  ""wr(cfd}fd}fd}|d|j|f|d|j|fjr$|d|j|fdSdS)Nctj||}tj|d}|j|f<|}|||dSdSNappend_without_eventrinit_state_collectionr UniqueAppenderr;) rrrr: result_listinstrrcr!s r&#load_collection_from_joined_new_rowzSJoinedLoader._create_collection_loader..load_collection_from_joined_new_rowsw#9%LLJ-2K0;G s| ,9S>>D""4((((( r(c|fjvrj|f}n7tj||}tj|d}|j|f<|}|||dSdSrr) rrrrr:rrrcr!s r&(load_collection_from_joined_existing_rowzXJoinedLoader._create_collection_loader..load_collection_from_joined_existing_rowss|w111%0%> (=5# #1 6 4?"E3<09S>>D""4((((( r(c|dSrrmrrrrs r& load_collection_from_joined_execzPJoinedLoader._create_collection_loader..load_collection_from_joined_exec IcNNNNNr(rr>r?r;r!rA)r_rcr!rrorrrs ``` r&r1z&JoinedLoader._create_collection_loaders ) ) ) ) ) ) ) ) ) ) ) ) ) )&      5  X: ;    :%% X? @     $  w  & &;<       r(cfd}fd}fd}|dj|f|dj|f|jr$|dj|fdSdS)Nc$||<dSrrm)rrrrr!s r&load_scalar_from_joined_new_rowzKJoinedLoader._create_scalar_loader..load_scalar_from_joined_new_rows#3E#JJJr(cz|}|vr%||urtjdzdSdS||<dS)NrE)r r)rrrr>rr!r_s r&$load_scalar_from_joined_existing_rowzPJoinedLoader._create_scalar_loader..load_scalar_from_joined_existing_rowso!y~~He||5:--IK.-&c r(c|dSrrmrs r&load_scalar_from_joined_execzHJoinedLoader._create_scalar_loader..load_scalar_from_joined_exec&rr(rr>r?r)r_rcr!rrorrrs` `` r&r2z"JoinedLoader._create_scalar_loader s ( ( ( ( ( (  & & & & & & &&      5  $(,K!LMMM:%% X; <     $  w  & &78       r()NNF)F)rqrrrsrtrur\rrkrTrUrrrVr~rrrpr1r2rvrws@r&rMrMs1 4I&&&&& '''$^^^^@---^@@@4!-!-!-F=K=K=K~M;M;M;`;@DDDDL8%%%N***X#######r(rMselectinceZdZdZejdgdZdZfdZdZ dZ dZ d Z e jd d Zd Ze jd d ZdZdZxZS)SelectInLoader)r omit_join _parent_alias _query_info_fallback_query_infor queryinfo)load_only_childload_with_joinin_exprpk_colszero_idxchild_lookup_colsictt||||jj|_|jjt ju}|jj|jj|_ne|j d}|r |j |_n<|j j d |jd|j j|_|jrQ|r4||_||_dS||_dS||_dS)NrrTr)r[rr\r]rrIrrrrrr=r rrr_init_for_omit_join_m2or_init_for_joinr_init_for_omit_join)r_r=r`is_m2o lazyloaderras r&r\zSelectInLoader.__init__Ms= nd##,,V\BBB.9%/:3GG   ) 5!1;DNN-;;%J !+!3!%!8!;!C!C- $ $ ?"D"" > 5 >#'#?#?#A#A ,0,?,?,A,A)))#'#;#;#=#=   #2244D   r(cdtjjjfdt DfdjjDx}}t|dkrtj |}d}n |d}d} dd|||dS)Nc3rK|]1}jj|dD]}||fV2dS)rmN)r=rrD)rrequivpk_to_fkr_s r&rz5SelectInLoader._init_for_omit_join..nsl  8<.ts)   !xHSMr(rFrT) rLr]r local_remote_pairsryr8r=rrrtuple_ query_info)r_rfk_colsrrrs` @r&rz"SelectInLoader._init_for_omit_joinjs  0 C        (^^          %)[%<    ' w<.s!III2z226IIIr()rLrrrrr]rr)r_rrr lookup_colsrs @r&rz&SelectInLoader._init_for_omit_join_m2os+) w<.s4   ,/G " "3 ' '   r(rFrT) rr=rHrrrrrrr)r_rrrrs @r&rzSelectInLoader._init_for_joins$T[%788$,--    37;3J    w<.s]&& 44" * ; 5&&&&&&r(c@g|]\}}|jd||j|fS)r)r!rL)rr overwrites r&rz1SelectInLoader._load_for_path.. s=$E91uej)<r(c:g|]}|Srmrrrinsps r&rz1SelectInLoader._load_for_path.. 'GGG4..s33GGGr(c:g|]}|Srmrrs r&rz1SelectInLoader._load_for_path.. rr(cP|tjdgRS)NrJ)r Bundle)rrrs r&r'z/SelectInLoader._load_for_path.. s-GMM T,G,,,.>r(c.|Sr)rb)r_rs r&r'z/SelectInLoader._load_for_path..+ sQ]]3C%D%Dr(c|tjjSr)rbrrr]r!r)r_rpar_s r&r'z/SelectInLoader._load_for_path..2 sI!--++00B 4 899AA(r(c||tjddSN primary_keysT) expandingrvin_rrr_rs r&r'z/SelectInLoader._load_for_path..; 3!((KK n M M MNNr(c||tjddSr r rs r&r'z/SelectInLoader._load_for_path..A rr(c*|Sr)rr^s r&r'z/SelectInLoader._load_for_path..M sQ%8%8%:%:r(c:g|]}|Srmr)relemrs r&rz1SelectInLoader._load_for_path..S s4&&&6:++D11&&&r(c|jSr)rl)r_rs r&r'z/SelectInLoader._load_for_path..V s^)Dr(c|jd}|j|jt jjjSr)rrlrrr r9r])r_rr_s r&rz?SelectInLoader._load_for_path.._setup_outermost_orderbyY sJ!" AI%1:"2CC L)=)FGGr()r!rrr$r%r8r=rLr8rrrrr;rrrrrrrr}rr rrr]rrl_load_via_child_load_via_parent)r_rVrcrestates load_onlyrr our_states none_statesr related_identr_rrrrrrLrrrrs` ` @@@@@@@@r&rzSelectInLoader._load_for_paths2  22 F%  %! G$066JK[F$* G G y"Z %&&&&&&):&&&!! /=@@!%!:JE},,}-44 I6  &&z9'EFFFF) (.J $$( H+,,D$ HGGGGwGGG--g66GGGGwGGG LL         (  NNDDDD E E E E #B NN     %  NN     NN    ]    $d4+?&@     ( < NN:: ; ; ;   ( 9, 9!%!5!>(&&&&>L&&&NDDDDEEEE     7888  % F  KQ       ! !*j!W E E E E Er(cH|j}t|}|r|d|j}||jd}d||jfd|DD} |D]g} | | d} || D]F\} } }|s |j| vr| |j| | |s| n| gGh||D]A\} } }|s |j| vr| |j| | dBdS)Nrci|]\}}|| Srmrm)rrr)s r& z2SelectInLoader._load_via_child..u s.Aq1r(c2g|]}jr|dn|Srr)rr!rs r&rz2SelectInLoader._load_via_child..x s6"""CF*"5>A3"""r(r ) r,sorted _chunksizerrrDr!rr9)r_rrrr_rcr,our_keyschunkdatar! related_objrrrs ` r&rzSelectInLoader._load_via_childm s,*%% Q01E 1 12HAgo..55""""JO"""6D   #hhsD11 /9#+E5)$!U):): NN48,,@@+2E   ' :(3 M M #E5) U!2!2 NN48 $ $ 8 8t L L L L  M Mr(c|j}|rdnd}|rl|d|j}||jd}fd|D}tjt} t j||j|dD]*\} } | |  d| D+|D]\} } }}|s |j |vr| | |}|sb|r`t|dkrtjd|z| |j | ||d| |j | |||jdSdS) Nrmrc<g|]\}}}}jr|dn|Srr")rr!rrrrs r&rz3SelectInLoader._load_via_parent.. sA5C I%-6A3r(r#c|dSrrmrs r&r'z1SelectInLoader._load_via_parent.. s !A$r(c3&K|] }|dV dS)rNrmr"s r&rz2SelectInLoader._load_via_parent.. s&11r!u111111r(rrE)r,r%r$r%r8r&r'rrr(r!rDrr rrr9)r_rrr_rcr, _empty_resultr'r r(rr)r!rrrr:s ` r&rzSelectInLoader._load_via_parent s,%/4 & q4?23E#DO$5$56J9>L *400D!)'/""))|)DD 2 21Q11q11111115:  1UJ  TX%;%;!XXc=99 ::** .045 NN48,,@@z:a= NN48,,@@z:I& & & & & r()rqrrrsrur$ namedtuplerr%r\rrrrr rrWrprrrrvrws@r&rr3s=I('     JJ55555:OOO,   N N N''' T-..%%/.%1 1 1 fT-..PFPF/.PFd(M(M(MT*******r(rcfdfd}fd}tj|d|dddtj|d|ddddS)Nc |t|jjkrd|tj|}|r;||ur7t jdt j|d|jddd|S)Nz Instance z+ is already associated with an instance of z via its z0 attribute, and is only allowed a single parent.bbf1)code) r! hasparentrinstance_stater2r3r instance_strrH)rroldvalue initiatorr4r#s r& _do_checkz*single_parent_validator.._do_check s  $(!:!:!++J,Ee,L,LMMI XU2200 ,U3333U\\\444I  r(c ||d|Srrm)rrr8r9s r&r;z'single_parent_validator..append sytY777r(c ||||Srrm)rrr7r8r9s r&set_z%single_parent_validator..set_ syx;;;r(r;T)rawretvalr4r)rlisten)r"r#r;r<r9s ` @r&r<r< s     88888<<<<< L hDd LudT$OOOOOOr()NNNNFN)8rt __future__rr$r&rrrrrr r r r rbaser rrrrrrrrrrr2rrrr%rrSColumnProperty strategy_forrW class_loggerryrrrJrrRelationshipPropertyrr MemoizedSlotsrrrrrMrr<rmr(r&rHs22&&&&&&""""""''''''&&&&&&++++++###### """"""S!S!S!S!l ''55'II         JI  F ''4%'HH?:?:?:?:?:>?:?:IH?:D '''>>B B B B B \B B ?>B J ''$'GG ''4'88A'A'A'A'A'>A'A'98HGA'H 8 8 8 8 8& 8 8 8 4 4 4 4 4 4 4 4  --->>n?>  --8-<<  --4-88=====)==98=<=<  --4-88  --8-<<  --7-;;  -->-BB  -->-BBuJuJuJuJuJ+T-?uJuJCBCB<;=<98 uJp 8 8 8 8 8 8 8 8   --;-??AAAAA0AA@?A<  --:->>yGyGyGyGyG/yGyG?>yGx   --8-<<  --5-99D D D D D -D D :9=<D N  --:->>LLLLL/1CLL?>L^ PPPPPr(