|L i$lddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z dd lm Z dd l m Z dd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZe rBddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddl"m#Z#ddl$m%Z%GddZ&y )!) annotations)Any)Dict)List)Optional)Sequence)Tuple) TYPE_CHECKING)Unionschema)Column) Constraint)Index)Integer)NULLTYPE)util) sqla_compat) ColumnElement) TextClause)CheckConstraint) ForeignKey)ForeignKeyConstraint)MetaData)PrimaryKeyConstraint)Table)UniqueConstraint) TypeEngine)MigrationContextc&eZdZ d ddZ d ddZ d ddZ d ddZ d ddZ d ddZddZ dd Z dd Z d dd Z dd Z dd Zy) SchemaObjectsNc||_yN)migration_context)selfr%s b/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/alembic/operations/schemaobj.py__init__zSchemaObjects.__init__)s "3c  |j}|Dcgc]}tj|t}}tj||g|d|i} tj |Dcgc]}| j |c}d|i|} | Scc}wcc}wNr name)metadata sa_schemarrrrc) r&r, table_namecolsr dialect_kwmncolumnstps r'primary_key_constraintz$SchemaObjects.primary_key_constraint.s MMO:>?Q9##Ax0?? OOJ CG CF C  * *" #acc!f # *. 2< @ $s !B%B c 0|j}||k(r | | k(r||z}nB|}tj||g|Dcgc]}tj|tc}d| itj||gt j |Dcgc]}tj|tc}d| i}| r| d|n|}| | d<tj||Dcgc] }|d| c}f||||| d| }|j||Scc}wcc}wcc}w)Nr .match)r,onupdateondelete deferrable initially) r-r.rrrr unique_listrappend_constraint)r&r,sourcereferent local_cols remote_colsr<r=r> source_schemareferent_schemar?r;r2r3t1_colsr4t1tnamefs r'foreign_key_constraintz$SchemaObjects.foreign_key_constraint@sP MMO X -?"B ;.G G OO :EEA)""1h/E '  __   ))'2  H- ! ' 1  $ 7  * * +6 7aq ! 7 !   QEF" 8s!D !D D c Btj||jg|Dcgc]}tj|tc}d|i}||d<tj |Dcgc]}|j |c}i|}|j||Scc}wcc}wr+)r.rr-rrrr/rA) r&r,rBrDr kwr4r6uqs r'unique_constraintzSchemaObjects.unique_constraint|s OO  MMO 6@ @iq(+ @    6  ' '*)EQ!##a&)E L L B A*Fs !B 'Bc tj||jtjdt|}tj |fd|i|}|j ||S)Nxr r,)r.rr-rrrrA)r&r,rB conditionr rNr6cks r'check_constraintzSchemaObjects.check_constraints` OO  MMO   S' *    & &y Bt Br B B r)c R|j||}dtjtjdtjd} ||}||}|j ||S#t $r3} tddjtd|Dz| d} ~ wwxYw) Nr c2tjgg|S)Nr,)r.rrXs r'z2SchemaObjects.generic_constraint..sy'E'EBT(r)c0tjd|S)NrX)r.rrXs r'rYz2SchemaObjects.generic_constraint..s)";";BT"Jr)) foreignkeyprimaryuniquecheckNrXz'type' can be one of %sz, c32K|]}t|ywr$)repr).0rRs r' z3SchemaObjects.generic_constraint..s":q47":s) tabler.rrrrAKeyError TypeErrorjoinsorted) r&r,r0type_r rNr6typesconstkes r'generic_constraintz SchemaObjects.generic_constraints JJz&J 1!5500J&&+  %LEt$E   &L )))F":E"::;<  s A** B&3.B!!B&ci}|jLd|jjvr4|jjd}t|dr|j|d<t j di|S)Ntarget_metadatanaming_convention)r%optshasattrrpr.r)r&rNmts r'r-zSchemaObjects.metadatasn   " " .!T%;%;%@%@@'',,->?Br./*,*>*>&'!!'B''r)cf|j}|Dcgc]5}t|tr#|jt j |n|7}}|j dd}|r|D]}dx|_|_tj||g|i|}|D cgc]M} t| ttfr5t| dd|ur$t| ddt j | |n| O} } | D]} |j| |jD]} |j!|| |Scc}wcc} w)N_constraints_includedFparent) target_table)r- isinstancerrdr_copypopr^indexr.rrrgetattrrA foreign_keys_ensure_table_for_fk) r&r,r5rNr3r/r1rvr6elem constraintsrkrKs r'rdzSchemaObjects.tables\ MMO !V$%&GG$7K  a Q >  !#'> F  +%**17 + OOD! 1d 1b 1   $U 34 4409D(D1=!!$Q7   ! 'E   & ' ,A  % %a + ,E $  s :D)AD.c 0tj||fi|Sr$)r.r)r&r,rirNs r'columnzSchemaObjects.columnse2r22r)c tj|xsd|j|}||d<tj|g|Dcgc]"}tj j ||$c}i|}|Scc}w)Nno_tabler _table)r.rr-rrr_textual_index_column) r&r, tablenamer5r rNr6r4idxs r'r|zSchemaObjects.indexs OO  # MMO  8 oo  DK Lqd44Q: L    Ms'A7 cvd|vr.|jd}dj|dd}|d}||fS|}d}||fS)Nr:r)splitrg)r& table_keytokenssnamerJs r'_parse_table_keyzSchemaObjects._parse_table_key sW ) __S)F#&88F1RL#9E2JEu~EEu~r)c|t|jtr|jjdd\}}|j |\}}||j vrt j|||}n|j |}||jvr*|jt j|tyyy)zUcreate a placeholder Table object for the referent of a ForeignKey. r:r N) ry_colspecstrrsplitrtablesr.rr/ append_columnrr)r&r-fkrcnamerrJrel_ts r'rz"SchemaObjects._ensure_table_for_fks bkk3 '!{{11#q9 Iu00;LE5/!xF  2EGG###I$4$4UH$EF$ (r)r$)r%zOptional[MigrationContext]returnNone) r,,Optional[sqla_compat._ConstraintNameDefined]r0rr1 Sequence[str]r Optional[str]rr)NNNNNNN)r,rrBrrCrrD List[str]rErr<rr=rr>zOptional[bool]rFrrGrr?rr;rrr) r,rrBrrDrr rrr) r,rrBrrSz*Union[str, TextClause, ColumnElement[Any]]r rrzUnion[CheckConstraint]) r,rr0rrirr rrr)rr)r,rrr)r,rrirrr) r,rrrr5z4Sequence[Union[str, TextClause, ColumnElement[Any]]]r rrr)rrrzTuple[Optional[str], str])r-rrrrr)__name__ __module__ __qualname__r(r8rLrPrUrmr-rdrr|rrrqr)r'r"r"(s>B3!;3 3!% :    2#'"&%)'+)-#'#:::: :  :  : : :#:%:':!:: :B!% :"    4!% :>    .!% :    < (%N3!% !F    * Gr)r"N)' __future__rtypingrrrrrr r r sqlalchemyr r.sqlalchemy.sql.schemarrrsqlalchemy.typesrrr[rrsqlalchemy.sql.elementsrrrrrrrrrsqlalchemy.sql.type_apirruntime.migrationr r"rqr)r'rsl# *(,'$%5250:.:+624zGzGr)