Ë
    ÚqjÂÜ  ã                  ó   — d Z ddlmZ ddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddl"m#Z# ddl"m$Z$ dd lm%Z% dd!lm&Z& dd"l'm(Z( er6dd#l)m*Z* dd$l)m+Z+ dd%lm,Z, dd&lm-Z- dd'lm.Z. dd(lm/Z/ dd)lm0Z0 dd*lm1Z1 dd+lm2Z2  e&jf                  d,d-«      Z4dRd0„Z5ed.e6eee6d1f      e
e6   f   Z7ed2e6e6e
e6   f   Z8ed/e6d1e
e6   f   Z9ee7   Z: G d3„ d4e«      Z;	 	 	 	 	 	 	 	 	 	 	 	 dSd5„Z<e	 	 	 dT	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dUd6„«       Z=e	 	 	 	 	 	 	 	 	 	 dVd7„«       Z=	 	 	 dW	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dXd8„Z=d9„ Z>	 	 	 	 	 	 	 	 dYd:„Z?d;„ Z@d<„ ZAd=„ ZBd>„ ZCd?„ ZDd@„ ZEdA„ ZF	 	 	 	 	 	 	 	 	 	 	 	 dZdB„ZGdC„ ZHe	 d[	 	 	 	 	 	 	 	 	 d\dD„«       ZIe	 	 	 	 	 	 	 	 	 	 d]dE„«       ZI	 	 d^	 	 	 	 	 	 	 	 	 	 	 d_dF„ZIe	 d[	 	 	 	 	 	 	 	 	 d\dG„«       ZJe	 	 	 	 	 	 	 	 	 	 d]dH„«       ZJ	 	 d^	 	 	 	 	 	 	 	 	 	 	 d_dI„ZJ G dJ„ dKej^                  e   «      ZK	 	 	 	 	 	 	 	 	 	 	 	 d`dL„ZLdM„ ZM	 	 	 	 	 	 	 	 	 	 	 	 	 	 dadN„ZNdO„ ZOdP„ ZPdQ„ ZQy)bziFunctions used by compiler.py to determine the parameters rendered
within INSERT and UPDATE statements.

é    )ÚannotationsN)ÚAny)ÚCallable)Úcast)ÚDict)ÚIterable)ÚList)ÚMutableMapping)Ú
NamedTuple)ÚOptional)Úoverload)ÚSequence)ÚSet)ÚTuple)ÚTYPE_CHECKING)ÚUnioné   )Ú	coercions)Údml)Úelements)Úroles)Ú_DefaultDescriptionTuple)Úisinsert)ÚColumnClause)Údefault_is_clause_element)Údefault_is_sequence)ÚSelect)ÚTableClauseé   )Úexc)Úutil)ÚLiteral)Ú_BindNameForColProtocol)ÚSQLCompiler)Ú_DMLColumnElement)ÚDMLState)Ú
ValuesBase)ÚColumnElement)ÚKeyedColumnElement)Ú_SQLExprDefault)ÚColumnÚREQUIREDa8  
Placeholder for the value within a :class:`.BindParameter`
which is required to be present when the statement is passed
to :meth:`_engine.Connection.execute`.

This symbol is typically used when a :func:`_expression.insert`
or :func:`_expression.update` statement is compiled without parameter
values present.

úColumnElement[Any]úColumnClause[Any]c                óV   — t        | t        «      st        j                  d| ›�«      ‚| S )Nz5Can't create DML statement against column expression )Ú
isinstancer   r    ÚCompileError)Úcs    úT/var/www/html/kelly-backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/crud.pyÚ_as_dml_columnr4   J   s0   € Ü�aœÔ&Ü×ÑØCÀAÀ5ÐIó
ð 	
ð €Hó    r*   úKeyedColumnElement[Any]c                  óL   — e Zd ZU ded<   ded<   dZded<   dZded<   d	Zd
ed<   y	)Ú_CrudParamsÚ_CrudParamSequenceÚsingle_paramsú$List[Sequence[_CrudParamElementStr]]Úall_multi_paramsFÚboolÚis_default_metavalue_onlyÚuse_insertmanyvaluesNzOptional[Sequence[Column[Any]]]Úuse_sentinel_columns)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r>   r?   r@   © r5   r3   r8   r8   j   s0   … Ø%Ó%Ø:Ó:Ø&+Ð˜tÓ+Ø!&Ð˜$Ó&Ø<@ÐÐ9Ô@r5   r8   c                ó\	  ‡— g | _         g | _        g | _        g | _        |j	                  dd«      }|�|j                  dd«       d|vsJ d«       ‚t        | ||«      \  Š}}|| _        |j                  r!|j                  rt        j                  d«      ‚|j                  r!t        | ||d|‰|dd||«       t        g g «      S | j                  €{|j                   rot        |j"                  j$                  D �cg c]E  }|j&                  s7|| j(                  j+                  |«      t-        | |dd¬«      |j.                  ff‘ŒG c}g «      S t1        |«      rP|j2                  rD|j4                  }	|	€J ‚|	d	   }
t7        |
j9                  «       «      }|
D �ch c]
  } ‰|«      ’Œ }}n‹|j:                  r2|j<                  }
|j:                  }|
€J ‚|
D �ch c]
  } ‰|«      ’Œ }}nM|j<                  r;|j<                  }
t7        |
j9                  «       «      }|
D �ch c]
  } ‰|«      ’Œ }}ndx}x}
}| j                  €i }nS|r-|€J ‚| j                  D �ci c]  }||vr ‰|«      t>        “Œ }}n$| j                  D �ci c]  } ‰|«      t>        “Œ }}g }|�tA        | |||‰||«       i }tC        jD                  |«      r|jF                  rtI        | ||||||||«	       t1        |«      r4|jJ                  r(|j2                  rJ ‚tM        | ||||‰|||||«       d
}d}ntO        | ||||‰|||||«      \  }}|rd|rbtQ        |«      jS                  ˆfd„|D «       «      jU                  |«      }|r.t        j                  ddjW                  d„ |D «       «      z  «      ‚d
}t1        |«      rJ|j2                  r>|jJ                  rJ ‚tY        | ||t[        d|«      t[        d‰«      |«      }t        ||«      S |s�| j\                  rƒ| j^                  j`                  rmtc        |j"                  j$                  d	   «      | j(                  j+                  |j"                  j$                  d	   «      | j^                  jd                  dfg}d}t        |g |||¬«      S c c}w c c}w c c}w c c}w c c}w c c}w )aQ  create a set of tuples representing column/string pairs for use
    in an INSERT or UPDATE statement.

    Also generates the Compiled object's postfetch, prefetch, and
    returning column collections, used for default handling and ultimately
    populating the CursorResult's prefetch_cols() and postfetch_cols()
    collections.

    Úvisiting_cteNÚaccumulate_bind_namesz;Don't know how to handle insert within insert without a CTEzVCan't compile statement that includes returning() and return_defaults() simultaneouslyrE   T)Úrequiredr   Fc              3  ó4   •K  — | ]  \  }} ‰|«      –— Œ y ­w©NrE   )Ú.0ÚkÚvÚ_column_as_keys      €r3   Ú	<genexpr>z#_get_crud_params.<locals>.<genexpr>K  s   øè ø€ ÐNÑ8M±°°1™.¨×+Ñ8Mùs   ƒzUnconsumed column names: %sú, c              3  ó"   K  — | ]  }|›–— Œ	 y ­wrK   rE   )rL   r2   s     r3   rP   z#_get_crud_params.<locals>.<genexpr>Q  s   è ø€ Ð8±%¨Q¡Q›[±%ùs   ‚úSequence[_CrudParamElementStr]úCallable[..., str])r>   r?   r@   )3Ú	postfetchÚinsert_prefetchÚupdate_prefetchÚimplicit_returningÚgetÚpopÚ_key_getters_for_crud_columnÚ_get_bind_name_for_colÚ
