ó
    Ñ]j™i  ã                  óâ  • S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	K	J
r
  SS
K	Jr  SSK	Jr  SSK	Jr  SSK	Jr  SSKJr  \(       a$  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  S r " S S5      r " S S5      r " S S\5      r " S S5      r  " S S\\ 5      r! " S  S!\ 5      r" " S" S#\ 5      r# " S$ S%\ 5      r$ " S& S'\ 5      r% " S( S)\ 5      r& " S* S+\ 5      r'g,)-zïThe internals for the unit of work system.

The session's flush() process passes objects to a contextual object
here, which assembles flush tasks based on mappers and their properties,
organizes them in order of dependency, and executes.

é    )Úannotations)ÚAny)ÚDict)ÚOptional)ÚSet)ÚTYPE_CHECKINGé   ©Ú
attributes)Úexc)Úutilé   )Úevent)Útopological)ÚDependencyProcessor)ÚMapperProperty)ÚMapper)ÚSession)ÚSessionTransaction)ÚInstanceStatec           	     ó  ^• UR                   mU4S jnU4S jnU4S jn[        R                  " U SUSSS9  [        R                  " U SUSSSS9  [        R                  " U S	USSSS9  [        R                  " U S
USSSS9  g)zTEstablish event listeners on object attributes which handle
cascade-on-set/append.

c                ó�  >• Uc  g U R                   nU(       a­  UR                  (       a  UR                  S5        U R                  R                  R
                  T   n[        R                  " U5      nUR                  R                  (       a7  TUR                  :X  a'  UR                  U5      (       d  UR                  U5        U$ )Nzcollection append)ÚsessionÚ_warn_on_eventsÚ_flush_warningÚmanagerÚmapperÚ_propsr   Úinstance_stateÚ_cascadeÚsave_updateÚkeyÚ_contains_stateÚ_save_or_update_state©ÚstateÚitemÚ	initiatorÚkwÚsessÚpropÚ
item_stater"   s          €ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sqlalchemy/orm/unitofwork.pyÚappendÚ$track_cascade_events.<locals>.append2   sš   ø€ ð ‰<Øà�}‰}ˆÞØ×#×#Ø×#Ñ#Ð$7Ô8à—=‘=×'Ñ'×.Ñ.¨sÑ3ˆDÜ#×2Ò2°4Ó8ˆJð —‘×)×)Ø˜IŸM™MÓ)Ø×,Ñ,¨Z×8Ñ8à×*Ñ*¨:Ô6Øˆó    c                ó@  >• Uc  g U R                   nU R                  R                  R                  T   nU(       a5  UR                  (       a$  UR                  UR                  (       a  SOS5        Ub«  U[        R                  La—  U[        R                  Laƒ  UR                  R                  (       ag  [        R                  " U5      nUR                  R                  U5      (       a0  U(       a!  XdR                  ;   a  UR                  U5        g SUl        g g g g g g )Nzcollection removezrelated attribute deleteT)r   r   r   r   r   r   Úuselistr   Ú	NEVER_SETÚPASSIVE_NO_RESULTr    Údelete_orphanr   Ú
_is_orphanÚ_newÚexpungeÚ_orphaned_outside_of_sessionr%   s          €r-   ÚremoveÚ$track_cascade_events.<locals>.removeI   sê   ø€ Ø‰<Øà�}‰}ˆà�}‰}×#Ñ#×*Ñ*¨3Ñ/ˆæ�D×(×(Ø×Ñà—<—<ñ $à/ôð ÑØœJ×0Ñ0Ò0ØœJ×8Ñ8Ò8Ø—‘×+×+ô $×2Ò2°4Ó8ˆJà�{‰{×%Ñ% j×1Ñ1Þ˜J¯)©)Ó3Ø—L‘L Õ&ð ?C�JÕ;ð 2ð ,ð 9ð 1ð r0   c                óÐ  >• X!L a  U$ U R                   nU(       GaJ  UR                  (       a  UR                  S5        U R                  R                  R
                  T	   nUbh  [        R                  " U5      nUR                  R                  (       a7  T	UR                  :X  a'  UR                  U5      (       d  UR                  U5        Ub—  U[        R                  La„  U[        R                  Laq  UR                  R                  (       aV  [        R                  " U5      nX…R                   ;   a1  UR                  R#                  U5      (       a  UR%                  U5        U$ )Nzrelated attribute set)r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r3   r4   r5   r7   r6   r8   )
r&   ÚnewvalueÚoldvaluer(   r)   r*   r+   Únewvalue_stateÚoldvalue_stater"   s
            €r-   Úset_Ú"track_cascade_events.<locals>.set_k   s  ø€ ð ÒØˆOà�}‰}ˆßØ×#×#Ø×#Ñ#Ð$;Ô<à—=‘=×'Ñ'×.Ñ.¨sÑ3ˆDØÑ#Ü!+×!:Ò!:¸8Ó!D�à—M‘M×-×-Ø 	§¡Ó-Ø ×0Ñ0°×@Ñ@à×.Ñ.¨~Ô>ð Ñ$Ø¤J×$8Ñ$8Ò8Ø¤J×$@Ñ$@Ò@Ø—M‘M×/×/ô ",×!:Ò!:¸8Ó!D�à!§Y¡YÓ.°4·;±;×3IÑ3IØ"÷4ñ 4ð —L‘L Ô*Øˆr0   Úappend_wo_mutationT)ÚrawÚinclude_keyr.   )rD   ÚretvalrE   r:   ÚsetN)r"   r   Úlisten)Ú
