
    Eh              	      D   % 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)  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J0r0  S S$KJ1r1  S S%K2J3r3  S S&K4J5r5  S S'K6J7r7  S S(K6J8r8  S S)K6J9r9  S S*K6J:r:  SS+K%J;r;  \Rx                  " \=5      r>      SNS, jr?\$R                  " S-S.9rA      SOS/ jrB\AR                  S05              SPS1 j5       rD            SQS2 jrE\$R                  " \R                  \R                  \R                  \R                  \R                  \R                  S3.5      rKS4\LS5'           SRS6 jrM        SSS7 jrN      STS8 jrO\R                                  SUS9 j5       rQ\" S:\\ \\4   S;9rR " S< S=5      rS\AR                  S>5                    SVS? j5       rTS@ rU\AR                  SA5                      SWSB j5       rV\AR                  SA5                      SXSC j5       rW\AR                  SA5                      SWSD j5       rX      SYSE jrYSZSF jrZ                S[SG jr[S\SH jr\SI r]\AR                  SA5                      S]SJ j5       r^\AR                  SA5                      S^SK j5       r_\AR                  S>5                    S_SL j5       r`\AR                  S>5                    S`SM j5       rag)a    )annotationsN)Any)cast)Dict)Iterator)Mapping)Optional)Set)Tuple)TYPE_CHECKING)TypeVar)Union)event)inspectschema)text)types)
