+
    }¯³jW  ã                  óš  € ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^R	I
Ht ^R
I
Ht ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt Rt R R lt! ! R R]4      t ! R R]4      t"]	]]]3,          ]]]#]3,          ,          ]]]3,          3,          t$R# )é    )Úannotations)ÚAny)ÚDict)ÚList)ÚMapping)ÚOptional)ÚTuple)ÚUnion)Úexc)Úutil)Ú_DMLTableArgument)Ú_exclusive_against)Ú_generative)ÚColumnCollection)ÚReadOnlyColumnCollection©ÚInsert)ÚClauseElement)ÚKeyedColumnElement)Úalias)ÚNamedFromClause)ÚSelfr   c               ó    € V ^8„  d   QhRRRR/# )é   Útabler   Úreturnr   © )Úformats   "Ú^/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sqlalchemy/dialects/mysql/dml.pyÚ__annotate__r    "   s   € ÷ ñ Ð#ð ¨ñ ó    c                ó   € \        V 4      # )a   Construct a MySQL/MariaDB-specific variant :class:`_mysql.Insert`
construct.

.. container:: inherited_member

    The :func:`sqlalchemy.dialects.mysql.insert` function creates
    a :class:`sqlalchemy.dialects.mysql.Insert`.  This class is based
    on the dialect-agnostic :class:`_sql.Insert` construct which may
    be constructed using the :func:`_sql.insert` function in
    SQLAlchemy Core.

The :class:`_mysql.Insert` construct includes additional methods
:meth:`_mysql.Insert.on_duplicate_key_update`.

r   )r   s   &r   Úinsertr#   "   s   € ô  �%‹=Ðr!   c                  ó–   € ] tR t^5tRtRtRt]R R l4       t]	P                  R R l4       t]]! RRR	/R
7      R R l4       4       tRtR# )r   zøMySQL-specific implementation of INSERT.

Adds methods for MySQL-specific syntaxes such as ON DUPLICATE KEY UPDATE.

The :class:`~.mysql.Insert` object is created using the
:func:`sqlalchemy.dialects.mysql.insert` function.

.. versionadded:: 1.2

ÚmysqlFc               ó   € V ^8„  d   QhRR/# )r   r   z6ReadOnlyColumnCollection[str, KeyedColumnElement[Any]]r   )r   s   "r   r    ÚInsert.__annotate__E   s   € ÷ +ñ +à	?ñ+r!   c                ó.   € V P                   P                  # )aï  Provide the "inserted" namespace for an ON DUPLICATE KEY UPDATE
statement

MySQL's ON DUPLICATE KEY UPDATE clause allows reference to the row
that would be inserted, via a special function called ``VALUES()``.
This attribute provides all columns in this row to be referenceable
such that they will render within a ``VALUES()`` function inside the
ON DUPLICATE KEY UPDATE clause.    The attribute is named ``.inserted``
so as not to conflict with the existing
:meth:`_expression.Insert.values` method.

.. tip::  The :attr:`_mysql.Insert.inserted` attribute is an instance
    of :class:`_expression.ColumnCollection`, which provides an
    interface the same as that of the :attr:`_schema.Table.c`
    collection described at :ref:`metadata_tables_and_columns`.
    With this collection, ordinary names are accessible like attributes
    (e.g. ``stmt.inserted.some_column``), but special names and
    dictionary method names should be accessed using indexed access,
    such as ``stmt.inserted["column name"]`` or
    ``stmt.inserted["values"]``.  See the docstring for
    :class:`_expression.ColumnCollection` for further examples.

.. seealso::

    :ref:`mysql_insert_on_duplicate_key_update` - example of how
    to use :attr:`_expression.Insert.inserted`

)Úinserted_aliasÚcolumns©Úselfs   &r   ÚinsertedÚInsert.insertedD   s   € ð@ ×"Ñ"×*Ñ*Ð*r!   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r    r'   g   s   € ÷ 2ñ 2 ñ 2r!   c                	ó0   € \        V P                  R R7      # )r-   )Úname)r   r   r+   s   &r   r)   ÚInsert.inserted_aliasf   s   € ä�T—Z‘Z jÔ1Ð1r!   Ú_post_values_clausezDThis Insert construct already has an ON DUPLICATE KEY clause present)Úmsgsc               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚargsÚ
_UpdateArgÚkwr   r   r   r   )r   s   "r   r    r'   r   s&   € ÷ Bñ B¨Zð B¸sð BÀtñ Br!   c                óü   € V'       d   V'       d   \         P                  ! R4      hV'       d1   \        V4      ^8”  d   \         P                  ! R4      hV^ ,          pMTp\        V P                  V4      V n        V # )a�  
Specifies the ON DUPLICATE KEY UPDATE clause.

:param \**kw:  Column keys linked to UPDATE values.  The
 values may be any SQL expression or supported literal Python
 values.

