+
    i9                       ^ 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   "wC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO\maestro-backend\venv\Lib\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^6t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   zMySQL-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__F   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.insertedE   s    @ ""***r!   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r    r'   h   s     2 2 2r!   c                	0    \        V P                  R R7      # )r-   )name)r   r   r+   s   &r   r)   Insert.inserted_aliasg   s    TZZj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'   s   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_updatek   sw    p B##K  4y1}''0  !WF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   6   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     - fd##z&)U33>D'Ef
f'ED$&\Ffd## 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tE#s(O,.>sCx.HH
r!   