
    gu                       % 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"  \(       ax  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*K/J1r1  S S+K2J3r3  S S,K2J4r4  S S-K2J5r5  S S.K2J6r6  S S/K7J8r8  S S0K9J:r:  SS1KJ;r;  SS2K<J=r=  SS3K>J?r?  SS4K>J@r@  \R                  " \B5      rC " S5 S6\D5      rE0 rFS7\GS8'    " S9 S:\ES;9rH " S< S=\5      rI        S?S> jrJg)@    )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)ColumnElement)quoted_name)
Constraint)ForeignKeyConstraint)Index)UniqueConstraint)TableClause)
TypeEngine)_ServerDefault)AutogenContext)ApplyBatchImpl)BatchOperationsImplc                  *    \ rS rSr      SS jrSrg)ImplMetaB   c                V    [         R                  XX#5      nSU;   a  U [        US   '   U$ )N__dialect__)type__init___impls)cls	classnamebasesdict_newtypes        X/Users/Alptekin/Desktop/izin_takip/venv/lib/python3.13/site-packages/alembic/ddl/impl.pyr=   ImplMeta.__init__C   s0     --=E!+.F5'(     N)r@   strrA   zTuple[Type[DefaultImpl]]rB   Dict[str, Any])__name__
__module____qualname____firstlineno__r=   __static_attributes__rG   rF   rD   r8   r8   B   s#    		 (	 		rF   r8   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'                 S@S jr\SAS j5       rSBS jr          SCS jr    SDS jr      SES jr\SFS j5       rSS\R,                  " 5       4         SGS jjr SH     SIS jjr            SJ                               SKS jjr SH       SLS jjr SH       SMS jjrSNS jrSOS jr SH       SPS jjrSQS  jrSQS! jr SRS" jr!SSS# jr"SSS$ jr#STS% jr$SRS& jr% SU       SVS' jjr&SWS( jr'      SXS) jr(      SYS* jr)      SZS+ jr*S, r+          S[S- jr,S. r- S\       S]S/ jjr.S^S0 jr/      S_S1 jr0S2 r1S`S3 jr2S`S4 jr3S`S5 jr4      SaS6 jr5S7 r6      SbS8 jr7      ScS9 jr8      ScS: jr9      SdS; jr:      SeS< jr;S= r<      SfS> jr=S?r>g)gDefaultImplR   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_synonymsrG   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_   rd   ra   rc   s          rD   r=   DefaultImpl.__init__k   sw     $)--ouE*	((%6";;''I   rF   c                (    [         UR                     $ N)r>   name)r?   r]   s     rD   get_by_dialectDefaultImpl.get_by_dialect   s    gll##rF   c                    U R                   c   eU R                   R                  US-   5        U R                   R                  5         g )Nz

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

FrG   )rf   batch_ops     rD   requires_recreate_in_batch&DefaultImpl.requires_recreate_in_batch   s     rF   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.

NrG   )rf   
batch_impltables      rD   prep_table_for_batch DefaultImpl.prep_table_for_batch       rF   c                    U R                   $ ri   )r^   rf   s    rD   bindDefaultImpl.bind   s    rF   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 timerG   )
isinstancerH   r   r_   	TypeErrorr\   r   
DDLElementdictr   r)   compiler]   rp   replacestripcommand_terminatorr^   execution_optionsexecute)rf   	constructr   multiparamsparams
compile_kwcompiledconns           rD   _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6rF   c                &    U R                  X5        g ri   )r   )rf   sqlr   s      rD   r   DefaultImpl.execute   s    
 	

