Ë
    ðmxiLè  ã                  ó,  — 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    úJ/home/htdocs/ttos/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	)Ú_CrudParamszList[_CrudParamElementStr]Ú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                óJ  ‡— 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]
  } ‰|«      ’Œ }}nK|j<                  r;|j<                  }
t7        |
j9                  «       «      }|
D �ch c]
  } ‰|«      ’Œ }}nd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        | ||||‰|||||«      \  }}|�r\|�rYtQ        |«      jS                  ˆfd„|D «       «      jU                  |«      }|�r$tC        jD                  |«      rátQ        d„ |D «       «      jU                  |jV                  g«      }|jU                  |jX                  «      }|rZ|jF                  r| jZ                  sB| jZ                  sd}nd}t        j                  |› ddj]                  d„ |D «       «      › d�«      ‚|r<| jZ                  sJ ‚t        j                  ddj]                  d„ |D «       «      › �«      ‚t        j                  ddj]                  d„ |D «       «      z  «      ‚d
}t1        |«      rJ|j2                  r>|jJ                  rJ ‚t_        | ||ta        d|«      ta        d‰«      |«      }t        ||«      S |s�| jb                  rƒ| jd                  jf                  rmti        |j"                  j$                  d	   «      | j(                  j+                  |j"                  j$                  d	   «      | jd                  jj                  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() simultaneouslyrD   T)Úrequiredr   Fc              3  ó4   •K  — | ]  \  }} ‰|«      –— Œ y ­w©NrD   )Ú.0ÚkÚvÚ_column_as_keys      €r3   ú	<genexpr>z#_get_crud_params.<locals>.<genexpr>K  s   øè ø€ ÒN±°°1™.¨×+ÑNùs   ƒc              3  ór   K  — | ]/  \  }}t        |t        «      r|j                  �|j                  –— Œ1 y ­wrJ   )r0   r   Útable)rK   r2   rM   s      r3   rO   z#_get_crud_params.<locals>.<genexpr>Q  s3   è ø€ ò 'á˜˜1Ü! !¤\Ô2°q·w±wÐ7Jð —G•Gñ'ùs   ‚57z<Backend does not support additional tables in the SET clausez/Statement is not a multi-table UPDATE statementz'; cannot include columns from table(s) ú, c              3  ó<   K  — | ]  }d |j                   › d �–— Œ y­w©ú'N©Údescription©rK   Úts     r3   rO   z#_get_crud_params.<locals>.<genexpr>l  s'   è ø€ ò &AØ*+ð )*¨!¯-©-¨¸Ô&:ñ &Aùó   ‚z in SET clausez7Multi-table UPDATE statement does not include table(s) c              3  ó<   K  — | ]  }d |j                   › d �–— Œ y­wrT   rV   rX   s     r3   rO   z#_get_crud_params.<locals>.<genexpr>w  s%   è ø€ ò &8à !ð #$ A§M¡M ?°!Ô 4ñ&8ùrZ   zUnconsumed column names: %sc              3  ó"   K  — | ]  }|›–— Œ	 y ­wrJ   rD   )rK   r2   s     r3   rO   z#_get_crud_params.<locals>.<genexpr>  s   è ø€ Ò8¨Q¡Q›[Ñ8ùs   ‚úSequence[_CrudParamElementStr]úCallable[..., str])r=   r>   r?   )6Ú	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_parametersrQ   Ú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Ú	dml_tableÚ_extra_fromsÚ'render_table_with_column_in_update_fromÚjoinÚ_extend_values_for_multiparamsr   Úfor_executemanyÚdialectÚsupports_default_metavaluer4   Údefault_metavalue_token)ÚcompilerÚstmtÚcompile_stateÚtoplevelÚkwrF   Ú_getattr_col_keyÚ_col_bind_namer2   ÚmpÚspdÚstmt_parameter_tuplesrr   Úspd_str_keyÚ
parametersÚvaluesÚcheck_columnsr>   r?   ÚcheckÚtables_mentionedÚmulti_not_in_fromÚpreambler=   Úmulti_extended_valuesrN   s                            @r3   Ú_get_crud_paramsr    r   s‹  ø€ ðP €HÔØ!€HÔØ!€HÔØ"$€HÔà—6‘6˜.¨$Ó/€LØÐð
 	�‰Ð&¨Ô-à rÑ)ðEàDóEØ)ô 	% X¨t°]ÓCñ	ØØØð '5€HÔ#à‡‚˜4×0Ò0Ü×Ñð/ó
