bg5i6ddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z dd l m Z dd l m Z dd l m Z dd l mZdd l mZddl mZddl mZddl mZddl mZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&dd lm'Z'dd!lm(Z(dd"lm)Z)dd#lm*Z*er0dd$lm+Z+dd%l,m-Z-dd&l.m/Z/dd'l.m0Z0dd(l1m2Z2dd)l3m4Z4dd*l5m6Z6dd+l7m8Z8Gd,d-Z9Gd.d/Z:d0S)1) annotations)Any)Dict)List)Optional)Tuple) TYPE_CHECKING)Union)CheckConstraint)Column)ForeignKeyConstraint)Index)MetaData)PrimaryKeyConstraintschema)Table)types)SchemaEventTarget) OrderedDict) topological)exc)_columns_for_constraint)_copy)_copy_expression)_ensure_scope_for_ddl)_fk_is_self_referential)_idx_table_bound_expressions)_insert_inline)_is_type_bound)_remove_column_from_collection)_resolve_for_variant)_select)constraint_name_defined)constraint_name_string)Literal)Dialect) ColumnClause) quoted_name)Function) Constraint) TypeEngine) DefaultImplceZdZdZeddZeddZddZd d Zd d Z d d Z d d Z d!dZ d!dZ dZd"dZd"dZdZdZdZdZdZdS)#BatchOperationsImplc ||_||_||_|dvrtd||_||_||_t||_||_ t| |_ |j dt|j dd|j dd|jjf| |_| |_g|_dS)N)autoalwaysneverz4recreate may be one of 'auto', 'always', or 'never'. listenerscolumn_reflect) operations table_namer ValueErrorrecreate copy_from table_argsdict table_kwargs reflect_argsreflect_kwargs setdefaultlistgetappendimplautogen_column_reflectnaming_conventionpartial_reorderingbatch) selfr8r9rr;r<r=r?r@rArHrIs O/opt/cloudlinux/venv/lib64/python3.11/site-packages/alembic/operations/batch.py__init__zBatchOperationsImpl.__init__5s%$ 6 6 6F ! "$ ..(">22 && d155k2FFGG    K(// zE F   "3"4 returnr(c$|jjjSN)r8rFdialectrKs rLrRzBatchOperationsImpl.dialectZs#++rNr.c|jjSrQ)r8rFrSs rLrFzBatchOperationsImpl.impl^s ##rNboolct|jdkr|jj|S|jdkrdSdS)Nr2r3TF)r;r8rFrequires_recreate_in_batchrSs rL_should_recreatez$BatchOperationsImpl._should_recreatebs? =F " "?'BB4HH H ]h & &45rNNonec P|}t|jj5|s2|jD](\}}}t |jj|}||i|)n+|jrt|j}nt}|j |j }d}n|jj j r4tj d|jj jjd|jdt#|j|g|jR|j|jd|j}d}t-|j||j|j||j} |jD]\}}}t | |}||i|| |jddddS#1swxYwYdS) N)rHFzEThis operation cannot proceed in --sql mode; batch mode with dialect zF requires a live database connection with which to reflect the table "z". To generate a batch SQL migration script using table "move and copy", a complete Table object should be passed to the "copy_from" argument of the batch_alter_table() method so that table reflection can be skipped.)r autoload_withT)rI)rXrrF connectionrJgetattrr8rHrr<migration_contextas_sqlr CommandErrorrRnamer9rr@rget_bindrAApplyBatchImplr=r?rI_create) rKshould_recreateopnameargkwfnm1existing_table reflected batch_impls rLflushzBatchOperationsImpl.flushjsQ//11 "49#7 8 84 .4 ."3 .'+z##OFC !5v>>BBNrNNNN#)$!D4JKKKBB!B>-%)^N %II8? !. 9#@HM 9 96:_ 9 9 9   &+& * && ${&*o&>&>&@&@ && - &&N!%I+I"O%'+'>  (,z##OFC V44BBNrNNNN""49---i4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .sE FF"Fc@|jd||fdS)N alter_columnrJrErKrgrhs rLrpz BatchOperationsImpl.alter_column% >3344444rNcd|vsd|vr(|stjd|jd||fdS)N insert_before insert_afterz^Can't specify insert_before or insert_after when using ALTER; please specify recreate='always' add_column)rXrr`rJrErrs rLrwzBatchOperationsImpl.add_columnsj r ! !^r%9%9''))&:":  <b122222rNc@|jd||fdS)N drop_columnrqrrs rLryzBatchOperationsImpl.drop_columns% =#r233333rNconstr,cB|jd|fifdS)Nadd_constraintrqrKrzs rLr|z"BatchOperationsImpl.add_constraints( +eXr:;;;;;rNcB|jd|fifdS)Ndrop_constraintrqr}s rLrz#BatchOperationsImpl.drop_constraints( ,uh;<<<<C62677777rNcB|jd|fifdS)N drop_indexrqrs rLrzBatchOperationsImpl.drop_indexs' <#455555rNcB|jd|fifdS)Ncreate_table_commentrqrKtables rLrz(BatchOperationsImpl.create_table_comments( 1E8R@AAAAArNcB|jd|fifdS)Ndrop_table_commentrqrs rLrz&BatchOperationsImpl.drop_table_comments( /%2>?????rNc td)Nz Can't create table in batch modeNotImplementedErrorrs rL create_tablez BatchOperationsImpl.create_tables!"DEEErNc td)NzCan't drop table in batch moderrs rL drop_tablezBatchOperationsImpl.drop_tables!"BCCCrNcB|jd|fifdS)Ncreate_column_commentrqrKcolumns rLrz)BatchOperationsImpl.create_column_comments( 2VIrBCCCCCrNN)rOr()rOr.)rOrUrOrYrzr,rOrYrrrOrY)__name__ __module__ __qualname__rMpropertyrRrFrXrnrprwryr|rrrrrrrrrr6rNrLr0r04s###J,,,X,$$$X$7.7.7.7.r555533334444<<<<====55588886666BBB@@@FFFDDDDDDDDrNr0ceZdZ dFdGdZedHdZdIdZdIdZdIdZdJdZ dKdZ dLdZ dMdNd0Z dOd4Z dPdQd7ZdRd9Zd:Zd;Zd<ZdSd?ZdSd@ZdTdCZdTdDZdEZd S)Urcr6rFr.rrr=tupler?Dict[str, Any]rlrUrIrOrYc^||_||_||_||_||j|_d|_||_d|_ td|jj D|_ t|j |_||_|dS)Nr6c3,K|]}|jd|ifVdSexprN)ra.0cs rL z*ApplyBatchImpl.__init__..s>, , &'QVfa[ !, , , , , , rN)rFrr=r?_calc_temp_nameratemp_table_name new_tablerIadd_col_orderingrrcolumn_transfersrCexisting_orderingrl_grab_table_elements)rKrFrr=r?rlrIs rLrMzApplyBatchImpl.__init__s  $(#33EJ??*."4  !,, , +/:<, , , ! ! "&d&;!N:% ) )C%(DL " "" B BA   ( (DJ,=a,@ A A A A B BrNczt}tj}jrFjD]=}t |D]+\}}|dkr |||dz |f,>n@t jD]+\}}|dkr |||dz |f,|jd|D}ttj ||d}tfd|D_tfd|D_ dS)Nrc6g|]}|d|dk|S)rrr6)rps rL zNApplyBatchImpl._adjust_self_columns_for_partial_reordering..6s%777A!A$!A$,,a,,,rNT)deterministic_orderc36K|]}|j|fVdSrQ)rrrrKs rLrzMApplyBatchImpl._adjust_self_columns_for_partial_reordering..;s."I"IAAt|A#7"I"I"I"I"I"IrNc36K|]}|j|fVdSrQ)rrs rLrzMApplyBatchImpl._adjust_self_columns_for_partial_reordering..<sA, , ./Q%a( ), , , , , , rN) setrCrrI enumerateaddrupdaterrsortrr)rKpairs col_by_idxtuple_relem pairs_listsorted_s` rL+_adjust_self_columns_for_partial_reorderingz:ApplyBatchImpl._adjust_self_columns_for_partial_reordering"s$,''  " =1 = =#,V#4#4==KE4qyy 6%!)#4d";<<<= = ))?@@ = = t199IIz%!)4d;<<< T*+++ 87777   Z N N N  #"I"I"I"I"I"I"III +, , , , 3:, , , ! ! rNcd|j Jdt}|jj}|js|jr|t|j|gt|j t|j zRd|i|j x|_}t|j |jzD]}dt!|D}||js6t'|t(r9t+|rt-|||j}n$t-||}nt-|||}t'|t(r|||||dS)NzCan only create new table oncerch|] }|j Sr6)keyrs rL zAApplyBatchImpl._transfer_elements_to_new_table..UsKKKqQUKKKrN)r target_tabler)rrrrrIrrrrrCrvaluesr=r?rrrissubsetrrr rr_setup_referentappend_constraint)rKmrrrz const_columns const_copys rL_transfer_elements_to_new_tablez.ApplyBatchImpl._transfer_elements_to_new_table@s~%%'G%%% JJ"  " ?d&; ?  < < > > >%*  & 4<&&(())D,A,AA& & &  &  & &   '..00 1 1D4L L 4 4ELK,CE,J,JKKKM ))$*?@@ %!566 *511="'f4:"""JJ"'uV!.s5%T4>::rN)r_tablec4g|]}jj|Sr6)rr)rrrKs rLrzCApplyBatchImpl._gather_indexes_from_both_tables..s#LLLdn&s+LLLrNr) rrr _column_flagrrarrrrErrkeys)rKr idx_existingidx_copyrs` rL _gather_indexes_from_both_tablesz/ApplyBatchImpl._gather_indexes_from_both_tablesssj~))) L//11 ! !L( !  <\ J J  #* ~  %  H JJx %,,..  E JJJMLLLu}7I7I7K7KLLL <l      rNmetadatar constraintr cX |jd}|d}|d}t|dkr |d}nd}||jkrt j||}d d ||jvrs|j|}|jD]\}  | dd} | |jvr-| t| tj ]dSt||gd fd |jDDRd |idSdS) Nr.rrc*|SrQ) _get_colspec)rs rLcolspecz/ApplyBatchImpl._setup_referent..colspecs((***rNcBg|]}t|tjSr6)r sqltypesNULLTYPE)rns rLrz2ApplyBatchImpl._setup_referent..s5q("344rNcXg|]&}|dd'S)rr)split)rrrs rLrz2ApplyBatchImpl._setup_referent..sD""" $$GDMM//44R8"""rNr)rr)elementsrrlenr sql_schema_get_table_keytablesr append_columnr rrr) rKrrspecpartstnamereferent_schemartrcolnamers @rLrzApplyBatchImpl._setup_referents"  ,..  3b  u::??#AhOO"O D( ( (+E?CCC + + + +ho%%OC(&/LLD%gdmm11#66r:Gac))w8I(J(JKKKLL  """"(2(;"""   +      ) (rNop_implc z||||j|jJ||j |t |jtd|j Dtd|j D| |j||j|jj|jj|jj|j_ |D]}|| |j|j_dS#|j|j_wxYw#| |jxYw)Nc3(K|] \}}d|v |VdSrr6)rrtransfers rLrz)ApplyBatchImpl._create..s='Ax!X------rNc&g|]}d|v|dS)rr6)rrs rLrz*ApplyBatchImpl._create..s2 (%11%V,111rNr)rprep_table_for_batchrrr_execr from_selectrCritemsr$rrrrrarrr)rKrrs rLrdzApplyBatchImpl._creates ,,...$$T4:666~)))T^,,, ; MMt~..::+/+@+F+F+H+H ,0,A,H,H,J,J        tz * * *  $djodj>O !   #'*/DN  ;@@BB..C((----.'+&:###d&:#::::    t~ . . . sB+F,FFF:NFr9 column_namenullableOptional[bool]server_default)Optional[Union[Function[Any], str, bool]]ra Optional[str]type_Optional[TypeEngine] autoincrement&Optional[Union[bool, Literal['auto']]]commentUnion[str, Literal[False]]c  |j|} |j|} |||kr|| _|| d<| dd} | r\t | d|jj} t| tr'| jr |j | jd|itj |}t| j trdx| j _| j _|j| | ||| _ ||| _|dur1|d| _n't'j|| |t-|| _|dur || _dSdS)Nra existing_typeF)rrrarDr#rFrRrrrpopr to_instancer_create_eventscreate_constraintcast_for_batch_migraterrr DefaultClause _set_parentrUr r")rKr9rrrrarr r"rhexistingexisting_transferr%resolved_existing_types rLrpzApplyBatchImpl.alter_columns< ,,0,A+,N   3 3!HM(, f %FF?D99M )='):**& 57HII.3*...3  (//E(-):;;  ,M3 I , ,+U   "HM   (H   & &%*.''("+  $%)-%8%8H " %  &H    rNrrurvc|j}dt|D}|js|rG|sE||vr'||dz}|t|kr||}nt |j|}|r7|s5||vr||dz }|dkr||}nd|jD|}|r|xj||ffz c_|r|xj||ffz c_|js!|s!|s!|r!|xj|d|ffz c_dSdSdSdSdS)Nci|]\}}|| Sr6r6)riras rL zEApplyBatchImpl._setup_dependencies_for_add_column..6sDDD71dtQDDDrNrrci|]\}}|| Sr6r6)rabs rLr3zEApplyBatchImpl._setup_dependencies_for_add_column..Ns+(((%)QAq(((rNr)rrrIrr>r)rKrrurv index_cols col_indexesrs rL"_setup_dependencies_for_add_columnz1ApplyBatchImpl._setup_dependencies_for_add_column/s + DDi .C.CDDD & ) $ #{22),7!;Z00,6sOM)-T-B(C(C()  )# )$ 33)-81<!88+5c?L((-1-B((('()   A  ! !w &>%@ @ ! !  @  ! !|W&=%? ? ! !' B! B! B  B  ! !z"~w&?%A A ! ! ! !  B B B B B B B BrNr Column[Any]c ||j||t||jj|j|j<i|j|j<dS)Nr)r9rarrrrr)rKr9rrurvrhs rLrwzApplyBatchImpl.add_column_s\ // K    %*&9J$K$K$K V[!-/fk***rN%Union[ColumnClause[Any], Column[Any]]c |j|jjjvrt |jjj||j|j=|j|j=|j|jd|vrPt|dtr7|djr,|j |djddSdSdSdS)Nr%) rar primary_keyrr"rrremoverrrr&)rKr9rrhs rLryzApplyBatchImpl.drop_columnos ;$*08 8 8 * &.    L %  !&+ . %%fk222 r ! !2o.0ABB "?#( "  " & &?#($      " ! ! ! ! !rNcdS)a^the batch table creation function will issue create_column_comment on the real "impl" as part of the create table process. That is, the Column object will have the comment on it already, so when it is received by add_column() it will be a normal part of the CREATE TABLE and doesn't need an extra step here. Nr6rs rLrz$ApplyBatchImpl.create_column_commentrNcdS)zthe batch table creation function will issue create_table_comment on the real "impl" as part of the create table process. Nr6rs rLrz#ApplyBatchImpl.create_table_commentrArNcdS)zthe batch table creation function will issue drop_table_comment on the real "impl" as part of the create table process. Nr6rs rLrz!ApplyBatchImpl.drop_table_commentrArNrzr,clt|jstdt|tjr7|jj|jvr$|j |jjt|jr||j |j<dS|j |dS)NConstraint must have a name) r%rar:rrrrr>rr?r&rrEr}s rLr|zApplyBatchImpl.add_constraints&uz22 <:;; ; eZ< = = Hz%)AAA(// 0FGGG !%* - - 316D "5: . . .  $ + +E 2 2 2 2 2rNc|jstd |j|jvr|j|j\}}t |j|jjD]<}|j|jkr*|j|jj|=nWt|jr |j |j}n#||j vr|j |t|tr!|jD]}d|j|j_ dSdS#t$r*t|rYdStd|jzwxYw)NrEFzNo such constraint: '%s')rar:rr&rCrrr?r&rrrrr>KeyErrorr!)rKrzr col_consts rLrzApplyBatchImpl.drop_constraintsz <:;; ; ?zT777!7;;EJGG U!%dl38&<&H!I!IMMI ~33 SX.:AA)LLLM( 33 7.225:>>$222(//666%!566 ? =??C9>DL*66 ? ??? F F Fe$$  7%*DEE E FsC)D;;E/E/rrc$||j|j<dSrQ)rrars rLrzApplyBatchImpl.create_indexs%("""rNcl |j|j=dS#t$rtd|jzwxYw)NzNo such index: '%s')rrarGr:rs rLrzApplyBatchImpl.drop_indexsJ ? SX&&& ? ? ?2SX=>> > ?s "3c td)NTODOrrrs rLrzApplyBatchImpl.rename_tables!&)))rN)r6)rFr.rrr=rr?rrlrUrIrrOrY)rrrOrr)rOr)rrrr rOrY)rr.rOrY)NFNNNF)r9rrrrrrrrarrrr r!r"r#rOrY)rrrurrvrrOrY)NN) r9rrr:rurrvrrOrY)r9rrr<rOrYrr)rrrrM classmethodrrrrrrrdrpr9rwryrrrr|rrrrr6rNrLrcrcs%'$$$$$:555[5,B,B,B,B\    <14141414fB%%%%N%;%;%;%;V$(DI"&*@D.3K'K'K'K'K'Z.B.B.B.Bh(,&* 00000 0         3 3 3 3????8))))???? *****rNrcN); __future__rtypingrrrrrr r sqlalchemyr r r rrrrrrrrsqlalchemy.eventsrsqlalchemy.utilrrutilrutil.sqla_compatrrrrrrr r!r"r#r$r%r&r'sqlalchemy.enginer(sqlalchemy.sql.elementsr)r*sqlalchemy.sql.functionsr+sqlalchemy.sql.schemar,sqlalchemy.sql.type_apir-ddl.implr.r0rcr6rNrLr[sv"""""" &&&&&&++++++++++++++++++((((((//////''''''''''''666666$$$$$$//////444444666666;;;;;;------------======333333&&&&&&666666555555 '))))))444444333333111111000000222222&&&&&&[D[D[D[D[D[D[D[D|}*}*}*}*}*}*}*}*}*}*rN