
    g              	      $   % S SK Jr  S SK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(  \(       aN  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%K3J4r4  S S&K5J6r6  S S'K5J7r7  S S(K5J8r8  S S)K5J9r9  SS*K#J:r:  \Rv                  " \<5      r=      SKS+ jr>\"R~                  " S,S-9r@      SLS. jrA\@R                  S/5              SMS0 j5       rC            SNS1 jrD\"R                  " \R                  \R                  \R                  \R                  \R                  \R                  S2.5      rJS3\KS4'           SOS5 jrL        SPS6 jrM      SQS7 jrN\R                                  SRS8 j5       rP\" S9\\\\4   S:9rQ\@R                  S;5                    SSS< j5       rRS= rS\@R                  S>5                      STS? j5       rT\@R                  S>5                      SUS@ j5       rU\@R                  S>5                      STSA j5       rV      SVSB jrWSWSC jrX                SXSD jrYSYSE jrZSF r[\@R                  S>5                      SZSG j5       r\\@R                  S>5                      S[SH j5       r]\@R                  S;5                    S\SI j5       r^\@R                  S;5                    S]SJ j5       r_g)^    )annotationsN)Any)cast)Dict)Iterator)Mapping)Optional)Set)Tuple)TYPE_CHECKING)TypeVar)Union)event)inspectschema)text)types)
expression)ForeignKeyConstraint)Index)UniqueConstraint)
OrderedSet   )util)is_index_sig)	is_uq_sig)ops)sqla_compat)Literal)	Inspector)quoted_name)
TextClause)Column)Table)AutogenContext)DefaultImpl)AlterColumnOp)MigrationScript)ModifyTableOps)
UpgradeOps)_constraint_sigc                x    UR                   S   nUR                  S   n[        X5        UR                  U5        g )N)upgrade_ops_listdowngrade_ops_list_produce_net_changesreverse_into)autogen_contextmigration_scriptupgrade_opsdowngrade_opss       d/Users/Alptekin/Desktop/izin_takip/venv/lib/python3.13/site-packages/alembic/autogenerate/compare.py_populate_migration_scriptr8   ;   s:     #33B7K$77;M6]+    T)uselistc                .   U R                   nUc   eU R                  R                  SS5      n[        U5      nUR                  R
                  nU(       aM  [        UR                  5       5      nUR                  S5        UR                  U5        UR                  S 5        OS 1nU Vs1 s H  opR                  US0 5      (       d  M  UiM      nnU R                  c   e[        R                  SU R                  R                  5      " XU5        g s  snf )Ninclude_schemasFinformation_schemar   )
connectionoptsgetr   dialectdefault_schema_namesetget_schema_namesdiscardaddrun_name_filterscomparatorsdispatchname)r3   r5   r>   r<   	inspectordefault_schemaschemasss           r7   r1   r1   H   s     !++J!!!%**../@%HO":.I'';;Ni0023,-'D& a>>q(BO7   ""...?#:#:#?#?@gs   *D	Dr   c                  ^ ^
 T R                   n[        5       nT R                  R                  nT R                  R                  nU Hc  m
[        UR                  T
S95      nT
U:X  a&  UR                  T R                  R                  /5      nUR                  U U
4S jU 5       5        Me     [        T R                   Vs/ s H  oR                  UR                  4PM     sn5      R                  XV4/5      n	[        UU	UUT 5        g s  snf )Nr   c              3  d   >#    U  H%  nTR                  US ST05      (       d  M  TU4v   M'     g7f)tableschema_nameN)rG   ).0tnamer3   rR   s     r7   	<genexpr>&_autogen_for_tables.<locals>.<genexpr>}   s9       
//w < ![% s   00)rK   rC   migration_contextversion_table_schemaversion_tableget_table_names
differenceupdater   sorted_tablesr   rJ   _compare_tables)r3   r5   rM   rK   conn_table_namesrX   rY   tablesrQ   metadata_table_namesrR   s   `         @r7   _autogen_for_tablesrb   g   s     ))I7:u 	))>>  $55CCMY..k.BC..&& 22@@AF 	  
 
 	
  &1@1N1NO1N,,

	#1NOj'789   	Ps   !D
c                	   UR                   R                  R                  n[        U VVs/ s H  u  pgXe:w  a  UOS U4PM     snn5      n[	        X5       V	VVs0 s H+  u  n	u  pgXR
                  [        R                  " Xv5         _M-     n
nn	nUnUR                  U 5       H  u  pU(       a	  U< SU< 3OUnXU4   nUR                  XSSS 5      (       d  M8  UR                  R                  [        R                  R                  U5      5        [        R                  SU5        [        R                   " U/ US9n["        R%                  S5      " UUUUS U5        UR'                  5       (       a  M  UR                  R                  U5        M     [        R(                  " 5       nU R                  U5       GHf  u  p[        R                  " X{5      nXR*                  ;   n[        R,                  " XUS9nU(       dR  [.        R0                  " USUR2                  R4                  R7                  U5      5        [8        R:                  " UU5        UR                  UUSSS 5      (       d  M  [        R                   " U/ US9n["        R%                  S5      " XNXUS 5        UR'                  5       (       d  UR                  R                  U5        UR                  R                  [        R<                  R                  U5      5        [        R                  SU5        GMi     U R?                  U5      n[        R(                  " 5       n0 nU H  u  p[        R                  " X{5      nUUR*                  ;   n[        R,                  " UUUS9nU(       dR  [.        R0                  " USUR2                  R4                  R7                  U5      5        [8        R:                  " UU5        UUX4'   M     [A        US	 S
9 H  u  pU=(       d    S nU(       a	  U< SU< 3OUnXU4   nUR*                  U   nUR                  XSSU5      (       d  MR  [        R                   " U/ US9n[C        UUUUUUU5         ["        R%                  S5      " UUUUUU5        S S S 5        UR'                  5       (       a  M  UR                  R                  U5        M     g s  snnf s  snnn	f ! , (       d  f       NR= f)N.rQ   FzDetected added table %rr   column_reflectTzDetected removed table %rc                (    U S   =(       d    SU S   4$ )Nr        )xs    r7   <lambda>!_compare_tables.<locals>.<lambda>   s    1Q4:2qt:Lr9   )key)"bindrA   rB   r   ziptable_key_to_table	sa_schema_get_table_keyr[   run_object_filtersr   appendCreateTableOp
from_tableloginfor*   rH   rI   is_emptyMetaDatar`   r%   r   listenrW   impl_compat_autogen_column_reflectr   _reflect_tableDropTableOpintersectionsorted_compare_columns)r_   ra   rK   r5   r3   rL   r   rT   #metadata_table_names_no_dflt_schemano_dflt_schematname_to_tablerN   rJ   metadata_tablemodify_table_opsremoval_metadataexiststexisting_tablesexisting_metadataconn_column_info
conn_tables                         r7   r^   r^      s    ^^++??N +5 "6	
!5 /VT5A!5	
+' 03/0
	0
+NOV 	::$$U3
 	
0
	   ?(334DE'(!U#e'E
3--7E4
 
 OO""!!,,^< HH.5"11%AF  )  $,,..&&'78+ F. !))+$//0DE''1000OOEA>LL 1166.. &&y!4--atLL"11%AF  )1Q $,,..&&'78OO""3??#=#=a#@AHH0$75 F8 '334HIO!**,#''1*111OOE#4Q?LL 1166..y9 &&y!4'(!$ $  ?0LMI'(!U#e'E
3&--d3
--7E:
 
  #11%AF!  $$W-#$"$ $,,..&&'78; Nw	
x s   S
2S6!S##
S1	)ascdescnulls_first
nulls_last
nullsfirst	nullslastzMapping[str, Any]_IndexColumnSortingOpsc                   / nUR                  S5      n[        US   5       Hx  u  pVUc  SU;   d   eUS   U   n[        U5      nOUnUR                  U   nU(       a+  Xt;   a&  XG    H  n	U	[        ;   d  M  [        U	   " U5      nM      UR                  U5        Mz     [        R                  " US   /UQ7US   US.U R                  US5      D6n
SU;   a  US   U
R                  S'   U
$ )	Ncolumn_sortingcolumn_namesexpressionsrJ   unique)r   _tableindexduplicates_constraint)
r@   	enumerater   cr   rt   rq   r    adjust_reflected_dialect_optionsrx   )r|   paramsr   exprssortingnumcol_namerJ   itemoperatorixs              r7   _make_indexr   (  s    35Ejj)*G"6.#9: F***-(-D:DD<<)Dt#M551(;DAD * 	T ; 
v
	
 h	

 
/
/
@
B &(+12I+J'(Ir9   c                    [         R                  " US    Vs/ s H  o2R                  U   PM     snSUS   0U R                  US5      D6nSU;   a  US   UR                  S'   U$ s  snf )Nr   rJ   unique_constraintduplicates_index)rq   r   r   r   rx   )r|   r   r   cnameuqs        r7   _make_unique_constraintr   H  s     
	#	#+1.+A	B+A%,,u
+A	B
F^
 
/
/8K
L
B
 V#&,-?&@"#I 
Cs   A&c           
        U S   nU S   (       a  U S   < SU< 3nU R                  S0 5      n[        R                  " U S    Vs/ s H  oAR                  U   PM     snU S    Vs/ s H  oR< SU< 3PM     snUR                  S5      UR                  S5      UR                  S	5      UR                  S
5      U S   S9nUR	                  U5        U$ s  snf s  snf )Nreferred_tablereferred_schemard   optionsconstrained_columnsreferred_columnsonupdateondelete
deferrable	initiallyrJ   )r   r   r   r   rJ   )r@   rq   r   r   append_constraint)r   r   rT   r   r   nconsts          r7   _make_foreign_keyr   V  s     #$E !"34e<jjB'G***01F*GH*Ge	*GH'-.@'AB'A!E1	'ABZ(Z(;;|,++k*F^E   'L 	IBs   C&C
c           
   #  F  #    U (       a	  U < SU< 3OUn[        S UR                   5       5      nUR                   V	s0 s H"  oR                  (       a  M  U	R                  U	_M$     n