ð 	
ð
 ×ÒÜ%ØØØØØØØØØØØô	
ô ˜2˜rÓ"Ð"ð ×ÑÐ#¨×(DÒ(DÜð Ÿ™×+Ñ+ö	ð Ø×.Ò.ð Ø×%Ñ%×3Ñ3°AÓ6Ü& x°°DÀ4ÔHØ—U‘U�Hò	ò	ð ó
ð 	
ô( 	  Ô.Ø×/Ò/à×,Ñ,ˆØˆ~Ðˆ~Ø�‰eˆÜ $ S§Y¡Y£[Ó 1ÐØ69Ö:¨s‘~ cÕ*Ð:ˆÑ:Ø	×	&Ò	&Ø×,Ñ,ˆØ -× =Ñ =ÐØˆÐˆØ69Ö:¨s‘~ cÕ*Ð:ˆÑ:Ø	×	'Ò	'Ø×,Ñ,ˆÜ $ S§Y¡Y£[Ó 1ÐØ69Ö:¨s‘~ cÕ*Ð:ˆÑ:à.2Ð2Ð ð ×ÑÐ#Ø‰
Ù	ØÐ&Ð&Ð&ð  ×+Ñ+ö
àØ˜+Ñ%ñ ˜3Ó¤Ñ)ð
ˆ
ñ 
ð 6>×5IÑ5Iö
Ø.1‰N˜3Ó¤Ñ)ð
ˆ
ð 
ð
 *,€FàÐ(Ü)ØØØØ!ØØØô	
ð 35€Mô ‡|�|�MÔ" }×'BÒ'BÜ%ØØØØ!ØØØØØô
	
ô ˜}Ô-°$×2DÒ2Dð !×6Ò6Ð6Ð6ä%ØØØØØØØØØØØô	
ð  %ÐØ#Ñä5?ØØØØØØØØØØØó6
Ñ2ÐÐ2ò Ò+ä�
‹Oß‰\ÓNÐ8MÔNÓNß‰Z˜Ó&ð 	ò
 ä�|‰|˜MÔ*Ü#&ñ 'à 5ô'ó $÷ ‘*˜m×5Ñ5Ð6Ó7ð	 !ð %5×$?Ñ$?Ø!×.Ñ.ó%Ð!ñ $Ø%×3Ò3Ø#×KÒKà#×KÒKð7ñ !ð Nð !ô ×*Ñ*Ø#˜*ð %;à ŸI™Iñ &AØ/?ô&Aó Að;ð (ð	+óð ñ 'Ø#×KÒKÐKÐKÜ×*Ñ*ð$ð !ŸI™Iñ &8à%6ô&8ó 8ððóð ô ×"Ñ"Ø-Ø—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ôð ùòu	ùò4 ;ùò
 ;ùò ;ùò
ùò
s%   Ã6A
VÆVÇVÈVÉVÉ8V c                 ó   — y rJ   rD   )r�   ÚcolÚvalueÚprocessrH   ÚnameÚforce_anonymousr‘   s           r3   rq   rq   ²  s   € ð r5   c                 ó   — y rJ   rD   )r�   r¢   r£   r‘   s       r3   rq   rq   ¿  ó   € ð r5   c                óª   — |rd }n|€|j                   }t        j                  |||j                  |¬«      }d|_        |r |j
                  | fi |¤ŽS |S )N)Útype_rH   T)rr   r   ÚBindParameterÚtypeÚ_is_crudÚ_compiler_dispatch)	r�   r¢   r£   r¤   rH   r¥   r¦   r‘   Ú	bindparams	            r3   rq   rq   È  sb   € ñ Ø‰Ø	ˆØ�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 )NrF   r¯   )
