§
    äóÉjÄR  ã                  óz  — d dl m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 er0d 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+ dHd$„Z,dId&„Z-dJd*„Z. G d+„ d,e¦  «        Z/ G d-„ d.e/¦  «        Z0 G d/„ d0e¦  «        Z1 G d1„ d2e¦  «        Z2 G d3„ d4e2¦  «        Z3 eed5d6¦  «         eed5d6¦  «         eed5d6¦  «         eed5d6¦  «        d7„ ¦   «         ¦   «         ¦   «         ¦   «         Z4 ee1d5d6¦  «        dKd;„¦   «         Z5 ee3d5d6¦  «        dLd<„¦   «         Z6 ee2d5d6¦  «        dMd=„¦   «         Z7dNdE„Z8 eej#        d5d6¦  «        dOdG„¦   «         Z9dS )Pé    )ÚannotationsN)ÚAny)ÚTYPE_CHECKING©Úschema)Útypes)Úelements)Ú	functions)Ú	operatorsé   )Úalter_table)ÚAlterColumn)ÚColumnDefault)Ú
ColumnName)ÚColumnNullable)Ú
ColumnType)Úformat_column_name)Úformat_server_default)ÚDefaultImplé   )Úutil)Úsqla_compat)Ú_is_type_bound)Úcompiles)ÚLiteral)ÚMySQLDDLCompiler)ÚDropConstraint)ÚClauseElement)Ú
Constraint)Ú
TypeEngine)Ú_ServerDefaultArgument)Ú_ServerDefaultTypeÚdefaultú
str | NoneÚreturnc                ó6   — | €dS t          j        dd| ¦  «        S )zöStrip the quoting or parenthesis MySQL applies to a literal
    numeric server default.

    MySQL reports an integral literal default in quoted form, e.g.
    ``'1'``, and a fractional one as a parenthesized expression, e.g.
    ``(2.5)``.

    Nz^'(.*)'$|^\((.*)\)$z\1\2)ÚreÚsub©r#   s    út/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib/python3.11/site-packages/alembic/ddl/mysql.pyÚ_strip_numeric_defaultr+   +   s#   € ð €ØˆtÝŒ6Ð(¨'°7Ñ;Ô;Ð;ó    Ústrc                ó‚   — |                       ¦   «         } t          j        dd| ¦  «        } t          j        dd| ¦  «        S )aN  Normalize an expression server default for comparison.

    MySQL reports an expression default parenthesized, e.g.
    ``(rand())``, whereas MariaDB reports the same default as
    ``rand()``; MariaDB also renders a no-argument function call with
    its parenthesis, e.g. ``current_timestamp()`` vs.
    ``CURRENT_TIMESTAMP``.

    z
^\((.*)\)$z\1z\(\)$Ú )Úlowerr'   r(   r)   s    r*   Ú_normalize_expression_defaultr1   9   s8   € ð �mŠm‰oŒo€GÝŒf�] E¨7Ñ3Ô3€GÝŒ6�(˜B Ñ(Ô(Ð(r,   Útype_r    Úboolc                óz   — | j         }|duo0t          |t          j        t          j        t          j        f¦  «        S )zãReturn True for types of Integer, Numeric or Float affinity.

    :class:`sqlalchemy.Float` has ``Numeric`` affinity under SQLAlchemy
    2.0 but its own affinity under SQLAlchemy 2.1, hence all three are
    tested here.

    N)Ú_type_affinityÚ
issubclassÚsqltypesÚIntegerÚNumericÚFloat)r2   Úaffinitys     r*   Ú_is_numeric_affinityr<   H   s>   € ð Ô#€HØ˜4Ðð ¥JØ•8Ô#¥XÔ%5µx´~ÐFñ%ô %ð r,   c                  ó°   ‡ — e Zd ZdZdZej        ddhddhfz   ZddgZ	 	 d6d7ˆ fd„Zdddddddddddddœd8ˆ fd)„Z	d9ˆ fd,„Z
d:d-„Zd.„ Zd/„ Zd0„ Zd;ˆ fd5„Zˆ xZS )<Ú	MySQLImplÚmysqlFÚBOOLÚTINYINTÚJSONÚLONGTEXTzcharacter set ([\w\-_]+)zcollate ([\w\-_]+)Úexprr   Úis_server_defaultr3   Úis_indexÚkwr   r%   r-   c                óD  •— |r�t          |t          j        ¦  «        sSt          |t          j        ¦  «        r|j        t
          j        t
          j        fvst          |t          j	        ¦  «        rt          j
        |¦  «        } t          ¦   «         j        |f||dœ|¤ŽS )N)rE   rF   )Ú
