
    Pqh#A                    ,   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 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,                             Z0 ee-d*d+      	 	 	 	 	 	 d2d-       Z1 ee/d*d+      	 	 	 	 	 	 d3d.       Z2 ee.d*d+      	 	 	 	 	 	 d4d/       Z3	 	 	 	 	 	 	 	 	 	 	 	 	 	 d5d0Z4 ee	jJ                  d*d+      	 	 	 	 	 	 d6d1       Z5y)7    )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 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-   r2   existing_autoincrementr3   existing_commentkw	__class__s                   R/srv/www/ollama/chat-ollama/venv/lib/python3.12/site-packages/alembic/ddl/mysql.pyr7   zMySQLImpl.alter_column1   s   $ 223
443

 G  "+"3-(?  tHH&EM> 
 JJ!!$($4D++ & )4 +#(#4%-%U2 +0$0 #0/e+ $)'0   (e#JJ!!$($4D++ & )4 +#(#4%-%U2 +0$0 #0/e+ $)'. 5(JJ!^F )    c                p    t        |t        j                        rt        |      ry t        |   |       y N)
isinstancer	   CheckConstraintr   r6   drop_constraint)r=   constrD   s     rE   rK   zMySQLImpl.drop_constraint   s,     eV3349N&rF   c                R    |d uxr" |j                   t        j                  u xr |d uS rH   )_type_affinitysqltypesDateTime)r=   r+   r.   s      rE   r8   z.MySQLImpl._is_mysql_allowed_functional_default   s<      +$$  !+ d*		
rF   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)typerN   rO   Integerprimary_keyr2   resubStringmatchlowergroup)r=   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaultmetadata_defaultonupdate_insonupdate_mets           rE   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JrF   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 rH   )setlistuniquecolumnsr@   removeaddforeign_keys)	r=   conn_unique_constraintsconn_indexesmetadata_unique_constraintsmetadata_indexesremovedidxcolfks	            rE   correct_for_autogen_constraintsz)MySQLImpl.correct_for_autogen_constraints   s     %% 	Czz
 {{ 88sxx' '',KK)** Bww#((*$++C0CHH-	
 88w&	. () 	-Cxx7" '',	-rF   c                   |D ci c]"  }t        j                  |      j                  |$ }}|D ci c]"  }t        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)r   _fk_constraint_sigsigrf   intersectionondeleter[   onupdate)	r=   conn_fksmetadata_fksrt   conn_fk_by_sigmetadata_fk_by_sigrz   mdfkcnfks	            rE   correct_for_autogen_foreignkeysz)MySQLImpl.correct_for_autogen_foreignkeys  s   =E
79G&&r*..2
 
 >J
79G&&r*..2
 
 ~&334FG 	+C%c*D!#&D
 )MM'')Z7MM) *)MM'')Z7MM) *#	+

s
   'D 'D)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   r2   r   rA   r   r3   $Optional[Union[str, Literal[False]]]rB   r   rC   r   returnNone)rL   r   r   r   )r+   r   r.   r   r   bool)__name__
__module____qualname____dialect__transactional_ddlr   type_synonymstype_arg_extractr7   rK   r8   rd   ru   r   __classcell__rD   s   @rE   r#   r#   '   sg   K--		1 M 45JK $(@E"&* $.2<@,0(,158=*.aa a !	a
 >a a $a a ,a ":a *a &a !/a 6a (a  !a" 
#aF'' 
'

#

 >

 
	

