File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/alembic/ddl/__pycache__/mysql.cpython-311.pyc
�
    � h$A  �                  �V  � d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z d d	lm
Z
 d
dlmZ d
dlmZ d
d
lmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  er$d dlm!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z) d
dlm*Z*  G d � d!e�  �        Z+ G d"� d#e+�  �        Z, G d$� d%e�  �        Z- G d&� d'e�  �        Z. G d(� d)e.�  �        Z/ e
ed*d+�  �         e
ed*d+�  �         e
ed*d+�  �         e
ed*d+�  �        d,� �   �         �   �         �   �         �   �         Z0 e
e-d*d+�  �        dAd2��   �         Z1 e
e/d*d+�  �        dBd3��   �         Z2 e
e.d*d+�  �        dCd4��   �         Z3dDd>�Z4 e
e	j%        d*d+�  �        dEd@��   �         Z5dS )F�    )�annotationsN)�Any)�Optional)�
TYPE_CHECKING)�Union��schema)�types)�compiles�   )�alter_table)�AlterColumn)�
ColumnDefault)�
ColumnName)�ColumnNullable)�
ColumnType)�format_column_name)�format_server_default)�DefaultImpl�   )�util)�compare)�sqla_compat)�_is_mariadb)�_is_type_bound)�Literal)�MySQLDDLCompiler)�DropConstraint)�
Constraint)�
TypeEngine)�_ServerDefaultc                  �   � � e Zd ZdZdZej        ddhddhfz   ZddgZ	 	 	 	 	 	 	 	 	 	 	 	 d,d-� fd#�
Zd.� fd&�Z	d/d(�Z
d)� Zd*� Zd+� Z
� xZS )0�	MySQLImpl�mysqlF�BOOL�TINYINT�JSON�LONGTEXTzcharacter set ([\w\-_]+)zcollate ([\w\-_]+)N�
table_name�str�column_name�nullable�Optional[bool]�server_default�%Union[_ServerDefault, Literal[False]]�name�
Optional[str]�type_�Optional[TypeEngine]r	   �
existing_type�existing_server_default�Optional[_ServerDefault]�existing_nullable�
autoincrement�existing_autoincrement�comment�$Optional[Union[str, Literal[False]]]�existing_comment�kwr   �return�Nonec                �z  �� t          j        ||	�  �        st          j        ||	�  �        r# t          �   �         j        ||f|||||
||	d�|�� |�| �                    |�|n||�  �        rM| �                    t          ||||�|n||�|n|
�|
nd|�|n||dur|n|	|�|n||
dur|
n|��	  �	        �  �         d S |�|�|�|
durM| �                    t          ||||�|n||�|n|
�|
nd|�|n||dur|n|	|�|n||
dur|
n|��	  �	        �  �         d S |dur(| �                    t          ||||��  �        �  �         d S d S )N)r,   r2   r	   r4   r7   r.   r5   TF)r	   �newnamer,   r2   �defaultr8   r:   r   )
r   �_server_default_is_identity�_server_default_is_computed�super�alter_column�$_is_mysql_allowed_functional_default�_exec�MySQLChangeColumn�MySQLModifyColumn�MySQLAlterDefault)�selfr)   r+   r,   r.   r0   r2   r	   r4   r5   r7   r8   r9   r:   r<