isinstancer	   ÚBinaryExpressionÚUnaryExpressionÚmodifierr   Údesc_opÚasc_opr
   ÚFunctionElementÚGroupingÚsuperÚrender_ddl_sql_expr)ÚselfrD   rE   rF   rG   Ú	__class__s        €r*   rR   zMySQLImpl.render_ddl_sql_expr`   s°   ø€ ð ð 	+Ý�t�XÔ6Ñ7Ô7ð	+õ ˜4¥Ô!9Ñ:Ô:ð	+ð ”M­)Ô*;½YÔ=MÐ)NÐNÐNå˜$¥	Ô 9Ñ:Ô:ð Oõ Ô$ TÑ*Ô*ˆDà*�u‰wŒwÔ*Øð
Ø$5Àð
ð 
ØLNð
ð 
ð 	
r,   N)ÚnullableÚserver_defaultÚnamer2   r   Úexisting_typeÚexisting_server_defaultÚexisting_nullableÚautoincrementÚexisting_autoincrementÚcommentÚexisting_commentÚ
table_nameÚcolumn_namerU   úbool | NonerV   r!   rW   r$   r2   úTypeEngine | Noner   rX   rY   rZ   r[   r\   r]   ústr | Literal[False] | Noner^   ÚNonec               óz  •— t          j        ||	¦  «        st          j        ||	¦  «        r# t          ¦   «         j        ||f|||||
||	dœ|¤Ž |€|                      |�|n||¦  «        rM|                      t          ||||�|n||�|n|
�|
nd|�|n||dur|n|	|�|n||dur|n|¬¦	  «	        ¦  «         d S |€|€|€|durM|                      t          ||||�|n||�|n|
�|
nd|�|n||dur|n|	|�|n||dur|n|¬¦	  «	        ¦  «         d S |dur(|                      t          ||||¬¦  «        ¦  «         d S d S )N)rU   r2   r   rX   rZ   rV   rY   TF)r   ÚnewnamerU   r2   r#   r[   r]   r   )
r   Ú_server_default_is_identityÚ_server_default_is_computedrQ   Úalter_columnÚ$_is_mysql_allowed_functional_defaultÚ_execÚMySQLChangeColumnÚMySQLModifyColumnÚMySQLAlterDefault)rS   r_   r`   rU   rV   rW   r2   r   rX   rY   rZ   r[   r\   r]   r^   rG   rT   s                   €r*   ri   zMySQLImpl.alter_columny   sŽ  ø€ õ& Ô2ØÐ3ñ
ô 
ð 	åÔ4ØÐ3ñ
ô 
ð	ð !�E‰GŒGÔ ØØðð "ØØØ+Ø"3Ø-Ø(?ðð ð ðð ð ð Ð˜t×HÒHØÐ&ˆEˆE¨M¸>ñ 
ô  
Ðð �JŠJÝ!ØØØ!Ø$(Ð$4˜D˜D¸+ð $Ð/ð !˜ð  1Ð<ð .Ð-à!%ð $)Ð#4˜%˜%¸-ð *°Ð6Ð6ð '˜à4ð )Ð4ð &˜à3ð $+°%Ð#7Ð#7˜˜Ð=Mð5ñ ô ñô ð ð ð ð@ Ð ØÐ ØÐ(Ø˜eÐ#Ð#à�JŠJÝ!ØØØ!Ø$(Ð$4˜D˜D¸+ð $Ð/ð !˜ð  1Ð<ð .Ð-à!%ð $)Ð#4˜%˜%¸-ð *°Ð6Ð6ð '˜à4ð )Ð4ð &˜à3ð $+°%Ð#7Ð#7˜˜Ð=Mð5ñ ô ñô ð ð ð ð>  5Ð(Ð(Ø�JŠJÝ!Ø ¨^ÀFðñ ô ñô ð ð ð ð )Ð(r,   Úconstr   c                ó    •— t          |t          j        ¦  «        rt          |¦  «        rd S t	          ¦   «                              |¦  «         d S ©N)rI   r   ÚCheckConstraintr   rQ   Údrop_constraint)rS   ro   rG   rT   s      €r*   rs   zMySQLImpl.drop_constraintí   sL   ø€ õ
 �e�VÔ3Ñ4Ô4ð 	½ÈÑ9NÔ9Nð 	ØˆFå‰Œ×Ò Ñ&Ô&Ð&Ð&Ð&r,   c                ó8   — |d uo|j         t          j        u o|d uS rq   )r5   r7   ÚDateTime)rS   r2   rV   s      r*   rj   z.MySQLImpl._is_mysql_allowed_functional_default÷   s1   € ð ˜Ðð +ØÔ$­Ô(9Ð9ð+à dÐ*ð	
r,   c                óô  — |j         j        t          j        u r|j        r|j        s
|s|dk    rdS |r7t          |j         ¦  «        r#t          |¦  «        t          |¦  «        k    rdS n:|r8|j         j        t          j        u r t          j
        dd|¦  «        }|d|› d�k    S |rÎ|rÌt          j        d|                     ¦   «         ¦  «        }t          j        d|                     ¦   «         ¦  «        }|r\|sdS |                     d¦  «        |                     d¦  «        k    rdS |                     d	¦  «        }|                     d	¦  «        }t          |¦  «        t          |¦  «        k    S ||k    S )