Úuniquer0   rr   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 )Nrr   c                ó|   •—  ‰| «      }t        | d«      r&| j                  ‰v r| j                  j                  |fS |S )NrQ   )ÚhasattrrQ   r¥   )rr   Ústr_keyÚ_etÚ
c_key_roles     €€r3   rN   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 rJ   )rQ   r¥   rr   ©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Ú_)rQ   r   r0   r   r¥   rr   r¿   s    €r3   r“   z4_key_getters_for_crud_column.<locals>._col_bind_name,  sF   ø€ Ø�y‰y˜CÑÝ Ü% c§i¡i´Ô=Ð=Ð=Ø"%§)¡)§.£.°#·'²'Ð:Ð:à—w‘w�r5   )rr   zUnion[ColumnClause[Any], str]ÚreturnúUnion[str, Tuple[str, str]])r¢   r.   rÂ   rÃ   )r¢   r.   rÂ   Ústr)r   r{   r…   r�   Ú	functoolsÚpartialr   Úexpect_as_keyr   ÚDMLColumnRoleÚoperatorÚ
attrgetter)r�   rŽ   r�   rN   r’   r“   r¼   r½   s         @@r3   re   re     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_selectrD   z_Can't extend statement for INSERT..FROM SELECT to include additional default-holding column(s) rR   c              3  ó<   K  — | ]  \  }}}}t        |«      –— Œ y ­wrJ   )Úrepr)rK   rÁ   rr   s      r3   rO   z0_scan_insert_from_select_cols.<locals>.<genexpr>u  s   è ø€ ÒL©L¨A¨s°A°qœd 3ŸiÑLùrZ   z~.  Convert the selectable to a subquery() first, or pass include_defaults=False to Insert.from_select() to skip these columns.)r~   rQ   r2   ÚstackÚselectÚ#include_insert_from_select_defaultsr�   rm   ÚdefaultÚis_sentinelÚappendrd   ro   rp   Ú&_append_param_insert_select_hasdefaultÚextendr0   r   r    r1   r‡   Ú	_generaterv   Ú_raw_columns)r�   rŽ   r�   r˜   r’   rN   r“   rš   r™   r�   r‘   r¥   ÚcolsÚadd_select_colsÚcol_setr¢   r2   Úcol_keyÚins_from_selectrÁ   Úexprs                        r3   r   r   =  s  € ð <@×;MÑ;MÖN°4ˆD�J‰J�L‰L™¨Ó-Ó.ÐN€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
Ù"�Q˜˜4 ŠDó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rJ   rD   )rK   r2   Úremaining_supplementals     €r3   rO   z_scan_cols.<locals>.<genexpr>0  s"   øè ø€ ò +
àØÐ*Ñ*ô ñ+
ùs   ƒ)!Ú_get_returning_modifiersr{   r   Ú_parameter_orderingr�   r0   rÄ   rQ   r2   rr   rm   rs   rt   Ú_autoincrement_columnrŠ   Ú#insert_null_pk_still_autoincrementsÚ_supplemental_returningrb   Ú_append_param_parameterÚprimary_keyÚ!_append_param_insert_pk_returningÚ$_append_param_insert_pk_no_returningrÔ   rÕ   Ú_append_param_insert_hasdefaultÚserver_defaultrÖ   r_   ÚnullableÚ"_warn_pk_with_no_anticipated_valueÚ_append_param_updaterƒ   rØ   )r�   rŽ   r�   r˜   r’   rN   r“   rš   r™   r�   r‘   Úneed_pksrb   Úimplicit_return_defaultsÚpostfetch_lastrowidr>   r?   rr   Úparameter_orderingÚordered_keysr2   rÛ   r   Úautoincrement_colrç   Úsupplemental_returningÚcompiler_implicit_returningrÞ   rã   s                               @r3   r€   r€   ‚  sz  ø€ ô( 	! ¨4°ÀÓIñØØØ ØØØð ×!Ò! ]×%;Ò%;Ð;Ð;à×(Ò(à+8×+LÑ+Lö
Ø$'‰N˜3Õð
Ðð 
ô Ð-Ó.ˆð *ö
àÜ˜#œ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Ñä!$£Ðà"*×"=Ñ"=Ðð
 ó i2ˆñ # 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i2ñ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rJ   rD   )rK   r2   Úir_sets     €r3   rO   z0_setup_delete_return_defaults.<locals>.<genexpr>_  s   øè ø€ ò +
Ø°qÀ²ŒAñ+
ùs   ƒ	�)rä   Ú_return_defaults_columnsrb   rØ   rè   r�   )r�   rŽ   r�   r˜   r’   rN   r“   rš   r™   r�   r‘   rÁ   ró   rü   s                @r3   rj   rj   F  sŽ   ø€ ô ,DØ�$˜ xó,Ð(€QˆÐ# añ $Øà×$Ò$Ø×#Ñ#×*Ñ*Ð+CÔDà×#Ò#Ü�X×0Ñ0Ó1ˆØ×#Ñ#×*Ñ*ó +
Ø×3Ñ3ô+
õ 	
ð $r5   c                ó  — |j                  |«      }|j                  d«      d u}| 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 )NrF   ©Ú	use_tableTz%s_m0)rH   r¥   rG   r¦   )r¥   rG   rG   )rd   rc   ro   rp   Úinclude_table_with_column_exprsr�   r   Ú_is_literalrê   rô   rb   rÖ   rq   r,   rs   rt   Ú_is_bind_parameterr£   rŠ   r·   r¤   Ú
self_groupr{   r_   )r�   rŽ   r�   r2   rÞ   r˜   r“   rb   ró   rô   r™   r÷   rç   r‘   r£   Úhas_visiting_cteÚ	col_valueÚaccumulated_bind_namess                     r3   ré   ré   d  s”  € ð  �N‰N˜7Ó#€Eà—v‘v˜nÓ-°TÐ9ÐØ×!Ñ!×/Ñ/Ø	�]×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.

    NrG   )rÔ   Úis_sequencerŠ   Úsupports_sequencesÚoptionalÚsequences_optionalr�   rÖ   ro   rp   r¤   rb   Úis_clause_elementÚargr  Ú"_create_insert_prefetch_bind_paramrr   rQ   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  rQ   ræ   rô   Ú"preexecute_autoincrement_sequencesrÖ   ro   rp   r  rr   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 )NrG   )rÔ   r	  rŠ   r
  r  r  r�   rÖ   ro   rp   r¤   rb   rê   r_   r  r  r  r  rr   )r�   rŽ   r2   ró   r™   r‘   r  s          r3   rí   rí   c  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 )NrD   r¤   F)r   rÔ   rŠ   r
  r  r  rÖ   ro   rp   Ú