n	UR                   V	s0 s H6  n	UR	                  U	R                  SXS.5      (       d  M)  U	R                  U	_M8     nn	UR                  U5       Hr  nUR                  X   USSS 5      (       d  M!  UR                  R                  [        R                  R                  XX   5      5        [        R                  SX|5        Mt     UR                  U5       H  nX   nUR                  U   nUR                  XSSU5      (       d  M1  [        R                  " XU S9n[        R!                  S5      " UUU UUUU5        UR#                  5       (       d  M~  UR                  R                  U5        M     S v   [%        U5      R                  U5       H  nUR                  UR                  U   USSS 5      (       d  M,  UR                  R                  [        R&                  R                  XUR                  U   5      5        [        R                  S	X|5        M     g s  sn	f s  sn	f 7f)
Nrd   c              3  ^   #    U  H#  oR                   (       a  M  UR                  v   M%     g 7fN)systemrJ   )rS   r   s     r7   rU   #_compare_columns.<locals>.<genexpr>x  s      $(1(s   --column
table_namerR   FzDetected added column '%s.%s'r   TzDetected removed column '%s.%s')r   r   r   rJ   rG   r[   rs   r   rt   AddColumnOpfrom_column_and_tablenamerw   rx   r   r(   rH   rI   has_changesrC   DropColumnOp)r   rT   r   r   r   r3   rK   rJ   metadata_col_namesr   metadata_cols_by_nameconn_col_namesr   colnamemetadata_colconn_colalter_column_ops                    r7   r   r   m  sv     )/fe$ED# $&(($  *+++a88		+   A++FFHUJ
 		   $..~>--!(%5$
 
   ''99#8#?
 HH4dB ? &22>B,5<<(118UH
 
 ++E6JX&	
 &&((  ''8) C, 
^$//0BC--LL$
 
   ''  :::<<#6
 HH6D D_s=   =J!JJ(J!8(J$J50J!)C J!A%J!6A+J!_C)boundrQ   c           
       ^ ^^^^+^,^-^.^/ T R                   nTS L m-US L m.T R                  R                  m,UbS  UR                   Vs1 s H&  n[	        U[
        R                  5      (       d  M$  UiM(     nn[        UR                  5      n	O[        5       n[        5       n	[        5       =pSm/SnTb   UR                  TUS9n
Sm/U
 Vs/ s H%  nT R                  US   STUS.5      (       d  M#  UPM'     n
nU
 H  nUR                  S5      (       d  M  SnM      UR                  TUS9nU Vs/ s H%  nT R                  US   STUS.5      (       d  M#  UPM'     nnT.(       a  [        5       n
OU
 Vs1 s H  n[!        T,UT5      iM     n
nUU,4S	 jU 5        Vs1 s H
  nUc  M  UiM     nnU(       a  [#        U
UUU	T R$                  T,5        T,R'                  U
UUU	5        U Vs1 s H  nT,R)                  U5      iM     nnU	 Vs1 s H  nT,R)                  U5      iM     nnU
 Vs1 s H  nT,R+                  U5      iM     nnU Vs1 s H  nT,R+                  U5      iM     nnUR-                  U5       Vs0 s H6  nUR.                  (       d  M  [1        [2        UR5                  T 5      5      U_M8     nnU Vs0 s H  nUR6                  U_M     nnU Vs0 s H  nUR6                  U_M     nnUR-                  U5       Vs0 s H7  n[8        R:                  " UR6                  5      (       d  M*  UR6                  U_M9     nn[        U5      R=                  U5       Vs0 s H  nUUU   UU   4_M     nnU Vs0 s H  owR>                  U_M     nnU Vs0 s H  owR>                  U_M     nnU Vs0 s HB  n[8        R@                  " URB                  T R$                  5      (       a  M5  UR>                  U_MD     nnSU U-U.UU/4S
 jjnSU U-U.UU/U4S jjn      SU UU4S jjn [E        [        U5      RG                  U5      5       H  n!UU!   n"[I        U"5      (       a  U"R>                  U;   a  M*  U!U;   aH  UU!   u  n#m+[K        U+4S jU 5       5      (       a$  U#R>                  U;  a  U" U#5        U" T+5        Mt  Mv  Mx  U" U"5        M     [E        [        U5      R=                  U5      5       H  n$UU$   n%U$U;   a  UU$   u  n#m+[M        U%5      (       a  T+n"OU#n"OUU$   n"[O        U"5      [O        U%5      :w  a  U" U"5        U" U%5        M[  U%RQ                  U"5      n&U&RR                  (       a  U " U"U%U&RT                  5        M  U&RV                  (       aB  [M        U"5      (       a  SOSn'[X        R[                  SU'U"R6                  U&RT                  5        M  U&R\                  (       a  M   e   [E        [        U5      RG                  U5      5       H  n(UU(   n)U" U)5        M     U H  n*U*U;  d  M  U" UU*   5        M     g s  snf s  snf ! [         a     GNA[         a     GNMf = fs  snf ! [         a     GN f = fs  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )NFr   TrJ   r   r   r   r   c              3  >   >#    U  H  n[        TUT5      v   M     g 7fr   )r   )rS   r   r   r|   s     r7   rU   /_compare_indexes_and_uniques.<locals>.<genexpr>  s       <HbD"j11Ls   c                  > [        U 5      (       a  TR                  U R                  U R                  SSS 5      (       an  TR                  R                  [        R                  R                  U R                  5      5        [        R                  SU R                  U R                  5        g g [        U 5      (       a  T(       d  g T(       d  T(       a  g TR                  U R                  U R                  SSS 5      (       an  TR                  R                  [        R                  R                  U R                  5      5        [        R                  SU R                  U R                  5        g g  e)Nr   Fz!Detected added index '%r' on '%s'r   z+Detected added unique constraint %r on '%s')r   rs   r   rJ   r   rt   CreateIndexOp
from_indexrw   rx   r   r   AddConstraintOpfrom_constraint)objr3   is_create_tableis_drop_table
modify_opssupports_unique_constraintss    r7   	obj_added/_compare_indexes_and_uniques.<locals>.obj_addeds  s   11		388WeT  %%c&7&7&B&B399&MN7HH$$	 s^^. -11		388%8%  %%''77		B AHH$$ 5r9   c                  > [        U 5      (       a  U R                  (       a  T(       d  g TR                  U R                  U R                  SSS 5      (       ad  TR
                  R                  [
        R                  R                  U R                  5      5        [        R                  SU R                  T5        g g [        U 5      (       a  T(       d  T(       a  g TR                  U R                  U R                  SSS 5      (       ad  TR
                  R                  [
        R                  R                  U R                  5      5        [        R                  SU R                  T5        g g  e)Nr   TzDetected removed index %r on %rr   z+Detected removed unique constraint %r on %r)r   	is_uniquers   r   rJ   r   rt   DropIndexOpr   rw   rx   r   DropConstraintOpr   )r   r3   r   r   r   r   rT   s    r7   obj_removed1_compare_indexes_and_uniques.<locals>.obj_removed  s   }}%@ 11		388WdD  %%coo&@&@&KL:CHHeL	
 s^^- 11		388%8$  %%((88C AHH 5r9   c                  > [        U 5      (       a  [        U5      (       d   eTR                  UR                  UR                  SSU R                  5      (       a  [        R                  SU R                  TU5        TR                  R                  [        R                  R                  U R                  5      5        TR                  R                  [        R                  R                  UR                  5      5        g g [        U 5      (       a  [        U5      (       d   eTR                  UR                  UR                  SSU R                  5      (       a  [        R                  SU R                  TU5        TR                  R                  [        R                  R                  U R                  5      5        TR                  R                  [        R                  R                  UR                  5      5        g g  e)Nr   Fz#Detected changed index %r on %r: %sr   z/Detected changed unique constraint %r on %r: %s)r   rs   r   rJ   rw   rx   r   rt   r   r   r   r   r   r   r   )oldnewmsgr3   r   rT   s      r7   obj_changed1_compare_indexes_and_uniques.<locals>.obj_changed  s   
 $$$$11		388WeSYY  9388UC %%coo&@&@&KL%%c&7&7&B&B399&MN s^^S>>!>11		388%8%  EHH	 %%((88C %%''77		B  5r9   c              3  V   >#    U  H  nTR                   UR                   :g  v   M      g 7fr   )unnamed)rS   meta_idxconn_idxs     r7   rU   r     s)      $8 $$(8(88$8s   &)zunique constraintz5Cannot compare %s %r, assuming equal and skipping. %s)r   r,   )r   r,   r   r,   r   str)/rK   rW   r|   constraints
isinstancerq   r   rC   indexes	frozensetget_unique_constraintsrG   r@   NotImplementedError	TypeErrorget_indexesr   _correct_for_uq_duplicates_uixrA   correct_for_autogen_constraints_create_metadata_constraint_sig _create_reflected_constraint_sigunionis_namedr   r   md_name_to_sql_namerJ   r   constraint_name_stringr   r   _constraint_is_namedr   r   r[   r   allr   typecompare_to_reflectedis_differentmessageis_skiprw   rx   is_equal)0r3   r   r   rT   r   r   rK   r   metadata_unique_constraintsmetadata_indexesconn_uniquesconn_indexes+unique_constraints_duplicate_unique_indexesr   uq_defr   metadata_unique_constraints_sigmetadata_indexes_sigconn_unique_constraintsconn_indexes_sigr   metadata_namesconn_uniques_by_nameconn_indexes_by_name
conn_namesrJ   doubled_constraintsconn_uniques_by_sigmetadata_uniques_by_sigunnamed_metadata_uniquesr   r   r   removed_nameconn_objconn_uqexisting_namemetadata_obj
comparisonthing
added_namer   uq_sigr   r|   r   r   r   s0   `` ``                                      @@@@@r7   _compare_indexes_and_uniquesr&    s     ))I D(O"d*M,,11D ! %00'
0"i889 0 	$ '

 ~556&)e#5"++-L"'27/	G$;;f < L +/' '&B"33vJ'#(@ &   #66,--BF? #	$00f 1 L '&B"33vJ#(@ &   5L +*F (fjA*  <H
 	  	 
 3&'##	
 	((#	 .'-B 	,,R0- $ ' <L;KR,,R0;K  
 =I<Hb--b1L  
 =I<Hb--b1L   1667KLLA:: 	=S!''891<L   0GG/F!AFFAI/FG/?@/?!AFFAI/?@ )../?@@A--aff5 		@   ,-:: 

D 	#D)+?+EFF
   5LL4Kb::r>4KL!@!@2

B!@  
 2 1B//HHo--
 	

B1     B @### # #J s:99.IJl+h  $<<00 3L AGX $8   OO+BBG$H% C	 !' K*  N 3 @ @ LM%m4// 3M BGXL))#"!-0H>T,//!l#%::8DJ&&HlJ4F4FG##  ,H55G;N  KMM&&	 "*****E NH S0;;JGH
Z(# I +,,.v67 +[
'
> # 	 	 		2 # 		&

F'

 H@ M s   #Y,Y1Y "Y-YY. -"Y)Y)1Y?Z$Z%Z	Z'ZZ8Z$Z;Z"Z')Z,1Z, Z1;Z6Z;34[ +[ 
Y&	Y&%Y&.
Y<;Y<c                (   U Vs/ s H  n[         R                  " Xd5      U4PM     nnU VVs1 s H  u  pUc  M
  UiM     n	nnU VVs1 s H%  u  pUb  M
  UR                  U5      R                  iM'     n
nnU Vs1 s H,  nUR                  (       d  M  [         R                  " Xd5      iM.     nnU Vs0 s H"  ofR                  (       d  M  UR
                  U_M$     nnU  Vs0 s H&  nUR                  S   (       d  M  UR
                  U_M(     nnU HZ  nX;  a8  UR                  X   5      R                  U
;  a  U R                  X   5        M>  M@  X;  d  MG  UR                  X   5        M\     g s  snf s  snnf s  snnf s  snf s  snf s  snf )Nr   )	r   _get_constraint_final_namer   r   r   rJ   rx   r   rE   )r  r  r  r  rA   r|   consmetadata_cons_namesrJ   metadata_uq_namesunnamed_metadata_uqsmetadata_ix_namesconn_ix_namesuqs_dupe_indexesoverlaps                  r7   r   r     s   * 0/D 
	/	/	>E/    32d2   .-JD 	;,,T2::-   %$D;; 	>..t=$   2>M_TYY_MM ,+D99'( 			4+   $+55$-'+,
 (//0@0IJ, -  !78 $?
 Ns?   "E4	E9E9		E?E?<FF5F
F
$F Fr   c                   UR                   nUR                   nXl        XLa  [        R                  " UR                  UR                  5      (       a  [        R
                  " U5      (       d0  [        R                  " UR                  UR                  5      (       a  [        R                  SUU5        g Xql	        [        R                  SU(       a  SOSUU5        g g )Nz3Ignoring nullable change on identity column '%s.%s'zDetected %s on column '%s.%s'NULLzNOT NULL)
nullableexisting_nullabler   _server_default_is_computedserver_default_nullability_might_be_unset_server_default_is_identityrw   rx   modify_nullable)	r3   r   r   rT   r   r   r   metadata_col_nullableconn_col_nullables	            r7   _compare_nullabler<  Z  s     )11 ))(9%533++X-D-D  77EE77 //1H1H 
 HHE /D+HH//Z	' 6r9   c                    UR                   R                  UL a  SUR                  S'   g UR                  SL a  SUR                  S'   g UR                  SL a  SUR                  S'   g g )NTautoincrementF)rQ   _autoincrement_columnkwr>  )r3   r   r   rT   r   r   r   s          r7   _setup_autoincrementrA    si     //<?.2?+		#	#t	+.2?+		#	#u	,.3?+ 
-r9   c                   UR                   nXql        UR                   nUR                  [        R                  L a  [
        R                  SUU5        g UR                  [        R                  L a  [
        R                  SUU5        g U R                  R                  XV5      n	U	(       a   Xl	        [
        R                  SUUUU5        g g )Nz3Couldn't determine database type for column '%s.%s'z:Column '%s.%s' has no type within the model; can't comparez-Detected type change from %r to %r on '%s.%s')
r  existing_type_type_affinitysqltypesNullTyperw   rx   rW   _compare_typemodify_type)
r3   r   r   rT   r   r   r   	conn_typemetadata_typeisdiffs
             r7   rG  rG    s     I$-! %%M8#4#44D	

 	##x'8'88K	

 	..<<F &3#;	
 r9   c                &   [        U [        R                  5      (       a[  [        U R                  [        5      (       a  U R                  n O/[	        U R                  R                  UR                  SS0S95      n [        U [        5      (       a  U $ g )Nliteral_bindsTrA   compile_kwargs)r   rq   DefaultClauseargr   compilerA   )metadata_defaultr3   s     r7   "_render_server_default_for_comparerT    s     "I$;$;<<&**C00/33" $$,,+33$3T#: -   "C((r9   c                N    [         R                  " SSU 5      R                  5       $ )zwe want to warn if a computed sql expression has changed.  however
we don't want false positives and the warning is not that critical.
so filter out most forms of variability from the SQL text.

z[ \(\)'\"`\[\]\t\r\n]rg   )resublower)sqltexts    r7   _normalize_computed_defaultrZ    s!     66*B8>>@@r9   c                   [        [        [        R                  UR                  5      R
                  R                  U R                  SS0S95      n[        U5      n[        UR                  [        R                  5      (       aK  [        UR                  R
                  R                  U R                  SS0S95      nUc  SnO[        U5      nOSnXx:w  a  [        X45        g g )NrM  TrN  rg   )r   r   rq   Computedr6  rY  rR  rA   rZ  r   _warn_computed_not_supported)	r3   r   r   rT   r   r   r   rendered_metadata_defaultrendered_conn_defaults	            r7   _compare_computed_defaultr`    s     !$Y!<!<=EEMM#+++T2 	N 	
! !<!! ())9+=+=>> ###++33'// /6 4 !
 !($&!$?%%! !# 9$U2 :r9   c                B    [         R                  " SU < SU< S35        g )NzComputed default on rd   z cannot be modified)r   warn)rT   r   s     r7   r]  r]  	  s    IIuMNr9   c                    U R                   R                  nUR                  UR                  UR                  5      u  pn
X4$ r   )rW   r|   _compare_identity_defaultr6  )r3   r   r   rT   r   r   r   r|   diffignored_attris_alters              r7   rd  rd    sE     ,,11D#'#A#A##X%<%<$ D >r9   c           	        UR                   nUR                   nUc  Uc  g[        R                  " U5      (       a'  [        R                  (       d  g[	        U UUUUUU5      $ [        R                  " U5      (       a  [        X45        g[        R                  " Xx5      (       aO  Xl        [        U UUUUUU5      u  pU
(       a.  Xql	        U	(       a!  [        R                  SUU[        U	5      5        g [        Xp5      nU(       a$  [        [        U5      R                   R"                  OS nXl        U R$                  R'                  UUUU5      nU(       a  Xql	        [        R                  SX45        g )NFzIDetected server default on column '%s.%s': identity options attributes %sz)Detected server default on column '%s.%s')r6  r   r5  has_computed_reflectionr`  r]  r8  existing_server_defaultrd  modify_server_defaultrw   rx   r   rT  r   r   rQ  r   rW   _compare_server_default)r3   r   r   rT   r   r   r   rS  conn_col_defaultre  rg  r^  r_  is_diffs                 r7   rl  rl    s{    $22..$4$<../?@@ 22 *## 
 ../?@@$U2..  3C/2
 4D154L8 ) %G%
!
 5ED&'++00$ 	 3C/!33KK%!	
 4D1HH@%Or9   c                    U R                   c   eU R                   R                  (       d  g UR                  nUR                  nUc  Uc  gXl        X:w  a  Xql        [
        R                  SX45        g )NFzDetected column comment '%s.%s')rA   supports_commentscommentexisting_commentmodify_commentrw   rx   )	r3   r   r   rT   r   r   r   metadata_commentconn_col_comments	            r7   _compare_column_commentrv  v  ss     ""...""44#++''$4$<'7$+)9&2EAr9   c           
       ^ ^^
 Ub  Uc  g T R                   nUR                   Vs1 s H&  n[        U[        R                  5      (       d  M$  UiM(     nnUR                  X2S9 Vs/ s H$  nT R                  US   SX2S.5      (       d  M"  UPM&     n	nU	 V
s1 s H  n
[        X5      iM     nn
T R                  R                  nT R                  R                  R                  X5        U Vs1 s H  o|R                  U5      iM     nnU Vs1 s H  o|R                  U5      iM     nnU	(       aB  SU	S   ;   a9  U Vs0 s H  oR                  U_M     nnU Vs0 s H  oR                  U_M     nnO8U Vs0 s H  oR                  U_M     nnU Vs0 s H  oR                  U_M     nnU Vs0 s H  oR                  c  M  UR                  U_M      nnU Vs0 s H  oR                  c  M  UR                  U_M      nnU U
U4S jnU U4S jn[!        U5      R#                  U5       HD  nUU   m
UU;  d  M  T
R                  U;   a  UT
R                     R$                  OS nU" T
U5        MF     [!        U5      R#                  U5       HD  nUU   m
UU;  d  M  T
R                  U;   a  UT
R                     R$                  OS nU" T
U5        MF     g s  snf s  snf s  sn
f s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )	Nr   rJ   foreign_key_constraintr   r   r   c                  > TR                  U R                  U R                  SSU5      (       a  TR                  R	                  [        R
                  R                  TR                  5      5        [        R                  SSR                  U R                  5      SR                  U R                  5      U R                  (       a  SU R                  -  OSU R                  5        g g )Nrx  Fz1Detected added foreign key (%s)(%s) on table %s%s, %s.rg   )rs   r   rJ   r   rt   CreateForeignKeyOpr   rw   rx   joinsource_columnstarget_columnssource_schemasource_table)r   
compare_tor3   r   r   s     r7   _add_fk&_compare_foreign_keys.<locals>._add_fk  s    --IIsxx!95*
 
   ''&&66u{{C HHC		#,,-		#,,--0->->)))B  
r9   c                  > TR                  U R                  U R                  SSU5      (       a  TR                  R	                  [        R
                  R                  U R                  5      5        [        R                  SSR                  U R                  5      SR                  U R                  5      U R                  (       a  SU R                  -  OSU R                  5        g g )Nrx  Tz3Detected removed foreign key (%s)(%s) on table %s%srz  r{  rg   )rs   r   rJ   r   rt   r   r   rw   rx   r}  r~  r  r  r  )r   r  r3   r   s     r7   
_remove_fk)_compare_foreign_keys.<locals>._remove_fk  s    --IIsxx!94
 
   ''$$44SYY? HHE		#,,-		#,,--0->->)))B  
r9   )rK   r   r   rq   r   get_foreign_keysrG   r   rW   r|   correct_for_autogen_foreignkeysr   r   r   unnamed_no_optionsrJ   rC   r[   r   )r3   r   r   rT   r   r   rK   fkmetadata_fksconn_fks_listr   conn_fksr|   metadata_fks_sigconn_fks_sigr   conn_fks_by_sigmetadata_fks_by_sigmetadata_fks_by_nameconn_fks_by_namer  r  removed_sigr  	added_sigs   ``        `              r7   _compare_foreign_keysr    sA    ^3))I !,,,Bb)889 	,   ,,U,BBB++vJ$ 8
 	B   #"E 	%,"  
 ,,11D %%**JJ
 <H;GR,,R0<  
 =E<Db--b1H   mA&661=>A99a<>5EF5Eyy!|5EF =IILq//2LI-=
-=  !#-= 	 

 ,+avv		+   ,8N<a66		<N $ ?+667JK,11 ::!55 %UZZ066 
 uj) L ,-88I	#I.O+ ::!11 !,22 
 E:& JE ?F J
 OsY   #KK%!K
KK,K"K'<K,K15K6K;-L L L,Lc           	        U R                   c   eU R                   R                  (       d  g Ub  Uc  g UR                  c  UR                  c  g UR                  cF  UR                  b9  UR                  R	                  [        R
                  " X4R                  US95        g UR                  UR                  :w  aE  UR                  R	                  [        R                  " UUR                  UR                  US95        g g )N)rr  r   )rA   rp  rq  r   rt   DropTableCommentOpCreateTableCommentOp)r3   r   r   rT   r   r   s         r7   _compare_table_commentr    s     ""...""44 ^3!n&<&<&D%**<*<*H##""(:(:6	

 
		:#5#5	5##$$&&!+!3!3		
 
6r9   )r3   r&   r4   r)   returnNone)r3   r&   r5   r+   r  r  )r3   r&   r5   r+   rM   z$Union[Set[None], Set[Optional[str]]]r  r  )r_   rC   ra   rC   rK   r!   r5   r+   r3   r&   r  r  )r|   r'   r   Dict[str, Any]r   r%   r  zOptional[Index])r|   r'   r   r  r   r%   r  r   )r   r  r   r%   r  r   )r   Optional[str]rT   Union[quoted_name, str]r   r%   r   r%   r   r*   r3   r&   rK   r!   r  zIterator[None])r3   r&   r   r*   r   r  rT   r  r   Optional[Table]r   r  r  r  )r3   r&   r   r(   r   r  rT   r  r   r  r   Column[Any]r   r  r  r  )r3   r&   r   r(   r   r  rT   r  r   r"   r   r  r   r  r  r  )rS  zOptional[Any]r3   r&   r  r  )rY  r   r  r   )r3   r&   r   r(   r   r  rT   r   r   r   r   r  r   r  r  r  )rT   r   r   r   r  r  )r3   r&   r   r(   r   r  rT   r  r   r  r   r  r   r  r  zOptional[bool])r3   r&   r   r(   r   r  rT   r  r   r"   r   r  r   r  r  zOptional[Literal[False]])r3   r&   r   r*   r   r  rT   r  r   r%   r   r%   r  r  )r3   r&   r   r*   r   r  rT   r  r   r  r   r  r  r  )`
__future__r   
contextlibloggingrV  typingr   r   r   r   r   r	   r
   r   r   r   r   
sqlalchemyr   r   r   rq   r   r   rE  sqlalchemy.sqlr   sqlalchemy.sql.schemar   r   r   sqlalchemy.utilr   rg   r   ddl._autogenr   r   
operationsr   r   r    sqlalchemy.engine.reflectionr!   sqlalchemy.sql.elementsr"   r#   r$   r%   alembic.autogenerate.apir&   alembic.ddl.implr'   alembic.operations.opsr(   r)   r*   r+   r,   	getLogger__name__rw   r8   
DispatcherrH   r1   dispatch_forrb   r^   immutabledictr   r   r   r   r   __annotations__r   r   r   contextmanagerr   r   r&  r   r<  rA  rG  rT  rZ  r`  r]  rd  rl  rv  r  r  ri   r9   r7   <module>r     s   #   	               *  ( % 6 ' 2 &  ' $  632,+7,4651. !,#,7F,	, ood+#2<	> (#'#'' 2' 
	' $'TG9G9G9 G9 	G9
 $G9 
G9T -1,>,>~~!,, ** ++))	- ) 	
-;@@
-;@(-. EEEE"EE EE 	EE
 %EE $EE EE EE EEP T/1EuLMN '"^8#^8^8 ^8 #	^8
  ^8 $^8 
^8 #^8B<9~ (#%#%"% % #	%
 #% % % 
% $%P (#4#4"4 4 #	4
 4 4 4 
4 $4" (#'
#'
"'
 '
 #	'

 #'
 '
 '
 
'
 $'
T#6D&A)3#)3")3 )3 	)3
 )3 )3 )3 
)3XO" (#T#T"T T #	T
 #T T T T $Tn (##"  #	
     $6 '"x'#x'$x' x' #	x'
 x' x' 
x' #x'v '""
#"
$"
 "
 #	"

  "
 $"
 
"
 #"
r9   