.. warning:: This dictionary does **not** take into account
   Python-specified default UPDATE values or generation functions,
   e.g. those specified using :paramref:`_schema.Column.onupdate`.
   These values will not be exercised for an ON DUPLICATE KEY UPDATE
   style of UPDATE, unless values are manually specified here.

:param \*args: As an alternative to passing key/value parameters,
 a dictionary or list of 2-tuples can be passed as a single positional
 argument.

 Passing a single dictionary is equivalent to the keyword argument
 form::

    insert().on_duplicate_key_update({"name": "some name"})

 Passing a list of 2-tuples indicates that the parameter assignments
 in the UPDATE clause should be ordered as sent, in a manner similar
 to that described for the :class:`_expression.Update`
 construct overall
 in :ref:`tutorial_parameter_ordered_updates`::

    insert().on_duplicate_key_update(
        [
            ("name", "some name"),
            ("value", "some value"),
        ]
    )

 .. versionchanged:: 1.3 parameters can be specified as a dictionary
    or list of 2-tuples; the latter form provides for parameter
    ordering.


.. versionadded:: 1.2

.. seealso::

    :ref:`mysql_insert_on_duplicate_key_update`

z9Can't pass kwargs and positional arguments simultaneouslyzDOnly a single dictionary or list of tuples is accepted positionally.)r   ÚArgumentErrorÚlenÚOnDuplicateClauser)   r3   )r,   r6   r8   Úvaluess   &*, r   Úon_duplicate_key_updateÚInsert.on_duplicate_key_updatej   sw   € ÷p —BÜ×#Ò#ØKóð ÷ Ü�4‹y˜1Œ}Ü×'Ò'ð0óð ð ˜!•W‰FàˆFä#4Ø×Ñ ó$
ˆÔ ð ˆr!   )r3   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ústringify_dialectÚinherit_cacheÚpropertyr-   r   Úmemoized_propertyr)   r   r   r>   Ú__static_attributes__r   r!   r   r   r   5   st   † ñ	ð  ÐØ€Màô+ó ð+ðB 
×Ñô2ó ð2ð ÙØà!ð $5ð
ôôBóó ôBr!   c                  óD   € ] tR t^·t$ RtRtR]R&   R]R&   RtR R	 ltR
t	R# )r<   r>   NzOptional[List[str]]Ú_parameter_orderingzDict[str, Any]Úupdater%   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r)   r   rL   r7   r   ÚNoner   )r   s   "r   r    ÚOnDuplicateClause.__annotate__¿   s$   € ÷ ñ Ø-ðØ7Aðà	ñr!   c                	óš  € Wn         \        V\        4      '       dL   V'       dD   \        V^ ,          \        4      '       d'   V UUu. uF  w  r4VNK	  	  uppV n        \        V4      p\        V\
        4      '       d   V'       g   \        R4      hM-\        V\        4      '       d   \        V4      pM\        R4      hW n        R# u uppi )r   z-update parameter dictionary must not be emptyztupdate parameter must be a non-empty dictionary or a ColumnCollection such as the `.c.` collection of a Table objectN)	r)   Ú
isinstanceÚlistÚtuplerK   ÚdictÚ
ValueErrorr   rL   )r,   r)   rL   ÚkeyÚvalues   &&&  r   Ú__init__ÚOnDuplicateClause.__init__¿   s«   € ð -Ôô �fœd×#Ò#ß”z &¨¥)¬U×3Ò3á>DÔ'E¹f±
°«¹fÒ'EˆDÔ$Ü˜&“\ˆFä�fœd×#Ò#ßÜ ØCóð ð ô ˜Ô 0×1Ò1Ü˜&“\‰Fäð$óð ð
 Žùó! (Fs   ÁC)rK   r)   rL   )
r@   rA   rB   rC   Ú__visit_name__rK   Ú__annotations__rE   rX   rI   r   r!   r   r<   r<   ·   s)   ‡ Ø.€Nà/3ÐÐ,Ó3àÓØÐ÷ñ r!   r<   N)r   r#   )%Ú
__future__r   Útypingr   r   r   r   r   r	   r
   Ú r   r   Úsql._typingr   Úsql.baser   r   r   r   Úsql.dmlr   ÚStandardInsertÚsql.elementsr   r   Úsql.expressionr   Úsql.selectabler   Úutil.typingr   Ú__all__r#   r<   Ústrr7   r   r!   r   Ú<module>ri      s¢   ðõ #å Ý Ý Ý Ý Ý Ý å Ý Ý ,Ý *Ý #Ý (Ý 0Ý /Ý )Ý .Ý #Ý -Ý à
€õô&ˆ^ô ôD$˜ô $ðN ØˆC�ˆHÕ�t˜E # s (�OÕ,Ð.>¸sÀC¸xÕ.HÐHõ‚
r!   