next_valuer   r  r  r  rr   r  s        r3   r×   r×   š  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ÿ   rD   )r  Úonupdater	  r  rÖ   ro   rp   r¤   r  r  rb   r_   Ú"_create_update_prefetch_bind_paramrr   Úserver_onupdaterý   rh   )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 rJ   rD   ©r�   r2   r¤   r‘   s       r3   r  r  ñ  r¨   r5   c                 ó   — y rJ   rD   r  s       r3   r  r  ú  ó   € ð #&r5   c                ó^   — t        | |d f||dœ|¤Ž}| j                  j                  |«       |S ©N)r¤   r¥   )rq   r`   rÖ   ©r�   r2   r¤   r¥   r‘   Úparams         r3   r  r    óB   € ô Ø�!�TðØ#*°ñØ9;ñ€Eð ×Ñ×#Ñ# AÔ&Ø€Lr5   c                 ó   — y rJ   rD   r  s       r3   r  r    r¨   r5   c                 ó   — y rJ   rD   r  s       r3   r  r    r  r5   c                ó^   — t        | |d f||dœ|¤Ž}| j                  j                  |«       |S r   )rq   ra   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   )Úindexrr   ÚoriginalrÔ   r¬   )Úselfr,  r+  s      r3   Ú__init__z_multiparam_column.__init__4  sA   € ØˆŒ
Ø˜xŸ|™|¨U°Q©YÐ7Ñ7ˆŒØ ˆŒØ×'Ñ'ˆŒØ—M‘Mˆ�	r5   c                ó   — t        «       ‚rJ   ©ÚNotImplementedError)r-  Úotherr‘   s      r3   Úcomparez_multiparam_column.compare;  ó   € Ü!Ó#Ð#r5   c                ó   — t        «       ‚rJ   r0  )r-  r‘   s     r3   Ú_copy_internalsz"_multiparam_column._copy_internals>  r4  r5   c                óŽ   — t        |t        «      xr4 |j                  | j                  k(  xr |j                  | j                  k(  S rJ   )r0   r(  rr   r,  )r-  r2  s     r3   Ú__eq__z_multiparam_column.__eq__A  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_tupleH  s   € ô (×<Ñ<¸T¿\¹\ÓJÐJr5   c                ó@   — t        j                  | j                  «      S r:  )r   r;  r  r<  s    r3   Ú_onupdate_description_tuplez._multiparam_column._onupdate_description_tupleN  s   € ô (×<Ñ<¸T¿]¹]ÓKÐKr5   N)rÂ   r   )r@   rA   rB   Ú_is_multiparam_columnr.  r3  r6  r8  r!   Úmemoized_propertyr=  r?  rD   r5   r3   r(  r(  1  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_bindrD  U  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	                óê  — |xs dD �	�
ci c]*  \  }	}
t        j                  t        j                  |	«      |
“Œ, }}	}
|j                  }t        «       }|j                  D �]P  }| xr |j                  j                  |«       }|j                  D �]  }	|	|v sŒ	|r#t        j                  d|j                  › d�«      ‚|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«       �Œ �ŒS |D �]6  }|j                  D �]#  }	|	|v rŒ	|	j0                  �æ|	j0                  j2                  sÐ|	j0                  j4                  ru|j-                  |	| j                  |	|¬«       | j                  |	j0                  j6                  j/                  «       fi |¤Ždf«       | j*                  j-                  |	«       Œ¶|j-                  |	| j                  |	|¬«      t9        | |	fd ||	«      i|¤Ž|	j$                  ff«       Œû|	j:                  €�Œ	| j*                  j-                  |	«       �Œ& �Œ9 y c c}
}	w )NrD   zdBackend does not support additional tables in the SET clause; cannot include columns from table(s) 'z' in SET clause©r  )rH   r¥   r¥   )r   Úexpectr   rÈ   r  r�   r…   r„   Úis_derived_fromr2   r    r1   rW   Úaddr¤   r  rq   r,   rr   r  r·   r_   rÖ   r  r  r	  r  r  r  r  )r�   rŽ   r�   r–   rš   r“   r’   r™   r‘   r2   r"  Únormalized_paramsr  Úaffected_tablesrY   Ú$we_shouldnt_be_here_if_columns_foundr£   r  r  Úcbns                       r3   r}   r}   v  sC  € ð .Ò3°÷áˆAˆuô 	×Ñœ×,Ñ,¨aÓ0°%Ñ7ðÐñ ð
 "×AÑA€Mä“e€OØ×'Ñ'ó /Mˆð
 Ðò ?Ø!×+Ñ+×;Ñ;¸AÓ>Ð>ð 	-ð
 —‘ó &	MˆAØÐ%Ò%á7Ü×*Ñ*ðð ŸM™M˜?ð +%ð%óð ð  ×#Ñ# 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òM&	Mð/Mðf ó -ˆØ—‘ó 	-ˆ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	-ñ-ùóws   Š/K/c           	     ób  — |}|g}|j                  d«      d u}|j                  }	|	€J ‚t        |	dd  «      D ]ï  \  }
}g }|j                  «       D ��ci c]  \  }} ||«      |“Œ }}}|D ]©  \  }}}}|j                  |v rp|j                  }t        j                  ||   «      r't        | |||   fd|j                  |
dz   fz  |dœ|¤Ž}n4 | j                  ||   j                  «       fi |¤Ž}nt        | |||
|«      }|j                  ||||f«       Œ« |j                  |«       Œñ |S c c}}w )NrF   r   r*  )r¥   r¦   )rc   ru   Ú	enumeraterw   rr   r   r  rq   r¤   r  rD  rÖ   )r�   rŽ   r�   Úinitial_valuesrN   r‘   Úvalues_0r™   r  r”   ÚiÚrowÚ	extensionrr   rM   r¢   Úcol_exprr"  Úaccumulated_namesÚ	new_params                       r3   rˆ   rˆ   Ü  su  € ð €HØÐ€Fà—v‘v˜nÓ-°TÐ9ÐØ	×	(Ñ	(€BØˆ>Ðˆ>Ü˜B˜q˜r˜FÓ#ò !‰ˆˆ3Ø02ˆ	à47·I±I³K×@©&¨#¨q‰~˜cÓ" AÑ%Ð@ˆÑ@à7?ò 	LÑ3ˆC�˜5Ð"3Ø�w‰w˜#‰~Ø—g‘g�ä×(Ñ(¨¨S©Ô2Ü 2Ø ØØ˜C™ð!ð '¨#¯'©'°1°q±5Ð)9Ñ9Ø(8ñ!ð ñ!‘Ið !1 × 0Ñ 0°°S±×1DÑ1DÓ1FÑ MÈ"Ñ M‘Iä<Ø˜d C¨¨Bó�	ð ×Ñ˜c 8¨YÐ8IÐJÕKð)	Lð, 	�‰�iÕ ð7!ð: €Mùó5 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 )NrF  )rª   rD   )Ú
setdefaultr¤   r  r   r  r   r«   r¬   r  r´   rµ   r  rÖ   )r�   r�   r˜   r–   rN   r™   r‘   rL   rM   ÚcolkeyrU  s              r3   rz   rz   
  sø   € ð &ò 0‰ˆˆ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Ð.Õ/ñ=0r5   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Š   rs   Ú_inliner‰   Úinsert_executemany_returningrh   rg   rt   rô   rQ   ræ   Úinsert_returningÚ_primary_tablerb   Ú_supports_implicit_returningÚfavor_returning_over_lastrowidrè   r>   Ú!use_insertmanyvalues_wo_returningÚ_sort_by_parameter_orderÚ_get_sentinel_column_for_tabler{   Úupdate_returningri   Údelete_returningrý   r�   r2   )r�   rŽ   r�   r�   rŠ   rò   rô   rb   Úshould_implicit_return_defaultsÚexplicit_returningr>   r?   ró   s                r3   rä   rä   4  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.)rQ   Úfullnamer¥   Úlenrê   r!   Úwarn)r2   Úmsgs     r3   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   ).FNF)r�   r$   r¢   r-   r£   r   r¤   úLiteral[True]rH   r<   r¥   úOptional[str]r¦   r<   r‘   r   rÂ   rÄ   )