3*rF   c                   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   existing_typeexisting_server_defaultexisting_nullableexisting_commentFimpl)r   r   r   r   )r!   warnr   r   ColumnNullabler"   _server_default_is_computedComputedColumnDefault_server_default_is_identityIdentityColumnDefaultColumnDefault
ColumnTypeColumnComment
ColumnName)rf   
table_namecolumn_nameru   server_defaultrj   type_r   autoincrementcommentr   r   r   r   existing_autoincrementr{   cls_s                    rD   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
 rF   c                L    U R                  [        R                  " XUS95        g Nr   )r   r   	AddColumn)rf   r   columnr   s       rD   
add_columnDefaultImpl.add_columnp  s     	

4>>*VDErF   c                L    U R                  [        R                  " XUS95        g r   )r   r   
DropColumn)rf   r   r   r   r{   s        rD   drop_columnDefaultImpl.drop_columnx  s     	

4??:fEFrF   c                    UR                   b  UR                  U 5      (       a&  U R                  [        R                  " U5      5        g g ri   )_create_ruler   r   AddConstraintrf   consts     rD   add_constraintDefaultImpl.add_constraint  s;    %););D)A)AJJv++E23 *BrF   c                N    U R                  [        R                  " U5      5        g ri   )r   r   DropConstraintr   s     rD   drop_constraintDefaultImpl.drop_constraint  s    

6((/0rF   c                L    U R                  [        R                  " XUS95        g r   )r   r   RenameTable)rf   old_table_namenew_table_namer   s       rD   rename_tableDefaultImpl.rename_table  s      	

^FK	
rF   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)rf   r   r{   indexwith_commentr   r   s          rD   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 $rF   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)rf   r   r{   s      rD   
drop_tableDefaultImpl.drop_table  sd    ""??u$ 	# 	
 	

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

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

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

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

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

6##E0R01rF   c                   [        U[        5      (       d  [        S5      eU(       a#  [        US   [        5      (       d  [        S5      eU R                  (       a  U H  nU R                  [        R                  " U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(       ak  U(       a%  U R                  [        R                  " U5      US9  g U H8  nU R                  [        R                  " U5      R                  " S0 UD65        M:     g g s  snnf )NzList expectedr   zList of dictionaries expected)r   )r   rG   )r   listr   r   r_   r   r"   _insert_inlinevaluesitems_literal_bindparamcr<   )rf   r   rowsmultiinsertrowkvs          rD   bulk_insertDefaultImpl.bulk_insert  sK    $%%O,,*T!Wd33;<<;;

..u5<<  ),		 )4  (2$%{'E'E(" (" !, > >$%
!" &'' )4 $ JJ#2259t    $

'66u=DDKsK  $ s   !AE=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)rf   r   
definitiontokensterm_tokens
paren_termtokenr   termkeyvals              rD   _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 : rF   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)token0rV   r  joinr$  issubset)rf   inspector_paramsmetadata_paramsbatchtsynonymsinspector_all_termsmetadata_all_termss           rD   _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
Fr.  r   T)	lenr$  r"  r0  r  rW   r  searchgroup)rf   inspected_paramsmeta_paramsinspmetaregmimms           rD   _column_args_matchDefaultImpl._column_args_match'  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 ) rF   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+  r9  rF  )rf   inspector_columnmetadata_columnr2  r3  s        rD   compare_typeDefaultImpl.compare_typeH  sS      556FG44_E''(8JJ&&'7IIrF   c                
    XC:g  $ ri   rG   )rf   rI  rJ  rendered_metadata_defaultrendered_inspector_defaults        rD   compare_server_default"DefaultImpl.compare_server_defaultX  s     *FFrF   c                    g ri   rG   )rf   conn_uniquesconn_indexesmetadata_unique_constraintsmetadata_indexess        rD   correct_for_autogen_constraints+DefaultImpl.correct_for_autogen_constraintsa  s     	rF   c                p    UR                   R                  UR                  La  [        US   U5      US'   g g )Nexpr)r<   _type_affinityr   )rf   existingexisting_transfernew_types       rD   cast_for_batch_migrate"DefaultImpl.cast_for_batch_migratej  s:    ==''x/F/FF(,!&)8)f% GrF   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   )rH   r   r]   )rf   rZ  is_server_defaultr{   r   s        rD   render_ddl_sql_exprDefaultImpl.render_ddl_sql_exprp  s/     (,eD
LLjLI
 	
rF   c                    U R                   $ ri   )autogen_column_reflect)rf   	inspectors     rD   _compat_autogen_column_reflect*DefaultImpl._compat_autogen_column_reflect~  s    ***rF   c                    g ri   rG   )rf   conn_fksmetadata_fkss      rD   correct_for_autogen_foreignkeys+DefaultImpl.correct_for_autogen_foreignkeys  s    
 	rF   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.

NrG   )rf   rh  r   column_infos       rD   rg  "DefaultImpl.autogen_column_reflect  r   rF   c                    g)zA hook called when :meth:`.EnvironmentContext.run_migrations`
is called.

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

NrG   r   s    rD   start_migrationsDefaultImpl.start_migrations  r   rF   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rp   r   r   s    rD   
emit_beginDefaultImpl.emit_begin  s     	7T%<%<<=rF   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`.

COMMITNrx  r   s    rD   emit_commitDefaultImpl.emit_commit  s     	8d&=&==>rF   c                    gNFrG   )rf   type_objautogen_contexts      rD   render_typeDefaultImpl.render_type  s     rF   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_updaterZ   )rf   metadata_identityinspector_identitydiffignoredmeta_alwaysinspector_alwayss          rD   _compare_identity_default%DefaultImpl._compare_identity_default  s     2  "	
 /4@"#5xF%5 66HHXt99:
 JM$01T:L5MM
 	
rF   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)rf   metadata_indexreflected_indexconn_uniquemeta_uniques        rD   _compare_index_unique!DefaultImpl._compare_index_unique  s@     ?112>001%[M[MBBrF   c                2    [         R                  " SX40 UD6$ )NTr   from_constraintrf   
constraintoptss      rD   _create_metadata_constraint_sig+DefaultImpl._create_metadata_constraint_sig  s     ..tTNNNrF   c                2    [         R                  " SX40 UD6$ r  r  r  s      rD    _create_reflected_constraint_sig,DefaultImpl._create_reflected_constraint_sig  s     ..udO$OOrF   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)rf   r  r  msg
unique_msgm_sigr_sigsigs           rD   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#))++rF   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  )rf   metadata_constraintreflected_constraintmetadata_tupreflected_tupmeta_sigconn_sigs          rD   compare_unique_constraint%DefaultImpl.compare_unique_constraint  s~     ;;
 == 
  '' ((#--hZtH:6  $))++rF   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)	rj   r	  r"   is_expression_indexr!   r   r;   sqlalchemy_versiondiscard)rf   rV  rT  r  conn_indexes_by_nameidxiexs          rD   _skip_functional_indexes$DefaultImpl._skip_functional_indexes)  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`   )rf   reflected_objectkinds      rD    adjust_reflected_dialect_options,DefaultImpl.adjust_reflected_dialect_options:  s      ##$5r::rF   )r_   r^   rc   r]   r\   rb   ra   rd   )r]   r&   r^   Optional[Connection]r_   r  rd   Optional[bool]ra   zOptional[TextIO]rc   rI   returnNone)r]   r&   r  zType[DefaultImpl])r   rH   r  r  )