descriptorr+   r.   r:   rA   r"   s        @r-   Útrack_cascade_eventsrJ   +   s‹   ø€ ð
 �(‰(€Cõõ. CõD"ôH 
‡L‚LØÐ(¨&°dÈòô 
‡L‚LØ�H˜f¨$°tÈòô 
‡L‚LØ�H˜f¨$°tÈòô 
‡L‚LØ�E˜4 T°$ÀDór0   c                  ó.  • \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S S jr\S 5       rS rS r	S r
S r\R                  4S jrS rS r     S!             S"S jjrS rS r\R*                  S 5       rS rS rS rS#S jrS#S jrSrg)$ÚUOWTransactioné�   r   r   r   ÚtransactionzDict[str, Any]r   z7util.defaultdict[Mapper[Any], Set[DependencyProcessor]]Údepsz6util.defaultdict[Mapper[Any], Set[InstanceState[Any]]]Úmappersc                ó  • Xl         0 U l        [        R                  " [        5      U l        [        R                  " [        5      U l        0 U l        0 U l        [	        5       U l	        0 U l
        [        R                  " S 5      U l        g )Nc                 ó*   • [        5       [        5       4$ ©N)rG   © r0   r-   Ú<lambda>Ú)UOWTransaction.__init__.<locals>.<lambda>Ï   s   € ¼C»EÄ3Ã5¹>r0   )r   r   r   ÚdefaultdictrG   rO   rP   Úpresort_actionsÚpostsort_actionsÚdependenciesÚstatesÚpost_update_states)Úselfr   s     r-   Ú__init__ÚUOWTransaction.__init__¤   sw   € ØŒð ˆŒô ×$Ò$¤SÓ)ˆŒ	ô
 ×'Ò'¬Ó,ˆŒð
  "ˆÔð
 !#ˆÔô  ›EˆÔð
 ˆŒô #'×"2Ò"2Ñ3IÓ"JˆÕr0   c                ó,   • [        U R                  5      $ rS   )Úboolr[   ©r]   s    r-   Úhas_workÚUOWTransaction.has_workÑ   s   € ä�D—K‘KÓ Ð r0   c                óÖ   • UR                   (       a"   UR                  U[        R                  5        gg! [        R
                   a    U R                  R                  U/5         gf = f)zJReturn ``True`` if the given state is expired and was deleted
previously.
TF)ÚexpiredÚ_load_expiredr   ÚPASSIVE_OFFÚorm_excÚObjectDeletedErrorr   Ú_remove_newly_deleted©r]   r&   s     r-   Úwas_already_deletedÚ"UOWTransaction.was_already_deletedÕ   sY   € ð �=�=ðØ×#Ñ# E¬:×+AÑ+AÔBñ øô ×-Ñ-ó Ø—‘×2Ñ2°E°7Ô;Ùðús   “ 5 µ0A(Á'A(c                óP   • XR                   ;   =(       a    U R                   U   S   $ )zSReturn ``True`` if the given state is marked as deleted
within this uowtransaction.r   ©r[   rl   s     r-   Ú
is_deletedÚUOWTransaction.is_deletedá   s$   € ð Ÿ™Ñ#×=¨¯©°EÑ(:¸1Ñ(=Ð=r0   c                ón   • XR                   ;   a  U R                   U   $ U" 5       =U R                   U'   nU$ rS   r
   )r]   r"   Ú	callable_Úrets       r-   ÚmemoÚUOWTransaction.memoç   s5   € Ø—/‘/Ó!Ø—?‘? 3Ñ'Ð'á)2«Ð4ˆD�O‰O˜CÑ  3ØˆJr0   c                óJ   • U R                   U   S   nUS4U R                   U'   g)z;Remove pending actions for a state from the uowtransaction.r   TNrp   )r]   r&   Úisdeletes      r-   Úremove_state_actionsÚ#UOWTransaction.remove_state_actionsî   s*   € ð —;‘;˜uÑ% aÑ(ˆà&¨Ð-ˆ�‰�EÒr0   c                ó   • SX4nX@R                   ;   aæ  U R                   U   u  pVnU[         R                  -  (       dº  U[         R                  -  (       a¢  UR                  U   R                  nUR	                  UUR
                  [         R                  [         R                  -  [         R                  -  5      nU(       a"  UR                  (       a  UR                  5       nOUnXVU4U R                   U'   U$ UR                  U   R                  nUR	                  UUR
                  U[         R                  -  [         R                  -  5      nU(       a"  UR                  (       a  UR                  5       nOUnXVU4U R                   U'   U$ )zGFacade to attributes.get_state_history(), including
caching of results.Úhistory)r   ÚSQL_OKr   ÚimplÚget_historyÚdictrh   ÚLOAD_AGAINST_COMMITTEDÚNO_RAISEÚuses_objectsÚas_state)	r]   r&   r"   ÚpassiveÚhashkeyr}   Ústate_historyÚcached_passiver   s	            r-   Úget_attribute_historyÚ$UOWTransaction.get_attribute_historyõ   sc  € ð ˜eÐ)ˆð —o‘oÓ%Ø59·_±_ÀWÑ5MÑ2ˆG Nð
 #¤Z×%6Ñ%6×6Øœj×/Ñ/×/à—}‘} SÑ)×.Ñ.�Ø×*Ñ*ØØ—J‘JÜ×*Ñ*Ü ×7Ñ7ñ8ä ×)Ñ)ñ*ó�ö ˜t×0×0Ø$+×$4Ñ$4Ó$6‘Mà$+�MØ,3ÀGÐ+L�—‘ Ñ(ð$ Ðð! —=‘= Ñ%×*Ñ*ˆDð ×&Ñ&ØØ—
‘
ØÜ×3Ñ3ñ4ä×%Ñ%ñ&óˆGö ˜4×,×,Ø '× 0Ñ 0Ó 2‘à '�Ø(/ÀÐ'HˆD�O‰O˜GÑ$àÐr0   c                ó$   • US4U R                   ;   $ )NT)rX   )r]   Ú	processors     r-   Úhas_depÚUOWTransaction.has_dep*  s   € Ø˜4Ð  D×$8Ñ$8Ñ8Ð8r0   c                óZ   • X4nX0R                   ;  a  [        X5      U R                   U'   g g rS   )rX   Ú
Preprocess)r]   r�   Ú
fromparentr"   s       r-   Úregister_preprocessorÚ$UOWTransaction.register_preprocessor-  s0   € ØÐ%ˆØ×*Ñ*Ó*Ü(2°9Ó(IˆD× Ñ  Ò%ð +r0   Nc           	     ó  • U R                   R                  U5      (       dL  UR                  (       d:  Ub7  [        R                  " S[
        R                  " U5      < SU< SU< S35        gXR                  ;  ae  UR                  R                  nXpR                  ;  a  U R                  U5        U R                  U   R                  U5        X#4U R                  U'   gU(       d  U(       d  U(       a  US4U R                  U'   g)NzObject of type z not in session, z operation along 'z' will not proceedFT)r   r#   Údeletedr   ÚwarnÚorm_utilÚstate_class_strr[   r   r   rP   Ú_per_mapper_flush_actionsÚadd)r]   r&   ry   ÚlistonlyÚcancel_deleteÚ	operationr+   r   s           r-   Úregister_objectÚUOWTransaction.register_object2  sÏ   € ð �|‰|×+Ñ+¨E×2Ñ2ð —=—= YÑ%:Ü—	“	ô  ×/Ò/°Ö6»	Ã4ðIôð
 àŸ™Ó#Ø—]‘]×)Ñ)ˆFàŸ\™\Ó)Ø×.Ñ.¨vÔ6à�L‰L˜Ñ ×$Ñ$ UÔ+Ø"*Ð!5ˆD�K‰K˜Ñð ö ¦®]Ø&.°Ð%6�—‘˜EÑ"Ør0   c                óª   • UR                   R                  R                  nU R                  U   u  pEUR	                  U5        UR                  U5        g rS   )r   r   Úbase_mapperr\   r›   Úupdate)r]   r&   Úpost_update_colsr   r[   Úcolss         r-   Úregister_post_updateÚ#UOWTransaction.register_post_updateT  sB   € Ø—‘×%Ñ%×1Ñ1ˆØ×.Ñ.¨vÑ6‰ˆØ�
‰
�5ÔØ�‰Ð$Õ%r0   c                ó^  • [        XR                  5      n[        XR                  5      nU R                  R	                  X#45        UR
                   H  nUR                  U 5        M     UR                   H3  nUR                  (       a  M  UR                  nUR                  U 5        M5     g rS   )
ÚSaveUpdateAllr¢   Ú	DeleteAllrZ   r›   Ú_dependency_processorsÚper_property_preprocessorsÚrelationshipsÚviewonlyÚ_dependency_processor)r]   r   ÚsavesÚdeletesÚdepr+   s         r-   rš   Ú(UOWTransaction._per_mapper_flush_actionsZ  sŒ   € Ü˜d×$6Ñ$6Ó7ˆÜ˜D×"4Ñ"4Ó5ˆØ×Ñ×Ñ˜uÐ.Ô/à×0Ô0ˆCØ×*Ñ*¨4Ö0ñ 1ð ×(Ô(ˆDØ�}�}ÙØ×,Ñ,ˆCØ×*Ñ*¨4Ö0ò	 )r0   c                ó0   • [         R                  " S 5      $ )zÝreturn a dynamic mapping of (Mapper, DependencyProcessor) to
True or False, indicating if the DependencyProcessor operates
on objects of that Mapper.

The result is stored in the dictionary persistently once
calculated.

c                óv   • U S   R                   R                  U S   R                  5      U S   R                  L $ )Nr   r	   )r   Úgetr"   r+   )Útups    r-   rU   Ú0UOWTransaction._mapper_for_dep.<locals>.<lambda>s  s,   € ˜˜A™Ÿ™×)Ñ)¨#¨a©&¯*©*Ó5¸¸Q¹¿¹ÑDr0   )r   ÚPopulateDictrb   s    r-   Ú_mapper_for_depÚUOWTransaction._mapper_for_deph  s   € ô × Ò ÙDó
ð 	
r0   c                óŒ   • U R                   nU Vs/ s H&  oCUR                  R                  U4   (       d  M$  UPM(     sn$ s  snf )z]Filter the given list of InstanceStates to those relevant to the
given DependencyProcessor.

)rº   r   r   )r]   r²   r[   Úmapper_for_depÚss        r-   Úfilter_states_for_depÚ$UOWTransaction.filter_states_for_depv  s;   € ð
 ×-Ñ-ˆÙ!ÓMš6�a°Q·Y±Y×5EÑ5EÀsÐ4KÕ%L—™6ÑMÐMùÒMs
   ‘#A¸Ac              #  óª   #   • X#4nUR                   R                   H2  nU R                  U    H  nU R                  U   U:X  d  M  Uv •  M     M4     g 7frS   )r¢   Úself_and_descendantsrP   r[   )r]   r   ry   rœ   Úchecktupr&   s         r-   Ústates_for_mapper_hierarchyÚ*UOWTransaction.states_for_mapper_hierarchy~  sL   é € ØÐ'ˆØ×(Ñ(×=Ô=ˆFØŸ™ fÔ-�Ø—;‘;˜uÑ%¨Õ1Ø”Kó .ò >ùs   ‚A AÁAc           	     ó’  •  Sn[        U R                  R                  5       5       H  nUR                  U 5      (       d  M  SnM     U(       d  OMP  [        R
                  " U R                  [        U R                  R                  5       5      5      =U l        nU(       GaP  U Vs0 s H  oD[        UR                  U 5      5      _M     nn[        U R                  5       GH  nSU;   d>  US   R                  (       d*  US   R                  (       d  UR                  U5      (       a  U R                  R                  U5        Me  US   U;   aJ  U R                  R                  U5        XVS       H"  nU R                  R                  XvS   45        M$     M¸  US   U;   d  MÃ  U R                  R                  U5        XVS       H#  nU R                  R                  US   U45        M%     GM     U R                  R                  5        Vs1 s H  oˆR                  (       a  M  UiM     snR                  U5      $ s  snf s  snf )zmGenerate the full, unsorted collection of PostSortRecs as
well as dependency pairs for this UOWTransaction.

TFNr   r	   )ÚlistrX   ÚvaluesÚexecuter   Úfind_cyclesrZ   rY   ÚcyclesrG   Úper_state_flush_actionsÚdisabledÚ
issupersetr:   r›   Ú
difference)	r]   ru   ÚactionrË   ÚrecÚconvertÚedger²   Úas	            r-   Ú_generate_actionsÚ UOWTransaction._generate_actions…  sø  € ð ØˆCÜ˜t×3Ñ3×:Ñ:Ó<Ö=�Ø—>‘> $×'Ó'Ø’Cñ >ö Øñ ô  +×6Ò6Ø×Ñœt D×$9Ñ$9×$@Ñ$@Ó$BÓCó 
ð 	
ˆŒ�f÷ ñ HNóÚGMÀ”S˜×4Ñ4°TÓ:Ó;Ò;Ávð ð ô ˜T×.Ñ.×/�à˜D“LØ˜A‘w×'×'Ø˜A‘w×'×'Ø×(Ñ(¨×.Ñ.à×%Ñ%×,Ñ,¨TÖ2Ø˜!‘W Ó&Ø×%Ñ%×,Ñ,¨TÔ2Ø&¨A¡wÔ/˜Ø×)Ñ)×-Ñ-¨s¸±G¨nÖ=ó  0à˜!‘W Õ&Ø×%Ñ%×,Ñ,¨TÔ2Ø&¨A¡wÔ/˜Ø×)Ñ)×-Ñ-¨t°A©w¸¨nÖ=ô  0ñ 0ð$ ×,Ñ,×3Ñ3Ô5ó
Ú5�!¿Z½Z�AÑ5ñ
ç
‰*�VÓ
ð	ùò1ùò0
s   Â'$H?ÈIÈ'Ic                óœ  • U R                  5       n[        US S9nU R                  (       ag  [        R                  " U R
                  U5       HA  n[        U5      nU(       d  M  UR                  5       nUR                  X5        U(       a  M*  MC     g [        R                  " U R
                  U5       H  nUR                  U 5        M     g )Nc                ó   • U R                   $ rS   )Úsort_key)r'   s    r-   rU   Ú(UOWTransaction.execute.<locals>.<lambda>¾  s   € ˜TŸ]š]r0   )r"   )rÕ   ÚsortedrË   r   Úsort_as_subsetsrZ   rG   ÚpopÚexecute_aggregateÚsortrÉ   )r]   rY   ÚsubsetrA   ÚnrÑ   s         r-   rÉ   ÚUOWTransaction.execute¹  s©   € Ø×1Ñ1Ó3Ðä!ØÙ*ñ
Ðð �;�;Ü%×5Ò5Ø×!Ñ!Ð#3ö�ô ˜6“{�ß�dØŸ™›
�AØ×'Ñ'¨Ô3÷ ’dò	ô #×'Ò'¨×(9Ñ(9Ð;KÖL�Ø—‘˜DÖ!ò Mr0   c                ó„  • U R                   (       d  g[        U R                   5      nU R                   R                  5        VVVs1 s H  u  nu  p4U(       d  M  UiM     nnnnUR                  U5      nU(       a  U R                  R                  U5        U(       a  U R                  R                  U5        ggs  snnnf )zÉMark processed objects as clean / deleted after a successful
flush().

This method is called within the flush() method after the
execute() method has succeeded and the transaction has been committed.

N)r[   rG   ÚitemsrÏ   r   rk   Ú_register_persistent)r]   r[   r¾   ry   rœ   ÚisdelÚothers          r-   Úfinalize_flush_changesÚ%UOWTransaction.finalize_flush_changesÔ  s–   € ð �{�{Øä�T—[‘[Ó!ˆà/3¯{©{×/@Ñ/@Ô/Bõ
Ú/BÑ+�1Ñ*�xÄh�AÑ/Bð 	ò 
ð ×!Ñ! %Ó(ˆÞØ�L‰L×.Ñ.¨uÔ5ÞØ�L‰L×-Ñ-¨eÕ4ð ùô
s   ÁB;ÁB;)
r   rË   rZ   rO   rP   r\   rY   rX   r   r[   )r   r   )FFFNN)r&   zInstanceState[Any]ry   ra   rœ   ra   r�   ra   rž   zOptional[str]r+   zOptional[MapperProperty]Úreturnra   )rê   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r^   Úpropertyrc   rm   rq   rv   rz   r   ÚPASSIVE_NO_INITIALIZErŠ   rŽ   r“   rŸ   r¦   rš   r   Úmemoized_propertyrº   r¿   rÄ   rÕ   rÉ   rè   Ú__static_attributes__rT   r0   r-   rL   rL   �   s  ‡ ØÓØ#Ó#ØÓØ
AÓAØCÓCô+KðZ ñ!ó ð!ò
ò>òò.ð #-×"BÑ"Bô3òj9òJð ØØ#Ø#'Ø)-ð à!ð ð ð ð ð	 ð
 ð ð !ð ð 'ð ð 
õ òD&ò1ð 
×Ññ
ó ð
òNò ò2ôh"÷65r0   rL   c                  ó   • \ rS rSrSrS rSrg)ÚIterateMappersMixiniê  rT   c                óÐ   ^ ^• T R                   (       a4  [        U U4S jT R                  R                  R                   5       5      $ T R                  R
                  R                  $ )Nc              3  ól   >#   • U  H)  nTR                   UTR                  4   (       d  M%  Uv •  M+     g 7frS   )rº   Údependency_processor)Ú.0Úmr]   Úuows     €€r-   Ú	<genexpr>Ú/IterateMappersMixin._mappers.<locals>.<genexpr>ï  s3   øé € ð âN�AØ×&Ñ&¨¨4×+DÑ+DÐ'EÕF÷ ‘ÚNùs   ƒ$4«	4)r’   Úiterrù   ÚparentrÂ   r   ©r]   rü   s   ``r-   Ú_mappersÚIterateMappersMixin._mappersí  sP   ù€ Ø�?�?Üõ à×2Ñ2×9Ñ9×NÒNóó ð ð ×,Ñ,×3Ñ3×HÑHÐHr0   N)rì   rí   rî   rï   Ú	__slots__r  rô   rT   r0   r-   rö   rö   ê  s   † Ø€IõIr0   rö   c                  ó$   • \ rS rSrSrS rS rSrg)r‘   iø  )rù   r’   Ú	processedÚsetup_flush_actionsc                óH   • Xl         X l        [        5       U l        SU l        g ©NF)rù   r’   rG   r  r  )r]   rù   r’   s      r-   r^   ÚPreprocess.__init__   s   € Ø$8Ô!Ø$ŒÜ›ˆŒØ#(ˆÕ r0   c                ó@  • [        5       n[        5       nU R                  U5       Hw  nUR                  U   R                  U R                  5       HH  nUR
                  U   u  pgU(       a  M  U(       a  UR                  U5        M7  UR                  U5        MJ     My     U(       a6  U R                  R                  X5        U R                  R                  U5        U(       a6  U R                  R                  X5        U R                  R                  U5        U(       d  U(       av  U R                  (       dd  U R                  R                  XS5      (       d!  U R                  R                  XS5      (       a"  U R                  R                  U5        SU l        gg©NTF)rG   r  rP   rÏ   r  r[   r›   rù   Úpresort_deletesr£   Úpresort_savesr  Úprop_has_changesÚper_property_flush_actions)r]   rü   Údelete_statesÚsave_statesr   r&   ry   rœ   s           r-   rÉ   ÚPreprocess.execute  s=  € Ü›ˆÜ“eˆà—m‘m CÖ(ˆFØŸ™ VÑ,×7Ñ7¸¿¹ÖG�Ø'*§z¡z°%Ñ'8Ñ$�ß�xÞØ%×)Ñ)¨%Ö0à#Ÿ™¨Ö.ó Hñ )ö Ø×%Ñ%×5Ñ5°cÔIØ�N‰N×!Ñ! -Ô0ÞØ×%Ñ%×3Ñ3°CÔEØ�N‰N×!Ñ! +Ô.æžKØ×+×+Ø×)Ñ)×:Ñ:Ø¨÷ñ ð ×,Ñ,×=Ñ=Ø e÷ñ ð ×)Ñ)×DÑDÀSÔIØ+/�Ô(Øàr0   N)rì   rí   rî   rï   r  r^   rÉ   rô   rT   r0   r-   r‘   r‘   ø  s   † ð€Iò)õ!r0   r‘   c                  ó$   • \ rS rSrSrS rS rSrg)ÚPostSortReci*  )rÍ   c                ó¤   • U 4U-   nX1R                   ;   a  UR                   U   $ [        R                  U 5      =UR                   U'   nSUl        U$ r	  )rY   ÚobjectÚ__new__rÍ   )Úclsrü   Úargsr"   ru   s        r-   r  ÚPostSortRec.__new__-  sT   € Øˆf�t‰mˆØ×&Ñ&Ó&Ø×'Ñ'¨Ñ,Ð,ä.4¯n©n¸SÓ.AÐAˆC× Ñ  Ñ%¨Ø ˆCŒLØˆJr0   c                ó&   • U R                  U5        g rS   )rÉ   )r]   rü   Úrecss      r-   rÞ   ÚPostSortRec.execute_aggregate6  s   € Ø�‰�SÕr0   rT   N)rì   rí   rî   rï   r  r  rÞ   rô   rT   r0   r-   r  r  *  s   † Ø€Iòõr0   r  c                  ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
Ú
ProcessAlli:  )rù   ry   r’   rÙ   c                óÈ   • X l         SU R                   R                  U4U l        X0l        X@l        UR                  UR
                  R                     R                  U5        g )Nr   )rù   rÙ   ry   r’   rO   r   r¢   r›   )r]   rü   rù   ry   r’   s        r-   r^   ÚProcessAll.__init__=  sY   € Ø$8Ô!àØ×%Ñ%×.Ñ.Øð
ˆŒð
 !ŒØ$ŒØ�‰Ð%×,Ñ,×8Ñ8Ñ9×=Ñ=Ø õ	
r0   c                ó¶   • U R                  U5      nU R                  (       a  U R                  R                  X5        g U R                  R	                  X5        g rS   )Ú	_elementsry   rù   Úprocess_deletesÚprocess_saves)r]   rü   r[   s      r-   rÉ   ÚProcessAll.executeJ  s?   € Ø—‘ Ó$ˆØ�=�=Ø×%Ñ%×5Ñ5°cÕBà×%Ñ%×3Ñ3°CÕ@r0   c                ó   • [        / 5      $ rS   )rÿ   r  s     r-   rÌ   Ú"ProcessAll.per_state_flush_actionsQ  s   € ô
 �B‹xˆr0   c                ón   • U R                   R                  < SU R                  < SU R                  < S3$ )NÚ(z, isdelete=Ú))Ú	__class__rì   rù   ry   rb   s    r-   Ú__repr__ÚProcessAll.__repr__X  s)   € à�N‰N×#Ô#Ø×%Ô%Ø�MŒMð
ð 	
r0   c              #  óÆ   #   • U R                  U5       HH  nUR                  U    H2  nUR                  U   u  pEX@R                  :X  d  M%  U(       a  M.  Uv •  M4     MJ     g 7frS   )r  rP   r[   ry   )r]   rü   r   r&   ry   rœ   s         r-   r$  ÚProcessAll._elements_  sO   é € Ø—m‘m CÖ(ˆFØŸ™ VÔ,�Ø'*§z¡z°%Ñ'8Ñ$�ØŸ}™}Õ,·X°XØ”Kó -ò )ùs   ‚AA!ÁA!ÁA!)rù   r’   ry   rÙ   N)rì   rí   rî   rï   r  r^   rÉ   rÌ   r.  r$  rô   rT   r0   r-   r   r   :  s!   † ØL€Iò
òAòò
õ r0   r   c                  óN   • \ rS rSrSrS r\R                  " S5      S 5       rSr	g)ÚPostUpdateAllig  )r   ry   rÙ   c                óD   • X l         X0l        SUR                  U4U l        g )Nr3  )r   ry   Ú	_sort_keyrÙ   )r]   rü   r   ry   s       r-   r^   ÚPostUpdateAll.__init__j  s    € ØŒØ ŒØ(¨&×*:Ñ*:¸HÐEˆ�r0   úsqlalchemy.orm.persistencec                ó  • [         R                  R                  nUR                  U R                     u  p4U Vs/ s H&  oQR
                  U   S   U R                  :X  d  M$  UPM(     nnUR                  U R                  X1U5        g s  snf ©Nr   )r   Ú	preloadedÚorm_persistencer\   r   r[   ry   Úpost_update)r]   rü   Úpersistencer[   r¥   r¾   s         r-   rÉ   ÚPostUpdateAll.executeo  sm   € ä—n‘n×4Ñ4ˆØ×-Ñ-¨d¯k©kÑ:‰ˆÙ#ÓIšV˜§z¡z°!¡}°QÑ'7¸4¿=¹=Ñ'H—!™VˆÐIà×Ñ §¡¨V¸$Õ?ùò Js   º#BÁ!B)ry   r   rÙ   N)
rì   rí   rî   rï   r  r^   r   Úpreload_modulerÉ   rô   rT   r0   r-   r3  r3  g  s/   † Ø0€IòFð
 
×ÒÐ5Ó6ñ@ó 7ó@r0   r3  c                  óZ   • \ rS rSrSrS r\R                  " S5      S 5       rS r	S r
Srg)	r©   ix  ©r   rÙ   c                óV   • X l         SUR                  4U l        X"R                  L d   eg )Nr©   ©r   r5  rÙ   r¢   ©r]   rü   r   s      r-   r^   ÚSaveUpdateAll.__init__{  s+   € ØŒØ(¨&×*:Ñ*:Ð;ˆŒØ×+Ñ+Ò+Ð+Ñ+r0   r7  c                ó¤   • [         R                  R                  R                  U R                  UR                  U R                  SS5      U5        g r	  )r   r:  r;  Úsave_objr   rÄ   r  s     r-   rÉ   ÚSaveUpdateAll.execute€  s:   € ä�‰×&Ñ&×/Ñ/Ø�K‰KØ×+Ñ+¨D¯K©K¸ÀÓFØõ	
r0   c              #  óˆ  #   • [        UR                  U R                  SS5      5      nU R                  R                  n[	        X5      nU H.  n[        X5      nUR                  R                  Xd45        Uv •  M0     UR                  U R                      H&  nUR                  Xr5      nUR                  XS5        M(     g 7fr	  )rÇ   rÄ   r   r¢   rª   ÚSaveUpdateStaterZ   r›   rO   r¿   rÌ   )	r]   rü   r[   r¢   Ú
delete_allr&   rÐ   r²   Ústates_for_props	            r-   rÌ   Ú%SaveUpdateAll.per_state_flush_actionsˆ  s«   é € ÜØ×+Ñ+¨D¯K©K¸ÀÓFó
ˆð —k‘k×-Ñ-ˆÜ˜sÓ0ˆ
ÛˆEô % SÓ0ˆFØ×Ñ× Ñ  &Ð!5Ô6ØŒLñ ð —8‘8˜DŸK™KÔ(ˆCØ!×7Ñ7¸ÓDˆOØ×'Ñ'¨¸eÖDò )ùó   ‚C Cc                óR   • U R                   R                  < SU R                  < S3$ ©Nr+  r,  ©r-  rì   r   rb   s    r-   r.  ÚSaveUpdateAll.__repr__™  ó   € ØŸ>™>×2Ô2°D·K´KÐ@Ð@r0   N©rì   rí   rî   rï   r  r^   r   r?  rÉ   rÌ   r.  rô   rT   r0   r-   r©   r©   x  s8   † Ø&€Iò,ð
 