Nz'0'Fz^'|'$r/   ú'z(.*) (on update.*?)(?:\(\))?$Tr   r   )Útyper5   r7   r8   Úprimary_keyr[   r<   r+   ÚStringr'   r(   Úmatchr0   Úgroupr1   )rS   Úinspector_columnÚmetadata_columnÚrendered_metadata_defaultÚrendered_inspector_defaultÚmetadata_defaultÚonupdate_insÚonupdate_mets           r*   Úcompare_server_defaultz MySQLImpl.compare_server_default  sï  € ð Ô Ô/µ8Ô3CÐCÐCØ Ô,ð Dà$Ô2ð Dð .ð Dð +¨eÒ3Ð3à�5Ø'ð 	IÕ,@ØÔ!ñ-
ô -
ð 	Iõ &Ø*ñô å'Ð(AÑBÔBòCð Cð �uðCð
 &ð	IàÔ$Ô3µx´ÐFÐFå!œv h°Ð4MÑNÔNÐØ-Ð1HÐ5EÐ1HÐ1HÐ1HÒHÐHà%ð 	KÐ*Cð 	Kõ œ8Ø0Ø*×0Ò0Ñ2Ô2ñô ˆLõ œ8Ø0Ø)×/Ò/Ñ1Ô1ñô ˆLð
 ð BØ#ð  Ø˜4Ø!×'Ò'¨Ñ*Ô*¨l×.@Ò.@ÀÑ.CÔ.CÒCÐCØ˜4à-9×-?Ò-?ÀÑ-BÔ-BÐ*Ø,8×,>Ò,>¸qÑ,AÔ,AÐ)å0Ø*ñô å.Ð/HÑIÔIòJð Jð .Ð1JÒJÐJr,   c                óø  — t          ¦   «         }t          |¦  «        D ]«}|j        rŒ
