
    +hC                       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 er$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&  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ed(d)       eed(d)       eed(d)       eed(d)      d*                             Z, ee)d(d)      	 	 	 	 	 	 d0d+       Z- ee+d(d)      	 	 	 	 	 	 d1d,       Z. ee*d(d)      	 	 	 	 	 	 d2d-       Z/	 	 	 	 	 	 	 	 	 	 	 	 	 	 d3d.Z0 ee	jB                  d(d)      	 	 	 	 	 	 d4d/       Z1y)5    )annotationsN)Any)Optional)TYPE_CHECKING)Unionschema)types   )alter_table)AlterColumn)ColumnDefault)
ColumnName)ColumnNullable)
ColumnType)format_column_name)format_server_default)DefaultImpl   )util)sqla_compat)_is_type_bound)compiles)Literal)MySQLDDLCompiler)DropConstraint)
Constraint)
TypeEngine)_ServerDefaultc                       e Zd ZdZdZej                  ddhddhfz   ZddgZ	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd	Z	 	 	 	 d fd
Z		 	 	 	 	 	 ddZ
d Zd Zd Z xZS )	MySQLImplmysqlFBOOLTINYINTJSONLONGTEXTzcharacter set ([\w\-_]+)zcollate ([\w\-_]+)c                *   t        j                  ||	      st        j                  ||	      rt        |   ||f|||||
||	d| || j                  ||n||      rD| j                  t        |||||n|||n|
|
nd||n||dur|n|	||n||dur|n|	             y ||||durD| j                  t        |||||n|||n|
|
nd||n||dur|n|	||n||dur|n|	             y |dur| j                  t        ||||             y y )N)nullabletype_r	   existing_typeexisting_nullableserver_defaultexisting_server_defaultTF)r	   newnamer(   r)   defaultautoincrementcommentr   )
r   _server_default_is_identity_server_default_is_computedsuperalter_column$_is_mysql_allowed_functional_default_execMySQLChangeColumnMySQLModifyColumnMySQLAlterDefault)self
table_namecolumn_namer(   r,   namer)   r	   r*   r-   r+   r0   existing_autoincrementr1   existing_commentkw	__class__s                   D/var/www/html/venv/lib/python3.12/site-packages/alembic/ddl/mysql.pyr5   zMySQLImpl.alter_column2   s   $ 223
443

 G  "+"3-(?  tHH&EM> 
 JJ!!$($4D+ $/ !  1< .!% $)#4%- *6 '4 )4 &3 $+%#7=M5@   (e#JJ!!$($4D+ $/ !  1< .!% $)#4%- *6 '4 )4 &3 $+%#7=M5> 5(JJ!^F )    c                p    t        |t        j                        rt        |      ry t        |   |       y N)
isinstancer	   CheckConstraintr   r4   drop_constraint)r;   constrB   s     rC   rI   zMySQLImpl.drop_constraint   s,     eV3349N&rD   c                R    |d uxr" |j                   t        j                  u xr |d uS rF   )_type_affinitysqltypesDateTime)r;   r)   r,   s      rC   r6   z.MySQLImpl._is_mysql_allowed_functional_default   s7      +$$(9(99+d*	
rD   c                |   |j                   j                  t        j                  u r |j                  r|j
                  s|s|dk(  ry|rF|j                   j                  t        j                  u r |t        j                  dd|      nd }||k7  S |rF|j                   j                  t        j                  u r t        j                  dd|      }|d| dk7  S |r|rt        j                  d|j                               }t        j                  d|j                               }|rI|sy|j                  d      |j                  d      k7  ry|j                  d	      }|j                  d	      }t        j                  d