_returningÚ_return_defaultsr    r1   ÚisdeleteÚ_setup_delete_return_defaultsr8   Úcolumn_keysÚ_no_parametersÚtableÚcolumnsÚ_omit_from_statementsÚpreparerÚformat_columnÚ_create_bind_paramÚkeyÚ_compile_state_isinsertÚ_has_multi_parametersÚ_multi_parametersÚlistÚitemsÚ_ordered_valuesÚ_dict_parametersr,   Ú!_get_stmt_parameter_tuples_paramsr   ÚisupdateÚis_multitableÚ_get_update_multitable_paramsÚ_select_namesÚ_scan_insert_from_select_colsÚ
_scan_colsÚsetÚintersectionÚ
differenceÚjoinÚ_extend_values_for_multiparamsr   Úfor_executemanyÚdialectÚsupports_default_metavaluer4   Údefault_metavalue_token)ÚcompilerÚstmtÚcompile_stateÚtoplevelÚkwrG   Ú_getattr_col_keyÚ_col_bind_namer2   ÚmpÚspdÚstmt_parameter_tuplesri   Úspd_str_keyÚ
parametersÚvaluesÚcheck_columnsr?   r@   Úcheckr>   Úmulti_extended_valuesrO   s                         @r3   Ú_get_crud_paramsr‘   r   sw  ø€ ðP €HÔØ!€HÔØ!€HÔØ"$€HÔà—6‘6˜.¨$Ó/€LØÐð
 	�‰Ð&¨Ô-à rÑ)ðEàDóEØ)ô 	% X¨t°]ÓCñ	ØØØð '5€HÔ#à‡‚˜4×0Ò0Ü×Ñð/ó
ð 	
ð
 ×ÒÜ%ØØØØØØØØØØØô	
ô ˜2˜rÓ"Ð"ð ×ÑÐ#¨×(DÒ(DÜð Ÿ™×+Ò+ó	ñ ,�AØ×.Ò.ð Ø×%Ñ%×3Ñ3°AÓ6Ü& x°°DÀ4ÔHØ—U‘U�Hò	ð ,ñ	ð ó
ð 	
ô( 	  Ô.Ø×/Ò/à×,Ñ,ˆØˆ~Ðˆ~Ø�‰eˆÜ $ S§Y¡Y£[Ó 1ÐÙ69Ó:±c¨s‘~ cÕ*°cˆÑ:Ø	×	&Ò	&Ø×,Ñ,ˆØ -× =Ñ =ÐØˆÐˆÙ69Ó:±c¨s‘~ cÕ*°cˆÑ:Ø	×	'Ò	'Ø×,Ñ,ˆÜ $ S§Y¡Y£[Ó 1ÐÙ69Ó:±c¨s‘~ cÕ*°cˆÑ:à48Ð8ÐÐ8  kð ×ÑÐ#Ø‰
Ù	ØÐ&Ð&Ð&ð  ×+Ò+ó
á+�Ø˜+Ñ%ñ ˜3Ó¤Ñ)Ø+ð 	ñ 
ð 6>×5IÒ5Ió
Ù5I¨c‰N˜3Ó¤Ñ)Ð5Ið 	ð 
ð
 ')€FàÐ(Ü)ØØØØ!ØØØô	
ð 35€Mô ‡|�|�MÔ" }×'BÒ'BÜ%ØØØØ!ØØØØØô
	
ô ˜}Ô-°$×2DÒ2Dð !×6Ò6Ð6Ð6ä%ØØØØØØØØØØØô	
ð  %ÐØ#Ñä5?ØØØØØØØØØØØó6
Ñ2ÐÐ2ñ Ñ+ä�
‹Oß‰\ÓNÑ8MÓNÓNß‰Z˜Ó&ð 	ñ
 Ü×"Ñ"Ø-Ø—9‘9Ñ8±%Ó8Ó8ñ:óð ð
 !&Ðô 	  Ô.Ø×/Ò/ð ×%Ò%Ð%Ð%Ü >ØØØÜØ0Øóô Ð% ~Ó6Øó
!
Ðô ˜6Ð#8Ó9Ð9áØ×$Ò$Ø×Ñ×7Ò7ô ˜tŸz™z×1Ñ1°!Ñ4Ó5Ø×!Ñ!×/Ñ/°·
±
×0BÑ0BÀ1Ñ0EÓFØ× Ñ ×8Ñ8Øð	ð
ˆð %)Ð!äØØ
Ø";Ø1Ø1ôð ùòY	ùò4 ;ùò
 ;ùò ;ùò
ùò
s%   Ã6A
RÆRÇRÈRÉR$É:R)c                 ó   — y rK   rE   )r�   ÚcolÚvalueÚprocessrI   Únamer…   s          r3   rh   rh   „  s   € ð r5   c                 ó   — y rK   rE   )r�   r“   r”   r…   s       r3   rh   rh   �  ó   € ð r5   c                ó    — |€|j                   }t        j                  |||j                  |¬«      }d|_        |r |j
                  | fi |¤ŽS |S )N)Útype_rI   T)ri   r   ÚBindParameterÚtypeÚ_is_crudÚ_compiler_dispatch)r�   r“   r”   r•   rI   r–   r…   Ú	bindparams           r3   rh   rh   ™  sZ   € ð €|Ø�w‰wˆÜ×&Ñ&Øˆe˜3Ÿ8™8¨hô€Ið €IÔÙØ+ˆy×+Ñ+¨HÑ;¸Ñ;Ð;àÐr5   c                ó,  — d|v }|sK|j                   r?t        |j                  t        j                  «      r|| j
                  d|j                  f<   |j                  j                  r|j                  |j                  «      } |j                  | fi |¤ŽS )NrG   rŸ   )
Úuniquer0   ri   r   Ú_truncated_labelÚtruncated_namesrœ   Ú_isnullÚ_with_binary_element_typerž   )r�   r“   r”   r–   r…   Úis_ctes         r3   Ú_handle_values_anonymous_paramr§   ®  s‚   € ð( ˜rÐ!€Fñ Ø�LŠLÜ�u—y‘y¤(×";Ñ";Ô<à=Aˆ× Ñ  +¨u¯y©yÐ!9Ñ:à‡z�z×Òð ×/Ñ/°·±Ó9ˆà#ˆ5×#Ñ# HÑ3°Ñ3Ð3r5   c                óª  ‡‡— t        j                  |«      ro|j                  rct        |j                  «      Št	        j
                  t        j                  t        j                  «      Š	 	 	 	 dˆˆfd„}	 	 	 	 dˆfd„}dˆfd„}nIt	        j
                  t        j                  t        j                  «      }t        j                  d«      x}}|||fS )Nri   c                ó|   •—  ‰| «      }t        | d«      r&| j                  ‰v r| j                  j                  |fS |S )Nrc   )Úhasattrrc   r–   )ri   Ústr_keyÚ_etÚ