expression)conv)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       _/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/alembic/autogenerate/compare.py_populate_migration_scriptr9   <   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)r4   r6   r?   r=   	inspectordefault_schemaschemasss           r8   r2   r2   I   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)rH   ).0tnamer4   rS   s     r8   	<genexpr>&_autogen_for_tables.<locals>.<genexpr>~   s9       
//w < ![% s   00)rL   rD   migration_contextversion_table_schemaversion_tableget_table_names
differenceupdater   sorted_tablesr   rK   _compare_tables)r4   r6   rN   rL   conn_table_namesrY   rZ   tablesrR   metadata_table_namesrS   s   `         @r8   _autogen_for_tablesrc   h   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Hh  u  p[        R                  " X{5      nXR*                  ;   n[        R,                  " XUS9nU(       dT  [.        R0                  " USUR2                  R4                  R7                  U5      5        [9        U5      R;                  US S9  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Mk     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(       dT  [.        R0                  " USUR2                  R4                  R7                  U5      5        [9        U5      R;                  US S9  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.rR   FzDetected added table %rr   column_reflectinclude_columnsTzDetected removed table %rc                (    U S   =(       d    SU S   4$ )Nr        )xs    r8   <lambda>!_compare_tables.<locals>.<lambda>   s    1Q4:2qt:Lr:   )key)"bindrB   rC   r   ziptable_key_to_table	sa_schema_get_table_keyr\   run_object_filtersr   appendCreateTableOp
from_tableloginfor+   rI   rJ   is_emptyMetaDatara   r&   r   listenrX   impl_compat_autogen_column_reflect_InspectorConvreflect_tableDropTableOpintersectionsorted_compare_columns)r`   rb   rL   r6   r4   rM   r   rU   #metadata_table_names_no_dflt_schemano_dflt_schematname_to_tablerO   rK   metadata_tablemodify_table_opsremoval_metadataexiststexisting_tablesexisting_metadataconn_column_info
conn_tables                         r8   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.. 9%33At3L--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 9%33At3L'(!$ $" ?0LMI'(!U#e'E
3&--d3
--7E:
 
  #11%AF!  $$W-#$"$ $,,..&&'78; Ny	
z s   S
2S :!S''
S5	)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expressionsrK   unique)r   _tableindexduplicates_constraint)
rA   	enumerater   cr   rw   rt   r    adjust_reflected_dialect_optionsr{   )r   paramsr   exprssortingnumcol_namerK   itemoperatorixs              r8   _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'(Ir:   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   rK   unique_constraintduplicates_index)rt   r   r   r   r{   )r   r   r   cnameuqs        r8   _make_unique_constraintr   J  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_schemare   optionsconstrained_columnsreferred_columnsonupdateondelete
deferrable	initiallyrK   )r   r   r   r   rK   )rA   rt   r   r   append_constraint)r   r   rU   r   r   nconsts          r8   _make_foreign_keyr   X  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)
Nre   c              3  ^   #    U  H#  oR                   (       a  M  UR                  v   M%     g 7fN)systemrK   )rT   r   s     r8   rV   #_compare_columns.<locals>.<genexpr>z  s      $(1(s   --column
table_namerS   FzDetected added column '%s.%s'r   TzDetected removed column '%s.%s')r   r   r   rK   rH   r\   rv   r   rw   AddColumnOpfrom_column_and_tablenamerz   r{   r   r)   rI   rJ   has_changesrD   DropColumnOp)r   rU   r   r   r   r4   rL   rK   metadata_col_namesr   metadata_cols_by_nameconn_col_namesr   colnamemetadata_colconn_colalter_column_ops                    r8   r   r   o  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)boundc                  B    \ rS rSrSrS rS rS rS rS r	S r
S	 rSrg
)r   i  rL   c                    Xl         g r   r   )selfrL   s     r8   __init___InspectorConv.__init__  s    "r:   c                    U(       d  U$ U H6  nUS   c  M  [        US   [        5      (       a  M%  [        US   5      US'   M8     U$ )NrK   )
isinstancer   r   constsr   s      r8   _apply_reflectinfo_conv&_InspectorConv._apply_reflectinfo_conv  sN    MEV}(ft2 2 !%U6] 3f	 
 r:   c                    U(       d  U$ U HM  nUR                   c  M  [        UR                   [        5      (       a  M3  [        UR                   5      Ul         MO     U$ r   )rK   r   r   r   s      r8   _apply_constraint_conv%_InspectorConv._apply_constraint_conv  sE    MEzz%jT.J.J!%**-
  r:   c                X    U R                  U R                  R                  " U0 UD65      $ r   )r   rL   get_indexesr   argskws      r8   r   _InspectorConv.get_indexes  s,    ++NN&&33
 	
r:   c                X    U R                  U R                  R                  " U0 UD65      $ r   )r   rL   get_unique_constraintsr   s      r8   r   %_InspectorConv.get_unique_constraints  s,    ++NN114>2>
 	
r:   c                X    U R                  U R                  R                  " U0 UD65      $ r   )r   rL   get_foreign_keysr   s      r8   r   _InspectorConv.get_foreign_keys  s,    ++NN++T8R8
 	
r:   c                   U R                   R                  XS9  U R                  UR                  5        U R                  UR                  5        g )Nrg   )rL   r   r   constraintsindexes)r   rR   rh   s      r8   r   _InspectorConv.reflect_table  s?    $$U$L
 	##E$5$56##EMM2r:   N)__name__
__module____qualname____firstlineno__	__slots__r   r   r   r   r   r   r   __static_attributes__rl   r:   r8   r   r     s*    I#





3r:   r   rR   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Gb   [        U5      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5      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R0                  (       d  M  [3        [4        UR7                  T 5      5      U_M8     nnU Vs0 s H  nUR8                  U_M     nnU Vs0 s H  nUR8                  U_M     nnUR/                  U5       Vs0 s H7  n[:        R<                  " UR8                  5      (       d  M*  UR8                  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[:        RB                  " URD                  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 [G        [        U5      RI                  U5      5       H  n!UU!   n"[K        U"5      (       a  U"R@                  U;   a  M*  U!U;   aH  UU!   u  n#m+[M        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     [G        [        U5      R?                  U5      5       H  n$UU$   n%U$U;   a  UU$   u  n#m+[O        U%5      (       a  T+n"OU#n"OUU$   n"[Q        U"5      [Q        U%5      :w  a  U" U"5        U" U%5        M[  U%RS                  U"5      n&U&RT                  (       a  U " U"U%U&RV                  5        M  U&RX                  (       aB  [O        U"5      (       a  SOSn'[Z        R]                  SU'U"R8                  U&RV                  5        M  U&R^                  (       a  M   e   [G        [        U5      RI                  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NJ[         a     GNVf = 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   TrK   r   r   r   r   c              3  >   >#    U  H  n[        TUT5      v   M     g 7fr   )r   )rT   r   r   r   s     r8   rV   /_compare_indexes_and_uniques.<locals>.<genexpr>F  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   rv   r   rK   r   rw   CreateIndexOp
from_indexrz   r{   r   r   AddConstraintOpfrom_constraint)objr4   is_create_tableis_drop_table
modify_opssupports_unique_constraintss    r8   	obj_added/_compare_indexes_and_uniques.<locals>.obj_added  s   11		388WeT  %%c&7&7&B&B399&MN5HH$$	 s^^. -11		388%8%  %%''77		B AHH$$ 5r:   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_uniquerv   r   rK   r   rw   DropIndexOpr  rz   r{   r   DropConstraintOpr  )r  r4   r  r  r  r  rU   s    r8   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 5r:   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   rv   r   rK   rz   r{   r   rw   r  r  r   r   r  r  r  )oldnewmsgr4   r  rU   s      r8   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  5r:   c              3  V   >#    U  H  nTR                   UR                   :g  v   M      g 7fr   )unnamed)rT   meta_idxconn_idxs     r8   rV   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)0rL   rX   r   r   r   rt   r   rD   r   	frozensetr   r   rH   rA   NotImplementedError	TypeErrorr   r   _correct_for_uq_duplicates_uixrB   correct_for_autogen_constraints_create_metadata_constraint_sig _create_reflected_constraint_sigunionis_namedr   r  md_name_to_sql_namerK   r    constraint_name_stringr   r  _constraint_is_namedr   r   r\   r   allr   typecompare_to_reflectedis_differentmessageis_skiprz   r{   is_equal)0r4   r  r   rU   r   r   rL   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_namesrK   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   `` ``                                      @@@@@r8   _compare_indexes_and_uniquesrJ    s     ))I D(O"d*M,,11D ! %00'
0"i889 0 	$ '

 ~556&)e#5"++-L"'27/	G))4KKf L L +/' '&B"33vJ'#(@ &   #66,--BF? #	))4@@f A 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2Y "Y7Y#Z  "Y<&Y<Z,Z7Z8ZZ!:Z&Z+Z0$$Z0Z5+Z:)Z?Z?3[[	*[4[>[
Y9,	Y98Y9
ZZ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   rK   r{   r"  rF   )r7  r2  r/  r0  rB   r   consmetadata_cons_namesrK   metadata_uq_namesunnamed_metadata_uqsmetadata_ix_namesconn_ix_namesuqs_dupe_indexesoverlaps                  r8   r  r  O  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_identityrz   r{   modify_nullable)	r4   r   r   rU   r   r   r   metadata_col_nullableconn_col_nullables	            r8   _compare_nullabler`    s     )11 ))(9%533++X-D-D  77EE77 //1H1H 
 HHE /D+HH//Z	' 6r:   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)rR   _autoincrement_columnr   rb  )r4   r   r   rU   r   r   r   s          r8   _setup_autoincrementrd    si     //<?.2?+		#	#t	+.2?+		#	#u	,.3?+ 
-r:   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NullTyperz   r{   rX   _compare_typemodify_type)
r4   r   r   rU   r   r   r   	conn_typemetadata_typeisdiffs
             r8   rj  rj    s     I$-! %%M8#4#44D	

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

 	..<<F &3#;	
 r:   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rB   compile_kwargs)r   rt   DefaultClauseargr  compilerB   )metadata_defaultr4   s     r8   "_render_server_default_for_comparerw    s     "I$;$;<<&**C00/33" $$,,+33$3T#: -   "C((r:   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]rj   )resublower)sqltexts    r8   _normalize_computed_defaultr}    s!     66*B8>>@@r:   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 )Nrp  Trq  rj   )r  r   rt   ComputedrZ  r|  ru  rB   r}  r   _warn_computed_not_supported)	r4   r   r   rU   r   r   r   rendered_metadata_defaultrendered_conn_defaults	            r8   _compare_computed_defaultr    s     !$Y!<!<=EEMM#+++T2 	N 	
! !<!! ())9+=+=>> ###++33'// /6 4 !
 !($&!$?%%! !# 9$U2 :r:   c                B    [         R                  " SU < SU< S35        g )NzComputed default on re   z cannot be modified)r   warn)rU   r   s     r8   r  r  =  s    IIuMNr:   c                    U R                   R                  nUR                  UR                  UR                  5      u  pn
X4$ r   )rX   r   _compare_identity_defaultrZ  )r4   r   r   rU   r   r   r   r   diffignored_attris_alters              r8   r  r  A  sE     ,,11D#'#A#A##X%<%<$ D >r:   c           	        UR                   nUR                   nUc  Uc  g[        R                  " U5      (       a  [        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')rZ  r    rY  r  r  r\  existing_server_defaultr  modify_server_defaultrz   r{   r   rw  r   r   rt  r   rX   _compare_server_default)r4   r   r   rU   r   r   r   rv  conn_col_defaultr  r  r  r  is_diffs                 r8   r  r  R  sk    $22..$4$<../?@@(
 	
 ../?@@$U2..  3C/2
 4D154L8 ) %G%
