
    -ji&z                    4   % 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"  \(       a  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/J0r0  S S+K1J2r2  S S,K1J3r3  S S-K4J5r5  S S.K6J7r7  S S/K6J8r8  S S0K6J9r9  S S1K6J:r:  S S2K;J<r<  S S3K=J>r>  SS4KJ?r?  SS5K@JArA  SS6KBJCrC  SS7KBJDrD  \+\--  \,-  \.-  rE\R                  " \G5      rH " S8 S9\I5      rJ0 rKS:\LS;'    " S< S=\JS>9rM " S? S@\5      rN        SBSA jrOg)C    )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)ReflectedForeignKeyConstraint)ReflectedIndex)ReflectedPrimaryKeyConstraint)ReflectedUniqueConstraint)	Inspector)ClauseElement)
Executable)quoted_name)
Constraint)ForeignKeyConstraint)Index)UniqueConstraint)TableClause)
TypeEngine)_ServerDefaultType)AutogenContext)ApplyBatchImpl)BatchOperationsImplc                  *    \ rS rSr      SS jrSrg)ImplMetaK   c                V    [         R                  XX#5      nSU;   a  U [        US   '   U$ )N__dialect__)type__init___impls)cls	classnamebasesdict_newtypes        J/home/james-whalen/.local/lib/python3.13/site-packages/alembic/ddl/impl.pyr@   ImplMeta.__init__L   s0     --=E!+.F5'(     N)rC   strrD   zTuple[Type[DefaultImpl]]rE   Dict[str, Any])__name__
__module____qualname____firstlineno__r@   __static_attributes__rJ   rI   rG   r;   r;   K   s#    		 (	 		rI   r;   zDict[str, Type[DefaultImpl]]rA   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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DefaultImpl[   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_synonymsrJ   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`   ra   rb   rg   rd   rf   s          rG   r@   DefaultImpl.__init__t   sw     $)--ouE*	((%6";;''I   rI   c                (    [         UR                     $ N)rA   name)rB   r`   s     rG   get_by_dialectDefaultImpl.get_by_dialect   s    gll##rI   c                    U R                   c   eU R                   R                  US-   5        U R                   R                  5         g )Nz

)rd   writeflush)ri   r   s     rG   static_outputDefaultImpl.static_output   s>    !!---  /  "rI   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)rm   )r   r   r   r   append_constraintr   )ri   version_tableversion_table_schemaversion_table_pkkwvts         rG   version_table_implDefaultImpl.version_table_impl   sW    & J=&*u='	
   $!=/(> 	rI   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.

FrJ   )ri   batch_ops     rG   requires_recreate_in_batch&DefaultImpl.requires_recreate_in_batch   s     rI   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.

NrJ   )ri   
batch_impltables      rG   prep_table_for_batch DefaultImpl.prep_table_for_batch       rI   c                    U R                   $ rl   )ra   ri   s    rG   bindDefaultImpl.bind   s    rI   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 timerJ   )
isinstancerK   r   rb   	TypeErrorr_   r   
DDLElementdictr   r-   compiler`   rs   replacestripcommand_terminatorra   execution_optionsexecute)ri   	constructr   multiparamsparams
compile_kwcompiledconns           rG   _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6rI   c                &    U R                  X5        g rl   )r   )ri   sqlr   s      rG   r   DefaultImpl.execute  s    
 	

3*rI   )rx   server_defaultrm   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)ri   
table_namecolumn_namerx   r   rm   r   r   r   r   r   r   r   r   r   r~   cls_s                    rG   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
 rI   r   if_not_existsinline_referencesc          
     R    U R                  [        R                  " UUUUUS95        g )Nr   )r   r   	AddColumn)ri   r   columnr   r   r   s         rG   
add_columnDefaultImpl.add_column~  s+     	

NN+"3	
rI   r   	if_existsc          	     L    U R                  [        R                  " XX4S95        g )Nr   )r   r   
DropColumn)ri   r   r   r   r   r~   s         rG   drop_columnDefaultImpl.drop_column  s!     	

OO6	
rI   c                    UR                   b  UR                  U 5      (       aN  [        R                  (       a  UR                  SS5        U R	                  [
        R                  " U40 UD65        g g )Nisolate_from_tableT)_create_ruler"   sqla_2_1
setdefaultr   r   AddConstraintri   constr~   s      rG   add_constraintDefaultImpl.add_constraint  sX    %););D)A)A##2D9JJv++E8R89	 *BrI   c                P    U R                  [        R                  " U40 UD65        g rl   )r   r   DropConstraintr   s      rG   drop_constraintDefaultImpl.drop_constraint  s    

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

^FK	
rI   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_createra   r   r   CreateTableafter_createindexesCreateIndexr`   supports_commentsinline_commentsr   create_table_commentcolumnscreate_column_comment)ri   r   r~   indexwith_commentr   r   s          rG   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 $rI   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_dropra   r   r   	DropTable
after_drop)ri   r   r~   s      rG   
drop_tableDefaultImpl.drop_table  sd    ""??u$ 	# 	
 	