|j        D ]™}|j        |j        k    r1|                     |¦  «         |                     |j        ¦  «          nW|j        D ]C}|j        |j        k    r1|                     |¦  «         |                     |j        ¦  «          nŒD|j        |v r nŒšŒ¬t          |¦  «        D ] }|j        |v r|                     |¦  «         Œ!d S rq   )ÚsetÚlistÚuniqueÚcolumnsrW   ÚremoveÚaddÚforeign_keys)	rS   Úconn_unique_constraintsÚconn_indexesÚmetadata_unique_constraintsÚmetadata_indexesÚremovedÚidxÚcolÚfks	            r*   Úcorrect_for_autogen_constraintsz)MySQLImpl.correct_for_autogen_constraintsE  s3  € õ ‘%”%ˆÝ˜Ñ%Ô%ð 	ð 	ˆCØŒzð Øð
 ”{ð ð �Ø”8˜sœxÒ'Ð'Ø ×'Ò'¨Ñ,Ô,Ð,Ø—K’K ¤Ñ)Ô)Ð)Ø�EØÔ*ð ð �BØ”w #¤(Ò*Ð*Ø$×+Ò+¨CÑ0Ô0Ð0ØŸš C¤HÑ-Ô-Ð-Ø˜ð +ð ”8˜wÐ&Ð&Ø�Eð 'øõ Ð(Ñ)Ô)ð 	-ð 	-ˆCØŒx˜7Ð"Ð"Ø ×'Ò'¨Ñ,Ô,Ð,øð	-ð 	-r,   c                ór  ‡ — ˆ fd„|D ¦   «         }ˆ fd„|D ¦   «         }t          |¦  «                             |¦  «        D ]v}||         }||         }|j        �+|j                             ¦   «         dk    r|j        €d|_        |j        �+|j                             ¦   «         dk    r|j        €d|_        Œwd S )Nc                óF   •— i | ]}‰                      |¦  «        j        |“ŒS © )Ú _create_reflected_constraint_sigÚunnamed_no_options©Ú.0r”   rS   s     €r*   ú
<dictcomp>z=MySQLImpl.correct_for_autogen_foreignkeys.<locals>.<dictcomp>k  s<   ø€ ð 
ð 
ð 
àð ×1Ò1°"Ñ5Ô5ÔHÈ"ð
ð 
ð 
r,   c                óF   •— i | ]}‰                      |¦  «        j        |“ŒS r˜   )Ú_create_metadata_constraint_sigrš   r›   s     €r*   r�   z=MySQLImpl.correct_for_autogen_foreignkeys.<locals>.<dictcomp>o  s<   ø€ ð 
ð 
ð 
àð ×0Ò0°Ñ4Ô4ÔGÈð
ð 
ð 
r,   ÚrestrictÚRESTRICT)r†   ÚintersectionÚondeleter0   Úonupdate)rS   Úconn_fksÚmetadata_fksÚconn_fk_by_sigÚmetadata_fk_by_sigÚsigÚmdfkÚcnfks   `       r*   Úcorrect_for_autogen_foreignkeysz)MySQLImpl.correct_for_autogen_foreignkeysj  sý   ø€ ð
ð 
ð 
ð 
àð
ñ 
ô 
ˆð
ð 
ð 
ð 
à"ð
ñ 
ô 
Ðõ
 �~Ñ&Ô&×3Ò3Ð4FÑGÔGð 	+ð 	+ˆCØ% cÔ*ˆDØ! #Ô&ˆDð
 ”Ð)Ø”M×'Ò'Ñ)Ô)¨ZÒ7Ð7Ø”MÐ)à *�”à”Ð)Ø”M×'Ò'Ñ)Ô)¨ZÒ7Ð7Ø”MÐ)à *�”øð#	+ð 	+r,   r}   úschema.Column[Any]r~   úschema.Columnc                ó0  •— |j         }|j         }t          |t          j        ¦  «        rLt          |t          j        ¦  «        r2t	          |j        ¦  «        }t	          |j        ¦  «        }||k    rdS dS t          ¦   «                              ||¦  «        S )záOverride compare_type to properly detect MySQL native ENUM changes.

        This addresses the issue where autogenerate fails to detect when new
        values are added to or removed from MySQL native ENUM columns.
        TF)rx   rI   r7   ÚEnumr†   ÚenumsrQ   Úcompare_type)rS   r}   r~   Úmetadata_typeÚinspector_typeÚmetadata_setÚinspector_setrT   s          €r*   r²   zMySQLImpl.compare_type‡  s™   ø€ ð (Ô,ˆØ)Ô.ˆõ �m¥X¤]Ñ3Ô3ð 	½
Ø�HœMñ9
ô 9
ð 	õ ˜}Ô2Ñ3Ô3ˆLÝ Ô 4Ñ5Ô5ˆMà˜}Ò,Ð,Ø�tð �uõ ‰wŒw×#Ò#Ð$4°oÑFÔFÐFr,   )FF)
rD   r   rE   r3   rF   r3   rG   r   r%   r-   ) r_   r-   r`   r-   rU   ra   rV   r!   rW   r$   r2   rb   r   r$   rX   rb   rY   r!   rZ   ra   r[   ra   r\   ra   r]   rc   r^   r$   rG   r   r%   rd   )ro   r   rG   r   r%   rd   )r2   rb   rV   r!   r%   r3   )r}   r­   r~   r®   r%   r3   )Ú__name__Ú
__module__Ú__qualname__Ú__dialect__Útransactional_ddlr   Útype_synonymsÚtype_arg_extractrR   ri   rs   rj   r„   r•   r¬   r²   Ú__classcell__©rT   s   @r*   r>   r>   V   sk  ø€ € € € € Ø€KàÐØÔ-Ø	�ÐØ	�Ðð1ñ €Mð 4Ð5JÐKÐð
 #(Øð	