c_key_roles     €€r3   rO   z4_key_getters_for_crud_column.<locals>._column_as_keyè  s;   ø€ ñ ! “oˆGÜ�s˜GÔ$¨¯©°cÑ)9ØŸ	™	Ÿ™¨Ð0Ð0à�r5   c                ó|   •— | j                   ‰v r"| j                   j                  | j                  fS | j                  S rK   )rc   r–   ri   ©r“   r¬   s    €r3   r†   z6_key_getters_for_crud_column.<locals>._getattr_col_keyñ  s1   ø€ ð �y‰y˜CÑØŸ	™	Ÿ™¨¯©Ð0Ð0à—w‘w�r5   c                óÆ   •— | j                   ‰v rGt        rt        | j                   t        «      sJ ‚| j                   j                  ›d| j
                  ›�S | j
                  S )NÚ_)rc   r   r0   r   r–   ri   r¯   s    €r3   r‡   z4_key_getters_for_crud_column.<locals>._col_bind_nameù  sF   ø€ Ø�y‰y˜CÑÝ Ü% c§i¡i´Ô=Ð=Ð=Ø"%§)¡)§.£.°#·'²'Ð:Ð:à—w‘w�r5   )ri   zUnion[ColumnClause[Any], str]ÚreturnúUnion[str, Tuple[str, str]])r“   r.   r²   r³   )r“   r.   r²   Ústr)r   rr   Ú_extra_fromsrx   Ú	functoolsÚpartialr   Úexpect_as_keyr   ÚDMLColumnRoleÚoperatorÚ
attrgetter)r�   r‚   rƒ   rO   r†   r‡   r¬   r­   s         @@r3   r[   r[   Ô  sÄ   ù€ ô ‡|�|�MÔ" }×'AÒ'Aô �-×,Ñ,Ó-ˆä×&Ñ&Ü×#Ñ#¤U×%8Ñ%8ó
ˆ
ð	Ø.ð	à(ö	ð	Ø"ð	à(õ	ö	ô #×*Ñ*Ü×#Ñ#¤U×%8Ñ%8ó
ˆô -5×,?Ñ,?ÀÓ,FÐFÐ˜>àÐ+¨^Ð;Ð;r5   c           	     ó  — |j                   D �cg c]!  }|j                  j                   ||«         ‘Œ# }}| j                  d   d   |u sJ ‚|j                  | j                  d   d<   g }|j
                  r`t        |«      }|j                  j                  D ]<  }||vsŒ|j                  sŒ|j                  j                  rŒ,|j                  |«       Œ> |D ]a  } ||«      }||v rD||vr@|j                  |«       |j                  || j                  j                  |«      d df«       ŒSt        | ||||
«       Œc |r·|j                  |«       | j                  d   d   }t!        |t"        «      s/t%        j&                  ddj)                  d„ |D «       «      › d�«      ‚|j+                  «       }t-        |j.                  «      |D ��cg c]	  \  }}}}|‘Œ c}}z   |_        || j                  d   d<   y y c c}w c c}}w )	NéÿÿÿÿÚ
selectableÚinsert_from_selectrE   z_Can't extend statement for INSERT..FROM SELECT to include additional default-holding column(s) rQ   c              3  ó<   K  — | ]  \  }}}}t        |«      –— Œ y ­wrK   )Úrepr)rL   r±   ri   s      r3   rP   z0_scan_insert_from_select_cols.<locals>.<genexpr>B  s   è ø€ ÐL¹O©L¨A¨s°A°qœd 3Ÿi¹Oùs   ‚z~.  Convert the selectable to a subquery() first, or pass include_defaults=False to Insert.from_select() to skip these columns.)ru   rc   r2   ÚstackÚselectÚ#include_insert_from_select_defaultsrx   rd   ÚdefaultÚis_sentinelÚappendrZ   rf   rg   Ú&_append_param_insert_select_hasdefaultÚextendr0   r   r    r1   r{   Ú	_generaterm   Ú_raw_columns)r�   r‚   rƒ   rŒ   r†   rO   r‡   rŽ   r�   r„   r…   r–   ÚcolsÚadd_select_colsÚcol_setr“   r2   Úcol_keyÚins_from_selectr±   Úexprs                        r3   rv   rv   
  s  € ð <@×;MÒ;MÓNÑ;M°4ˆD�J‰J�L‰L™¨Ó-Ó.Ð;M€DÐNà�>‰>˜"Ñ˜lÑ+¨tÑ3Ð3Ð3à/3¯{©{€H‡N�N�2ÑÐ+Ñ,à68€OØ×/Ò/Ü�d“)ˆØ—:‘:×%Ô%ˆCð ˜7Ò"Ø—K“KØŸ™×/Ó/à—‘˜CÕ ð &ó  ˆÙ" 1Ó%ˆØ�jÑ  W°MÑ%AØ�N‰N˜7Ô#Ø�M‰M˜1˜h×/Ñ/×=Ñ=¸aÓ@À$ÈÐKÕLä2Ø˜$  ?°Bõð ñ Ø�‰�oÔ&Ø"Ÿ.™.¨Ñ,Ð-AÑBˆÜ˜/¬6Ô2Ü×"Ñ"ð8ð —I‘IÑL¹OÓLÓLððð	óð ð *×3Ñ3Ó5ˆä'+¨O×,HÑ,HÓ'IÙ&5ôM
Ù&5‘]�Q˜˜4 ŠD oòM
ñ (
ˆÔ$ð 4Cˆ�‰�rÑÐ/Ò0ð% ùòG OùódM
s   �&G7Ç
G<c                ó†  ‡— t        | |||	«      \  }}}}}}|j                  s|j                  sJ ‚|j                  r®|j                  D �cg c]
  } ||«      ‘Œ }}t	        |«      }|D �cg c]C  }t        |t        «      r1||j                  j                  v r|j                  j                  |   ‘ŒE c}|j                  j                  D �cg c]  }|j                  |vsŒ|‘Œ c}z   }n|j                  j                  }t        |«      }|r9|j                  s-|j                  j                  }| j                  j                  }nd x}}|j                   rt	        |j                   «      }n
t	        «       }| j"                  }|D �]p  } ||«      }||v r||vrt%        | |||||||||||||
«       �n&|�r|j&                  r%|r#|rt)        | ||||
«       �nt+        | ||||
«       nò|j,                  �)|j,                  j.                  r|�Ît1        | |||||
«       n½|j2                  �@|r||v r|j5                  |«       n™|j&                  s�| j6                  j5                  |«       nq|r||v r|j5                  |«       nY|j&                  rM||j                  j                  ur5|j8                  s)t;        |«       n|j                  rt=        | ||||||
«       ||v s�ŒZ||vs�Œ`|j5                  |«       �Œs |r5|j?                  |«      Š|jA                  ˆfd„|j                   D «       «       ||fS c c}w c c}w c c}w )Nc              3  ó*   •K  — | ]
  }|‰v r|–— Œ y ­wrK   rE   )rL   r2   Úremaining_supplementals     €r3   rP   z_scan_cols.<locals>.<genexpr>ý  s"   øè ø€ ð +