6##E0R01!!??u$ 	" 	
rI   c                P    U R                  [        R                  " U40 UD65        g rl   )r   r   r   ri   r   r~   s      rG   create_indexDefaultImpl.create_index  s    

6%%e2r23rI   c                N    U R                  [        R                  " U5      5        g rl   )r   r   SetTableCommentri   r   s     rG   r    DefaultImpl.create_table_comment  s    

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

6**512rI   c                N    U R                  [        R                  " U5      5        g rl   )r   r   SetColumnComment)ri   r   s     rG   r   !DefaultImpl.create_column_comment  s    

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

6##E0R01rI   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   rJ   )r   listr   r   rb   r   insertinlinevaluesitemsr"   _literal_bindparamcr?   )ri   r   rowsmultiinsertrowkvs          rG   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)ri   r   
definitiontokensterm_tokens
paren_termtokenr   termkeyvals              rG   _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 : rI   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)token0rY   r%  joinr/  issubset)ri   inspector_paramsmetadata_paramsbatchtsynonymsinspector_all_termsmetadata_all_termss           rG   _column_types_matchDefaultImpl._column_types_match1  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
Fr9  r   T)	lenr/  r-  r;  r%  rZ   r&  searchgroup)ri   inspected_paramsmeta_paramsinspmetaregmimms           rG   _column_args_matchDefaultImpl._column_args_matchG  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 ) rI   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)r6  rD  rQ  )ri   inspector_columnmetadata_columnr=  r>  s        rG   compare_typeDefaultImpl.compare_typeh  sS      556FG44_E''(8JJ&&'7IIrI   c                
    XC:g  $ rl   rJ   )ri   rT  rU  rendered_metadata_defaultrendered_inspector_defaults        rG   compare_server_default"DefaultImpl.compare_server_defaultx  s     *FFrI   c                    g rl   rJ   )ri   conn_uniquesconn_indexesmetadata_unique_constraintsmetadata_indexess        rG   correct_for_autogen_constraints+DefaultImpl.correct_for_autogen_constraints  s     	rI   c                p    UR                   R                  UR                  La  [        US   U5      US'   g g )Nexpr)r?   _type_affinityr   )ri   existingexisting_transfernew_types       rG   cast_for_batch_migrate"DefaultImpl.cast_for_batch_migrate  s:    ==''x/F/FF(,!&)8)f% GrI   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   )rK   r   r`   )ri   re  is_server_defaultr~   r   s        rG   render_ddl_sql_exprDefaultImpl.render_ddl_sql_expr  s/     (,eD
LLjLI
 	
rI   c                    U R                   $ rl   )autogen_column_reflect)ri   	inspectors     rG   _compat_autogen_column_reflect*DefaultImpl._compat_autogen_column_reflect  s    ***rI   c                    g rl   rJ   )ri   conn_fksmetadata_fkss      rG   correct_for_autogen_foreignkeys+DefaultImpl.correct_for_autogen_foreignkeys  s    
 	rI   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.

NrJ   )ri   rs  r   column_infos       rG   rr  "DefaultImpl.autogen_column_reflect  r   rI   c                    g)zA hook called when :meth:`.EnvironmentContext.run_migrations`
is called.

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

NrJ   r   s    rG   start_migrationsDefaultImpl.start_migrations  r   rI   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rs   r   r   s    rG   
emit_beginDefaultImpl.emit_begin  s     	7T%<%<<=rI   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`.

COMMITNr  r   s    rG   emit_commitDefaultImpl.emit_commit  s     	8d&=&==>rI   c                    gNFrJ   )ri   type_objautogen_contexts      rG   render_typeDefaultImpl.render_type  s     rI   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_updater]   )ri   metadata_identityinspector_identitydiffignoredmeta_alwaysinspector_alwayss          rG   _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
 	