!
 5ED&'++00$ 	 3C/!33KK%!	
 4D1HH@%Or:   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')rB   supports_commentscommentexisting_commentmodify_commentrz   r{   )	r4   r   r   rU   r   r   r   metadata_commentconn_col_comments	            r8   _compare_column_commentr    ss     ""...""44#++''$4$<'7$+)9&2EAr:   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5      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   rK   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 )Nr  Fz1Detected added foreign key (%s)(%s) on table %s%s, %s.rj   )rv   r   rK   r   rw   CreateForeignKeyOpr  rz   r{   joinsource_columnstarget_columnssource_schemasource_table)r  
compare_tor4   r   r   s     r8   _add_fk&_compare_foreign_keys.<locals>._add_fk   s    --IIsxx!95*
 
   ''&&66u{{C HHC		#,,-		#,,--0->->)))B  
r:   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 )Nr  Tz3Detected removed foreign key (%s)(%s) on table %s%sr  r  rj   )rv   r   rK   r   rw   r  r  rz   r{   r  r  r  r  r  )r  r  r4   r   s     r8   
_remove_fk)_compare_foreign_keys.<locals>._remove_fk  s    --IIsxx!94
 
   ''$$44SYY? HHE		#,,-		#,,--0->->)))B  
r:   )rL   r   r   rt   r   r   r   rH   r   rX   r   correct_for_autogen_foreignkeysr!  r"  r  unnamed_no_optionsrK   rD   r\   r   )r4   r   r   rU   r   r   rL   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   ``        `              r8   _compare_foreign_keysr    sO    ^3))I !,,,Bb)889 	,   !+<< = 


