idK9dZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z dd lm Z dd l m Z d dlmZd d lmZd d lm Z ejejd Gdde jZGddejZGddeZGddee ZdZGddeZdS)zDynamic collection API. Dynamic collections act like Query() objects for read operations and support basic add/delete mutation. ) attributes)exc) interfaces) object_mapper)object_session) properties) strategies)util)Query)logdynamic)lazyceZdZdZdS) DynaLoaderc `d|_|jstjd|jz|jjt jt jfvrtj d|jztj |j|dt|jj|jj|jjdS)NTztOn relationship %s, 'dynamic' loaders cannot be used with many-to-one/one-to-one relationships and/or uselist=False.zOn relationship %s, 'dynamic' loaders cannot be used with many-to-one/one-to-one relationships and/or uselist=False. This warning will be an exception in a future release.) useobject impl_class target_mapperorder_by query_class)is_class_leveluselistrInvalidRequestErrorparent_property directionr ONETOMANY MANYTOMANYr warnr _register_attributeDynamicAttributeImplmapperrr)selfr"s K/opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/orm/dynamic.pyinit_class_attributezDynaLoader.init_class_attribute s"| )!#'#78   ! +   !4    I"%)$89    &  +.5)2,8      N)__name__ __module__ __qualname__r%r&r$rrs#     r&rcZeZdZdZdZdZdZdZ dfd Ze j fdZ de j fdZ ejdZejdZ dd Z dd Zd Zde j dddfd Zd ZdZe j fdZe j fdZe j fdZe j fdZe j fdZe j fdZxZS)r!TFNc tt|j||||fi|||_||_|st |_dSt|vr ||_dSt||_dSN) superr!__init__rr AppenderQueryr AppenderMixinmromixin_user_query) r#class_key typecallabledispatchrrrkw __class__s r$r/zDynamicAttributeImpl.__init__Es 3"D))2 Cx  35   +   =,D    koo// / /*D   / <added_plus_unchanged)r#r?r@ user_datarAhistorys r$get_collectionz#DynamicAttributeImpl.get_collectiondsK** 0//w??K K225'BBG/ /r&c@tj|tjSr-)rEvent OP_APPENDr#s r$ _append_tokenz"DynamicAttributeImpl._append_tokenqj&:;;;r&c@tj|tjSr-)rrI OP_REMOVErKs r$ _remove_tokenz"DynamicAttributeImpl._remove_tokenurMr&c||||}|||jjD]}||||p|j}|jr-|-|tj||ddSdSdSNT) _modified_event add_addedr7appendrL trackparent sethasparentrinstance_stater#r?r@value initiatorcollection_historyfns r$fire_append_eventz&DynamicAttributeImpl.fire_append_eventys  %!%!5!5eU!C!C $$U+++-& F FBBueY%D$2DEEEE   M 1   j7>>t L L L L L M M 1 1r&c ||||}|||jr+|)|t j||d|jjD]}||||p|jdS)NF) rS add_removedrVrWrrXr7removerPrYs r$fire_remove_eventz&DynamicAttributeImpl.fire_remove_events  %!%!5!5eU!C!C &&u---   N 1   j7>>u M M M-& > >B BueY<$*< = = = = > >r&c|j|jvrt|||j|j<|||tjd||j<|j|jSrR)r5committed_stateCollectionHistoryrSr NEVER_SET)r#r?r@s r$rSz$DynamicAttributeImpl._modified_eventsc 850 0 0.?e.L.LE !$( + eT:+?@@@dh$TX..r&c `|r|j|jurdS|r|dS|} t| } |jr(tj|||} |||} |js| j} n| | j} tj} | | }| |  |}| |}| D] }||vr| |||d| !|D]}| |||d| dS)N)r\) parent_tokenlist has_identityr IdentitySetrBrSr>union intersection differencer^rb)r#r?r@rZr[rA check_oldpop_adaptiterable new_valuesold_collectionr\idset constants additionsremovalsmembers r$setzDynamicAttributeImpl.sets  /43DDD F  5= F(^^   F!-dhhue.D.DEEN!11%??! /;NN+11".N "// ;; E*%%00;; !,,Y77   F""&&'9 '  F  " "#5 #      r&ctr-NotImplementedError)r#argskwargss r$deletezDynamicAttributeImpl.deletes!###r&c td)Nz7Dynamic attributes don't support collection population.r|)r#r?r@rZs r$set_committed_valuez(DynamicAttributeImpl.set_committed_values! H   r&cV|||}|Sr-)r< as_historyr#r?r@rAcs r$ get_historyz DynamicAttributeImpl.get_historys%  ( ( 8 8||~~r&cP|||}d|jDS)Nc:g|]}tj||fSr*)rrX).0xs r$ z8DynamicAttributeImpl.get_all_pending..s(GGGa*1--q1GGGr&)r< all_itemsrs r$get_all_pendingz$DynamicAttributeImpl.get_all_pendings/  ( ( 8 8GG1;GGGGr&c|j|jvr|j|j}nt||}|jr!|tjzrt|||S|S)N)apply_to)r5rdrerjrINIT_OK)r#r?rArs r$r<z,DynamicAttributeImpl._get_collection_historysf 8u, , ,%dh/AA!$..A   7Z-?#? $T51=== =Hr&cB||ur|||||dSdSr-)r^r#r?r@rZr[rAs r$rUzDynamicAttributeImpl.append7 D  " "5% B B B B B ! r&cB||ur|||||dSdSr-)rbrs r$razDynamicAttributeImpl.removerr&c:||||||dS)N)rA)rars r$rpzDynamicAttributeImpl.pops& E5%G DDDDDr&r-)r'r(r) uses_objectsdefault_accepts_scalar_loadersupports_population collectionrr/r PASSIVE_OFFrBr=rGr memoized_propertyrLrPr^rbrSrzrrrrr<rUrarp __classcell__r9s@r$r!r!>s&L$)!JG======.)3(>11110 0 0 0 0 <<< <<<BF M M M MBF > > > > / / /"& 4444l$$$   1;0F %/$DHHHH 6@5K    7A6LCCCC7A6LCCCC7A6LEEEEEEEEr&r!cneZdZdZfdZdZeedZdZdZdZ d dZ d Z d Z d Z xZS) r1Nctt||jd|x|_}||_t|}|j|jj }|j |j j |j f|_ ||d|_|jjr|jj|_dSdS)NF)alias_secondary)r.r1r/robjinstanceattrr_propsr5 secondaryr" selectable _from_obj _with_parent _criterionr _order_by)r#rr?rr"propr9s r$r/zAppenderMixin.__init__ s mT""++D,>EEE#(99;;.  x((}TY]+ > %#k4dnEDN++He+LL 9  0!Y/DNNN 0 0r&ct|j}|+|jr$|jr|j|vr|t j|jsdS|Sr-)rr autoflushflushorm_utilrjr#sesss r$sessionzAppenderMixin.sessionsfdm,,     %% JJLLL$T]33 4Kr&cdSr-r*)srs r$zAppenderMixin.-sTr&c|j}|Nt|jt j|jtjjSt| |Sr-) riterrr<rrXrr=r>_cloners r$__iter__zAppenderMixin.__iter__/sl| < 11-dm<<4   D))** *r&c|j}|O|jtj|jtj|S|| |Sr-) rrr<rrXrr=indexedr __getitem__)r#indexrs r$rzAppenderMixin.__getitem__;sm| <944)$-880genn  ;;t$$0077 7r&c|j}|Nt|jt j|jtjjS| | Sr-) rlenrr<rrXrr=r>rcountrs r$rzAppenderMixin.countEsp| < 11-dm<<4  ;;t$$**,, ,r&c|j}|Ht|}|7tjdt j|d|jjd|jr"||jj |}n| |jj }|j |_ |j |_ |j |_ |S)NzParent instance zh is not bound to a Session, and no contextual session is established; lazy load operation of attribute 'z' cannot proceed)r)rrorm_excDetachedInstanceErrorr instance_strrr5rrqueryrrr)r#rrrs r$rzAppenderMixin._cloneQs= <!(++D|33 ,X6666 G   8$$TY% deleted_items_reconcile_collection)r#rr?rcolls r$r/zCollectionHistory.__init__s  / u--77>>D#'#:4#@#@D '3D !)!7D )-D & & &!%!8!:!:D #688D #'#:#<#rlrrKs r$rDz&CollectionHistory.added_plus_unchangeds$D$**4+?@@AAAr&ct|j|j|jSr-)rir>rlrrrKs r$rzCollectionHistory.all_itemssA   " "4#7 8 8 > >"     r&cf|jrY|j|j}|j|j}|j|}n|j|j|j}}}t jt|t|t|Sr-) rr>rnrrrmrHistoryri)r#addeddeleted unchangeds r$rzCollectionHistory.as_historys  % $//0DEEE(55d6JKKG,77@@II $"&9E !$u++tIW NNNr&c6t|j|Sr-)rir>)r#rs r$rzCollectionHistory.indexedsD$%%e,,r&c:|j|dSr-)r>addr#rZs r$rTzCollectionHistory.add_addeds U#####r&c||jvr|j|dS|j|dSr-)r>rarrrs r$r`zCollectionHistory.add_removedsJ D$ $ $   # #E * * * * *   " "5 ) ) ) ) )r&r-) r'r(r)rr/rrDrrrrTr`r*r&r$reresNN / / / /BBXB  X  O O O---$$$*****r&reN)rrrrrrrrr r rrr r class_loggerRelationshipProperty strategy_forAbstractRelationshipLoaderr AttributeImplr!objectr1r0r3rer*r&r$rs0  --9-==     6  >= >EEEEEEEEEE:3EEEEEEP| | | | | F| | | ~MMMMMM5MMMBBB 3*3*3*3*3*3*3*3*3*3*r&