r�   r$   r¢   r-   r£   r   r‘   r   rÂ   rÄ   )TFNF)r�   r$   r¢   r-   r£   r   r¤   r<   rH   r<   r¥   rp  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¤   ro  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¥   rp  r‘   r   rÂ   z'Union[elements.BindParameter[Any], str])r�   r$   rŽ   r'   r2   r6   r+  Úintr‘   rq  rÂ   rÄ   )r�   r$   rŽ   r'   r�   r&   rP  r]   rN   r^   r‘   rq  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   rs   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Ú_CrudParamElementSQLExprÚ_CrudParamSequencer8   r    rq   r·   re   r   r€   rj   ré   rë   rì   rí   r×   rñ   r  r  r(  rD  r}   rˆ   rz   rä   rð   rD   r5   r3   ú<module>r€     sœ  ðñõ #ã Û Ý Ý Ý Ý Ý Ý Ý !Ý Ý Ý Ý Ý Ý Ý  Ý å Ý Ý Ý Ý *Ý 4Ý "Ý -Ý 'Ý Ý #Ý Ý Ý !áÝ1Ý%Ý&ÝÝÝ'Ý,Ý'Ýàˆ4�;‰;Øð	ó€óð ØØØØˆcÐ$Ð$Ñ%ñð ˆS�MðñÐ ð ØØØØˆS�MðñÐ ð !ØØØØˆS�MðñÐ ð Ð+Ñ,Ð ôA�*ô Að}Øð}à
ð}ð ð}ð ð	}ð
 ð}ð ó}ð@
 