B ++vJ$ 8
	 	
  
 ;H:G%,-   ,,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G
 ?F J
 OsY   #KK.!K!K!K&5K+K0K5!K:>K?L6L	
L	!L5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)r  r   )rB   r  r  r   rw   DropTableCommentOpCreateTableCommentOp)r4   r   r   rU   r   r   s         r8   _compare_table_commentr  7  s     ""...""44 ^3!n&<&<&D%**<*<*H##""(:(:6	

 
		:#5#5	5##$$&&!+!3!3		
 
6r:   )r4   r'   r5   r*   returnNone)r4   r'   r6   r,   r  r  )r4   r'   r6   r,   rN   z$Union[Set[None], Set[Optional[str]]]r  r  )r`   rD   rb   rD   rL   r"   r6   r,   r4   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]rU   Union[quoted_name, str]r   r&   r   r&   r   r+   r4   r'   rL   r"   r  zIterator[None])r4   r'   r  r+   r   r  rU   r  r   Optional[Table]r   r  r  r  )r4   r'   r   r)   r   r  rU   r  r   r  r   Column[Any]r   r  r  r  )r4   r'   r   r)   r   r  rU   r  r   r#   r   r  r   r  r  r  )rv  zOptional[Any]r4   r'   r  r  )r|  r  r  r  )r4   r'   r   r)   r   r  rU   r  r   r  r   r  r   r  r  r  )rU   r  r   r  r  r  )r4   r'   r   r)   r   r  rU   r  r   r  r   r  r   r  r  zOptional[bool])r4   r'   r   r)   r   r  rU   r  r   r#   r   r  r   r  r  zOptional[Literal[False]])r4   r'   r   r+   r   r  rU   r  r   r&   r   r&   r  r  )r4   r'   r   r+   r   r  rU   r  r   r  r   r  r  r  )b
__future__r   
contextlibloggingry  typingr   r   r   r   r   r	   r
   r   r   r   r   
sqlalchemyr   r   r   rt   r   r   rh  sqlalchemy.sqlr   sqlalchemy.sql.elementsr   sqlalchemy.sql.schemar   r   r   sqlalchemy.utilr   rj   r   ddl._autogenr   r   
operationsr   r    r!   sqlalchemy.engine.reflectionr"   r#   r$   r%   r&   alembic.autogenerate.apir'   alembic.ddl.implr(   alembic.operations.opsr)   r*   r+   r,   r-   	getLoggerr   rz   r9   
DispatcherrI   r2   dispatch_forrc   r_   immutabledictr   r   r   r   r   __annotations__r   r   r   contextmanagerr   r   r   rJ  r  r`  rd  rj  rw  r}  r  r  r  r  r  r  r  rl   r:   r8   <module>r     s   #   	               *  ( % ( 6 ' 2 &  ' $  632,+7,4651. !,#,7F,	, ood+#2<	> (#'#'' 2' 
	' $'TH9H9H9 H9 	H9
 $H9 
H9V -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.3 .3b '"_8#_8_8 _8 #	_8
  _8 $_8 
_8 #_8D<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" (#H#H"H H #	H
 #H H H H $HV (##"  #	
     $6 '"y'#y'$y' y' #	y'
 y' y' 
y' #y'x '""
#"
$"
 "
 #	"

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