rI   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)ri   metadata_indexreflected_indexconn_uniquemeta_uniques        rG   _compare_index_unique!DefaultImpl._compare_index_unique  s@     ?112>001%[M[MBBrI   c                2    [         R                  " SX40 UD6$ )NTr   from_constraintri   
constraintoptss      rG   _create_metadata_constraint_sig+DefaultImpl._create_metadata_constraint_sig  s     ..tTNNNrI   c                2    [         R                  " SX40 UD6$ r  r  r  s      rG    _create_reflected_constraint_sig,DefaultImpl._create_reflected_constraint_sig  s     ..udO$OOrI   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)ri   r  r  msg
unique_msgm_sigr_sigsigs           rG   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#))++rI   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  )ri   metadata_constraintreflected_constraintmetadata_tupreflected_tupmeta_sigconn_sigs          rG   compare_unique_constraint%DefaultImpl.compare_unique_constraint-  s~     ;;
 == 
  '' ((#--hZtH:6  $))++rI   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)	rm   r  r"   is_expression_indexr!   r   r>   sqlalchemy_versiondiscard)ri   ra  r_  r  conn_indexes_by_nameidxiexs          rG   _skip_functional_indexes$DefaultImpl._skip_functional_indexesI  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)rc   )ri   reflected_objectkinds      rG    adjust_reflected_dialect_options,DefaultImpl.adjust_reflected_dialect_optionsZ  s      ##$5r::rI   )rb   ra   rf   r`   r_   re   rd   rg   )r`   r&   ra   Optional[Connection]rb   r  rg   Optional[bool]rd   zOptional[TextIO]rf   rL   returnNone)r`   r&   r  zType[DefaultImpl])r   rK   r  r  )
r{   rK   r|   Optional[str]r}   r  r~   r   r  r   )r   r9   r  r  )r   r8   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]rl   )r   r  r   zOptional[dict[str, Any]]r  r  ) r   rK   r   rK   rx   r  r   3Optional[Union[_ServerDefaultType, Literal[False]]]rm   r  r   Optional[TypeEngine]r   r  r   r  r   z$Optional[Union[str, Literal[False]]]r   r  r   r  r   r  r   r  r   r  r~   r   r  r  )r   rK   r   Column[Any]r   !Optional[Union[str, quoted_name]]r   r  r   r  r  r  )
r   rK   r   r  r   r  r   r  r  r  )r   r   r~   r   r  r  )r   r0   r~   r   r  r  )r   rK   r   zUnion[str, quoted_name]r   r  r  r  )r   r   r~   r   r  r  )r   r2   r~   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*  )r=  r*  r>  r*  r  r  )rJ  r*  rK  r*  r  r  )rT  r  rU  r   r  r  )
r^  Set[UniqueConstraint]r_  
Set[Index]r`  r  ra  r  r  r  )F)re  r-   rn  r  r~   r   r  rK   )rs  r,   r  r   )rw  Set[ForeignKeyConstraint]rx  r  r  r  )r  r  )r  r5   r  r7   r  zUnion[str, Literal[False]])r  r2   r  r2   r  r  )r  z_autogen._Cr  r   r  z_constraint_sig[_autogen._C])r  r2   r  r2   r  r   )r  r3   r  r3   r  r   )r  _ReflectedConstraintr  rK   r  rL   )?rM   rN   rO   rP   __doc__r>   rg   r   rY   __annotations__rZ   r]   r@   classmethodrn   rs   r   r   r   propertyr   r!   immutabledictr   r   r   r   r   r   r   r   r   r   r  r   r	  r   r  r  r6  rD  rQ  rV  r[  rb  rj  ro  rt  ry  rr  r  r  r  r  r  r  r  r  r  r  r  r  rQ   rJ   rI   rG   rS   rS   [   sx   
 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)ss s
 !s
s s $s s &s 6s (s ,s "
!s& *'s( !/)s* +s, 
-st 59(,,0

 

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

 
 "
 

: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."; 4;<?;	;rI   rS   )	metaclassc                  >    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	rg
)r*  i`  rK   r:  z	List[str]r/  r-  zDict[str, str]r,  rJ   N)rM   rN   rO   rP   r  rQ   rJ   rI   rG   r*  r*  `  s    K
OrI   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 rl   )set
differencerc   r  )	meta_dict	insp_dictdefault_dictattrsattr
meta_value
insp_valuedefault_valuer  ignored_attrr  s           rG   check_dicts._compare_identity_options.<locals>.check_dictsv  so     J))$/D"t,J"t,J' , 0 0 6. $$T*HHTN 0rI   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	      `   @@rG   r  r  g  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		
 rI   )r  -Union[schema.Identity, schema.Sequence, None]r	  r  r
  z'Union[schema.Identity, schema.Sequence]r  zSet[str])P
__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.interfacesr(   r)   r*   r+   sqlalchemy.engine.reflectionr,   sqlalchemy.sqlr-   r.   sqlalchemy.sql.elementsr/   sqlalchemy.sql.schemar0   r1   r2   r3   sqlalchemy.sql.selectabler4   sqlalchemy.sql.type_apir5   r6   autogenerate.apir7   operations.batchr8   r9   r  	getLoggerrM   r  r?   r;   rA   r  rS   r*  r  rJ   rI   rG   <module>r     s?   #  	                   +       8 :  ,)5J;JF6,)30:+652(116 	&
'	(
	 $	$  !
t 
 (*$ )B;H B;JZ 0>0?0 80 	0rI   