d|j                               t        j                  d
d|j                               k7  S ||k7  S )Nz'0'Fz^'|'$ 'z(.*) (on update.*?)(?:\(\))?$Tr   r   z(.*?)(?:\(\))?$z\1)typerL   rM   Integerprimary_keyr0   resubStringmatchlowergroup)r;   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaultmetadata_defaultonupdate_insonupdate_mets           rC   compare_server_defaultz MySQLImpl.compare_server_default   s      //83C3CC ,,$22-*e3& %%448H8HH .9 x%?@ '
 .1JJJ%$$33xF!vvh4MN-15E4Fa1HHH',E 880*002L 880)//1L
 #!''*l.@.@.CC-9-?-?-B*,8,>,>q,A)66"E+E+K+K+M"E+D+J+J+L  .1JJJrD   c                2   t               }t        |      D ]  }|j                  r|j                  D ]  }|j                  |j                  k(  r.|j                  |       |j                  |j                          f|j                  D ]I  }|j                  |j                  k(  s|j                  |       |j                  |j                          n |j                  |v s   t        |      D ]"  }|j                  |v s|j                  |       $ y rF   )setlistuniquecolumnsr>   removeaddforeign_keys)	r;   conn_unique_constraintsconn_indexesmetadata_unique_constraintsmetadata_indexesremovedidxcolfks	            rC   correct_for_autogen_constraintsz)MySQLImpl.correct_for_autogen_constraints   s     %% 	Czz
 {{ 88sxx' '',KK)** Bww#((*$++C0CHH-	
 88w&	. () 	-Cxx7" '',	-rD   c                   |D ci c]  }| j                  |      j                  |  }}|D ci c]  }| j                  |      j                  |  }}t        |      j	                  |      D ]  }||   }||   }|j
                  0|j
                  j                         dk(  r|j
                  d|_        |j                  V|j                  j                         dk(  st|j                  d|_         y c c}w c c}w )NrestrictRESTRICT) _create_reflected_constraint_sigunnamed_no_options_create_metadata_constraint_sigrd   intersectionondeleterY   onupdate)	r;   conn_fksmetadata_fksrr   conn_fk_by_sigmetadata_fk_by_sigsigmdfkcnfks	            rC   correct_for_autogen_foreignkeysz)MySQLImpl.correct_for_autogen_foreignkeys!  s    
 11"5HH"L
 
 #
 004GGK
 

 ~&334FG 	+C%c*D!#&D
 )MM'')Z7MM) *)MM'')Z7MM) *#	+

s
   #C8#C=)NFNNNNNNNNFN) r<   strr=   r   r(   Optional[bool]r,   %Union[_ServerDefault, Literal[False]]r>   Optional[str]r)   Optional[TypeEngine]r	   r   r*   r   r-   zOptional[_ServerDefault]r+   r   r0   r   r?   r   r1   $Optional[Union[str, Literal[False]]]r@   r   rA   r   returnNone)rJ   r   r   r   )r)   r   r,   r   r   bool)__name__
__module____qualname____dialect__transactional_ddlr   type_synonymstype_arg_extractr5   rI   r6   rb   rs   r   __classcell__rB   s   @rC   r!   r!   (   sg   K--		1 M 45JK $(@E"&* $.2<@,0(,158=*.qq q !	q
 >q q $q q ,q ":q *q &q !/q 6q (q  !q" 
#qf'' 
'	
#	
 >	
 
		
AKF#-J+rD   r!   c                      e Zd ZdZy)MariaDBImplmariadbN)r   r   r   r    rD   rC   r   r   ?  s    KrD   r   c                  6     e Zd Z	 d	 	 	 	 	 	 	 	 	 d fdZ xZS )r:   c                L    t         t        |   ||       || _        || _        y )Nr   )r4   r   __init__r=   r/   )r;   r>   r=   r/   r	   rB   s        rC   r   zMySQLAlterDefault.__init__D  s(     	k4)$v)>&rD   rF   )
r>   r   r=   r   r/   r   r	   r   r   r   r   r   r   r   r   r   s   @rC   r:   r:   C  sB     !%		 	  		
 	 
	 	rD   r:   c                  V     e Zd Z	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZ xZS )r8   c
                    t         t        |   ||       || _        || _        || _        || _        || _        |	| _        |t        j                  d      t        j                  |      | _        y )Nr   zDAll MySQL CHANGE/MODIFY COLUMN operations require the existing type.)r4   r   r   r=   r(   r.   r/   r0   r1   r   CommandErrorrM   to_instancer)   )r;   r>   r=   r	   r.   r)   r(   r/   r0   r1   rB   s             rC   r   zMySQLChangeColumn.__init__Q  sv     	k4)$v)>& *=##- 
 ))%0