á1�ØÐ*Ñ*ô Ù1ùs   ƒ)!Ú_get_returning_modifiersrr   r   Ú_parameter_orderingrx   r0   r´   rc   r2   ri   rd   rj   rk   Ú_autoincrement_columnr~   Ú#insert_null_pk_still_autoincrementsÚ_supplemental_returningrX   Ú_append_param_parameterÚprimary_keyÚ!_append_param_insert_pk_returningÚ$_append_param_insert_pk_no_returningrÅ   rÆ   Ú_append_param_insert_hasdefaultÚserver_defaultrÇ   rU   ÚnullableÚ"_warn_pk_with_no_anticipated_valueÚ_append_param_updaterz   rÉ   )r�   r‚   rƒ   rŒ   r†   rO   r‡   rŽ   r�   r„   r…   Úneed_pksrX   Úimplicit_return_defaultsÚpostfetch_lastrowidr?   r@   ri   Úparameter_orderingÚordered_keysr2   rÌ   r   Úautoincrement_colrØ   Úsupplemental_returningÚcompiler_implicit_returningrÏ   rÔ   s                               @r3   rw   rw   O  s~  ø€ ô( 	! ¨4°ÀÓIñØØØ ØØØð ×!Ò! ]×%;Ò%;Ð;Ð;à×(Ò(à+8×+LÒ+Ló
Ù+L C‰N˜3ÕÐ+Lð 	ð 
ô Ð-Ó.ˆñ *ó
á)�Ü˜#œsÔ#¨¨t¯z©z¯|©|Ñ(;ð �J‰J�L‰L˜ÓØ)ñ
ð Ÿ
™
ŸšÓB™�1¨¯©°\Ò(AŠQ˜ÑBñ	C‰ð �z‰z×!Ñ!ˆä& }Ó5€HÙ˜×;Ò;ð !ŸJ™J×<Ñ<Ðà×Ñ×@Ñ@ñ 	,ð CGÐFÐÐ?à×#Ò#Ü!$ T×%AÑ%AÓ!BÑä!$£Ðà"*×"=Ñ"=Ðô
 ˆñ # 1Ó%ˆà�jÑ  W°MÑ%Aô $ØØØØØØØØ"Ø(Ø#ØØ!Ø3Øöò( ð �}Š}¡ñ
 &ô
 6Ø  $¨¨6°2öô 9Ø  $¨¨6°2õð —‘Ð&ð —y‘y×,Ò,Ø(Ð4ä3Ø  $¨Ð+CÀVÈRõð ×!Ñ!Ð-ñ ,°Ð5MÑ0MØ/×6Ñ6°qÕ9ØŸšØ×&Ñ&×-Ñ-¨aÕ0á)¨aÐ3KÑ.KØ+×2Ñ2°1Õ5ð —’Ø˜TŸZ™Z×=Ñ=Ñ=ØŸ
š
ä2°1Õ5à×#Ò#ô !ØØØØØ(ØØôð Ð'Ó'ØÐ4Ó4à'×.Ñ.¨qÖ1ðS ñV ð "8×!BÑ!BØ'ó"
Ðð 	$×*Ñ*ó +
à×1Ò1ó+
ô 	
ð& !Ð"6Ð7Ð7ùòQ
ùò
ùò Cs   ÁL4Á+AL9ÃL>Ã!L>c                ó  ‡— t        | |||	«      ^}}}}|sy |j                  r| j                  j                  |«       |j                  rDt        | j                  «      Š| j                  j                  ˆfd„|j                  D «       «       y y )Nc              3  ó,   •K  — | ]  }|‰vsŒ|–— Œ y ­wrK   rE   )rL   r2   Úir_sets     €r3   rP   z0_setup_delete_return_defaults.<locals>.<genexpr>,  s   øè ø€ ð +
Ù3�!°qÀ²ŒAÑ3ùs   ƒ	�)rÕ   Ú_return_defaults_columnsrX   rÉ   rÙ   rx   )r�   r‚   rƒ   rŒ   r†   rO   r‡   rŽ   r�   r„   r…   r±   rä   rí   s                @r3   r`   r`     sŽ   ø€ ô ,DØ�$˜ xó,Ð(€QˆÐ# añ $Øà×$Ò$Ø×#Ñ#×*Ñ*Ð+CÔDà×#Ò#Ü�X×0Ñ0Ó1ˆØ×#Ñ#×*Ñ*ó +
Ø×3Ò3ó+
õ 	
ð $r5   c                óô  — |j                  |«      }| j                  j                  ||j                  ¬«      }t	        «       }t        j                  |«      r{|r7|j                  r+||u r'|	rd| _        n|r| j                  j                  |«       t        | ||f|t        u t        |«      r|j                  s ||«      n
d ||«      z  |dœ|¤Ž}�n‘|j                  r“|rW|j                   €K|j                  r?||u r;|r| j                  j                  |«       n| j"                  j                  rd| _        t%        | ||ft        |«      r|j                  s ||«      n
d ||«      z  |dœ|¤Ž}nò | j&                  |j)                  «       fd|i|¤Ž}|j*                  r>|r ||v r| j                  j                  |«       n¡| j,                  j                  |«       n…|j                  r<|r| j                  j                  |«       n[| j"                  j                  rEd| _        n=|r ||v r| j                  j                  |«       n| j,                  j                  |«       |
j                  ||||f«       y )N©Ú	use_tableTz%s_m0)rI   r–   rH   )r–   rH   rH   )rZ   rf   rg   Úinclude_table_with_column_exprsrx   r   Ú_is_literalrÛ   rå   rX   rÇ   rh   r,   rj   rk   Ú_is_bind_parameterr”   r~   r§   r•   Ú
self_grouprr   rU   )r�   r‚   rƒ   r2   rÏ   rŒ   r‡   rX   rä   rå   r�   rè   rØ   r…   r”   Ú	col_valueÚaccumulated_bind_namess                    r3   rÚ   rÚ   1  s}  € ð  �N‰N˜7Ó#€Eà×!Ñ!×/Ñ/Ø	�]×BÑBð 0ó €Iô (+£uÐä×Ñ˜UÔ#á/Ø—’ØÐ&Ñ&ñ
 #Ø/3�Õ,Ù#Ø×+Ñ+×2Ñ2°1Ô5ä"ØØØð