AKF#-J+rF   r#   c                      e Zd ZdZy)MariaDBImplmariadbN)r   r   r   r    rF   rE   r   r   -  s    KrF   r   c                  6     e Zd Z	 d	 	 	 	 	 	 	 	 	 d fdZ xZS )r<   c                L    t         t        |   ||       || _        || _        y )Nr   )r6   r   __init__r?   r1   )r=   r@   r?   r1   r	   rD   s        rE   r   zMySQLAlterDefault.__init__2  s(     	k4)$v)>&rF   rH   )
r@   r   r?   r   r1   r!   r	   r   r   r   r   r   r   r   r   r   s   @rE   r<   r<   1  sB     !%		 	  		
 	 
	 	rF   r<   c                  V     e Zd Z	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZ xZS )r:   c
                    t         t        |   ||       || _        || _        || _        || _        || _        |	| _        |t        j                  d      t        j                  |      | _        y )Nr   zDAll MySQL CHANGE/MODIFY COLUMN operations require the existing type.)r6   r   r   r?   r*   r0   r1   r2   r3   r   CommandErrorrO   to_instancer+   )r=   r@   r?   r	   r0   r+   r*   r1   r2   r3   rD   s             rE   r   zMySQLChangeColumn.__init__?  sv     	k4)$v)>& *=##- 
 ))%0
rF   )NNNNFNF)r@   r   r?   r   r	   r   r0   r   r+   r   r*   r   r1   /Optional[Union[_ServerDefault, Literal[False]]]r2   r   r3   r   r   r   r   r   s   @rE   r:   r:   >  s    
 !%!%&*#'CH(,8=11 1 	1
 1 $1 !1 A1 &1 61 
1 1rF   r:   c                      e Zd Zy)r;   N)r   r   r   r   rF   rE   r;   r;   [  s    rF   r;   r$   r   c                    t        d      )Nz9Individual alter column constructs not supported by MySQL)NotImplementedErrorelementcompilerrC   s      rE    _mysql_doesnt_support_individualr   _  s    
 C rF   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?   r1   r   r   s      rE   _mysql_alter_defaultr   i  sm    
 	Hg00'..A8W%8%89??& 	07??KK 	 
 	 rF   c                    t        || j                  | j                        dt        || j                        dt        || j                  | j                  | j                  | j                  | j                        S )Nz MODIFY r   r*   r.   r+   r2   r3   )r   r>   r	   r   r?   _mysql_colspecr*   r1   r+   r2   r3   r   s      rE   _mysql_modify_columnr   v  sf    
 	Hg00'..A8W%8%89%%"??--!//OO	
 rF   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?   r0   r   r*   r1   r+   r2   r3   r   s      rE   _mysql_change_columnr     st    
 	Hg00'..A8W%8%898W__5%%"??--!//OO	
	 rF   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_valuerO   rY   )r   r*   r.   r+   r2   r3   specs          rE   r   r     s     	&&..u5
*D !!U"~'A 5h OOO 5 5 J JX__&!
 
 	
 KrF   c                :   | j                   }t        |t        j                  t        j                  t        j
                  f      r|rJ |j                  |       S t        |t        j                        rt        |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   rI   r	   ForeignKeyConstraintPrimaryKeyConstraintUniqueConstraintvisit_drop_constraintrJ   r   r   preparerformat_tabletableformat_constraintr   )r   r   rC   
constraints       rE   _mysql_drop_constraintr     s     J''''##	
 v--g66	J 6 6	7 x''(!!..z/?/?@!!33J?  ) !!..z/?/?@!!33J? 
 "-
 	
rF   )r   r<   r   r   r   r   )r   r;   r   r   r   r   )r   r:   r   r   r   r   )r   r   r*   r   r.   r   r+   r    r2   r   r3   r   r   r   )r   r   r   r   r   r   )6
__future__r   rW   typingr   r   r   r   
sqlalchemyr	   r
   rO   sqlalchemy.ext.compilerr   baser   r   r   r   r   r   r   r   implr   rR   r   autogenerater   r   util.sqla_compatr   r   r   sqlalchemy.dialects.mysql.baser   sqlalchemy.sql.ddlr   sqlalchemy.sql.schemar   sqlalchemy.sql.type_apir    r!   r#   r   r<   r:   r;   r   r   r   r   r   r   r   rF   rE   <module>r      s   " 	       ( ,        $ '   "  * -?102$C+ C+L) 
 
1 1:	) 	 
.'9-	*gy)	-),	*gy) * - * . 

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

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

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