ð 
ð 
ð 
ð 
ð 
ð 
ð< !%Ø16ØØ#'Ø!Ø+/Ø:>Ø)-Ø%)Ø.2Ø/4Ø'+ð!rð rð rð rð rð rð rð rðh'ð 'ð 'ð 'ð 'ð 'ð	
ð 	
ð 	
ð 	
ðAKð AKð AKðF#-ð #-ð #-ðJ+ð +ð +ð:!Gð !Gð !Gð !Gð !Gð !Gð !Gð !Gð !Gð !Gr,   r>   c                  ó   — e Zd ZdZdS )ÚMariaDBImplÚmariadbN)r·   r¸   r¹   rº   r˜   r,   r*   rÁ   rÁ   «  s   € € € € € Ø€K€K€Kr,   rÁ   c                  ó$   ‡ — e Zd Z	 ddˆ fd„Zˆ xZS )rn   NrW   r-   r`   r#   ú_ServerDefaultType | Noner   r$   r%   rd   c                óx   •— t          t          | ¦  «                             ||¬¦  «         || _        || _        d S )Nr   )rQ   r   Ú__init__r`   r#   )rS   rW   r`   r#   r   rT   s        €r*   rÆ   zMySQLAlterDefault.__init__°  s;   ø€ õ 	�k˜4Ñ Ô ×)Ò)¨$°vÐ)Ñ>Ô>Ð>Ø&ˆÔØˆŒˆˆr,   rq   )
rW   r-   r`   r-   r#   rÄ   r   r$   r%   rd   ©r·   r¸   r¹   rÆ   r¾   r¿   s   @r*   rn   rn   ¯  sG   ø€ € € € € ð "ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r,   rn   c                  ó0   ‡ — e Zd Z	 	 	 	 	 	 	 ddˆ fd„Zˆ xZS )rl   NFrW   r-   r`   r   r$   rf   r2   rb   rU   ra   r#   r!   r[   r]   rc   r%   rd   c
                ó  •— t          t          | ¦  «                             ||¬¦  «         || _        || _        || _        || _        || _        |	| _        |€t          j
        d¦  «        ‚t          j        |¦  «        | _        d S )Nr   zDAll MySQL CHANGE/MODIFY COLUMN operations require the existing type.)rQ   r   rÆ   r`   rU   rf   r#   r[   r]   r   ÚCommandErrorr7   Úto_instancer2   )rS   rW   r`   r   rf   r2   rU   r#   r[   r]   rT   s             €r*   rÆ   zMySQLChangeColumn.__init__½  s‹   ø€ õ 	�k˜4Ñ Ô ×)Ò)¨$°vÐ)Ñ>Ô>Ð>Ø&ˆÔØ ˆŒØˆŒØˆŒØ*ˆÔØˆŒØˆ=ÝÔ#ð-ñô ð õ
 Ô)¨%Ñ0Ô0ˆŒ
