|L iGDddlmZddlZddlmZddlmZddlmZddlmZddlm Z ddlm Z dd l m Z dd l mZdd l mZd d lmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZd dlmZddlmZddlmZddlmZddlm Z er*ddlm!Z!ddl"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)dd l*m+Z+d d!lm,Z,Gd"d#eZ-Gd$d%e-Z.Gd&d'eZ/Gd(d)eZ0Gd*d+e0Z1e ed,d-e ed,d-e ed,d-e ed,d-d.Z2e e/d,d- d4d/Z3e e1d,d- d5d0Z4e e0d,d- d6d1Z5 d7d2Z6e e jJd,d- d8d3Z7y)9) annotationsN)Any)Optional) TYPE_CHECKING)Unionschema)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)_ServerDefaultc eZdZdZdZej ddhddhfzZddgZ d dfd Zd dd d d d d d d d dd d dfd Z dfd Z ddZ dZ dZ dZxZS) MySQLImplmysqlFBOOLTINYINTJSONLONGTEXTzcharacter set ([\w\-_]+)zcollate ([\w\-_]+)c L|rt|tjs`t|tjr,|jt j t jfvst|tjrtj|}t|0|f||d|S)N)is_server_defaultis_index) isinstancer BinaryExpressionUnaryExpressionmodifierr desc_opasc_opr FunctionElementGroupingsuperrender_ddl_sql_expr)selfexprr,r-kw __class__s W/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/alembic/ddl/mysql.pyr7zMySQLImpl.render_ddl_sql_expr6s  tX66 74!9!9:MM)*;*;Y=M=M)NN$ 9 9:$$T*Dw*  $5 LN  N) nullableserver_defaultnametype_r existing_typeexisting_server_defaultexisting_nullable autoincrementexisting_autoincrementcommentexisting_commentc  *tj|| stj|| rt|||f||||| || d|||j ||n||rD|j t|||||n|||n| | nd||n||dur|n| | | n| | dur| n| y||| | durD|j t|||||n|||n| | nd||n||dur|n| | | n| | dur| n| y|dur|j t||||yy)N)r>rAr rBrDr?rCTF)r newnamer>rAdefaultrErGr) r_server_default_is_identity_server_default_is_computedr6 alter_column$_is_mysql_allowed_functional_default_execMySQLChangeColumnMySQLModifyColumnMySQLAlterDefault)r8 table_name column_namer>r?r@rAr rBrCrDrErFrGrHr:r;s r<rNzMySQLImpl.alter_columnOs*  2 2 3  4 4 3 G  "+"3-(?    tHH&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 )r=c pt|tjr t|ryt||yN)r.r CheckConstraintrr6drop_constraint)r8constr:r;s r<rYzMySQLImpl.drop_constraints, eV33 49N  &r=cR|duxr"|jtjuxr|duSrW)_type_affinitysqltypesDateTime)r8rAr?s r<rOz.MySQLImpl._is_mysql_allowed_functional_defaults7   +$$(9(99 +d* r=c||jjtjur |jr|j s|s|dk(ry|rF|jjtjur |t jdd|nd}||k7S|rF|jjtjur t jdd|}|d|dk7S|r|rt jd|j}t jd|j}|rI|sy|jd|jdk7ry|jd }|jd }t jd d |jt jd d |jk7S||k7S) Nz'0'Fz^'|'$'z(.*) (on update.*?)(?:\(\))?$Trrz(.*?)(?:\(\))?$z\1) typer\r]Integer primary_keyrEresubStringmatchlowergroup)r8inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaultmetadata_default onupdate_ins onupdate_mets r<compare_server_defaultz MySQLImpl.compare_server_defaults  / /83C3C C ,,$22-*e3 & %%448H8HH.9x%?@ ' .1JJ J %$$33xF!vvh4MN -15E4Fa1HH H ',E 880*002L880)//1L #!''*l.@.@.CC-9-?-?-B*,8,>,>q,A)66"E+E+K+K+M"E+D+J+J+L  .1JJ Jr=c2t}t|D]}|jr|jD]}|j|jk(r.|j ||j |jf|jD]I}|j|jk(s|j ||j |jn|j|vst|D]"}|j|vs|j |$yrW)setlistuniquecolumnsr@removeadd foreign_keys) r8conn_unique_constraints conn_indexesmetadata_unique_constraintsmetadata_indexesremovedidxcolfks r<correct_for_autogen_constraintsz)MySQLImpl.correct_for_autogen_constraintss% % Czz {{ 88sxx' '',KK)**Bww#((*$++C0 CHH-  88w&  .() -Cxx7" '', -r=c|Dcic]}|j|j| }}|Dcic]}|j|j| }}t|j |D]}||}||}|j 0|j j dk(r|j d|_|jV|jj dk(st|jd|_ycc}wcc}w)NrestrictRESTRICT) _create_reflected_constraint_sigunnamed_no_options_create_metadata_constraint_sigrt intersectionondeleterionupdate) r8conn_fks metadata_fksrconn_fk_by_sigmetadata_fk_by_sigsigmdfkcnfks r<correct_for_autogen_foreignkeysz)MySQLImpl.correct_for_autogen_foreignkeysBs   1 1" 5 H H" L  #   0 0 4 G G K  ~&334FG +C%c*D!#&D  )MM'')Z7MM) *  )MM'')Z7MM) * # +  s #C8#C=)FF) r9r r,boolr-rr:rreturnstr) rTrrUrr>Optional[bool]r?/Optional[Union[_ServerDefault, Literal[False]]]r@ Optional[str]rAOptional[TypeEngine]r rrBrrCOptional[_ServerDefault]rDrrErrFrrG$Optional[Union[str, Literal[False]]]rHrr:rrNone)rZr!r:rrr)rArr?rrr)__name__ __module__ __qualname__ __dialect__transactional_ddlr type_synonymstype_arg_extractr7rNrYrOrrrr __classcell__r;s@r<r%r%,sK--  1M45JK #(          <$( "&* $.2<@,0(,158=*.%ttt ! t  tt$tt,t":t*t&t !/!t"6#t$(%t&'t( )tl'''  '  #  H     AKF#-J+r=r%ceZdZdZy) MariaDBImplmariadbN)rrrrr=r<rr`sKr=rc6eZdZ d dfd ZxZS)rScLtt| ||||_||_y)Nr)r6r__init__rUrK)r8r@rUrKr r;s r<rzMySQLAlterDefault.__init__es( k4)$v)>& r=rW) r@rrUrrKrr rrrrrrrrrs@r<rSrSdsB !%   *      r=rScVeZdZ d dfd ZxZS)rQc tt| ||||_||_||_||_||_| |_|tjdtj||_ y)NrzDAll MySQL CHANGE/MODIFY COLUMN operations require the existing type.)r6rrrUr>rJrKrErGr CommandErrorr] to_instancerA) r8r@rUr rJrAr>rKrErGr;s r<rzMySQLChangeColumn.__init__rsv k4)$v)>&    * =##-  ))%0 r=)NNNNFNF)r@rrUrr rrJrrArr>rrKrrErrGrrrrrs@r<rQrQqs !%!%&*#'CH(,8=111 1  1 $ 1!1A1&161 11r=rQc eZdZy)rRN)rrrrr=r<rRrRsr=rRr&rc td)Nz9Individual alter column constructs not supported by MySQL)NotImplementedErrorelementcompilerr:s r< _mysql_doesnt_support_individualrs C r=c t||j|jdt||jd|j dt ||j zSdS)Nz ALTER COLUMN  zSET DEFAULT %sz DROP DEFAULT)rrTr rrUrKrrs r<_mysql_alter_defaultrso Hg00'..A8W%8%89* 4XwO O      r=c t||j|jdt||jdt ||j |j|j|j|jS)Nz MODIFY rr>r?rArErG) rrTr rrU_mysql_colspecr>rKrArErGrs r<_mysql_modify_columnrsf Hg00'..A8W%8%89 %%"??--!//OO    r=c ,t||j|jdt||jdt||j dt ||j|j|j|j|jS)Nz CHANGE rr) rrTr rrUrJrr>rKrArErGrs r<_mysql_change_columnrst Hg00'..A8W%8%898W__5 %%"??--!//OO   r=c |jjj|d|rdnd}|r|dz }|dur||dt||zz }|r4|d|jj |t jzz }|S)NrNULLzNOT NULLz AUTO_INCREMENTFz DEFAULT %sz COMMENT %s)dialect type_compilerprocessr sql_compilerrender_literal_valuer]rg)rr>r?rArErGspecs r<rrs &&..u5 * D !!U"~'A 5h OOO  5 5 J J X__&!    Kr=c <|j}t|tjtjtj fr|rJ|j |St|tjr|jjrDd|jj|jd|jj|Sd|jj|jd|jj|Std)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)rr.r ForeignKeyConstraintPrimaryKeyConstraintUniqueConstraintvisit_drop_constraintrXr is_mariadbpreparer format_tabletableformat_constraintr)rrr: constraints r<_mysql_drop_constraintrsJ  ' '  ' '  # #  v--g66 J 6 6 7    & &!!..z/?/?@!!33J?  '!!..z/?/?@!!33J?  " -  r=)rrSrrrr)rrRrrrr)rrQrrrr)rrr>rr?rrAr"rErrGrrr)rrrrrr)8 __future__rretypingrrrr sqlalchemyr r r]sqlalchemy.sqlr r r baserrrrrrrrimplrr`rrutil.sqla_compatrrrsqlalchemy.dialects.mysql.basersqlalchemy.sql.ddlrsqlalchemy.sql.elementsr sqlalchemy.sql.schemar!sqlalchemy.sql.type_apir"r#r%rrSrQrRrrrrrrrr=r<rs#  (#$$ $'-'?1502$q+ q+h )  1 1: )  .'9- *gy) -), *gy)*-*.  Wi0   *:  1  Wi0 *:1" Wi0 *:1$D   "  2  0 &  )4# # '7# # 5# r=