ð œhÐ&ô /¨}Ô=Ø$×:Ò:ñ ˜qÔ!ð ™~¨aÓ0Ñ0à"8ñ
ð ñ
Šð 
×	!Ò	!á/Ø—‘Ð#Ø—’ØÐ&Ñ&ñ "Ø×+Ñ+×2Ñ2°1Õ5Ø×!Ñ!×5Ò5Ø/3�Ô,ä.ØØØð
ô /¨}Ô=Ø$×:Ò:ñ ˜qÔ!ð ™~¨aÓ0Ñ0à"8ñ
ð ñ
‰ð !�× Ñ Ø×ÑÓñ
à"8ð
ð ñ
ˆð ×!Ò!Ù'¨AÐ1IÑ,IØ×+Ñ+×2Ñ2°1Õ5ð ×"Ñ"×)Ñ)¨!Õ,à�}Š}Ù%Ø×/Ñ/×6Ñ6°qÕ9Ø×%Ñ%×9Ò9Ø37�HÕ0á)¨qÐ4LÑ/LØ×+Ñ+×2Ñ2°1Õ5ð ×"Ñ"×)Ñ)¨!Ô,à
‡M�M�1�i Ð(>Ð?Õ@r5   c           	     ó(  — |j                   ��­|j                   j                  r³| j                  j                  r�|j                   j                  r| j                  j
                  sUt        «       }|j                  || j                  j                  |«       | j                  |j                   fd|i|¤Ž|f«       | j                  j                  |«       y|j                   j                  r‰t        «       }|j                  || j                  j                  |«       | j                  |j                   j                  j                  «       fd|i|¤Ž|f«       | j                  j                  |«       y|j                  || j                  j                  |«      t        | |fi |¤Ž|j                   ff«       y||j"                  j$                  u s|j&                  �| j                  j                  |«       y|j(                  st+        |«       yy)z—Create a primary key expression in the INSERT statement where
    we want to populate result.inserted_primary_key and RETURNING
    is available.

    NrH   )rÅ   Úis_sequencer~   Úsupports_sequencesÚoptionalÚsequences_optionalrx   rÇ   rf   rg   r•   rX   Úis_clause_elementÚargrõ   Ú"_create_insert_prefetch_bind_paramri   rc   r×   rß   rà   rá   )r�   r‚   r2   r�   r…   r÷   s         r3   rÜ   rÜ   ¤  sÓ  € ð 	‡y�yÑØ�9‰9× Ò Ø×Ñ×2Ò2Ø—I‘I×&Ò&Ø×'Ñ'×:Ò:ä36³5Ð&Ø—‘àØ ×)Ñ)×7Ñ7¸Ó:Ø(˜×(Ñ(ØŸI™Iñà2Hðð !ñð
 /ð	ôð ×'Ñ'×.Ñ.¨qÕ1Ø�Y‰Y×(Ò(Ü%(£UÐ"Ø�M‰MàØ×%Ñ%×3Ñ3°AÓ6Ø$�H×$Ñ$ØŸ	™	Ÿ™×0Ñ0Ó2ñà.Dðð ñð
 +ð	ôð ×'Ñ'×.Ñ.¨qÕ1ð
 �M‰MàØ×%Ñ%×3Ñ3°AÓ6Ü6°xÀÑIÀbÑIØ—U‘U�Hð	õð 
ˆd�j‰j×.Ñ.Ñ	.°!×2BÑ2BÐ2NØ×#Ñ#×*Ñ*¨1Õ-Ø�ZŠZô 	+¨1Õ-ð r5   c           	     ó2  — |j                   �X|j                   j                  rÊ| j                  j                  r,|j                   j                  rž| j                  j
                  rˆ||j                  j                  u rµ| j                  j                  sŸ|j                   �,|j                   j                  r| j                  j                  s"|j                   €[| j                  j                  rE|j                  || j                  j                  |«      t        | |fi |¤Ž|j                  ff«       y|j                   €<|j                  €0|j                   s$||j                  j                  urt#        |«       y| j                  j                  rd| _        yy)ao  Create a primary key expression in the INSERT statement where
    we want to populate result.inserted_primary_key and we cannot use
    RETURNING.

    Depending on the kind of default here we may create a bound parameter
    in the INSERT statement and pre-execute a default generation function,
    or we may use cursor.lastrowid if supported by the dialect.


    NT)rÅ   rù   r~   rú   rû   rü   rc   r×   rå   Ú"preexecute_autoincrement_sequencesrÇ   rf   rg   rÿ   ri   rß   rà   rá   ©r�   r‚   r2   r�   r…   s        r3   rÝ   rÝ   á  sK  € ð 	
�	‰	Ðð —	‘	×%Ò%à× Ñ ×3Ò3àŸ	™	×*Ò*Ø#×+Ñ+×>Ò>ð 	
ˆT�Z‰Z×-Ñ-Ñ-ð × Ñ ×4Ò4ð —I‘IÐ)ØŸ	™	×-Ò-Ø ×(Ñ(×;Ò;ð —I‘IÐ%Ø ×(Ñ(×KÒKð 	�‰àØ×!Ñ!×/Ñ/°Ó2Ü2°8¸QÑEÀ"ÑEØ—‘�ð	õ	
ð 	
�	‰	ÐØ×ÑÐ$Ø—
’
Ø�T—Z‘Z×5Ñ5Ñ5ô 	+¨1Õ-Ø	×	Ñ	×	-Ò	-ð
 (,ˆÕ$ð 
.r5   c           	     ó  — |j                   j                  rä| j                  j                  rÍ|j                   j                  r| j                  j
                  s t        «       }|j                  || j                  j                  |«       | j                  |j                   fd|i|¤Ž|f«       |r ||v r| j                  j                  |«       y |j                  s| j                  j                  |«       y y y y |j                   j                  r¸t        «       }|j                  || j                  j                  |«       | j                  |j                   j                  j!                  «       fd|i|¤Ž|f«       |r ||v r| j                  j                  |«       y |j                  s| j                  j                  |«       y y |j                  || j                  j                  |«      t#        | |fi |¤Ž|j$                  ff«       y )NrH   )rÅ   rù   r~   rú   rû   rü   rx   rÇ   rf   rg   r•   rX   rÛ   rU   rý   rþ   rõ   rÿ   ri   )r�   r‚   r2   rä   r�   r…   r÷   s          r3   rÞ   rÞ   .  sâ  € ð 	‡y�y×ÒØ×Ñ×.Ò.Ø—	‘	×"Ò"¨(×*:Ñ*:×*MÒ*Mä/2«uÐ"Ø�M‰MàØ×%Ñ%×3Ñ3°AÓ6Ø$�H×$Ñ$ØŸ	™	ñà.Dðð ñð
 +ð	ôñ (¨AÐ1IÑ,IØ×+Ñ+×2Ñ2°1Õ5Ø—]’]Ø×"Ñ"×)Ñ)¨!Õ,ð #ð# +Nð /ð( 
�‰×	$Ò	$Ü!$£ÐØ�‰àØ×!Ñ!×/Ñ/°Ó2Ø �× Ñ Ø—I‘I—M‘M×,Ñ,Ó.ñà*@ðð ñð
 'ð	ô	
ñ $¨Ð-EÑ(EØ×'Ñ'×.Ñ.¨qÕ1Ø—’à×Ñ×%Ñ% aÕ(ð ð 	�‰àØ×!Ñ!×/Ñ/°Ó2Ü2°8¸QÑEÀ"ÑEØ—‘�ð	õ	
r5   c           	     óœ  — t        |j                  «      r‹| j                  j                  rt|j                  j                  r| j                  j
                  sG|j                  || j                  j                  |«      |j                  j                  «       df«       y y y t        |j                  «      rQ|j                  || j                  j                  |«      |j                  j                  j                  «       df«       y |j                  || j                  j                  |«      t        | |fddi|¤Ž|j                  ff«       y )NrE   r•   F)r   rÅ   r~   rú   rû   rü   rÇ   rf   rg   Ú
next_valuer   rþ   rõ   rÿ   ri   r  s        r3   rÈ   rÈ   e  s  € ô ˜1Ÿ9™9Ô%Ø×Ñ×.Ò.Ø—	‘	×"Ò"¨(×*:Ñ*:×*MÒ*Mà�M‰MàØ×%Ñ%×3Ñ3°AÓ6Ø—I‘I×(Ñ(Ó*Øð	õð +Nð /ô 
# 1§9¡9Ô	-Ø�‰àØ×!Ñ!×/Ñ/°Ó2Ø—	‘	—‘×(Ñ(Ó*Øð	õ	
ð 	�‰àØ×!Ñ!×/Ñ/°Ó2Ü2Ø˜añØ).ðØ24ñð —‘�ðõ		
r5   c           	     ój  — |j                   }|j                  ��|j                  j                  sþ|j                  j                  r¡|j	                  || j
                  j                  ||¬«       | j                  |j                  j                  j                  «       fi |¤Ždf«       |r ||v r| j                  j	                  |«       y | j                  j	                  |«       y |j	                  || j
                  j                  ||¬«      t        | |fi |¤Ž|j                  ff«       y |j                  �>|r ||v r| j                  j	                  |«       y | j                  j	                  |«       y |r:|j                  s|j                   s!||v r| j                  j	                  |«       y y y y )Nrð   rE   )rò   Úonupdaterù   rý   rÇ   rf   rg   r•   rþ   rõ   rX   rU   Ú"_create_update_prefetch_bind_paramri   Úserver_onupdaterî   r^   )r�   rƒ   r‚   r2   rä   r�   r…   Úinclude_tables           r3   râ   râ   Ž  s”  € ð "×AÑA€MØ‡z�zÑ a§j¡j×&<Ò&<Ø�:‰:×'Ò'Ø�M‰MàØ×%Ñ%×3Ñ3ØØ"/ð 4ó ð %�H×$Ñ$ Q§Z¡Z§^¡^×%>Ñ%>Ó%@ÑGÀBÑGØðô