ˆ
ˆ
r,   )NNNNFNF)rW   r-   r`   r-   r   r$   rf   r$   r2   rb   rU   ra   r#   r!   r[   ra   r]   rc   r%   rd   rÇ   r¿   s   @r*   rl   rl   ¼  sY   ø€ € € € € ð
 "Ø"Ø#'Ø $Ø*/Ø%)Ø/4ð1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1r,   rl   c                  ó   — e Zd ZdS )rm   N)r·   r¸   r¹   r˜   r,   r*   rm   rm   Ù  s   € € € € € Ø€Dr,   rm   r?   rÂ   c                ó    — t          d¦  «        ‚)Nz9Individual alter column constructs not supported by MySQL)ÚNotImplementedError©ÚelementÚcompilerrG   s      r*   Ú _mysql_doesnt_support_individualrÒ   Ý  s   € õ
 ØCñô ð r,   rÐ   rÑ   r   c           	     ó¬   — t          || j        | j        ¦  «        ›dt          || j        ¦  «        ›d| j        �dt          || j        ¦  «        z  nd›�S )Nz ALTER COLUMN ú zSET DEFAULT %szDROP DEFAULT)r   r_   r   r   r`   r#   r   rÏ   s      r*   Ú_mysql_alter_defaultrÕ   ç  sj   € õ
 	�H˜gÔ0°'´.ÑAÔAÐAÐAÝ˜8 WÔ%8Ñ9Ô9Ð9Ð9ð ŒÐ*ð Õ4°X¸w¼ÑOÔOÑOÐOàð ð	ð r,   c                óÆ   — t          || j        | j        ¦  «        ›dt          || j        ¦  «        ›dt          || j        | j        | j        | j	        | j
        ¬¦  «        ›�S )Nz MODIFY rÔ   ©rU   rV   r2   r[   r]   )r   r_   r   r   r`   Ú_mysql_colspecrU   r#   r2   r[   r]   rÏ   s      r*   Ú_mysql_modify_columnrÙ   ö  ss   € õ
 	�H˜gÔ0°'´.ÑAÔAÐAÐAÝ˜8 WÔ%8Ñ9Ô9Ð9Ð9ÝØØÔ%Ø"œ?Ø”-Ø!Ô/Ø”Oð	
ñ 	
ô 	
ð 	
ðð r,   c                óò   — t          || j        | j        ¦  «        ›dt          || j        ¦  «        ›dt          || j        ¦  «        ›dt          || j        | j        | j	        | j
        | j        ¬¦  «        ›�S )Nz CHANGE rÔ   r×   )r   r_   r   r   r`   rf   rØ   rU   r#   r2   r[   r]   rÏ   s      r*   Ú_mysql_change_columnrÛ     sˆ   € õ
 	�H˜gÔ0°'´.ÑAÔAÐAÐAÝ˜8 WÔ%8Ñ9Ô9Ð9Ð9Ý˜8 W¤_Ñ5Ô5Ð5Ð5ÝØØÔ%Ø"œ?Ø”-Ø!Ô/Ø”Oð	
ñ 	
ô 	
ð 	
ð	ð r,   rU   ra   rV   r!   r[   r]   rc   c                ó  — | j         j                             |¦  «        ›d|rdnd›�}|r|dz  }|dur|�|dt          | |¦  «        z  z  }|r2|d| j                             |t          j        ¦   «         ¦  «        z  z  }|S )NrÔ   ÚNULLzNOT NULLz AUTO_INCREMENTFz DEFAULT %sz COMMENT %s)ÚdialectÚtype_compilerÚprocessr   Úsql_compilerÚrender_literal_valuer7   rz   )rÑ   rU   rV   r2   r[   r]   Úspecs          r*   rØ   rØ     s¸   € ð 	ÔÔ&×.Ò.¨uÑ5Ô5Ð5Ð5ØÐ*ˆˆ 
Ð*ð€Dð ð "ØÐ!Ñ!ˆØ˜UÐ"Ð" ~Ð'AØ�Õ 5°hÀÑ OÔ OÑOÑOˆØð 
Ø� Ô 5× JÒ JØ•X”_Ñ&Ô&ñ!
ô !
ñ 
ñ 	
ˆð €Kr,   r   c                ó  — | j         }t          |t          j        t          j        t          j        f¦  «        r|rJ ‚|                     | ¦  «        S t          |t          j        ¦  «        r†|j        j	        r=d|j
                             |j        ¦  «        ›d|j
                             |¦  «        ›�S d|j
                             |j        ¦  «        ›d|j
                             |¦  «        ›�S t          d¦  «        ‚)zVRedefine SQLAlchemy's drop constraint to
    raise errors for invalid constraint type.zALTER TABLE z DROP CONSTRAINT z DROP CHECK zFNo generic 'DROP CONSTRAINT' in MySQL - please specify constraint type)rÐ   rI   r   ÚForeignKeyConstraintÚPrimaryKeyConstraintÚUniqueConstraintÚvisit_drop_constraintrr   rÞ   Ú