rD   )NNNNFNF)r>   r   r=   r   r	   r   r.   r   r)   r   r(   r   r/   /Optional[Union[_ServerDefault, Literal[False]]]r0   r   r1   r   r   r   r   r   s   @rC   r8   r8   P  s    
 !%!%&*#'CH(,8=11 1 	1
 1 $1 !1 A1 &1 61 
1 1rD   r8   c                      e Zd Zy)r9   N)r   r   r   r   rD   rC   r9   r9   m  s    rD   r9   r"   r   c                    t        d      )Nz9Individual alter column constructs not supported by MySQL)NotImplementedErrorelementcompilerrA   s      rC    _mysql_doesnt_support_individualr   q  s    
 C rD   c           	         t        || j                  | j                        dt        || j                        d| j
                  dt        || j
                        z  S dS )Nz ALTER COLUMN  zSET DEFAULT %szDROP DEFAULT)r   r<   r	   r   r=   r/   r   r   s      rC   _mysql_alter_defaultr   {  so    
 	Hg00'..A8W%8%89 * 4XwOO  	    	 rD   c                    t        || j                  | j                        dt        || j                        dt        || j                  | j                  | j                  | j                  | j                        S )Nz MODIFY r   r(   r,   r)   r0   r1   )r   r<   r	   r   r=   _mysql_colspecr(   r/   r)   r0   r1   r   s      rC   _mysql_modify_columnr     sf    
 	Hg00'..A8W%8%89%%"??--!//OO	
 rD   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=   r.   r   r(   r/   r)   r0   r1   r   s      rC   _mysql_change_columnr     st    
 	Hg00'..A8W%8%898W__5%%"??--!//OO	
	 rD   c                   | j                   j                  j                  |      d|rdnd}|r|dz  }|dur||dt        | |      z  z  }|r4|d| j                  j                  |t        j                               z  z  }|S )Nr   NULLzNOT NULLz AUTO_INCREMENTFz DEFAULT %sz COMMENT %s)dialecttype_compilerprocessr   sql_compilerrender_literal_valuerM   rW   )r   r(   r,   r)   r0   r1   specs          rC   r   r     s     	&&..u5
*D !!U"~'A 5h OOO 5 5 J JX__&!
 
 	
 KrD   c                <   | j                   }t        |t        j                  t        j                  t        j
                  f      r|rJ |j                  |       S t        |t        j                        r|j                  j                  rDd|j                  j                  |j                        d|j                  j                  |      S d|j                  j                  |j                        d|j                  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   rG   r	   ForeignKeyConstraintPrimaryKeyConstraintUniqueConstraintvisit_drop_constraintrH   r   
is_mariadbpreparerformat_tabletableformat_constraintr   )r   r   rA   
constraints       rC   _mysql_drop_constraintr     s     J''''##	
 v--g66	J 6 6	7 &&!!..z/?/?@!!33J?  ' !!..z/?/?@!!33J? 
 "-
 	
rD   )r   r:   r   r   r   r   )r   r9   r   r   r   r   )r   r8   r   r   r   r   )r   r   r(   r   r,   r   r)   r   r0   r   r1   r   r   r   )r   r   r   r   r   r   )2
__future__r   rU   typingr   r   r   r   
sqlalchemyr	   r
   rM   baser   r   r   r   r   r   r   r   implr   rP   r   r   util.sqla_compatr   r   r   sqlalchemy.dialects.mysql.baser   sqlalchemy.sql.ddlr   sqlalchemy.sql.schemar   sqlalchemy.sql.type_apir   r   r!   r   r:   r8   r9   r   r   r   r   r   r   r   rD   rC   <module>r      s   # 	       (        $ '    - '?102$T+ T+n) 
 
1 1:	) 	 
.'9-	*gy)	-),	*gy) * - * . 

Wi0*: 1 

Wi0*: 1" 

Wi0*: 1$ D 	
 " 2 	0 
&

)4#
#
'7#
#
 5#
rD   