ñ (¨AÐ1IÑ,IØ×+Ñ+×2Ñ2°1Õ5à×"Ñ"×)Ñ)¨!Õ,à�M‰MàØ×%Ñ%×3Ñ3ØØ"/ð 4ó ô 7°xÀÑIÀbÑIØ—U‘U�Hðõ
ð 
×	Ñ	Ð	&Ù#¨Ð-EÑ(EØ×'Ñ'×.Ñ.¨qÕ1à×Ñ×%Ñ% aÕ(á Ø×*Ò*°$×2GÒ2GØÐ)Ñ)à×#Ñ#×*Ñ*¨1Õ-ð *ð 3Hð 	!r5   c                 ó   — y rK   rE   ©r�   r2   r•   r…   s       r3   rÿ   rÿ   ¼  r˜   r5   c                 ó   — y rK   rE   r  s       r3   rÿ   rÿ   Å  ó   € ð #&r5   c                ó^   — t        | |d f||dœ|¤Ž}| j                  j                  |«       |S ©N)r•   r–   )rh   rV   rÇ   ©r�   r2   r•   r–   r…   Úparams         r3   rÿ   rÿ   Î  óB   € ô Ø�!�TðØ#*°ñØ9;ñ€Eð ×Ñ×#Ñ# AÔ&Ø€Lr5   c                 ó   — y rK   rE   r  s       r3   r  r  Ü  r˜   r5   c                 ó   — y rK   rE   r  s       r3   r  r  å  r  r5   c                ó^   — t        | |d f||dœ|¤Ž}| j                  j                  |«       |S r  )rh   rW   rÇ   r  s         r3   r  r  î  r  r5   c                  ót   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zej                  d	d„«       Z
ej                  d	d„«       Zy)
Ú_multiparam_columnTc                ó–   — || _         d|j                  |dz   fz  | _        || _        |j                  | _        |j                  | _        y )Nú%s_m%dr   )Úindexri   ÚoriginalrÅ   rœ   )Úselfr  r  s      r3   Ú__init__z_multiparam_column.__init__ÿ  sA   € ØˆŒ
Ø˜xŸ|™|¨U°Q©YÐ7Ñ7ˆŒØ ˆŒØ×'Ñ'ˆŒØ—M‘Mˆ�	r5   c                ó   — t        «       ‚rK   ©ÚNotImplementedError)r  Úotherr…   s      r3   Úcomparez_multiparam_column.compare  ó   € Ü!Ó#Ð#r5   c                ó   — t        «       ‚rK   r   )r  r…   s     r3   Ú_copy_internalsz"_multiparam_column._copy_internals	  r$  r5   c                óŽ   — t        |t        «      xr4 |j                  | j                  k(  xr |j                  | j                  k(  S rK   )r0   r  ri   r  )r  r"  s     r3   Ú__eq__z_multiparam_column.__eq__  s<   € ä�uÔ0Ó1ò 0Ø—	‘	˜TŸX™XÑ%ò0à—‘ $§-¡-Ñ/ð	
r5   c                ó@   — t        j                  | j                  «      S ©z1used by default.py -> _process_execute_defaults())r   Ú_from_column_defaultrÅ   ©r  s    r3   Ú_default_description_tuplez-_multiparam_column._default_description_tuple  s   € ô (×<Ñ<¸T¿\¹\ÓJÐJr5   c                ó@   — t        j                  | j                  «      S r*  )r   r+  r  r,  s    r3   Ú_onupdate_description_tuplez._multiparam_column._onupdate_description_tuple  s   € ô (×<Ñ<¸T¿]¹]ÓKÐKr5   N)r²   r   )rA   rB   rC   Ú_is_multiparam_columnr  r#  r&  r(  r!   Úmemoized_propertyr-  r/  rE   r5   r3   r  r  ü  sT   „ Ø Ðò"ò$ò$ò
ð 
×ÑòKó ðKð
 
×ÑòLó ñLr5   r  c                ó²  — |j                   st        j                  d|z  «      ‚t        |j                   «      r5 | j                  |j                   j
                  j                  «       fi |¤ŽS |j                   j                  r | j                  |j                   fi |¤ŽS t        ||«      }t        |t        j                  «      sJ ‚t        | |fddi|¤ŽS )Nz�INSERT value for column %s is explicitly rendered as a boundparameter in the VALUES clause; a Python-side value or SQL expression is requiredr•   T)rÅ   r    r1   r   r•   rþ   rõ   rù   r  r0   r   ÚInsertrÿ   )r�   r‚   r2   r  r…   r“   s         r3   Ú _process_multiparam_default_bindr4     sÑ   € ð �9Š9Ü×Ñð@àBCñDó
ð 	
ô
 