is_mariadbÚpreparerÚformat_tableÚtableÚformat_constraintrÎ   )rÐ   rÑ   rG   Ú
constraints       r*   Ú_mysql_drop_constraintrï   3  s  € ð ”€JÝØåÔ'ÝÔ'ÝÔ#ð	
ñô ð 
ð ˆˆˆØ×-Ò-¨gÑ6Ô6Ð6Ý	�J¥Ô 6Ñ	7Ô	7ð 
ð ÔÔ&ð 		ð 		àÔ!×.Ò.¨zÔ/?Ñ@Ô@Ð@Ð@ØÔ!×3Ò3°JÑ?Ô?Ð?ðð ð		ð Ô!×.Ò.¨zÔ/?Ñ@Ô@Ð@Ð@ØÔ!×3Ò3°JÑ?Ô?Ð?ðð õ
 "ð-ñ
ô 
ð 	
r,   )r#   r$   r%   r$   )r#   r-   r%   r-   )r2   r    r%   r3   )rÐ   rn   rÑ   r   r%   r-   )rÐ   rm   rÑ   r   r%   r-   )rÐ   rl   rÑ   r   r%   r-   )rÑ   r   rU   ra   rV   r!   r2   r    r[   ra   r]   rc   r%   r-   )rÐ   r   rÑ   r   r%   r-   ):Ú
__future__r   r'   Útypingr   r   Ú
sqlalchemyr   r   r7   Úsqlalchemy.sqlr	   r
   r   Úbaser   r   r   r   r   r   r   r   Úimplr   r/   r   r   Úutil.sqla_compatr   r   r   Úsqlalchemy.dialects.mysql.baser   Úsqlalchemy.sql.ddlr   Úsqlalchemy.sql.elementsr   Úsqlalchemy.sql.schemar   Úsqlalchemy.sql.type_apir    r!   r"   r+   r1   r<   r>   rÁ   rn   rl   rm   rÒ   rÕ   rÙ   rÛ   rØ   rï   r˜   r,   r*   ú<module>rü      s—  ðð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'àð 
)ØÐÐÐÐÐà?Ð?Ð?Ð?Ð?Ð?Ø1Ð1Ð1Ð1Ð1Ð1Ø5Ð5Ð5Ð5Ð5Ð5Ø0Ð0Ð0Ð0Ð0Ð0Ø2Ð2Ð2Ð2Ð2Ð2à,Ð,Ð,Ð,Ð,Ð,Ø(Ð(Ð(Ð(Ð(Ð(ð<ð <ð <ð <ð)ð )ð )ð )ðð ð ð ðRGð RGð RGð RGð RG�ñ RGô RGð RGðj
ð ð ð ð �)ñ ô ð ð
ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ð1ð 1ð 1ð 1ð 1˜ñ 1ô 1ð 1ð:	ð 	ð 	ð 	ð 	Ð)ñ 	ô 	ð 	ð 
€ˆ.˜' 9Ñ-Ô-Ø	€ˆ*�g˜yÑ)Ô)Ø	€ˆ-˜ )Ñ,Ô,Ø	€ˆ*�g˜yÑ)Ô)ðð ñ *Ô)ñ -Ô,ñ *Ô)ñ .Ô-ðð 
€Ð
˜W iÑ0Ô0ðð ð ñ 1Ô0ðð 
€Ð
˜W iÑ0Ô0ðð ð ñ 1Ô0ðð" 
€Ð
˜W iÑ0Ô0ðð ð ñ 1Ô0ðð$ð ð ð ð0 
€ˆ&Ô
 ¨)Ñ4Ô4ð#
ð #
ð #
ñ 5Ô4ð#
ð #
ð #
r,   