ð
 !ØØØ!ð	Øð	à	ð	ð ð	ð ð		ð
 ð	ð ð	ð ð	ð ð	ð 	ò	ó 
ð	ð 
ðØðà	ðð ðð ð	ð
 	òó 
ðð ØØØ!ðØðà	ðð ðð ð	ð
 ðð ðð ðð ðð -óò2#4ðL3<Øð3<Ø!+ð3<Ø<Dð3<ðó3<òlBCòJA8òH
ò<rAòj:.òzJ,òZ4
ðn&
Øð&
à
ð&
ð ð&
ð +ð	&
ð
 	ð&
ð 
ó&
òR+.ð\ 
ð !ðØðàðð ðð ð	ð
 	òó 
ðð 
ð&Øð&àð&ð ð&ð ð	&ð
 !ò&ó 
ð&ð Øð	Øðàðð ðð ð	ð
 ðð -óð 
ð !ðØðàðð ðð ð	ð
 	òó 
ðð 
ð&Øð&àð&ð ð&ð ð	&ð
 !ò&ó 
ð&ð Øð	Øðàðð ðð ð	ð
 ðð -óô!L˜×/Ñ/°Ñ4ô !LðH
Øð
à
ð
ð ð
ð ð	
ð
 	ð
ð 	ó
òBc-ðL+Øð+à
ð+ð ð+ð 3ð	+ð
 'ð+ð 	ð+ð *ó+ò\'0òTFóRr5   