rx   rH   ry   Optional[str]rz   r  r{   r   r  r   )r   r6   r  r  )r   r5   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]ri   )r   r  r   zOptional[dict[str, Any]]r  r  )NFNNNNFNNNNN) r   rH   r   rH   ru   r  r   z%Union[_ServerDefault, Literal[False]]rj   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  r{   r   r  r  )r   rH   r   Column[Any]r   !Optional[Union[str, quoted_name]]r  r  )r   rH   r   r  r   r  r  r  )r   r   r  r  )r   r-   r  r  )r   rH   r   zUnion[str, quoted_name]r   r  r  r  )r   r   r{   r   r  r  )r   r/   r{   r   r  r  )r   r   r  r  )r   zColumnElement[Any]r  r  )T)r   zUnion[TableClause, Table]r  z
List[dict]r  r  r  r  )r   r   r  r  )r2  r  r3  r  r  r  )r?  r  r@  r  r  r  )rI  r  rJ  r   r  r  )
rS  Set[UniqueConstraint]rT  
Set[Index]rU  r  rV  r  r  r  )F)rZ  r)   rc  r  r{   r   r  rH   )rh  r(   r  r   )rl  Set[ForeignKeyConstraint]rm  r  r  r  )r  r  )r  r2   r  r4   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  r0   r  r0   r  r   )r  rI   r  rH   r  rI   )?rJ   rK   rL   rM   __doc__r;   rd   r   rV   __annotations__rW   rZ   r=   classmethodrk   rp   r}   r   r   propertyr   r!   immutabledictr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r+  r9  rF  rK  rP  rW  r_  rd  ri  rn  rg  rt  ry  r}  r  r  r  r  r  r  r  r  r  rN   rG   rF   rD   rP   rP   R   sR   
 K,5y+A*CM'C&(m(
 .B?A ) 	
 * ( % 
4 $ $#
    ,	 
     
 D+		(	16			   :>=A$($6$6$8+7)+7 7+7 ;	+7
 "+7 
 +7` 7;+#+ 4+ 
	+ $(@E"&* $(,8=*..2<@,015nn n !	n
 >n n $n n &n 6n (n ,n ":n *n !/n  !n" 
#nh 59	FF F 2	F
 
F !%	GG G 	G 
G41 59	

 0
 2	

 

3.
42342 !	&(& & 	&
 
&P&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;	;rF   rP   )	metaclassc                  >    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	rg
)r  i@  rH   r/  z	List[str]r$  r"  zDict[str, str]r!  rG   N)rJ   rK   rL   rM   r  rN   rG   rF   rD   r  r  @  s    K
OrF   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                  (       a6  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 ri   )set
differencer`   r  )	meta_dict	insp_dictdefault_dictattrsattr
meta_value
insp_valuedefault_valuer  ignored_attrr  s           rD   check_dicts._compare_identity_options.<locals>.check_dictsV  so     J))$/D"t,J"t,J' , 0 0 6. $$T*HHTN 0rF   dialect_kwargs)r  r  r  r  r  r  r  zIterable[str])r"   _get_identity_options_dictr  unionidentity_has_dialect_kwargsr  r  )	metadata_ioinspector_io
default_ior  meta_dinsp_dr  r  r  s	      `   @@rD   r  r  G  s     33K@F33LAF5D5L#$#$# (# 	# #  ..z:F&!	 .. 	K!126L"2B7%%L"2B7		
 rF   )r  -Union[schema.Identity, schema.Sequence, None]r  r  r  z'Union[schema.Identity, schema.Sequence]r  zSet[str])K
__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+   r,   sqlalchemy.sql.schemar-   r.   r/   r0   sqlalchemy.sql.selectabler1   sqlalchemy.sql.type_apir2   r3   autogenerate.apir4   operations.batchr5   r6   	getLoggerrJ   r  r<   r8   r>   r  rP   r  r  rG   rF   rD   <module>r     s   #  	                   +       8 :  ,)56,)530:+652$116!
t 
 (*$ )k;H k;\Z />/?/ 8/ 	/rF   