# 1§9¡9Ô	-Øˆx×Ñ §	¡	§¡× 8Ñ 8Ó :ÑA¸bÑAÐAØ	
�‰×	Ò	ð  ˆx×Ñ §	¡	Ñ0¨RÑ0Ð0ä   EÓ*ˆÜ˜$¤§
¡
Ô+Ð+Ð+Ü1Ø�cñ
Ø#'ð
Ø+-ñ
ð 	
r5   c	                óZ  — |xs dD �	�
ci c]*  \  }	}
t        j                  t        j                  |	«      |
“Œ, }}	}
|j                  }t        «       }|j                  D �]  }|j                  D ]ö  }	|	|v sŒ|j                  |«       |	| ||	«      <   ||	   }| j                  |	|¬«      }t        j                  |«      r+t        | |	|f|t        u  ||	«      dœ|¤Ž}|	j                  f}nf|j                  r ||	«      }t        | |	|fd|i|¤Ž}|f}n>| j                   j#                  |	«        | j                  |j%                  «       fi |¤Ž}d}|j#                  |	|||f«       Œø �Œ |D �]6  }|j                  D �]#  }	|	|v rŒ	|	j&                  �æ|	j&                  j(                  sÐ|	j&                  j*                  ru|j#                  |	| j                  |	|¬«       | j                  |	j&                  j,                  j%                  «       fi |¤Ždf«       | j                   j#                  |	«       Œ¶|j#                  |	| j                  |	|¬«      t/        | |	fd ||	«      i|¤Ž|	j                  ff«       Œû|	j0                  €�Œ	| j                   j#                  |	«       �Œ& �Œ9 y c c}
}	w )NrE   ©r
  )rI   r–   r–   )r   Úexpectr   r¹   rò   rx   rµ   r2   Úaddr•   ró   rh   r,   ri   rô   r§   rU   rÇ   rõ   r  rù   rý   rþ   r  r	  )r�   r‚   rƒ   rŠ   rŽ   r‡   r†   r�   r…   r2   r  Únormalized_paramsr
  Úaffected_tablesÚtr”   rö   r÷   Úcbns                      r3   rt   rt   A  sÑ  € ð .Ò3°Ð3ôá3‰HˆAˆuô 	×Ñœ×,Ñ,¨aÓ0°%Ñ7Ø3ð ñ ð
 "×AÑA€Mä“e€OØ×'Õ'ˆØ—”ˆAØÐ%Ò%Ø×#Ñ# AÔ&Ø56�Ñ.¨qÓ1Ñ2Ø)¨!Ñ,�à$×,Ñ,¨Q¸mÐ,ÓL�	Ü×(Ñ(¨Ô/Ü.Ø ØØðð "'¬(Ð!2Ù+¨AÓ.ñð ñ�Eð >?¿U¹U¸HÑ*Ø×-Ò-Ù(¨Ó+�CÜ:Ø  ! UñØ14ðØ8:ñ�Eð /2¨VÑ*à×&Ñ&×-Ñ-¨aÔ0Ø,˜H×,Ñ,¨U×-=Ñ-=Ó-?ÑFÀ2ÑF�EØ-/Ð*Ø—‘˜q )¨UÐ4JÐKÕLò7 ð (ô> ˆØ—•ˆAØÐ%Ñ%ØØ—‘Ð'°·
±
×0FÒ0FØ—:‘:×/Ò/Ø—M‘MàØ$×,Ñ,¨Q¸mÐ,ÓLØ,˜H×,Ñ,Ø !§
¡
§¡× 9Ñ 9Ó ;ñØ?Añð ðô	ð ×&Ñ&×-Ñ-¨aÕ0à—M‘MàØ$×,Ñ,¨Q¸mÐ,ÓLÜ>Ø (¨!ñÙ2@ÀÓ2CðØGIñð ŸU™U˜Hðõ	ð ×"Ñ"Ò.Ø×"Ñ"×)Ñ)¨!Ö,ò9 ñ ùóOs   Š/J'c           
     ó:  — |}|g}|j                   }|€J ‚t        |dd  «      D ]î  \  }	}
g }|
j                  «       D ��ci c]  \  }} ||«      |“Œ }
}}|D ]¨  \  }}}}|j                  |
v ro|j                  }t	        j
                  |
|   «      r&t        | ||
|   fdd|j                  |	dz   fz  i|¤Ž}n4 | j                  |
|   j                  «       fi |¤Ž}nt        | |||	|«      }|j                  ||||f«       Œª |j                  |«       Œð |S c c}}w )Nr   r–   r  )rl   Ú	enumeratern   ri   r   ró   rh   r•   rõ   r4  rÇ   )r�   r‚   rƒ   Úinitial_valuesrO   r…   Úvalues_0r�   rˆ   ÚiÚrowÚ	extensionri   rN   r“   Úcol_exprr  Úaccumulated_namesÚ	new_params                      r3   r|   r|   “  sT  € ð €HØÐ€Fà	×	(Ñ	(€BØˆ>Ðˆ>Ü˜B˜q˜r˜FÖ#‰ˆˆ3Ø02ˆ	à47·I±I´KÔ@±K©&¨#¨q‰~˜cÓ" AÑ%°KˆÑ@ã7?Ñ3ˆC�˜5Ð"3Ø�w‰w˜#‰~Ø—g‘g�ä×(Ñ(¨¨S©Ô2Ü 2Ø ØØ˜C™ñ!ð &¨¯©°!°a±%Ð(8Ñ8ð	!ð
 ñ!‘Ið !1 × 0Ñ 0°°S±×1DÑ1DÓ1FÑ MÈ"Ñ M‘Iä<Ø˜d C¨¨Bó�	ð ×Ñ˜c 8¨YÐ8IÐJÕKð' 8@ð* 	�‰�iÕ ð5 $ð8 €Mùó3 As   ¿Dc                ó  — |D ]û  \  }} ||«      }	|	�|j                  |	|«       Œ#| j                  ||j                  ¬«      }
t        j                  |«      r4 | j                  t        j                  d ||j                  ¬«      fi |¤Ž}n^|j                  r1|j                  j                  r|j                  |j                  «      } | j                  |j                  «       fi |¤Ž}|j                  ||
|df«       Œý y )Nr6  )rš   rE   )Ú
setdefaultr•   rò   r   ró   r   r›   rœ   rô   r¤   r¥   rõ   rÇ   )r�   rƒ   rŒ   rŠ   rO   r�   r…   rM   rN   ÚcolkeyrD  s              r3   rq   rq   ¿  só   € ó &‰ˆˆ1Ù Ó"ˆØÐØ×!Ñ! &¨!Õ,ð  ×'Ñ'Ø ×!NÑ!Nð (ó ˆHô ×$Ñ$ QÔ'Ø$�H×$Ñ$Ü×*Ñ*¨4°¸!¿&¹&ÔAñØEGñ‘ð ×'Ò'¨A¯F©F¯NªNð ×3Ñ3°A·F±FÓ;�Aà$�H×$Ñ$ Q§\¡\£^Ñ:°rÑ:�ð �M‰M˜1˜h¨¨2Ð.Õ/ñ= &r5   c                ó0  — | j                   }|xrc t        |«      xrV |j                   xrG | j                   xs |j                  xr |j
                  xr |j                   xr |j                   }|xr& |j                  xr |j                  j                  du}|xra |j                  xrS |j                  j                  xr; |j                  xr- | xs |j                  xs |j                  xs |j
                  }|rd}t        |«      rŒ|xr |j
                  }|xs |j                  xs |j                   }	|xr, | j                  xr |j"                  xr |	xs |j$                  }
d}|
rÒ|	rÐ|j&                  rÄ| j)                  |j                  «      }n¨|j*                  rE|j
                  xr2 |j                  j                  xr |j                  xr |j,                  }d}
d}nW|j.                  rE|j
                  xr2 |j                  j                  xr |j                  xr |j0                  }d}
d}nd}d}
d}|rB|j2                  s t5        |j                  j6                  «      }nt5        |j2                  «      }nd}||xs ||||
|fS )z´determines RETURNING strategy, if any, for the statement.

    This is where it's determined what we need to fetch from the
    INSERT or UPDATE statement after it's invoked.

    NF)r~   rj   Ú_inliner}   Úinsert_executemany_returningr^   r]   rk   rå   rc   r×   Úinsert_returningÚ_primary_tablerX   Ú_supports_implicit_returningÚfavor_returning_over_lastrowidrÙ   r?   Ú!use_insertmanyvalues_wo_returningÚ_sort_by_parameter_orderÚ_get_sentinel_column_for_tablerr   Úupdate_returningr_   Údelete_returningrî   rx   r2   )r�   r‚   rƒ   r„   r~   rã   rå   rX   Úshould_implicit_return_defaultsÚexplicit_returningr?   r@   rä   s                r3   rÕ   rÕ   é  sû  € ð ×Ñ€Gð 	ò 		4Ü# MÓ2ò		4à—‘Ðò		4ð ×(Ñ(Ð(ò PØ×4Ñ4ÒN¸×9NÑ9Nò		4ð —‘Ðò		4ð ×3Ñ3Ð3ð ð  	ò 	9Ø×'Ñ'ò	9à�J‰J×,Ñ,°DÐ8ð ð 	ò 	
