ó
    Ñ]jtñ  ã                  óŠ  • 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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  SSKJr  S0S jrS rS rS rS r S r!SSSSS.S jr"SSSS.S  jr#S! r$S" r%S#SS#S$.S% jr&S#SSS&.S' jr'S( r(S) r)S* r*S+ r+S, r,S- r-S. r.S/ r/g)1zëprivate module containing functions used to emit INSERT, UPDATE
and DELETE statements on behalf of a :class:`_orm.Mapper` and its descending
mappers.

The functions here are called only by the unit of work functions
in unitofwork.py.

é    )Úannotations)Úchain)Úgroupby)Úzip_longestNé   )Ú
attributes)Úexc)Úloading)Úsync)Ú	state_stré   )Úfuture)Úsql)Úutil)Úcursor)Ú	operators)ÚBooleanClauseList)ÚLABEL_STYLE_TABLENAME_PLUS_COLFc           	     ó:  • U(       d0  U R                   (       d  [        X5       H  n[        X/USS9  M     g/ n/ n[        XU5       HB  u  nnnn	n
nnU
(       d  U(       a  UR	                  XGX‰U45        M/  UR	                  XGX‰45        MD     U R
                  R                  5        HK  u  pØXØR                  ;  a  M  [        XÖ5      n[        X-U5      n[        U UUUU5        [        U UUUU5        MM     [        U U[        S U 5       S U 5       5      5        g)a#  Issue ``INSERT`` and/or ``UPDATE`` statements for a list
of objects.

This is called within the context of a UOWTransaction during a
flush operation, given a list of states to be flushed.  The
base mapper in an inheritance hierarchy handles the inserts/
updates for all descendant mappers.

T)ÚsingleNc              3  ó2   #   • U  H  u  pp4XX4S 4v •  M     g7f)FN© )Ú.0ÚstateÚ
state_dictÚmapperÚ
connections        ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sqlalchemy/orm/persistence.pyÚ	<genexpr>Úsave_obj.<locals>.<genexpr>i   s#   é € ð â?OÑ;�U¨ð  F¸Õ>Ú?Oùs   ‚c              3  ó8   #   • U  H  u  nnnnnXX4S 4v •  M     g7f)TNr   )r   r   r   r   r   Úupdate_version_ids         r   r   r    m   s4   é € ð 	ò &ñØØØØØ%ð  F¸Õ=ò &ùs   ‚)ÚbatchÚ_sort_statesÚsave_objÚ_organize_states_for_saveÚappendÚ_sorted_tablesÚitemsÚ_pks_by_tableÚ_collect_insert_commandsÚ_collect_update_commandsÚ_emit_update_statementsÚ_emit_insert_statementsÚ _finalize_insert_update_commandsr   )Úbase_mapperÚstatesÚuowtransactionr   r   Ústates_to_updateÚstates_to_insertÚdict_r   r   Úhas_identityÚ
row_switchr"   ÚtableÚinsertÚupdates                   r   r%   r%   (   sF  € ö ˜+×+×+Ü! +Ö6ˆEÜ�[ '¨>À$ÔGñ 7ààÐØÐô 
# ;¸Ö	Gñ	ØØØØØØØæž:Ø×#Ñ#Ø˜vÐ3DÐEöð ×#Ñ# U°6Ð$FÖGñ 
Hð %×3Ñ3×9Ñ9Ö;‰ˆØ×,Ñ,Ó,ÙÜ)¨%ÓBˆä)ØÐ#3ó
ˆô 	 ØØØØØô	
ô 	 ØØØØØö	
ñ# <ô2 %ØØÜñá?Oóñ	ñ &ó	ó	
õó    c                óð   ^^• [        [        XU5      5      nU R                  R                  5        HA  u  mmTTR                  ;  a  M  UU4S jU 5       n[        XTXS5      n[        U UTTU5        MC     g)zTIssue UPDATE statements on behalf of a relationship() which
specifies post_update.

c           
   3  ó®   >#   • U  HJ  u  pp4TUR                   ;   d  M  UUUUTR                  b  TR                  XTR                  5      OS 4v •  ML     g 7f©N)r*   Úversion_id_colÚ#_get_committed_state_attr_by_column)r   r   r   Ú
sub_mapperr   r   r8   s        €€r   r   Úpost_update.<locals>.<genexpr>‰   sp   øé € ð 
ò >NÑ9� :Ø˜
×0Ñ0Ñ0óØØØØð
 ×,Ñ,Ñ8ð ×>Ñ>Ø¨6×+@Ñ+@ôð õò >Nùs
   ƒAž7AN)ÚlistÚ _organize_states_for_post_updater(   r)   r*   Ú_collect_post_update_commandsÚ_emit_post_update_statements)r0   r1   r2   Úpost_update_colsr3   r:   r   r8   s         @@r   Úpost_updaterH   {   sˆ   ù€ ô Ü(¨¸nÓMóÐð %×3Ñ3×9Ñ9Ö;‰ˆˆvØ˜×,Ñ,Ó,Ùõ
ñ >Nó
ˆô$ /Ø¨°ó
ˆô 	%ØØØØØö	
ò5 <r;   c                ó–  • [        [        XU5      5      nU R                  n[        [        UR	                  5       5      5       HW  nXE   nXVR
                  ;  a  M  UR                  (       a  UR                  (       a  M<  [        XXS5      n[        U UUUU5        MY     U H%  u  nn	nn
nUR                  R                  XjU5        M'     g)z…Issue ``DELETE`` statements for a list of objects.

This is called within the context of a UOWTransaction during a
flush operation.

N)rC   Ú_organize_states_for_deleter(   ÚreversedÚkeysr*   ÚinheritsÚpassive_deletesÚ_collect_delete_commandsÚ_emit_delete_statementsÚdispatchÚafter_delete)r0   r1   r2   Ústates_to_deleteÚtable_to_mapperr8   r   Údeleter   r   r   r"   s               r   Ú
delete_objrV   ¨   sÆ   € ô Ü# K¸ÓHóÐð "×0Ñ0€Oäœ$˜×3Ñ3Ó5Ó6Ö7ˆØ Ñ'ˆØ×,Ñ,Ó,ÙØ�_�_ ×!7×!7Ùä)Ø¨ó
ˆô 	 ØØØØØö	
ñ 8ó2 
ñ	ØØØØØà�‰×$Ñ$ V¸Ö?ò 
r;   c              #  ó
  #   • [        XU5       GHî  u  p4pV[        UR                  5      nUR                  =(       d    UR                  U5      nS=pšU(       d  UR                  R                  XVU5        OUR                  R                  XVU5        UR                  (       a  UR                  XSU5        U(       dâ  X‚R                  R                  ;   aÉ  UR                  R                  U   n[        R                  " U5      nUR                  U5      (       d„  UR                  U5      (       d5  [        R                  " S[!        U5      < SU< S[!        U5      < 35        O9U R#                  SU[!        U5      [!        U5      5        UR%                  U5        Un	U(       d  U	(       aF  UR&                  b9  UR)                  U	(       a  U	OUU	(       a  U	R*                  OUUR&                  5      n
UUUUUU	U
4v •  GMñ     g7f)a8  Make an initial pass across a set of states for INSERT or
UPDATE.

This includes splitting out into distinct lists for
each, calling before_insert/before_update, obtaining
key information for each state including its dictionary,
mapper, the connection to use for the execution per state,
and the identity flag.

NzNew instance z with identity key z$ conflicts with persistent instance zPdetected row switch for identity %s.  will update %s, remove %s from transaction)Ú_connections_for_statesÚboolÚkeyÚ_identity_key_from_staterQ   Úbefore_insertÚbefore_updateÚ_validate_polymorphic_identityÚsessionÚidentity_mapr   Úinstance_stateÚwas_already_deletedÚ
is_deletedr   Úwarnr   Ú
_log_debugÚremove_state_actionsr?   r@   Údict)r0   r1   r2   r   r5   r   r   r6   Úinstance_keyr7   r"   ÚinstanceÚexistings                r   r&   r&   Ó   s¸  é € ô -DØ V÷-Ñ(ˆ�fô ˜EŸI™I“ˆà—y‘y×J F×$CÑ$CÀEÓ$Jˆà)-Ð-ˆ
ö Ø�O‰O×)Ñ)¨&¸eÕDà�O‰O×)Ñ)¨&¸eÔDà×0×0Ø×1Ñ1°&ÀÔGö Ø× 6Ñ 6× CÑ CÓCà%×-Ñ-×:Ñ:¸<ÑHˆHÜ!×0Ò0°Ó:ˆHà!×5Ñ5°h×?Ñ?Ø%×0Ñ0°×:Ñ:Ü—I“Iô % UÖ+«\¼9ÀXÕ;NðPõð  ×*Ñ*ð&ð %Ü! %Ó(Ü! (Ó+ôð #×7Ñ7¸ÔAØ!)�JæžJ¨F×,AÑ,AÑ,MØ &× JÑ JÞ(‘
¨eÞ#-�
—’°5Ø×%Ñ%ó!Ðð ØØØØØØð
õ 	
òs-ùs   ‚HHc                ó   • [        XU5      $ )zãMake an initial pass across a set of states for UPDATE
corresponding to post_update.

This includes obtaining key information for each state
including its dictionary, mapper, the connection to use for
the execution per state.

)rX   )r0   r1   r2   s      r   rD   rD   #  s   € ô # ;ÀÓGÐGr;   c              #  óÖ   #   • [        XU5       HU  u  p4pVUR                  R                  XVU5        UR                  b  UR	                  X4UR                  5      nOSnX4XVU4v •  MW     g7f)zäMake an initial pass across a set of states for DELETE.

This includes calling out before_delete and obtaining
key information for each state including its dictionary,
mapper, the connection to use for the execution per state.

N)rX   rQ   Úbefore_deleter?   r@   )r0   r1   r2   r   r5   r   r   r"   s           r   rJ   rJ   /  su   é € ô -DØ Vö-Ñ(ˆ�fð 	�‰×%Ñ% f¸%Ô@à× Ñ Ñ,Ø &× JÑ JØ˜f×3Ñ3ó!Ñð !%Ðà˜VÐ1BÐCÔCò-ùs   ‚A'A)r   )ÚbulkÚreturn_defaultsÚrender_nullsÚinclude_bulk_keysc          	   #  ó2  ^#   • U GH†  u  nmpxXR                   ;  a  M  0 n	0 n
UR                  U    nUR                  U    n[        U5      R	                  T5       H‰  nTU   nX½   nUc  Xü;  a	  U(       d  M  U(       dW  [        US5      (       d  [        U[        R                  5      (       a'  [        US5      (       a  UR                  5       OUX¯'   M{  XéUR                  '   M‹     U(       dT  UR                  U    R                  U	5      R                  U
 Vs/ s H  nUR                  PM     sn5       H  nSU	U'   M
     U(       a  U(       ak  UR                  U    R                  U	5      nUR                  R!                  UR"                  U 5      (       a  UR$                  U    R                  U	5      nOSnOS=nnUR&                  SLaQ  UR(                  bD  UR(                  UR*                  U    ;   a'  UR'                  S5      X—R(                  R                  '   U(       aY  UR,                  (       a&  U	R/                  UR0                  UR2                  5        U(       a  U	R5                  U4S jU 5       5        UTU	UUU
UU4v •  GM‰     gs  snf 7f)zKIdentify sets of values to use in INSERT statements for a
list of states.

NÚ__clause_element__TFc              3  ó0   >#   • U  H  oTU   4v •  M     g 7fr>   r   ©r   Úkr   s     €r   r   Ú+_collect_insert_commands.<locals>.<genexpr>�  s   øé € ÐLÒ:K°Q *¨Q¡-Õ0Ò:Kùó   ƒ)r*   Ú_propkey_to_colÚ_insert_cols_evaluating_noneÚsetÚintersectionÚhasattrÚ
isinstancer   ÚClauseElementrs   rZ   Ú_insert_cols_as_noneÚ
differenceÚ_pk_keys_by_tableÚissubsetr0   Ú_prefer_eager_defaultsÚdialectÚ_server_default_col_keysÚversion_id_generatorr?   Ú_cols_by_tableÚ_set_polymorphic_identityÚ
setdefaultÚ_polymorphic_attr_keyÚpolymorphic_identityr:   )r8   r4   rn   ro   rp   rq   r   r   r   ÚparamsÚvalue_paramsÚpropkey_to_colÚ	eval_noneÚpropkeyÚvalueÚcolÚcÚcolkeyÚhas_all_pksÚhas_all_defaultsr   s                       @r   r+   r+   F  s„  øé € ô 2BÑ-ˆˆz˜6Ø×,Ñ,Ó,ÙàˆØˆà×/Ñ/°Ñ6ˆà×7Ñ7¸Ñ>ˆ	ä˜>Ó*×7Ñ7¸
ÖCˆGØ˜wÑ'ˆEØ Ñ)ˆCØ‰} Ó!5¾lÙÞÜ˜Ð3×4Ñ4Ü˜e¤S×%6Ñ%6×7Ñ7ô ˜uÐ&:×;Ñ;ð ×,Ñ,Ô.àð Ó!ð #(�s—w‘w“ñ Dö" ð ×+Ñ+¨EÑ2ß‘˜FÓ#ß‘©LÓ9ªL q˜QŸUœU©LÑ9Ó:ò;ð ð
 "&��v“ñ	;ö –ð !×2Ñ2°5Ñ9×BÑBÀ6ÓJˆKà×!Ñ!×8Ñ8Ø×"Ñ" E÷ñ ð $*×#BÑ#BØñ$ç‘(˜6Ó"ñ !ð $(Ñ à-1Ð1Ð˜{ð ×'Ñ'¨uÒ4Ø×%Ñ%Ñ1Ø×%Ñ%¨×)>Ñ)>¸uÑ)EÓEà06×0KÑ0KØó1ˆF×(Ñ(×,Ñ,Ñ-ö Ø×/×/Ø×!Ñ!Ø×0Ñ0°&×2MÑ2Môö !Ø—‘ÔLÑ:KÓLÔLð ØØØØØØØð	
õ 		
òY 2BùòL :ùs   ƒDJÄJ
Ä0E'J)rn   Úuse_orm_update_stmtrq   c             #  óœ  ^^#   • U GHµ  u  nmnnn	XR                   ;  a  M  UR                   U   n
Ub  UR                  nO0 nUR                  U   nU(       aZ  [        U5      R	                  T5      R                  UR                  U   5       Vs0 s H  nXÍ   R                  TU   _M     nnSnGO0 n[        U5      R	                  UR                  5       H®  nTU   nXÍ   n[        US5      (       d  [        U[        R                  5      (       a(  [        US5      (       a  UR                  5       OUUU'   Md  UR                  U   R                  R!                  UUR                  U   5      SLd  MŸ  UUUR                  '   M°     UR"                  R$                  SL a  UR&                  U   R)                  U5      nOSnU	GbG  UR*                  UR,                  U   ;   Ga)  U(       d‡  U(       d€  U(       dy  UR.                  R1                  5        HX  nUR                  UR                     R                  R3                  UT[4        R6                  5      nUR8                  (       d  MX    O   GMn  UR*                  nU(       + =(       a    U(       + nXžUR:                  '   U(       d  UR                  U;  a0  UR<                  SLa!  UR=                  U	5      nUUUR                  '   O6UR<                  SL a  U(       a  XžUR                  '   OU(       d
  U(       d  GM  SnSnU(       aº  [        U5      R	                  UR                  U   5       Vs0 s H!  nXÍ   R:                  TR?                  U5      _M#     snm[@        RB                  R	                  TR1                  5       5      (       a2  [D        RF                  " SSRI                  U4S jU
 5       5       S3S	S
9eGO=0 mU
 GH4  nUR.                  U   R                  nUR                  U   R                  R3                  UT[4        RJ                  5      nUR8                  (       a„  URL                  (       a  SUU4U R4                  ;   a;  SnUR8                  S   TUR:                  '   URO                  UR                  S5        OAURL                  S   TUR:                  '   UU;   a  SnOURP                  S   TUR:                  '   TUR:                     b  GM  [R        RT                  " SU< SU< 35      e   U(       a  URW                  U4S jU 5       5        U(       d  U(       a   URW                  T5        UTUUUUUU4v •  GMl  U(       d  GMv  URX                  U    H,  u  nn[Z        R\                  " UUUUUU UR^                  5        M.     GM¸     gs  snf s  snf 7f)aX  Identify sets of values to use in UPDATE statements for a
list of states.

This function works intricately with the history system
to determine exactly what values should be updated
as well as how the row should be matched within an UPDATE
statement.  Includes some tricky scenarios where the primary
key of an object might have been changed.

NTrs   Fz,No primary key value supplied for column(s) z, c              3  ó^   >#   • U  H"  nTUR                      b  M  [        U5      v •  M$     g 7fr>   )Ú_labelÚstr)r   r”   Ú	pk_paramss     €r   r   Ú+_collect_update_commands.<locals>.<genexpr>3  s'   øé € ð "Ú,/ q°9¸Q¿X¹XÑ3F›FœC ŸF˜FªCùs   ƒ-›-zY; per-row ORM Bulk UPDATE by Primary Key requires that records contain primary key valuesÚbupq)ÚcodeÚpk_cascadedr   zCan't update table ú, using NULL for primary key value on column c              3  ó0   >#   • U  H  oTU   4v •  M     g 7fr>   r   ru   s     €r   r   rž   \  s   øé € ÐHÒ6G°˜j¨™mÕ,Ò6Gùrx   )0r*   Ú_valuesry   r{   r|   r�   Ú_pk_attr_keys_by_tablerZ   Úcommitted_stater}   r~   r   r   rs   ÚmanagerÚimplÚis_equalr0   Úeager_defaultsÚ!_server_onupdate_default_col_keysrƒ   r?   rˆ   Ú_columntopropertyÚvaluesÚget_historyr   ÚPASSIVE_NO_INITIALIZEÚaddedr›   r‡   Úgetr   ÚNONE_SETÚsa_excÚInvalidRequestErrorÚjoinÚPASSIVE_OFFÚdeletedÚpopÚ	unchangedÚorm_excÚ
FlushErrorr:   Ú_table_to_equatedr   ÚpopulateÚpassive_updates)r2   r8   r3   rn   r˜   rq   r   r   r   r"   ÚpksrŽ   r�   r‘   r�   r—   r’   r“   ÚpropÚhistoryÚ	no_paramsÚvalr–   Úexpect_pk_cascadedÚmÚequated_pairsr�   r   s                             @@r   r,   r,   «  s€  ùé € ô4 
ñ	ØØØØØà×,Ñ,Ó,Ùà×"Ñ" 5Ñ)ˆàÑ*à.×6Ñ6‰LàˆLà×/Ñ/°Ñ6ˆæô
  # >Ó2ß‘˜jÓ)ß‘˜F×9Ñ9¸%Ñ@ÓAð Bóò B�Gð Ñ'×+Ñ+¨Z¸Ñ-@Ò@ñ Bð ð ð  $ÒàˆFÜ˜~Ó.×;Ñ;Ø×%Ñ%ö�ð # 7Ñ+�Ø$Ñ-�ä˜5Ð"6×7Ñ7¼:Øœ3×,Ñ,÷<ñ <ô
 # 5Ð*>×?Ñ?ð ×0Ñ0Ô2à"ð ! Ó%ð —M‘M 'Ñ*×/Ñ/×8Ñ8Ø˜u×4Ñ4°WÑ=óð  ô ð
 ',�F˜3Ÿ7™7“Oñ-ð0 ×!Ñ!×0Ñ0°DÒ8à×<Ñ<¸UÑCß‘(˜6Ó"ñ !ð $(Ð ð Ò)Ø×%Ñ%¨×)>Ñ)>¸uÑ)EÔEæ¦®<ð
 #×4Ñ4×;Ñ;Ö=�DØ#Ÿm™m¨D¯H©HÑ5×:Ñ:×FÑFØ˜z¬:×+KÑ+Kó�Gð —}—}‘}Ùñ >ò à×'Ñ'ˆCØ"œ
×7¨<Ô'7ˆIØ!2�3—:‘:Ñö ˜Ÿ™ vÓ-Ø×-Ñ-°UÒ:Ø×1Ñ1Ð2CÓD�Ø"%��s—w‘w’Ø×,Ñ,°Ò5¾)ð
 #4�s—w‘w‘øæžLÚàˆØ"ÐÞô
  # >Ó2×?Ñ?Ø×1Ñ1°%Ñ8ô óò �Gð Ñ'×.Ñ.°
·±¸wÓ0GÒGñ ñˆIô �}‰}×)Ñ)¨)×*:Ñ*:Ó*<×=Ñ=Ü×0Ò0ØBàŸ	™	ô "Ù,/ó"ó ðð9ð9ð  ñ
ð 
ñ >ð ˆIÜ�Ø ×2Ñ2°3Ñ7×;Ñ;�àŸ-™-¨Ñ0×5Ñ5×AÑAØ˜:¤z×'=Ñ'=ó�ð —=—=à#ŸOŸOØ)¨5°#Ð6Ø)×4Ñ4ó5ð .2Ð*Ø07·±¸aÑ0@˜	 #§*¡*Ñ-ØŸ
™
 3§7¡7¨DÕ1ð 18·±ÀÑ0B˜	 #§*¡*Ñ-Ø ,Ó.Ø*/˜Køà,3×,=Ñ,=¸aÑ,@�I˜cŸj™jÑ)Ø˜SŸZ™ZÑ(Ô0Ü!×,Ó,ã49º3ð@óð ñ1 ö: Ø�M‰MÔHÑ6GÓHÔHæ–\Ø�M‰M˜)Ô$àØØØØØØ Øð	õ 	÷  Ñð %+×$<Ñ$<¸UÔ$CÑ ��=Ü—’ØØØØØ!Ø"Ø×*Ñ*öô %DòW 
ùò"ùòfùs<   „BWÂWÂ-CWÅ8C2WÉ.C'WÍ(WÍ=FWÔA5WÕ=AWc           	   #  óV  #   • U GHž  u  nnnnn	UR                   U   n
0 nSnUR                  U    HË  nXÚ;   a-  UR                  XVU[        R                  S9X½R
                  '   M5  XÔ;   d  UR                  c  MI  UR                  U   nUR                  UR                     R                  R                  XV[        R                  5      nUR                  (       d  M¬  UR                  S   nUX½R                  '   SnMÍ     U(       d  GM  U	b�  UR                  UR                  U   ;   ar  UR                  nX›UR
                  '   [        UR                  5      (       a>  UR                  U;  a.  UR                   SLa  UR!                  U	5      nUX½R                  '   XVXxU4v •  GM¡     g7f)zjIdentify sets of values to use in UPDATE statements for a
list of states within a post_update operation.

F)ÚpassiveNr   T)r*   rˆ   Ú_get_state_attr_by_columnr   r¶   r›   Úonupdater¬   r§   rZ   r¨   r®   r¯   r°   r?   rY   r‡   )r0   r2   r8   r3   rG   r   r   r   r   r"   r¿   r�   Úhasdatar“   rÀ   rÁ   r’   rÃ   s                     r   rE   rE   |  s‹  é € ô 
ñ	ØØØØØð ×"Ñ" 5Ñ)ˆØˆØˆà×(Ñ(¨Ô/ˆCØ‹zØ%+×%EÑ%EØ s´J×4JÑ4Jð &Fð &�—z‘zÓ"ð Ó(¨C¯L©LÓ,DØ×/Ñ/°Ñ4�ØŸ-™-¨¯©Ñ1×6Ñ6×BÑBØ¤z×'GÑ'Gó�ð —=—=‘=Ø#ŸM™M¨!Ñ,�EØ&+�FŸ7™7‘OØ"’Gñ 0÷ ‰7à!Ñ-Ø×)Ñ)¨V×-BÑ-BÀ5Ñ-IÓIà×+Ñ+�Ø%6�s—z‘zÑ"ô ˜Ÿ™—O‘OØŸ™ vÓ-Ø×3Ñ3¸5Ò@à ×5Ñ5Ð6GÓH�CØ&)�FŸ7™7‘OØ V¸Ð?Õ?òK 
ùs   ‚A4F)Á:AF)Ã(F)Ä
BF)c              #  óx  #   • U H°  u  nnnnnX&R                   ;  a  M  0 n	UR                   U    HD  n
UR                  XEU
5      =XšR                  '   nUb  M(  [        R                  " SU< SU
< 35      e   Ub5  UR
                  UR                  U   ;   a  X‰UR
                  R                  '   X—4v •  M²     g7f)zOIdentify values to use in DELETE statements for a list of
states to be deleted.NzCan't delete from table r¢   )r*   r@   rZ   rº   r»   r?   rˆ   )r0   r2   r8   rS   r   r   r   r   r"   r�   r“   r’   s               r   rO   rO   ²  sÒ   é € ó 
ñ	ØØØØØà×,Ñ,Ó,ÙàˆØ×'Ñ'¨Ô.ˆCà×:Ñ:Ø sóðˆF—7‘7‰O˜eð
 ‹}Ü×(Ó(ó 16²sð<óð ñ /ð Ñ)Ø×%Ñ%¨×)>Ñ)>¸uÑ)EÓEà0A�6×(Ñ(×,Ñ,Ñ-ØÐ Ô ò/ 
ùs   ‚AB:ÁA"B:T)Úbookkeepingr˜   Úenable_check_rowcountc               óD  ^^^• TR                   SL=(       a    TR                   TR                  T   ;   mSU R                  0nSUUU4S jjn	Ub	  U	" U5      n
OU R                  ST4U	5      n
[	        US 5       GH�  u  u  p¼pÞnnSn[        U5      nU
nUb  UR                  TTS.5      nSnU(       d  UR                  " TR                  T   6 nS	nU(       aj  U(       dc  TR                  R                  S	L aJ  TR                  (       a9  UR                  R                  (       a  UR                  " TR                  T   6 nS	nTR                  (       a  UR                  TR                   5      nS	nUR                  R                   nU=(       a    UR                  R"                  nU(       + =(       a    T(       + nU(       aŠ  U H‚  u  nnnmnnnnUR%                  UR'                  U5      UUS
9nU(       a5  [)        TUTUUUUR*                  R,                  S   US	UR.                  5
        UUR0                  -  nU=(       a    UnM„     GOLU(       dz  U=(       a    UnU Hh  u  nnnmnnnnUR%                  UUUS
9nU(       a5  [)        TUTUUUUR*                  R,                  S   US	UR.                  5
        UUR0                  -  nMj     OËU Vs/ s H  nUS   PM
     nnU=(       a     U=(       d    U=(       a    [3        U5      S:H  nUR%                  UUUS
9nUUR0                  -  nU Hg  u  nnnmnnnnU(       d  M  [)        TUTUUUUR*                  R,                  S   US	UR*                  R4                  (       d  UR.                  OS5
        Mi     W(       aA  U[3        U5      :w  a/  [6        R8                  " STR:                  [3        U5      U4-  5      eGMf  T(       d  GMp  [<        R>                  " SWR                  R@                  -  5        GM      gs  snf )z\Emit UPDATE statements corresponding to value lists collected
by _collect_update_commands().NÚcompiled_cachec           	     ó  >• [         R                  " [        R                  5      nTR                  T    H>  nUR                  U[        R                  " UR                  UR                  S9:H  5        M@     T(       aY  UR                  TR                  [        R                  " TR                  R                  TR                  R                  S9:H  5        U b  U R                  U5      nU$ TR                  5       R                  U5      nU$ ©N)Útype_)r   Ú_construct_rawr   Úand_r*   Ú_append_inplacer   Ú	bindparamr›   Útyper?   Úwherer:   )Úexisting_stmtÚclausesr“   Ústmtr   Úneeds_version_idr8   s       €€€r   Úupdate_stmtÚ,_emit_update_statements.<locals>.update_stmtí  sÜ   ø€ Ü#×2Ò2´9·>±>ÓBˆà×'Ñ'¨Ô.ˆCØ×#Ñ#Ø”s—}’} S§Z¡Z°s·x±xÑ@Ñ@öñ /ö
 Ø×#Ñ#Ø×%Ñ%Ü—=’=Ø×)Ñ)×0Ñ0Ø ×/Ñ/×4Ñ4ññôð Ñ$Ø ×&Ñ& wÓ/ˆDð ˆð —<‘<“>×'Ñ'¨Ó0ˆDØˆr;   r:   c                óR   • U S   [        U S   5      [        U S   5      U S   U S   4$ ©Né   r   é   é   é   ©r{   rY   ©Úrecs    r   Ú<lambda>Ú)_emit_update_statements.<locals>.<lambda>  ó2   € Ø�‰FÜ��A‘‹KÜ��Q‘‹LØ�‰FØ�‰Fñ
r;   r   )Ú_emit_update_tableÚ_emit_update_mapperFT©Úexecution_optionsr   r   úMUPDATE statement on table '%s' expected to update %d row(s); %d were matched.úMDialect %s does not support updated rowcount - versioning cannot be verified.r>   )!r?   rˆ   Ú_compiled_cacheÚ_memor   rC   Ú	_annotatero   r*   r0   rª   Úimplicit_returningr…   Úupdate_returningÚ_server_onupdate_default_colsÚ!_version_id_has_server_side_valueÚsupports_sane_rowcountÚsupports_sane_multi_rowcountÚexecuter­   Ú
_postfetchÚcontextÚcompiled_parametersÚreturned_defaultsÚrowcountÚlenÚexecutemanyrº   ÚStaleDataErrorÚdescriptionr   rd   Údialect_description) r0   r2   r   r8   r:   rÍ   r˜   rÎ   rï   rÞ   Úcached_stmtr   Ú	paramkeysÚhasvaluer—   r–   ÚrecordsÚrowsÚ	statementro   Úassert_singlerowÚassert_multirowÚallow_executemanyr   r   r�   rŽ   r”   Úcheck_rowcountrè   ÚmultiparamsrÝ   s      ``                           @r   r-   r-   Ø  sƒ  ú€ ð 	×Ñ TÐ)÷ 	BØ×!Ñ! V×%:Ñ%:¸5Ñ%AÑAð ð
 *¨;×+FÑ+FÐGÐ÷ñ ð. Ñ&Ù!Ð"5Ó6‰ð "×'Ñ'¨°5Ð(9¸;ÓGˆô
 
Øñ	
÷	
ñ	ÙHˆ ¸KØð ˆÜ�w“-ˆàˆ	àÑ*Ø!×+Ñ+à*/Ø+1ñóˆIð  ˆæØ!×1Ò1°6×3GÑ3GÈÑ3NÐOˆIØ"ˆOö Þ$Ø×"Ñ"×1Ñ1°TÒ9ð ×(×(Ø×"Ñ"×3×3à!×1Ò1Ø×5Ñ5°eÑ<ðˆIð #ˆOà×3×3Ø!×1Ñ1°&×2GÑ2GÓHˆIØ"ˆOà%×-Ñ-×DÑDÐð ÷ @Ø×"Ñ"×?Ñ?ð 	ð !0Ô/×HÐ8HÔ4HÐæó ñ	ØØØØØØØ Øà×&Ñ&Ø×$Ñ$ \Ó2ØØ&7ð 'ð �ö
 ÜØØ&ØØØ"ØØŸ	™	×5Ñ5°aÑ8Ø$ØØ×+Ñ+ôð ˜Ÿ
™
Ñ"�Ø!6×!KÐ;K’ó) ö, %Ø!6×!KÐ;K�ó ñ	ØØØØØØ Ø$Øà"×*Ñ*Ø! 6Ð=Nð +ð �Aö
 #Ü"Ø"Ø*Ø!Ø!Ø&ØØŸI™I×9Ñ9¸!Ñ<Ø(Ø Ø×/Ñ/ôð ˜AŸJ™JÑ&’Dò' ñ* 29Ó9²¨#˜s 1œv±�Ð9à!6÷ "Ø#÷ DØ(×B¬S°Ó-=ÀÑ-Bð ð
 ×&Ñ&Ø˜{Ð>Oð 'ð �ð ˜Ÿ
™
Ñ"�ó ñ	ØØØØØØ Ø$Øç"�{Ü"Ø"Ø*Ø!Ø!Ø&ØØŸI™I×9Ñ9¸!Ñ<Ø(Ø ð ()§y¡y×'<×'<ð !"× 3Ò 3à%)öñ ö& Ø”s˜7“|Ó#Ü×,Ò,ð9à×(Ñ(¬#¨g«,¸Ð=ñ>óð ò $÷ ÑÜ�IŠIð3à—)‘)×/Ñ/ñ0÷ò]	
ùòx :s   ËP)rÍ   Úuse_orm_insert_stmtrï   c               ór  • UbF  Un[         R                  n	[        UR                  5      n
U
=(       a    UR                  =(       d    UnO0Sn
UnU R                  SU4UR                  5      nSU R                  0n	U(       a   [         R                  R                  X—5      nOU	nSn[        US 5       GHZ  u  u  pÞnnnnUnUb  UR                  UUS.5      nU(       aT  U(       dM  U R                  UR                  U5      (       a,  UR                  (       a  UR                  R                  (       d×  U
(       dÐ  U(       aÉ  U(       dÂ  [        U5      nU Vs/ s H  nUS   PM
     nnUR!                  UUUS9nU(       a‡  [#        UUR$                  R&                  5       H`  u  u  nnnnnnnnnU(       a=  [)        UUUUUUUUSUR$                  R*                  (       d  UR,                  OS5
        MS  [/        UUU5        Mb     GMT  GMW  [        U5      nU
(       d'  UR                  (       a¤  U(       d�  [1        U5      S	:”  aŽ  U(       a  UR                  R2                  (       d"  U(       d  UR                  R4                  (       a  S
nOIU
(       a=  U(       a  SnOSn[6        R8                  " SUR                  R:                   SU S35      eSnOSnUcG  U(       d@  U R                  UR                  U5      (       a  UR<                  " UR>                  U   SU06nUR@                  b  UR=                  UR@                  US9nO#U(       a  UR<                  " URB                  SU06nU(       GaF  U Vs/ s H  nUS   PM
     nnUR!                  UUUS9nUb  Uc  UnOURE                  U5      nU(       aü  [G        UUR$                  R&                  URH                  URJ                  =(       d    S5       H¶  u  u  nnnnnnnnnn n!U c  [L        RN                  " SU-  5      e[#        U URP                  U   5       HB  u  n"n#URR                  U#   n$URU                  U$RV                  5      b  M3  U"UU$RV                  '   MD     U(       a  [)        UUUUUUUUSU!5
        M©  [/        UUU5        M¸     GM   GM  U
(       a   eU GHG  u  nnnnnnnnU(       a!  UR!                  URY                  U5      UUS9nOUR!                  UUUS9nURZ                  n%U%c  [L        RN                  " SU< S35      e[#        U%URP                  U   5       HH  u  n"n#URR                  U#   n$U#U;   d  URU                  U$RV                  5      b  M9  U"UU$RV                  '   MJ     U(       d  MÞ  U(       aU  [)        UUUUUUUR$                  R&                  S   USUR$                  R*                  (       d  UR,                  OS5
        GM:  [/        UUU5        GMJ     GM]     Ub  Uc  [\        R^                  " 5       $ U$ gs  snf s  snf )z\Emit INSERT statements corresponding to value lists collected
by _collect_insert_commands().NFr9   rÐ   c                óR   • U S   [        U S   5      [        U S   5      U S   U S   4$ rá   ræ   rç   s    r   ré   Ú)_emit_insert_statements.<locals>.<lambda>ï  rë   r;   )Ú_emit_insert_tableÚ_emit_insert_mapperr   rî   r   Tz+ with RETURNING and sort by parameter orderz with RETURNINGz<Can't use explicit RETURNING for bulk INSERT operation with z backend; executemanyz! is not enabled for this dialect.Úsort_by_parameter_order)r  r   zÈMulti-row INSERT statement for %s did not produce the correct number of INSERTed rows for RETURNING.  Ensure there are no triggers or special driver issues preventing INSERT from functioning properly.z Single-row INSERT statement for zœ did not produce a new primary key result being invoked.  Ensure there are no triggers or special driver issues preventing INSERT from functioning properly.r   )0r   Ú
EMPTY_DICTrY   Ú
_returningÚ_sort_by_parameter_orderró   r9   rò   Ú
merge_withr   rô   r„   r…   rõ   Úinsert_returningrC   rû   Úziprý   rþ   rü   r  rÿ   Ú_postfetch_bulk_saver  Ú4insert_executemany_returning_sort_by_parameter_orderÚinsert_executemany_returningr³   r´   r  ro   Ú_server_default_colsr?   Úprimary_keyÚsplice_verticallyr   Úinserted_primary_key_rowsÚreturned_defaults_rowsrº   r»   r*   r¬   r±   rZ   r­   Úinserted_primary_keyÚ_cursorÚnull_dml_result)&r0   r2   r   r8   r9   rÍ   r  rï   r  Úexec_optÚreturning_is_required_anywayÚdeterministic_results_reqdÚreturn_resultr   Ú_r  r–   r—   r	  r  rè   r  Úresultr   r   r�   Ú
mapper_recÚconnrŽ   Úlast_inserted_paramsÚdo_executemanyÚdtr&  rÿ   Úpkr“   rÀ   r"  s&                                         r   r.   r.   Â  s«  € ð Ñ&Ø)ˆÜ—?‘?ˆô (,Ð,?×,JÑ,JÓ'KÐ$à(÷ =Ø#×<Ñ<÷&ð ñ 	#ð
 (-Ð$Ø%0Ð"Ø!×'Ñ'¨°5Ð(9¸5¿<¹<ÓHˆØ$ k×&AÑ&AÐBˆæÜ ŸO™O×6Ñ6Øó
Ñð %Ðà€Mô
 
Øñ	
÷	
ñ	Ù@ˆ˜ +Ð/?Øð  ˆ	àÑ*Ø!×+Ñ+à*/Ø+1ñóˆIö  æ$Ø&×=Ñ=Ø"×*Ñ*¨E÷ñ ð !×3×3Ø%×-Ñ-×>×>ö 1ÞÞô ˜7“mˆGÙ-4Ó5ªW c˜3˜qœ6©WˆKÐ5à×'Ñ'Ø˜;Ð:Kð (ð ˆFö ô ˜ &§.¡.×"DÑ"DÖEññ	ØØ"ØØ"ØØ$Ø#Ø(à(æÜ"Ø&Ø*Ø!Ø!Ø&Ø"Ø0Ø(Ø!ð (.§~¡~×'A×'Að !'× 8Ò 8à%)öô" -¨Z¸ÀUÖKô' Fò ôL ˜7“mˆGæ+Ø×(×(¶¼cÀ'»lÈQÓ>Nö /Ø"×*Ñ*×_×_æ2Ø"×*Ñ*×G×Gà%)‘NÞ1Þ1ØJ™à.˜Ü ×4Ò4ð*à%×-Ñ-×AÑAÐBð C&Ø&( TÐ)JðLóð ð &+‘Nà!&�à"Ñ*æ(Ø#×:Ñ:Ø"×*Ñ*¨E÷ñ ð !*× 9Ò 9Ø×4Ñ4°UÑ;ð!à0;ñ!�Ið
 ×$Ñ$Ñ0Ø%×5Ñ5Ø×)Ñ)Ø,7ð 6ð ‘	ö  Ø%×5Ò5Ø×&Ñ&ðØ@Kñ�	÷ Ù18Ó9²¨#˜s 1œv±�Ð9à#×+Ñ+Ø˜{Ð>Oð ,ð �ð 'Ñ2Ø$Ñ,Ø(.™à(5×(GÑ(GÈÓ(O˜æô %ØØŸ™×:Ñ:Ø×8Ñ8Ø×5Ñ5×;¸ö	ññ	Ø!Ø&Ø"Ø&Ø Ø(Ø'Ø,à,Ø,Ø)ð 0Ñ7ô #*×"4Ò"4ð!8ð
 ;Eñ!Eó#ð ô (+Ø0Ø"×0Ñ0°Ñ7ö(™G˜B ð $.×#?Ñ#?ÀÑ#D˜DØ)Ÿ~™~¨d¯h©hÓ7Ó?Ø79 
¨4¯8©8Ó 4ñ(ö !Ü&Ø *Ø .Ø %Ø %Ø *Ø &Ø 4Ø ,Ø %Ø 1öô 1°¸ZÈÖOôYò öz 8Ð7Ð7ô ñ	ØØØØØØ ØØ$æ#Ø!+×!3Ñ!3Ø%×,Ñ,¨\Ó:Ø"Ø.?ð "4ð "™ð ",×!3Ñ!3Ø%Ø"Ø.?ð "4ð "˜ð #)×"=Ñ"=�KØ"Ñ*Ü%×0Ó0ó 8BðDóð ô $'Ø# V×%9Ñ%9¸%Ñ%@ö$™˜˜Cð  *×;Ñ;¸CÑ@˜à <Ó/Ø)Ÿ~™~¨d¯h©hÓ7Ó?à35˜J t§x¡xÓ0ñ$÷ #�{Þ Ü&Ø *Ø .Ø %Ø %Ø *Ø &Ø &§¡× BÑ BÀ1Ñ EØ ,Ø %ð ,2¯>©>×+E×+Eð %+×$<Ò$<à)-÷ô" 1°¸ZÈ×Oôi ñy	
ðd Ñ&ØÑ Ü×*Ò*Ó,Ð,à Ð ð	 'ùòS 6ùò~ :s   ÅX/Í3X4c                ó  ^^^• SU R                   0nTR                  SL=(       a    TR                  TR                  T   ;   mUUU4S jnU R                  ST4U5      nTR                  (       a  UR                  TR                  5      n[        US 5       GHà  u  p‰Sn
[        U	5      n	US   nUR                  R                  nU=(       a    UR                  R                  nT(       + =(       d    UnU(       dZ  UnU	 HQ  u  nnnnnUR                  UUUS9n[        UUTUUUUR                  R                  S   5        U
UR                  -  n
MS     O£U	 VVVVVs/ s H  u  nnnnnUPM     nnnnnnU=(       d    U=(       a    [!        U5      S:H  nUR                  UUUS9nU
UR                  -  n
[#        U	5       H4  u  nu  nnnnn[        UUTUUUUR                  R                  U   5        M6     U(       aA  U
[!        U	5      :w  a/  [$        R&                  " S	TR(                  [!        U	5      U
4-  5      eGM©  T(       d  GM³  [*        R,                  " S
WR                  R.                  -  5        GMã     gs  snnnnnf )zaEmit UPDATE statements corresponding to value lists collected
by _collect_post_update_commands().rÐ   Nc            	     óð  >• [         R                  " [        R                  5      n TR                  T    H>  nU R                  U[        R                  " UR                  UR                  S9:H  5        M@     T(       aY  U R                  TR                  [        R                  " TR                  R                  TR                  R                  S9:H  5        TR                  5       R                  U 5      nU$ rÒ   )r   rÔ   r   rÕ   r*   rÖ   r   r×   r›   rØ   r?   r:   rÙ   )rÛ   r“   rÜ   r   rÝ   r8   s      €€€r   rÞ   Ú1_emit_post_update_statements.<locals>.update_stmt  s½   ø€ Ü#×2Ò2´9·>±>ÓBˆà×'Ñ'¨Ô.ˆCØ×#Ñ#Ø”s—}’} S§Z¡Z°s·x±xÑ@Ñ@öñ /ö
 Ø×#Ñ#Ø×%Ñ%Ü—=’=Ø×)Ñ)×0Ñ0Ø ×/Ñ/×4Ñ4ññôð �|‰|‹~×#Ñ# GÓ,ˆàˆr;   rH   c                ó(   • U S   [        U S   5      4$ )Né   râ   )r{   rç   s    r   ré   Ú._emit_post_update_statements.<locals>.<lambda>3  s   € �S˜‘VœS  Q¡›[Ñ)r;   r   rî   r   rð   rñ   )rò   r?   rˆ   ró   rø   ro   r   rC   r…   rù   rú   rû   Ú_postfetch_post_updaterý   rþ   r   r  Ú	enumeraterº   r  r  r   rd   r  )r0   r2   r   r8   r:   rï   rÞ   r  rZ   r	  r
  r   r  r  r  r  r   r   r/  r�   r”   r0  r  ÚirÝ   s     ``                    @r   rF   rF     sÀ  ú€ ð *¨;×+FÑ+FÐGÐð 	×Ñ TÐ)÷ 	BØ×!Ñ! V×%:Ñ%:¸5Ñ%AÑAð ÷
ð* ×!Ñ! =°%Ð"8¸+ÓF€Ià×/×/Ø×-Ñ-¨f×.CÑ.CÓDˆ	ô  ØÙ)÷‰ˆð ˆä�w“-ˆØ˜‘Vˆ
à%×-Ñ-×DÑDÐà÷ @Ø×"Ñ"×?Ñ?ð 	ð !1Ô0×C°OÐæ Ø-ˆNÛELÑA��z :¨z¸6Ø×&Ñ&Ø˜vÐ9Jð 'ð �ô 'ØØ"ØØØØØ—I‘I×1Ñ1°!Ñ4ôð ˜Ÿ
™
Ñ"’ò FMñ$ DK÷âCJÑ?�E˜: z°4¸ó ÙCJð ô ð
 -÷ Ø ×:¤S¨Ó%5¸Ñ%:ð ð ×"Ñ"Ø˜;Ð:Kð #ð ˆAð �A—J‘JÑˆDô ˜7Ö#ñ�ñ ØØØØØä&ØØ"ØØØØØ—I‘I×1Ñ1°!Ñ4öñ $ö Ø”s˜7“|Ó#Ü×,Ò,ð9à×(Ñ(¬#¨g«,¸Ð=ñ>óð ò $÷ ÑÜ�IŠIð3à—)‘)×/Ñ/ñ0÷òUùöDs   ÅI>c                ó   ^^^• TR                   SL=(       a    TR                   TR                  T   ;   mUUU4S jnU R                  ST4U5      n[        US 5       GH¦  u  pxU V	Vs/ s H  u  p—U	PM	     n
n	nSU R                  0n[        U
5      nSnSnT(       až  WR                  R                  (       dƒ  UR                  R                  (       a*  SnU
 H!  n	UR                  XiUS	9nXßR                  -  nM#     Oc[        R                  " S
UR                  R                  -  5        UR                  XjUS	9  O%WR                  XjUS	9nT(       d  SnUR                  nU R                  (       d  GM  US:”  d  GM   XÍ:w  d  GM(  UR                  R                  (       d  [        U
5      S:X  d  GMU  U(       a(  [        R                  " STR                  XÍ4-  5        GM„  [         R"                  " STR                  XÍ4-  5      e   gs  snn	f )z\Emit DELETE statements corresponding to value lists collected
by _collect_delete_commands().Nc            	     óì  >• [         R                  " [        R                  5      n TR                  T    H>  nU R                  U[        R                  " UR                  UR                  S9:H  5        M@     T(       aY  U R                  TR                  [        R                  " TR                  R                  TR                  R                  S9:H  5        TR                  5       R                  U 5      $ rÒ   )r   rÔ   r   rÕ   r*   rÖ   r   r×   rZ   rØ   r?   rU   rÙ   )rÛ   r“   r   Úneed_version_idr8   s     €€€r   Údelete_stmtÚ,_emit_delete_statements.<locals>.delete_stmt�  s¸   ø€ Ü#×2Ò2´9·>±>ÓBˆà×'Ñ'¨Ô.ˆCØ×#Ñ#Ø”s—}’} S§W¡W°C·H±HÑ=Ñ=öñ /ö
 Ø×#Ñ#Ø×%Ñ%Ü—=’=Ø×)Ñ)×-Ñ-°V×5JÑ5J×5OÑ5Oññôð �|‰|‹~×#Ñ# GÓ,Ð,r;   rU   c                ó   • U S   $ )Nr   r   rç   s    r   ré   Ú)_emit_delete_statements.<locals>.<lambda>   s   € ¸¸Aºr;   rÐ   éÿÿÿÿFr   rî   zMDialect %s does not support deleted rowcount - versioning cannot be verified.Tr   z­DELETE statement on table '%s' expected to delete %d row(s); %d were matched.  Please set confirm_deleted_rows=False within the mapper configuration to prevent this warning.)r?   rˆ   ró   r   rò   r  r…   rú   rù   rû   r   r   rd   r  Úconfirm_deleted_rowsr  rº   r  )r0   r2   r   r8   rU   rA  r  r   Úrecsr�   Údel_objectsrï   ÚexpectedÚrows_matchedÚ	only_warnr”   r@  s     ``            @r   rP   rP   ‚  s  ú€ ð 	×Ñ TÐ)÷ 	BØ×!Ñ! V×%:Ñ%:¸5Ñ%AÑAð ÷
-ð$ ×!Ñ! 8¨UÐ"3°[ÓA€IÜ# FÑ,>×?Ñˆ
Ù8<Ô=ºÑ"4 &“v¹ˆÑ=à-¨{×/JÑ/JÐKÐÜ�{Ó#ˆØˆØˆ	ö Ø×&Ñ&×C×Cà×!Ñ!×8×8Ø �ó *�FØ"×*Ñ*Ø!Ð=Nð +ð �Að !§J¡JÑ.’Lò	 *ô —	’	ð7à ×(Ñ(×<Ñ<ñ=ôð
 ×"Ñ"ØÐ>Oð #ò ð ×"Ñ"ØÐ:Kð #ð ˆAö #Ø �	àŸ:™:ˆLð ×,×,Ò,Ø˜rÖ!ØÖ(à×"Ñ"×?×?Ü�{Ó# qÖ(ö
 Ü—	’	ð=ð ×(Ñ(¨(ÐAñ	B÷ô ×,Ò,ð=ð ×(Ñ(¨(ÐAñ	Bóð òy @ùÛ=s   Á)H
c           	     óX  • U GHž  u  p4pVnUR                   (       a×  UR                  UR                    Vs/ s H�  nUR                  (       a+  UR                  (       a\  UR                  UR
                  ;   dB  UR                  (       a  MR  UR                  (       a  Me  UR                  UR
                  ;  d  M�  UR                  PM�     sn5      n	U	(       a  UR                  UR
                  U	5        / n
U R                  SL a4  U
R                  UR                  R                  UR                  5      5        UR                  bY  UR                  SL aJ  UR                  R                  UR                  ;   a&  U
R                  UR                  R                  /5        U
(       ak  U R!                  U5      Ul        ["        R$                  " U5      R'                  [(        5      n[*        R,                  " UR.                  UUR                  UU
S9  U(       d  UR0                  R3                  XVU5        OUR0                  R5                  XVU5        UR                  SL d  GM_  UR                  c  GMo  XER                  R                     b  GM‹  [6        R8                  " S5      e   gs  snf )zrfinalize state on states that have been inserted or updated,
including calling after_insert/after_update events.

TNF)Úrefresh_stateÚonly_load_propsz2Instance does not contain a non-NULL version value)Ú_readonly_propsÚunmodified_intersectionÚexpire_on_flushÚdeferredrZ   rg   Ú_expire_attributesrª   ÚextendÚ_unloaded_non_objectr|   Ú&_server_default_plus_onupdate_propkeysr?   r‡   Ú_version_id_propÚunloadedr[   r   ÚselectÚset_label_styler   r
   Úload_on_identr_   rQ   Úafter_insertÚafter_updaterº   r»   )r0   r2   r1   r   r   r   r   r6   ÚpÚreadonlyÚ
toload_nowrÜ   s               r   r/   r/   å  s*  € ô
 @FÑ;ˆ˜6¨|Ø×!×!Ø×4Ñ4ð $×3Ò3óâ3˜à×)×)Ø!"§§¨q¯u©u¸¿
¹
Ó/Bð ×-Õ-ó ð !"§
¥
ó ð ŸE™E¨¯©Ñ3ó �A—E”EÙ3ñóˆHö Ø×(Ñ(¨¯©°XÔ>ð
 ˆ
ð ×%Ñ%¨Ò-Ø×ÑØ×*Ñ*×7Ñ7Ø×AÑAóôð ×!Ñ!Ñ-Ø×+Ñ+¨uÒ4à×&Ñ&×*Ñ*¨e¯n©nÓ<Ø×!Ñ! 6×#:Ñ#:×#>Ñ#>Ð"?Ô@æØ#×<Ñ<¸UÓCˆEŒIÜ—=’= Ó(×8Ñ8Ü.óˆDô ×!Ò!Ø×&Ñ&ØØ—	‘	Ø#Ø *òö Ø�O‰O×(Ñ(¨¸UÕCà�O‰O×(Ñ(¨¸UÔCð ×'Ñ'¨5Õ0Ø×%Ñ%Ô1à×1Ñ1×5Ñ5Ñ6Ô>Ü×(Ò(ØHóð òC @Fùòs   µAJ'
Â
J'
ÂJ'
Â9J'
c                ó  • U R                   S L=(       a    U R                   U R                  U   ;   nUR                  U5      (       dA  UR                  R                  R
                  nUR                  R                  R                  n	OU(       a  S=p‰Og U(       a  [        U5      U R                   /-   n[        U R                  R                  R                  5      n
U
(       a  / nU H~  nUR                  U;   d  M  XÀR                  ;   d  M&  XlR                     X@R                  U   R                  '   U
(       d  MV  WR                  U R                  U   R                  5        M€     U
(       a-  W(       a&  U R                  R                  R                  X1U5        U	(       aV  UR                  UR                   U	 Vs/ s H-  nXÀR                  ;   d  M  U R                  U   R                  PM/     sn5        g g s  snf )Nr   )r?   rˆ   rc   rý   ÚcompiledÚprefetchÚ	postfetchrC   rY   Úclass_managerrQ   Úrefresh_flushrZ   r¬   r'   rS  rg   )r   r2   r8   r   r5   r.  r�   rÝ   Úprefetch_colsÚpostfetch_colsrf  Úload_evt_attrsr”   s                r   r;  r;  0  s¯  € ð 	×Ñ TÐ)÷ 	BØ×!Ñ! V×%:Ñ%:¸5Ñ%AÑAð ð
 ×$Ñ$ U×+Ñ+àŸ™×/Ñ/×8Ñ8ˆØŸ™×0Ñ0×:Ñ:‰Þ	ð *,Ð+ˆ˜ð 	æÜ˜]Ó+¨v×/DÑ/DÐ.EÑEˆä˜×-Ñ-×6Ñ6×DÑDÓE€MÞØˆãˆØ�5‰5�F�?˜q×$<Ñ$<Õ<Ø5;¿E¹E±]ˆE×*Ñ*¨1Ñ-×1Ñ1Ñ2ßˆ}Ø×%Ñ% f×&>Ñ&>¸qÑ&A×&EÑ&EÖFñ	 ö žØ×Ñ×%Ñ%×3Ñ3Ø >ô	
ö Ø× Ñ Ø�J‰Jñ (óâ'�AØ×0Ñ0Ñ0ó 0�×(Ñ(¨Ñ+×/Ô/Ù'ñõ	
ð ùòs   Ç G=
ÇG=
c
           
     ó`  • UR                   R                  R                  n
UR                   R                  R                  nUR                   R                  R                  nU R
                  b6  U R
                  U R                  U   ;   a  [        U
5      U R
                  /-   n
[        U R                  R                  R                  5      nU(       a  / nU(       aŸ  U	nUbš  [        Xü5       H‹  u  nnUR                  (       a  UR                   R                  (       a  M4  U R                  R!                  U5      nU(       d  MX  UUUR"                  '   U(       d  Mp  WR%                  UR"                  5        M�     U
 Hˆ  nUR"                  U;   d  M  UU R                  ;   d  M'  U R                  U   R"                  nUUR"                     UU'   UR&                  R)                  US5        U(       d  Mw  WR%                  U5        MŠ     U(       a-  W(       a&  U R                  R                  R                  X1U5        U(       aD  U(       a=  UR+                  U Vs/ s H   nUR                  (       d  M  UU;  d  M  UPM"     sn5        U(       aV  UR-                  UR.                  U Vs/ s H.  nUU R                  ;   d  M  U R                  U   R"                  PM0     sn5        U R0                  U    H,  u  nn[2        R4                  " UUUUUUU R6                  5        M.     gs  snf s  snf )z~Expire attributes in need of newly persisted database state,
after an INSERT or UPDATE statement has proceeded for that
state.N)rý   rb  rc  rd  Úeffective_returningr?   rˆ   rC   rY   re  rQ   rf  r  r"  Úisinsertr¬   r±   rZ   r'   r¦   r¸   rT  rS  rg   r¼   r   r½   r¾   )r   r2   r8   r   r5   r.  r�   rŽ   Úisupdaterÿ   rg  rh  Úreturning_colsrf  ri  ÚrowÚ	row_valuer“   rÀ   r”   ÚpkeyrÅ   rÆ   s                          r   rü   rü   b  s¨  € ð  —N‘N×+Ñ+×4Ñ4€MØ—^‘^×,Ñ,×6Ñ6€NØ—^‘^×,Ñ,×@Ñ@€Nð 	×ÑÑ)Ø×!Ñ! V×%:Ñ%:¸5Ñ%AÓAä˜]Ó+¨v×/DÑ/DÐ.EÑEˆä˜×-Ñ-×6Ñ6×DÑDÓE€MÞØˆæØˆØ‰?Ü"% cÖ":‘�	˜3ð —?—? v§~¡~×'>×'>Ùð ×/Ñ/×3Ñ3°CÓ8�ß�4Ø&/�E˜$Ÿ(™(‘Oß$�}Ø&×-Ñ-¨d¯h©hÖ7ñ #;ó  ˆØ�5‰5�F�?˜q F×$<Ñ$<Õ<Ø×+Ñ+¨AÑ.×2Ñ2ˆDð ! §¡™-ˆE�$‰KØ×!Ñ!×%Ñ% d¨DÔ1çˆ}Ø×%Ñ% dÖ+ñ ö žØ×Ñ×%Ñ%×3Ñ3Ø >ô	
ö –Lð 	×Ññ (óâ'�CØ—?•?ó à'*°.Ñ'@÷ Ù'ñô	
ö Ø× Ñ Ø�J‰Jñ (óâ'�AØ˜×0Ñ0Ñ0ó 0�×(Ñ(¨Ñ+×/Ô/Ù'ñô	
ð #×4Ñ4°UÔ;Ñˆˆ=Ü�ŠØØØØØØØ×"Ñ"ö	
ò <ùò)ùòs   ÉL&É4L&É<L&Ê*L+
ËL+
c                ób   • U R                   U    H  u  p4[        R                  " XU5        M     g r>   )r¼   r   Úbulk_populate_inherit_keys)r   r5   r8   rÅ   rÆ   s        r   r  r  Ì  s*   € Ø"×4Ñ4°UÔ;ÑˆÜ×'Ò'¨°-Ö@ò <r;   c              #  óV  #   • UR                   R                  (       a  UR                   R                  nOUR                  R                  U 5      nSn[	        X5       HG  nU(       a  U" XR                  5       5      nUR                  R                  nXUR                  UW4v •  MI     g7f)zÏReturn an iterator of (state, state.dict, mapper, connection).

The states are sorted according to _sort_states, then paired
with the connection they should be using for the given
unit of work transaction.

N)	r_   Úconnection_callableÚtransactionr   r$   Úobjr§   r   rg   )r0   r2   r1   ru  r   r   r   s          r   rX   rX   Ñ  s†   é € ð ×Ñ×1×1Ø,×4Ñ4×HÑHÑà#×/Ñ/×:Ñ:¸;ÓGˆ
Ø"Ðä˜kÖ2ˆÞÙ,¨[¿)¹)»+ÓFˆJà—‘×%Ñ%ˆà—Z‘Z ¨Ð3Ô3ò 3ùs   ‚B'B)c                óF  • [        U5      nU Vs1 s H  o3R                  c  M  UiM     nnUR                  U5         [        X@R                  S9n[        U[        R                  " S5      S9U-   $ s  snf ! [
         a  n[        R                  " SU-  5      UeS nAff = f)N)rZ   z^Could not sort objects by primary key; primary key values must be sortable in Python (was: %s)Úinsert_order)
r{   rZ   Údifference_updateÚsortedÚ_persistent_sortkey_fnÚ	TypeErrorr³   r´   ÚoperatorÚ
attrgetter)r   r1   ÚpendingÚsÚ
persistentÚpersistent_sortedÚerrs          r   r$   r$   ë  s«   € Ü�&‹k€GÙ$Ó:šW˜¯©—!™W€JÐ:Ø×Ñ˜jÔ)ðÜ"Ø×9Ñ9ñ
Ðô 	ˆwœH×/Ò/°Ó?Ñ@Ø
ñ	ðùò ;øô ó Ü×(Ò(ð:Ø<?ñ@ó
ð ð	ûðús!   �A2¤A2¾A7 Á7
B ÂBÂB )F)0Ú__doc__Ú
__future__r   Ú	itertoolsr   r   r   r~  Ú r   r	   rº   r
   r   Úbaser   r³   r   r   r   Úenginer   r'  r   Úsql.elementsr   Úsql.selectabler   r%   rH   rV   r&   rD   rJ   r+   r,   rE   rO   r-   r.   rF   rP   r/   r;  rü   r  rX   r$   r   r;   r   Ú<module>r�     só   ðñõ #å Ý Ý !Û å Ý Ý Ý Ý Ý Ý Ý Ý Ý &Ý Ý ,Ý ;ôPòf*
òZ(@òVM
ò`	HòDð6 
ØØØõb
ðT 
ØØõNòb3@òl#!ðZ ØØõgðb ØØõA!òH
yòx`òFHòV/
òdg
òTAò
4ó4r;   