+
    }¯³j‘  ã                  óÄ   € ^ 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 R]]	P"                  ],          4      tR# )é    )Úannotations)ÚAny)Úexc)Úutil)Ú	coercions)Úelements)Ú	operators)Úroles)Ú_generative)Ú
Generative)ÚSelfc                  óˆ   a € ] tR t^t$ RtRtRtR]R&   R V 3R llt]	R R	 l4       t
]	R
 R l4       t]	R R l4       tRtV ;t# )Úmatchaó  Produce a ``MATCH (X, Y) AGAINST ('TEXT')`` clause.

E.g.::

    from sqlalchemy import desc
    from sqlalchemy.dialects.mysql import match

    match_expr = match(
        users_table.c.firstname,
        users_table.c.lastname,
        against="Firstname Lastname",
    )

    stmt = (
        select(users_table)
        .where(match_expr.in_boolean_mode())
        .order_by(desc(match_expr))
    )

Would produce SQL resembling:

.. sourcecode:: sql

    SELECT id, firstname, lastname
    FROM user
    WHERE MATCH(firstname, lastname) AGAINST (:param_1 IN BOOLEAN MODE)
    ORDER BY MATCH(firstname, lastname) AGAINST (:param_2) DESC

The :func:`_mysql.match` function is a standalone version of the
:meth:`_sql.ColumnElement.match` method available on all
SQL expressions, as when :meth:`_expression.ColumnElement.match` is
used, but allows to pass multiple columns

:param cols: column expressions to match against

:param against: expression to be compared towards

:param in_boolean_mode: boolean, set "boolean mode" to true

:param in_natural_language_mode: boolean , set "natural language" to true

:param with_query_expansion: boolean, set "query expansion" to true

.. versionadded:: 1.4.19

.. seealso::

    :meth:`_expression.ColumnElement.match`

Úmysql_matchTzutil.immutabledict[str, Any]Ú	modifiersc               ó    € V ^8„  d   QhRRRR/# )é   Úcolszelements.ColumnElement[Any]Úkwr   © )Úformats   "Úe/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sqlalchemy/dialects/mysql/expression.pyÚ__annotate__Úmatch.__annotate__P   s   € ÷  Mñ  MÐ9ð  MÀñ  Mó    c                	ó’  <€ V'       g   \         P                  ! R 4      hVP                  RR4      pVf   \         P                  ! R4      h\        P                  ! \
        P                  V4      p\        P                  P                  \        P                  VR7      pRVn        \        P                  ! RVP                  RR4      RVP                  R	R4      R
VP                  RR4      /4      pV'       d-   \         P                  ! RRP                  V4      ,          4      h\         SV `E  WC\        P$                  VR7       R# )zcolumns are requiredÚagainstNzagainst is required)ÚclausesFÚmysql_boolean_modeÚin_boolean_modeÚmysql_natural_languageÚin_natural_language_modeÚmysql_query_expansionÚwith_query_expansionzunknown arguments: %sz, ©r   )r   ÚArgumentErrorÚpopr   Úexpectr
   ÚExpressionElementRoler   ÚBooleanClauseListÚ_construct_rawr	   Úcomma_opÚgroupr   ÚimmutabledictÚjoinÚsuperÚ__init__Úmatch_op)Úselfr   r   r   ÚleftÚflagsÚ	__class__s   &*,   €r   r1   Úmatch.__init__P   s  ø€ ßÜ×#Ò#Ð$:Ó;Ð;à—&‘&˜ DÓ)ˆàŠ?Ü×#Ò#Ð$9Ó:Ð:Ü×"Ò"Ü×'Ñ'Øó
ˆô
 ×)Ñ)×8Ñ8Ü×ÑØð 9ó 
ˆð ˆŒ
ä×"Ò"à$ b§f¡fÐ->ÀÓ&FØ(¨"¯&©&Ø.°ó+ð (¨¯©Ð0FÈÓ)Nðó
ˆ÷ Ü×#Ò#Ð$;¸t¿y¹yÈ»}Õ$MÓNÐNä‰Ñ˜¬	×(:Ñ(:ÀeÐÖLr   c               ó   € V ^8„  d   QhRR/# ©r   Úreturnr   r   )r   s   "r   r   r   s   s   € ÷ ñ  ñ r   c                óJ   € V P                   P                  RR/4      V n         V # )zŠApply the "IN BOOLEAN MODE" modifier to the MATCH expression.

:return: a new :class:`_mysql.match` instance with modifications
 applied.
r   T©r   Úunion©r3   s   &r   r    Úmatch.in_boolean_moder   s%   € ð Ÿ™×-Ñ-Ð/CÀTÐ.JÓKˆŒØˆr   c               ó   € V ^8„  d   QhRR/# r9   r   )r   s   "r   r   r   ~   s   € ÷ 	ñ 	¨$ñ 	r   c                óJ   € V P                   P                  RR/4      V n         V # )z“Apply the "IN NATURAL LANGUAGE MODE" modifier to the MATCH
expression.

:return: a new :class:`_mysql.match` instance with modifications
 applied.
r!   Tr<   r>   s   &r   r"   Úmatch.in_natural_language_mode}   s%   € ð Ÿ™×-Ñ-Ð/GÈÐ.NÓOˆŒØˆr   c               ó   € V ^8„  d   QhRR/# r9   r   )r   s   "r   r   r   Š   s   € ÷ ñ  dñ r   c                óJ   € V P                   P                  RR/4      V n         V # )z�Apply the "WITH QUERY EXPANSION" modifier to the MATCH expression.

:return: a new :class:`_mysql.match` instance with modifications
 applied.
r#   Tr<   r>   s   &r   r$   Úmatch.with_query_expansion‰   s%   € ð Ÿ™×-Ñ-Ð/FÈÐ.MÓNˆŒØˆr   r%   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__visit_name__Úinherit_cacheÚ__annotations__r1   r   r    r"   r$   Ú__static_attributes__Ú__classcell__)r6   s   @r   r   r      sd   ø‡ ñ1ðf #€Nà€MØ+Ó+÷ Mð  MðD ôó ðð ô	ó ð	ð ôó ör   r   N)Ú
__future__r   Útypingr   Ú r   r   Úsqlr   r   r	   r
   Úsql.baser   r   Úutil.typingr   ÚBinaryExpressionr   r   r   r   Ú<module>rW      sC   ðõ #å å Ý Ý Ý Ý Ý Ý #Ý "Ý ô{ˆJ˜×1Ñ1°#Õ6ö {r   