ð ×$Ñ$ò	
ð
 ×(Ñ(×;Ñ;ò	
ð ×6Ñ6ò	
ð$ %Ð$ÒN¨×(NÑ(Nò %Ø×2Ñ2ò%à×$Ñ$ð- ñ2 Ø#Ðä˜}Ô-àÒ8 4×#8Ñ#8ð 	(ð ,ò ,Ø�‰ò,à×+Ñ+ð 	ð ò Ø×(Ñ(òà×,Ñ,òð #ÒO g×&OÑ&Oð 	ð  $Ðá Ù"Ø×-Ò-à#+×#JÑ#JØ—
‘
ó$Ñ ð 
×	Ò	à×!Ñ!ò )Ø×,Ñ,×?Ñ?ò)à×:Ñ:ò)ð ×(Ñ(ð	 	(ð  %ÐØ#ÑØ	×	Ò	à×!Ñ!ò )Ø×,Ñ,×?Ñ?ò)à×:Ñ:ò)ð ×(Ñ(ð	 	(ð  %ÐØ#Ñà*/Ð'Ø$ÐØ#Ðá&Ø×,Ò,ô (+¨4¯:©:¯<©<Ó'8Ñ$ä'*¨4×+HÑ+HÓ'IÑ$à#'Ð ð 	ØÒ=Ð=Ø ØØØðð r5   c                óø   — d| j                   j                  ›d| j                  ›d| j                   j                  ›d�}t        | j                   j                  «      dkD  r|dz  }t        j                  |«       y )NzColumn 'Ú.z6' is marked as a member of the primary key for table 'z×', but has no Python-side or server-side default generator indicated, nor does it indicate 'autoincrement=True' or 'nullable=True', and no explicit value is passed.  Primary key columns typically may not store NULL.r   a0   Note that as of SQLAlchemy 1.1, 'autoincrement=True' must be indicated explicitly for composite (e.g. multicolumn) primary keys if AUTO_INCREMENT/SERIAL/IDENTITY behavior is expected for one of the columns in the primary key. CREATE TABLE statements are impacted by this change as well on most backends.)rc   Úfullnamer–   ÚlenrÛ   r!   Úwarn)r2   Úmsgs     r3   rá   rá   r  sb   � ð �7‰7×Ó˜QŸV›V Q§W¡W×%5Ó%5ð	7ð ô ˆ1�7‰7×ÑÓ !Ò#Øðñ	
ˆô 	‡I�Iˆc…Nr5   )r2   r-   r²   r.   )r�   r$   r‚   r'   rƒ   r&   r„   r=   r…   r   r²   r8   ).FN)r�   r$   r“   r-   r”   r   r•   úLiteral[True]rI   r=   r–   úOptional[str]r…   r   r²   r´   )
r�   r$   r“   r-   r”   r   r…   r   r²   r´   )TFN)r�   r$   r“   r-   r”   r   r•   r=   rI   r=   r–   r_  r…   r   r²   z'Union[str, elements.BindParameter[Any]])r�   r$   r‚   r'   rƒ   r&   r²   z¢Tuple[Callable[[Union[str, ColumnClause[Any]]], Union[str, Tuple[str, str]]], Callable[[ColumnClause[Any]], Union[str, Tuple[str, str]]], _BindNameForColProtocol])r�   r$   r‚   r'   r2   r.   r�   zList[_CrudParamElementSQLExpr]r…   úDict[str, Any]r²   ÚNone).)
r�   r$   r2   r-   r•   r^  r…   r   r²   r´   )
r�   r$   r2   r-   r•   zLiteral[False]r…   r   r²   zelements.BindParameter[Any])TN)r�   r$   r2   r-   r•   r=   r–   r_  r…   r   r²   z'Union[elements.BindParameter[Any], str])r�   r$   r‚   r'   r2   r6   r  Úintr…   r`  r²   r´   )r�   r$   r‚   r'   rƒ   r&   r?  rS   rO   rT   r…   r`  r²   r;   )RÚ__doc__Ú
__future__r   r¶   rº   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Ú r   r   r   r   Úbaser   r   rj   r   Úschemar   r   r¾   r   r   r    r!   Úutil.typingr"   r�   r#   r$   r%   r&   r'   r(   r)   r*   r+   Úsymbolr,   r4   r´   Ú_CrudParamElementÚ_CrudParamElementStrÚ_CrudParamElementSQLExprr9   r8   r‘   rh   r§   r[   rv   rw   r`   rÚ   rÜ   rÝ   rÞ   rÈ   râ   rÿ   r  r  r4  rt   r|   rq   rÕ   rá   rE   r5   r3   Ú<module>rn     s‚  ðñõ #ã Û Ý Ý Ý Ý Ý Ý Ý !Ý Ý Ý Ý Ý Ý Ý  Ý å Ý Ý Ý Ý *Ý 4Ý "Ý -Ý 'Ý Ý #Ý Ý Ý !áÝ1Ý%Ý&ÝÝÝ'Ý,Ý'Ýàˆ4�;‰;Øð	ó€óð ØØØØˆcÐ$Ð$Ñ%ñð ˆS�MðñÐ ð ØØØØˆS�MðñÐ ð !ØØØØˆS�MðñÐ ð Ð+Ñ,Ð ôA�*ô AðOØðOà
ðOð ðOð ð	Oð
 ðOð óOðd 
ð
 !ØØðØðà	ðð ðð ð	ð
 ðð ðð ðð 	òó 
ðð 
ðØðà	ðð ðð ð	ð
 	òó 
ðð ØØðØðà	ðð ðð ð	ð
 ðð ðð ðð -óò*#4ðL3<Øð3<Ø!+ð3<Ø<Dð3<ðó3<òlBCòJA8òH
ò<pAòf:.òzJ,òZ4
ðn&
Øð&
à
ð&
ð ð&
ð +ð	&
ð
 	ð&
ð 
ó&
òR+.ð\ 
ð !ðØðàðð ðð ð	ð
 	òó 
ðð 
ð&Øð&àð&ð ð&ð ð	&ð
 !ò&ó 
ð&ð Øð	Øðàðð ðð ð	ð
 ðð -óð 
ð !ðØðàðð ðð ð	ð
 	òó 
ðð 
ð&Øð&àð&ð ð&ð ð	&ð
 !ò&ó 
ð&ð Øð	Øðàðð ðð ð	ð
 ðð -óô!L˜×/Ñ/°Ñ4ô !LðH
Øð
à
ð
ð ð
ð ð	
ð
 	ð
ð 	ó
òBO-ðd)Øð)à
ð)ð ð)ð 3ð	)ð
 'ð)ð 	ð)ð *ó)òX'0òTFóRr5   