
    Ehv                       % S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSKJ!r!  SS K!J"r"  \(       ar  S S!KJ#r#  S S"KJ$r$  S S#K%J&r&  S S$K%J'r'  S S%K(J)r)  S S&K*J+r+  S S'K,J-r-  S S(K,J.r.  S S)K/J0r0  S S*K1J2r2  S S+K1J3r3  S S,K1J4r4  S S-K1J5r5  S S.K6J7r7  S S/K8J9r9  SS0KJ:r:  SS1K;J<r<  SS2K=J>r>  SS3K=J?r?  \R                  " \A5      rB " S4 S5\C5      rD0 rES6\FS7'    " S8 S9\DS:9rG " S; S<\5      rH        S>S= jrIg)?    )annotationsN)Any)Callable)Dict)Iterable)List)Mapping)
NamedTuple)Optional)Sequence)Set)Tuple)Type)TYPE_CHECKING)Union)cast)Column)MetaData)PrimaryKeyConstraintschema)String)Table)text   )_autogen)base)_constraint_sig)ComparisonResult   )util)sqla_compat)Literal)TextIO)
Connection)Dialect)CursorResult)	Inspector)ClauseElement)
Executable)quoted_name)
Constraint)ForeignKeyConstraint)Index)UniqueConstraint)TableClause)
TypeEngine)_ServerDefault)AutogenContext)ApplyBatchImpl)BatchOperationsImplc                  *    \ rS rSr      SS jrSrg)ImplMetaA   c                V    [         R                  XX#5      nSU;   a  U [        US   '   U$ )N__dialect__)type__init___impls)cls	classnamebasesdict_newtypes        S/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/alembic/ddl/impl.pyr<   ImplMeta.__init__B   s0     --=E!+.F5'(     N)r?   strr@   zTuple[Type[DefaultImpl]]rA   Dict[str, Any])__name__
__module____qualname____firstlineno__r<   __static_attributes__rF   rE   rC   r7   r7   A   s#    		 (	 		rE   r7   zDict[str, Type[DefaultImpl]]r=   c                     \ rS rSr% SrSrSrSrSS14rS\	S	'   S
r
S\	S'   SrS\	S'                 SCS jr\SDS j5       rSES jr          SFS jr    SGS jr      SHS jr\SIS j5       rSS\R,                  " 5       4         SJS jjr SK     SLS jjrSSSSSSSSSSSSS.                               SMS jjrSSS.         SNS jjrSSS.         SOS jjrSPS  jrSQS! jr SK       SRS" jjrSSS# jrSSS$ jr STS% jr!SUS& jr"SUS' jr#SVS( jr$STS) jr% SW       SXS* jjr&SYS+ jr'      SZS, jr(      S[S- jr)      S\S. jr*S/ r+          S]S0 jr,S1 r- S^       S_S2 jjr.S`S3 jr/      SaS4 jr0S5 r1SbS6 jr2SbS7 jr3SbS8 jr4      ScS9 jr5S: r6      SdS; jr7      SeS< jr8      SeS= jr9      SfS> jr:      SgS? jr;S@ r<      ShSA jr=SBr>g)iDefaultImplQ   az  Provide the entrypoint for major migration operations,
including database-specific behavioral variances.

While individual SQL/DDL constructs already provide
for database-specific implementations, variances here
allow for entirely different sequences of operations
to take place for a particular migration, such as
SQL Server's special 'IDENTITY INSERT' step for
bulk inserts.

defaultF;NUMERICDECIMALzTuple[Set[str], ...]type_synonymsrF   zSequence[str]type_arg_extract)orderon_nullzTuple[str, ...]identity_attrs_ignorec                    Xl         X l        X0l        UR                  SS5      U l        XPl        0 U l        X`l        Ub  X@l        U R                  (       a(  U R                  (       d  [        R                  " S5      eg g )Nliteral_bindsFz3Can't use literal_binds setting without as_sql mode)dialect
connectionas_sqlgetr[   output_buffermemocontext_optstransactional_ddlr!   CommandError)selfr\   r]   r^   rc   r`   rb   s          rC   r<   DefaultImpl.__init__j   sw     $)--ouE*	((%6";;''I   rE   c                (    [         UR                     $ N)r=   name)r>   r\   s     rC   get_by_dialectDefaultImpl.get_by_dialect   s    gll##rE   c                    U R                   c   eU R                   R                  US-   5        U R                   R                  5         g )Nz

)r`   writeflush)re   r   s     rC   static_outputDefaultImpl.static_output   s>    !!---  /  "rE   c          
         [        U[        5       [        S[        S5      SS9US9nU(       a  UR	                  [        SU S3S95        U$ )a  Generate a :class:`.Table` object which will be used as the
structure for the Alembic version table.

Third party dialects may override this hook to provide an alternate
structure for this :class:`.Table`; requirements are only that it
be named based on the ``version_table`` parameter and contains
at least a single string-holding column named ``version_num``.

.. versionadded:: 1.14

version_num    F)nullabler   _pkc)ri   )r   r   r   r   append_constraintr   )re   version_tableversion_table_schemaversion_table_pkkwvts         rC   version_table_implDefaultImpl.version_table_impl   sW    & J=&*u='	
   $!=/(> 	rE   c                    g)zReturn True if the given :class:`.BatchOperationsImpl`
would need the table to be recreated and copied in order to
proceed.

Normally, only returns True on SQLite when operations other
than add_column are present.

FrF   )re   batch_ops     rC   requires_recreate_in_batch&DefaultImpl.requires_recreate_in_batch   s     rE   c                    g)zperform any operations needed on a table before a new
one is created to replace it in batch mode.

the PG dialect uses this to drop constraints on the table
before the new one uses those same names.

NrF   )re   
batch_impltables      rC   prep_table_for_batch DefaultImpl.prep_table_for_batch       rE   c                    U R                   $ rh   )r]   re   s    rC   bindDefaultImpl.bind   s    rE   Nc                   [        U[        5      (       a  [        U5      nU R                  (       a  Uc  U(       a  [	        S5      eU R
                  (       a+  [        U[        R                  5      (       d  [        SS0S9nO0 n[        (       a  [        U[        5      (       d   eUR                  " S	SU R                  0UD6nU R                  [        U5      R                  SS5      R                  5       U R                   -   5        g U R"                  nUc   eU(       a  UR$                  " S	0 UD6nU(       a  Ub  [	        S5      eU(       a  UR'                  X5      $ UR'                  X5      $ )
Nz&SQL parameters not allowed with as_sqlr[   T)compile_kwargsr\   	z    z2Can't send params and multiparams at the same timerF   )
isinstancerG   r   r^   	TypeErrorr[   r   
DDLElementdictr   r)   compiler\   ro   replacestripcommand_terminatorr]   execution_optionsexecute)re   	constructr   multiparamsparams
compile_kwcompiledconns           rC   _execDefaultImpl._exec   sF    i%%YI;;&& HII !!*6,,+ + "/41HI

}!)];;;; ((LLLHH%%dF399;))* ??D### --B0AB+1H  ||I;;||I66rE   c                &    U R                  X5        g rh   )r   )re   sqlr   s      rC   r   DefaultImpl.execute   s    
 	

3*rE   )rt   server_defaultri   type_r   autoincrementcommentexisting_commentexisting_typeexisting_server_defaultexisting_nullableexisting_autoincrementc                  Uc  Ub  [         R                  " SSS9  Ub*  U R                  [        R                  " UUUUUUUU
S95        USLa  0 n[
        R                  " XL5      (       a  [        R                  nO@[
        R                  " XL5      (       a  [        R                  nXS'   O[        R                  nU R                  U" UUU4UUUUU
S.UD65        Ub*  U R                  [        R                  " UUUUUUUU
S95        U	SLa*  U R                  [        R                  " UUU	UUUUU
S95        Ub*  U R                  [        R                  " UUUUUUUS95        g g )NzBautoincrement and existing_autoincrement only make sense for MySQL   )
stacklevel)r   r   r   r   r   Fimpl)r   r   r   r   )r!   warnr   r   ColumnNullabler"   _server_default_is_computedComputedColumnDefault_server_default_is_identityIdentityColumnDefaultColumnDefault
ColumnTypeColumnComment
ColumnName)re   
table_namecolumn_namert   r   ri   r   r   r   r   r   r   r   r   r   rz   cls_s                    rC   alter_columnDefaultImpl.alter_column   s   * $(>(JII,
 JJ##!"/,C&7%5	 &B 66  1188  11!6
))JJ"
 ""/,C&7%5
 
 JJ!"/,C&7%5	 %JJ""!"/,C&7%5	 JJ!"/,C&7
 rE   r   if_not_existsc          	     P    U R                  [        R                  " UUUUS95        g )Nr   )r   r   	AddColumn)re   r   columnr   r   s        rC   
add_columnDefaultImpl.add_columnr  s(     	

NN+		
rE   r   	if_existsc          	     L    U R                  [        R                  " XX4S95        g )Nr   )r   r   
DropColumn)re   r   r   r   r   rz   s         rC   drop_columnDefaultImpl.drop_column  s!     	

OO6	
rE   c                    UR                   b  UR                  U 5      (       a&  U R                  [        R                  " U5      5        g g rh   )_create_ruler   r   AddConstraint)re   consts     rC   add_constraintDefaultImpl.add_constraint  s;    %););D)A)AJJv++E23 *BrE   c                P    U R                  [        R                  " U40 UD65        g rh   )r   r   DropConstraint)re   r   rz   s      rC   drop_constraintDefaultImpl.drop_constraint  s    

6((5"56rE   c                L    U R                  [        R                  " XUS95        g )Nr   )r   r   RenameTable)re   old_table_namenew_table_namer   s       rC   rename_tableDefaultImpl.rename_table  s      	

^FK	
rE   c                   UR                   R                  XR                  SU S9  U R                  [        R
                  " U40 UD65        UR                   R                  XR                  SU S9  UR                   H(  nU R                  [        R                  " U5      5        M*     U R                  R                  =(       a    U R                  R                  (       + nUR                  nU(       a  U(       a  U R                  U5        UR                   H2  nUR                  nU(       d  M  U(       d  M!  U R                  U5        M4     g NF)
checkfirst_ddl_runner)dispatchbefore_creater]   r   r   CreateTableafter_createindexesCreateIndexr\   supports_commentsinline_commentsr   create_table_commentcolumnscreate_column_comment)re   r   rz   indexwith_commentr   r   s          rC   create_tableDefaultImpl.create_table  s    $$??u$ 	% 	
 	

6%%e2r23##??u$ 	$ 	
 ]]EJJv))%01 # LL**O4<<3O3O/O 	 --|%%e,mmFnnGw<<**62 $rE   c                    UR                   R                  XR                  SU S9  U R                  [        R
                  " U40 UD65        UR                   R                  XR                  SU S9  g r   )r   before_dropr]   r   r   	DropTable
after_drop)re   r   rz   s      rC   
drop_tableDefaultImpl.drop_table  sd    ""??u$ 	# 	
 	

6##E0R01!!??u$ 	" 	
rE   c                P    U R                  [        R                  " U40 UD65        g rh   )r   r   r   re   r   rz   s      rC   create_indexDefaultImpl.create_index  s    

6%%e2r23rE   c                N    U R                  [        R                  " U5      5        g rh   )r   r   SetTableCommentre   r   s     rC   r    DefaultImpl.create_table_comment  s    

6))%01rE   c                N    U R                  [        R                  " U5      5        g rh   )r   r   DropTableCommentr   s     rC   drop_table_commentDefaultImpl.drop_table_comment  s    

6**512rE   c                N    U R                  [        R                  " U5      5        g rh   )r   r   SetColumnComment)re   r   s     rC   r   !DefaultImpl.create_column_comment  s    

6**623rE   c                P    U R                  [        R                  " U40 UD65        g rh   )r   r   	DropIndexr   s      rC   
drop_indexDefaultImpl.drop_index  s    

6##E0R01rE   c                6   [        U[        5      (       d  [        S5      eU(       a#  [        US   [        5      (       d  [        S5      eU R                  (       a  U H  nU R                  UR                  5       R                  5       R                  " S0 UR                  5        VVs0 s HS  u  pVU[        U[        R                  5      (       d,  [        R                  " XVUR                  U   R                  S9OU_MU     snnD65        M     g U(       a{  U(       a-  U R                  UR                  5       R                  5       US9  g U H@  nU R                  UR                  5       R                  5       R                  " S0 UD65        MB     g g s  snnf )NzList expectedr   zList of dictionaries expected)r   )r   rF   )r   listr   r   r^   r   insertinlinevaluesitemsr"   _literal_bindparamcr;   )re   r   rowsmultiinsertrowkvs          rC   bulk_insertDefaultImpl.bulk_insert  sN    $%%O,,*T!Wd33;<<;;

LLNVXV  ),		 )4  (2$%{'E'E(" (" !, > >$%
!" &'' )4 ( JJu||~446DJI#

5<<>#8#8#:#A#A#HC#HI  $	 s   )AFc                z   U R                   R                  R                  UR                  5      R	                  5       n[
        R                  " SU5      n/ nS nU H4  n[
        R                  " SU5      (       a  UnM#  UR                  U5        M6     [        US   USS  / 0 5      nU(       a  [
        R                  " SU5       Hr  nSU;   a@  UR                  S5      u  pU
R                  5       UR                  U	R                  5       '   MI  UR                  R                  UR                  5       5        Mt     U$ )Nz[\w\-_]+|\(.+?\)z^\(.*\)$r   r   z[^(),]+=)r\   type_compilerprocessr;   lowerrefindallmatchappendParamssplitr   kwargsargs)re   r   
definitiontokensterm_tokens
paren_termtokenr   termkeyvals              rC   _tokenize_column_type!DefaultImpl._tokenize_column_type  s    \\//77DJJL
 JJ':JG!#
ExxU++"
""5)	  AABR@

9j9$;#zz#HC14FMM#))+.KK&&tzz|4 : rE   c           	        UR                   UR                   :X  a  gU R                   VVs/ s H"  o3 Vs1 s H  oDR                  5       iM     snPM$     nnnSR                  UR                   /UR                  -   5      nSR                  UR                   /UR                  -   5      nU HH  nXg1R                  U5      (       d.  UR                   UR                   1R                  U5      (       d  MH    g   gs  snf s  snnf )NT F)token0rU   r  joinr&  issubset)re   inspector_paramsmetadata_paramsbatchtsynonymsinspector_all_termsmetadata_all_termss           rC   _column_types_matchDefaultImpl._column_types_match   s     ""o&<&<<<@<N<NO<N5.1WWY.<NO!hh$$%(8(?(??
 !XX##$'='==
 E#8AA%HH ''&&M huoM    /Os   	C=C8C=8C=c                   [        UR                  5      [        UR                  5      :X  a  UR                  UR                  :w  a  g[        UR                  5      [        UR                  5      :X  a  UR                  UR                  :w  a  gSR                  UR                  5      R	                  5       nSR                  UR                  5      R	                  5       nU R
                   Hg  n[        R                  " XS5      n[        R                  " XT5      nU(       d  M8  U(       d  MA  UR                  S5      UR                  S5      :w  d  Mg    g   g)zWe want to compare column parameters. However, we only want
to compare parameters that are set. If they both have `collation`,
we want to make sure they are the same. However, if only one
specifies it, dont flag it for being less specific
Fr0  r   T)	lenr&  r$  r2  r  rV   r  searchgroup)re   inspected_paramsmeta_paramsinspmetaregmimms           rC   _column_args_matchDefaultImpl._column_args_match6  s    ""#s+;+B+B'CC""&6&=&==   !S)9)>)>%??  $4$9$99xx(//0668xx**+113((C3%B3%BrbbRXXa[BHHQK7 ) rE   c                    U R                  U5      nU R                  U5      nU R                  X45      (       d  gU R                  X45      (       d  gg)zReturns True if there ARE differences between the types of the two
columns. Takes impl.type_synonyms into account between retrospected
and metadata types
TF)r-  r;  rH  )re   inspector_columnmetadata_columnr4  r5  s        rC   compare_typeDefaultImpl.compare_typeW  sS      556FG44_E''(8JJ&&'7IIrE   c                
    XC:g  $ rh   rF   )re   rK  rL  rendered_metadata_defaultrendered_inspector_defaults        rC   compare_server_default"DefaultImpl.compare_server_defaultg  s     *FFrE   c                    g rh   rF   )re   conn_uniquesconn_indexesmetadata_unique_constraintsmetadata_indexess        rC   correct_for_autogen_constraints+DefaultImpl.correct_for_autogen_constraintsp  s     	rE   c                p    UR                   R                  UR                  La  [        US   U5      US'   g g )Nexpr)r;   _type_affinityr   )re   existingexisting_transfernew_types       rC   cast_for_batch_migrate"DefaultImpl.cast_for_batch_migratey  s:    ==''x/F/FF(,!&)8)f% GrE   c                R    SSS.n[        UR                  U R                  US95      $ )zTRender a SQL expression that is typically a server default,
index expression, etc.

TF)r[   include_table)r\   r   )rG   r   r\   )re   r\  is_server_defaultrz   r   s        rC   render_ddl_sql_exprDefaultImpl.render_ddl_sql_expr  s/     (,eD
LLjLI
 	
rE   c                    U R                   $ rh   )autogen_column_reflect)re   	inspectors     rC   _compat_autogen_column_reflect*DefaultImpl._compat_autogen_column_reflect  s    ***rE   c                    g rh   rF   )re   conn_fksmetadata_fkss      rC   correct_for_autogen_foreignkeys+DefaultImpl.correct_for_autogen_foreignkeys  s    
 	rE   c                    g)zA hook that is attached to the 'column_reflect' event for when
a Table is reflected from the database during the autogenerate
process.

Dialects can elect to modify the information gathered here.

NrF   )re   rj  r   column_infos       rC   ri  "DefaultImpl.autogen_column_reflect  r   rE   c                    g)zA hook called when :meth:`.EnvironmentContext.run_migrations`
is called.

Implementations can set up per-migration-run state here.

NrF   r   s    rC   start_migrationsDefaultImpl.start_migrations  r   rE   c                @    U R                  SU R                  -   5        g)zEmit the string ``BEGIN``, or the backend-specific
equivalent, on the current connection context.

This is used in offline mode and typically
via :meth:`.EnvironmentContext.begin_transaction`.

BEGINNro   r   r   s    rC   
emit_beginDefaultImpl.emit_begin  s     	7T%<%<<=rE   c                @    U R                  SU R                  -   5        g)zEmit the string ``COMMIT``, or the backend-specific
equivalent, on the current connection context.

This is used in offline mode and typically
via :meth:`.EnvironmentContext.begin_transaction`.

COMMITNrz  r   s    rC   emit_commitDefaultImpl.emit_commit  s     	8d&=&==>rE   c                    gNFrF   )re   type_objautogen_contexts      rC   render_typeDefaultImpl.render_type  s     rE   c                Z   [        UU[        R                  " 5       S1S9u  p4[        USS 5      n[        USS 5      n[	        U5      [	        U5      :w  a  UR                  S5        UR                  U R                  5        UU[	        U5      =(       d    [	        U5      [	        U5      :g  4$ )Nalways)skip)_compare_identity_optionsr   Identitygetattrbooladddifference_updaterY   )re   metadata_identityinspector_identitydiffignoredmeta_alwaysinspector_alwayss          rC   _compare_identity_default%DefaultImpl._compare_identity_default  s     2OO	
 /4@"#5xF%5 66HHXt99:
 JM$01T:L5MM
 	
rE   c                r    [        UR                  5      n[        UR                  5      nX4:w  a  SU SU 3$ g )Nzunique=z to unique=)r  unique)re   metadata_indexreflected_indexconn_uniquemeta_uniques        rC   _compare_index_unique!DefaultImpl._compare_index_unique  s@     ?112>001%[M[MBBrE   c                2    [         R                  " SX40 UD6$ )NTr   from_constraintre   
constraintoptss      rC   _create_metadata_constraint_sig+DefaultImpl._create_metadata_constraint_sig  s     ..tTNNNrE   c                2    [         R                  " SX40 UD6$ r  r  r  s      rC    _create_reflected_constraint_sig,DefaultImpl._create_reflected_constraint_sig  s     ..udO$OOrE   c                x   / nU R                  X5      nU(       a  UR                  U5        U R                  U5      nU R                  U5      n[        R
                  " U5      (       d   e[        R
                  " U5      (       d   eXV4 H6  nUR                  (       d  M  [        R                  SUR                  5        M8     UR                  UR                  :w  a+  UR                  SUR                   SUR                   35        U(       a  [        R                  " U5      $ [        R                  " 5       $ )zCompare two indexes by comparing the signature generated by
``create_index_sig``.

This method returns a ``ComparisonResult``.
zGenerating approximate signature for index %s. The dialect implementation should either skip expression indexes or provide a custom implementation.expression  to )r  r   r  r  r   is_index_sighas_expressionslogwarningr   column_namesr   	DifferentEqual)re   r  r  msg
unique_msgm_sigr_sigsigs           rC   compare_indexesDefaultImpl.compare_indexes  s    //

 JJz"44^D55oF$$U++++$$U++++ <C""": II   !3!33JJe001e6H6H5IJ #--c22#))++rE   c                    U R                  U5      nU R                  U5      nUR                  nUR                  nXe:w  a  [        R                  " SU SU 35      $ [        R
                  " 5       $ )zCompare two unique constraints by comparing the two signatures.

The arguments are two tuples that contain the unique constraint and
the signatures generated by ``create_unique_constraint_sig``.

This method returns a ``ComparisonResult``.
r  r  )r  r  unnamedr   r  r  )re   metadata_constraintreflected_constraintmetadata_tupreflected_tupmeta_sigconn_sigs          rC   compare_unique_constraint%DefaultImpl.compare_unique_constraint  s~     ;;
 == 
  '' ((#--hZtH:6  $))++rE   c           
     v   U Vs0 s H  o3R                   U_M     nn[        U5       H  nUR                   U;   a  M  [        R                  " U5      nU(       d  M4  [        R
                  " SUR                   < SU R                  < S[        R                   S35        UR                  U5        M     g s  snf )Nz@autogenerate skipping metadata-specified expression-based index z
; dialect z under SQLAlchemy z6 can't reflect these indexes so they can't be compared)	ri   r
  r"   is_expression_indexr!   r   r:   sqlalchemy_versiondiscard)re   rX  rV  r  conn_indexes_by_nameidxiexs          rC   _skip_functional_indexes$DefaultImpl._skip_functional_indexes8  s    3?@<a	<@()Cxx//11#6Cs		.xxl*T-=-=,@ A""-"@"@!A BFF !((- *  As   B6c                &    UR                  S0 5      $ )Ndialect_options)r_   )re   reflected_objectkinds      rC    adjust_reflected_dialect_options,DefaultImpl.adjust_reflected_dialect_optionsI  s      ##$5r::rE   )r^   r]   rb   r\   r[   ra   r`   rc   )r\   r&   r]   Optional[Connection]r^   r  rc   Optional[bool]r`   zOptional[TextIO]rb   rH   returnNone)r\   r&   r  zType[DefaultImpl])r   rG   r  r  )
rw   rG   rx   Optional[str]ry   r  rz   r   r  r   )r   r5   r  r  )r   r4   r   r   r  r  )r  r  )
r   Union[Executable, str]r   zOptional[Mapping[str, Any]]r   z%Optional[Sequence[Mapping[str, Any]]]r   Mapping[str, Any]r  zOptional[CursorResult]rh   )r   r  r   zOptional[dict[str, Any]]r  r  ) r   rG   r   rG   rt   r  r   z/Optional[Union[_ServerDefault, Literal[False]]]ri   r  r   Optional[TypeEngine]r   r  r   r  r   z$Optional[Union[str, Literal[False]]]r   r  r   r  r   zOptional[_ServerDefault]r   r  r   r  rz   r   r  r  )
r   rG   r   Column[Any]r   !Optional[Union[str, quoted_name]]r   r  r  r  )
r   rG   r   r  r   r  r   r  r  r  )r   r   r  r  )r   r,   rz   r   r  r  )r   rG   r   zUnion[str, quoted_name]r   r  r  r  )r   r   rz   r   r  r  )r   r.   rz   r   r  r  )r   r   r  r  )r   r  r  r  )T)r   zUnion[TableClause, Table]r  z
List[dict]r  r  r  r  )r   r   r  r!  )r4  r!  r5  r!  r  r  )rA  r!  rB  r!  r  r  )rK  r  rL  r   r  r  )
rU  Set[UniqueConstraint]rV  
Set[Index]rW  r  rX  r  r  r  )F)r\  r)   re  r  rz   r   r  rG   )rj  r(   r  r   )rn  Set[ForeignKeyConstraint]ro  r  r  r  )r  r  )r  r1   r  r3   r  zUnion[str, Literal[False]])r  r.   r  r.   r  r  )r  z_autogen._Cr  r   r  z_constraint_sig[_autogen._C])r  r.   r  r.   r  r   )r  r/   r  r/   r  r   )r  rH   r  rG   r  rH   )?rI   rJ   rK   rL   __doc__r:   rc   r   rU   __annotations__rV   rY   r<   classmethodrj   ro   r|   r   r   propertyr   r!   immutabledictr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r-  r;  rH  rM  rR  rY  ra  rf  rk  rp  ri  rv  r{  r  r  r  r  r  r  r  r  r  r  rM   rF   rE   rC   rO   rO   Q   si   
 K,5y+A*CM'C&(m(
 .B?A ) 	
 * ( % 
4 $ $#
    ,	 
     
 D+		(	16			   :>=A$($6$6$8+7)+7 7+7 ;	+7
 "+7 
 +7` 7;+#+ 4+ 
	+ $( "&* $(,8=*..2<@,015%qq q
 !q
q q $q q &q 6q (q ,q  ":!q" *#q$ !/%q& 'q( 
)qp 59(,

 

 2
 &
 

, !%$(

 

 
 "
 

47 59	

 0
 2	

 

3.
42342 !	$J($J $J 	$J
 
$JL&P &9?	, &5;	B +>D	 G+ ! &;	
 % 
 >C
!
6:
JM
	
++ 0 
	>?"5C	#

8#6;	O%O/2O	%O
P%P/2P	%P
),), ), 
	),V,-, /, 
	,8."; .;69;	;rE   rO   )	metaclassc                  >    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	rg
)r!  iO  rG   r1  z	List[str]r&  r$  zDict[str, str]r#  rF   N)rI   rJ   rK   rL   r  rM   rF   rE   rC   r!  r!  O  s    K
OrE   r!  c           
       ^^^ [         R                  " U 5      n[         R                  " U5      n[        5       m[        5       m        SUUU4S jjnU" UU[         R                  " U5      [        U5      R                  U5      5        [         R                  (       aI  [        US5      (       d   eU" [        U S0 5      [        US0 5      UR                  [        US0 5      5        TT4$ )Nc                  > [        U5      R                  T
5       Hf  nU R                  U5      nUR                  U5      nXe:w  d  M,  UR                  U5      nXW:X  a  T	R                  U5        MU  TR                  U5        Mh     g rh   )set
differencer_   r  )	meta_dict	insp_dictdefault_dictattrsattr
meta_value
insp_valuedefault_valuer  ignored_attrr  s           rC   check_dicts._compare_identity_options.<locals>.check_dictse  so     J))$/D"t,J"t,J' , 0 0 6. $$T*HHTN 0rE   dialect_kwargs)r  r  r  r  r  r  r  zIterable[str])r"   _get_identity_options_dictr  unionidentity_has_dialect_kwargshasattrr  r  )	metadata_ioinspector_io
default_ior  meta_dinsp_dr  r  r  s	      `   @@rC   r  r  V  s     33K@F33LAF5D5L#$#$# (# 	# #  ..z:F&!	 ..z#34444 	K!126L"2B7%%L"2B7		
 rE   )r  -Union[schema.Identity, schema.Sequence, None]r  r  r  z'Union[schema.Identity, schema.Sequence]r  zSet[str])J
__future__r   loggingr  typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   
sqlalchemyr   r   r   r   r   r   r   r    r   r   r   r   r!   r"   r#   r$   sqlalchemy.enginer%   r&   sqlalchemy.engine.cursorr'   sqlalchemy.engine.reflectionr(   sqlalchemy.sqlr)   r*   sqlalchemy.sql.elementsr+   sqlalchemy.sql.schemar,   r-   r.   r/   sqlalchemy.sql.selectabler0   sqlalchemy.sql.type_apir1   r2   autogenerate.apir3   operations.batchr4   r5   	getLoggerrI   r  r;   r7   r=   r  rO   r!  r  rF   rE   rC   <module>r     s   #  	                   +       8 :  ,)56,)30:+652$116!
t 
 (*$ ){;H {;|Z 0>0?0 80 	0rE   