×ÒÐ5Ó6ñ
ó 7ð
òEõ"Ar0   r©   c                  óZ   • \ rS rSrSrS r\R                  " S5      S 5       rS r	S r
Srg)	rª   i�  rA  c                óV   • X l         SUR                  4U l        X"R                  L d   eg )Nrª   rC  rD  s      r-   r^   ÚDeleteAll.__init__   s+   € ØŒØ$ f×&6Ñ&6Ð7ˆŒØ×+Ñ+Ò+Ð+Ñ+r0   r7  c                ó¤   • [         R                  R                  R                  U R                  UR                  U R                  SS5      U5        g r  )r   r:  r;  Ú
delete_objr   rÄ   r  s     r-   rÉ   ÚDeleteAll.execute¥  s:   € ä�‰×&Ñ&×1Ñ1Ø�K‰KØ×+Ñ+¨D¯K©K¸¸uÓEØõ	
r0   c              #  óˆ  #   • [        UR                  U R                  SS5      5      nU R                  R                  n[	        X5      nU H.  n[        X5      nUR                  R                  XF45        Uv •  M0     UR                  U R                      H&  nUR                  Xr5      nUR                  XS5        M(     g 7fr  )rÇ   rÄ   r   r¢   r©   ÚDeleteStaterZ   r›   rO   r¿   rÌ   )	r]   rü   r[   r¢   Úsave_allr&   rÐ   r²   rL  s	            r-   rÌ   Ú!DeleteAll.per_state_flush_actions­  s«   é € ÜØ×+Ñ+¨D¯K©K¸¸uÓEó
ˆð —k‘k×-Ñ-ˆÜ  Ó2ˆÛˆEô ! Ó,ˆFØ×Ñ× Ñ  (Ð!3Ô4ØŒLñ ð —8‘8˜DŸK™KÔ(ˆCØ!×7Ñ7¸ÓDˆOØ×'Ñ'¨¸dÖCò )ùrN  c                óR   • U R                   R                  < SU R                  < S3$ rP  rQ  rb   s    r-   r.  ÚDeleteAll.__repr__¾  rS  r0   NrT  rT   r0   r-   rª   rª   �  s8   † Ø&€Iò,ð
 
×ÒÐ5Ó6ñ
ó 7ð
òDõ"Ar0   rª   c                  ó*   • \ rS rSrSrS rS rS rSrg)ÚProcessStateiÂ  )rù   ry   r&   rÙ   c                óN   • X l         SUR                  4U l        X0l        X@l        g ©Nrb  )rù   rÙ   ry   r&   )r]   rü   rù   ry   r&   s        r-   r^   ÚProcessState.__init__Å  s%   € Ø$8Ô!Ø'Ð)=×)FÑ)FÐGˆŒØ ŒØ�
r0   c                ó´  • U R                   nU R                  nU R                  nU Vs/ s H8  nUR                   UL d  M  UR                  UL d  M%  UR                  UL d  M6  UPM:     nnUR                  U5        U R                  /U Vs/ s H  ofR                  PM     sn-   nU(       a  UR                  X5        g UR                  X5        g s  snf s  snf rS   )r-  rù   ry   Údifference_updater&   r%  r&  )	r]   rü   r  Úcls_rù   ry   ÚrÚour_recsr[   s	            r-   rÞ   ÚProcessState.execute_aggregateË  sÑ   € Ø�~‰~ˆØ#×8Ñ8ÐØ—=‘=ˆñ ó
â�Ø�{‰{˜dÐ"ó ð ×&Ñ&Ð*>Ð>ó ð —
‘
˜hÐ&÷	 Ùð 	ð 
ð 	×Ñ˜xÔ(Ø—*‘*�±(Ó ;²(¨Q§¤±(Ñ ;Ñ;ˆÞØ ×0Ñ0°Õ=à ×.Ñ.¨sÕ;ùò
ùò !<s   ©CÁ CÁCÁ"CÂCc                ó²   • U R                   R                  < SU R                  < S[        R                  " U R
                  5      < SU R                  < S3$ )Nr+  z, z	, delete=r,  )r-  rì   rù   r˜   Ú	state_strr&   ry   rb   s    r-   r.  ÚProcessState.__repr__Ý  s;   € à�N‰N×#Ô#Ø×%Ô%Ü×Ò˜tŸz™zÖ*Ø�MŒMð	
ð 	
r0   )rù   ry   rÙ   r&   N)	rì   rí   rî   rï   r  r^   rÞ   r.  rô   rT   r0   r-   rb  rb  Â  s   † ØG€Iòò<õ$
r0   rb  c                  óT   • \ rS rSrSrS r\R                  " S5      S 5       rS r	Sr
g)	rJ  iæ  ©r&   r   rÙ   c                ó€   • X l         UR                  R                  U l        SU R                  R                  4U l        g rd  ©r&   r   r¢   r5  rÙ   ©r]   rü   r&   s      r-   r^   ÚSaveUpdateState.__init__é  s.   € ØŒ
Ø—l‘l×.Ñ.ˆŒØ'¨¯©×)>Ñ)>Ð?ˆ�r0   r7  c                óx  • [         R                  R                  nU R                  nU R                  nU Vs/ s H&  ofR                  UL d  M  UR                  UL d  M$  UPM(     nnUR                  U5        UR                  XPR                  /U Vs/ s H  ofR                  PM     sn-   U5        g s  snf s  snf rS   )r   r:  r;  r-  r   rg  rG  r&   )r]   rü   r  r=  rh  r   ri  rj  s           r-   rÞ   Ú!SaveUpdateState.execute_aggregateî  sž   € ä—n‘n×4Ñ4ˆØ�~‰~ˆØ—‘ˆáó
Ú�!Ÿ{™{¨dÐ2‹A°q·x±xÀ6Ð7I�A‘tð 	ð 
ð 	×Ñ˜xÔ(Ø×ÑØ—Z‘Z�L±XÓ#>²X°§G¤G±XÑ#>Ñ>Àõ	
ùò	
ùò
 $?s   ·B2ÁB2ÁB2ÂB7c                óz   • U R                   R                  < S[        R                  " U R                  5      < S3$ rP  ©r-  rì   r˜   rm  r&   rb   s    r-   r.  ÚSaveUpdateState.__repr__û  ó+   € à�N‰N×#Ô#Ü×Ò˜tŸz™zÖ*ð
ð 	
r0   ©r   rÙ   r&   N©rì   rí   rî   rï   r  r^   r   r?  rÞ   r.  rô   rT   r0   r-   rJ  rJ  æ  s2   † Ø-€Iò@ð
 
×ÒÐ5Ó6ñ

ó 7ð

õ
r0   rJ  c                  óT   • \ rS rSrSrS r\R                  " S5      S 5       rS r	Sr
g)	r\  i  rp  c                ó€   • X l         UR                  R                  U l        SU R                  R                  4U l        g )Nr\  rr  rs  s      r-   r^   ÚDeleteState.__init__  s.   € ØŒ
Ø—l‘l×.Ñ.ˆŒØ&¨¯©×(=Ñ(=Ð>ˆ�r0   r7  c                óØ  • [         R                  R                  nU R                  nU R                  nU Vs/ s H&  ofR                  UL d  M  UR                  UL d  M$  UPM(     nnUR                  U5        U R                  /U Vs/ s H  ofR                  PM     sn-   nUR                  XX V	s/ s H  o‘R                  U	   S   (       d  M  U	PM     sn	U5        g s  snf s  snf s  sn	f r9  )	r   r:  r;  r-  r   rg  r&   rY  r[   )
r]   rü   r  r=  rh  r   ri  rj  r[   r¾   s
             r-   rÞ   ÚDeleteState.execute_aggregate
  sÄ   € ä—n‘n×4Ñ4ˆØ�~‰~ˆØ—‘ˆáó
Ú�!Ÿ{™{¨dÐ2‹A°q·x±xÀ6Ð7I�A‘tð 	ð 
ð 	×Ñ˜xÔ(Ø—*‘*�±(Ó ;²(¨Q§¤±(Ñ ;Ñ;ˆØ×ÑØ Ó;¢˜1¯*©*°Q©-¸Õ*:—Q¡Ñ;¸Sõ	
ùò
ùò !<ùâ;s#   ·CÁCÁCÂC"Â0C'
ÃC'
c                óz   • U R                   R                  < S[        R                  " U R                  5      < S3$ rP  rx  rb   s    r-   r.  ÚDeleteState.__repr__  rz  r0   r{  Nr|  rT   r0   r-   r\  r\    s1   † Ø-€Iò?ð
 
×ÒÐ5Ó6ñ
ó 7ð
õ
r0   r\  N)(Ú__doc__Ú
__future__r   Útypingr   r   r   r   r   Ú r   r   ri   r   r˜   r   r   Ú
dependencyr   Ú
interfacesr   r   r   r   r   r   r&   r   rJ   rL   rö   r‘   r  r   r3  r©   rª   rb  rJ  r\  rT   r0   r-   Ú<module>rŠ     sà   ðñõ #å Ý Ý Ý Ý  å Ý Ý Ý Ý Ý ö Ý/Ý*ÝÝ Ý+Ý$òo÷dJ5ñ J5÷Z
Iñ Iô/Ð$ô /÷dñ ô * Ð$ kô * ôZ@�Kô @ô""A�Kô "AôJ"A�ô "AôJ!
�;ô !
ôH
�kô 
ô8
�+õ 
r0   