
    Ѯh              	         U d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" ddl#m$Z$ ddl%m&Z& ddl%m'Z' ddl(m)Z) ddl$m*Z* erNd dlm+Z+ d d l,m-Z- d d!lm.Z. d d"lm/Z/ d d#lm0Z0 d d$lm1Z1 d d%l2m3Z3 d d&l4m5Z5 d d'l6m7Z7 d d(l6m8Z8 d d)l6m9Z9 d d*l6m:Z: dd+l%m;Z;  ejx                  e=      Z>	 	 	 	 	 	 dNd,Z? e$j                  d-.      ZA	 	 	 	 	 	 dOd/ZBeAj                  d0      	 	 	 	 	 	 	 	 dPd1       ZD	 	 	 	 	 	 	 	 	 	 	 	 dQd2ZE e$j                  ej                  ej                  ej                  ej                  ej                  ej                  d3      ZKd4eLd5<   	 	 	 	 	 	 	 	 dRd6ZM	 	 	 	 	 	 	 	 dSd7ZN	 	 	 	 	 	 dTd8ZOej                  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dUd9       ZQ ed:ee eef   ;      ZR G d< d=      ZSeAj                  d>      	 	 	 	 	 	 	 	 	 	 	 	 	 	 dVd?       ZTd@ ZUeAj                  dA      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dWdB       ZVeAj                  dA      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dXdC       ZWeAj                  dA      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dWdD       ZX	 	 	 	 	 	 dYdEZYdZdFZZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d[dGZ[d\dHZ\dI Z]eAj                  dA      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d]dJ       Z^eAj                  dA      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d^dK       Z_eAj                  d>      	 	 	 	 	 	 	 	 	 	 	 	 	 	 d_dL       Z`eAj                  d>      	 	 	 	 	 	 	 	 	 	 	 	 	 	 d`dM       Zay)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                z    |j                   d   }|j                  d   }t        | |       |j                  |       y )N)upgrade_ops_listdowngrade_ops_list_produce_net_changesreverse_into)autogen_contextmigration_scriptupgrade_opsdowngrade_opss       n/home/www/academy-backend.kofcorporation.com/venv/lib/python3.12/site-packages/alembic/autogenerate/compare.py_populate_migration_scriptr9   <   s<     #33B7K$77;M+6]+    T)uselistc                   | j                   }|J | j                  j                  dd      }t        |      }|j                  j
                  }|rMt        |j                               }|j                  d       |j                  |       |j                  d        nd h}|D ch c]  }| j                  |di       s| }}| j                  J t        j                  d| j                  j                        | ||       y c c}w )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& o>>q(BOG  ""...?#:#:#?#?@gs   $D=Dr   c                   
  j                   }t               } j                  j                  } j                  j                  }|D ]c  
t        |j                  
            }
|k(  r&|j                   j                  j                  g      }|j                   
fd|D               e t         j                  D cg c]  }|j                  |j                  f c}      j                  ||fg      }	t        ||	||        y c c}w )Nr   c              3  P   K   | ]  }j                  |d di      r|f  yw)tableschema_nameN)rH   ).0tnamer4   rS   s     r8   	<genexpr>z&_autogen_for_tables.<locals>.<genexpr>~   s8       
//w < %  
   #&)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O%,,

	#Oj'789   	Ps    Dc                	   |j                   j                  j                  }t        |D cg c]  \  }}||k7  r|nd |f c}}      }t	        ||      D 	ci c],  \  }	\  }}|	|j
                  t        j                  ||         . }
}}	}|}|j                  |       D ]  \  }}|r|d|n|}|
||f   }|j                  ||ddd       s.|j                  j                  t        j                  j                  |             t        j                  d|       t        j                   |g |      }t#        j%                  d      ||||d |       |j'                         r|j                  j                  |        t        j(                         }| j                  |      D ]`  \  }}t        j                  ||      }||j*                  v }t        j,                  |||      }|sVt/        j0                  |d|j2                  j4                  j7                  |             t9        |      j;                  |d        |j                  ||ddd       st        j                   |g |      }t#        j%                  d      |||||d        |j'                         s|j                  j                  |       |j                  j                  t        j<                  j                  |             t        j                  d	|       c | j?                  |      }t        j(                         }i }|D ]  \  }}t        j                  ||      }||j*                  v }t        j,                  |||      }|sVt/        j0                  |d|j2                  j4                  j7                  |             t9        |      j;                  |d        ||||f<    tA        |d
       D ]  \  }}|xs d }|r|d|n|}|
||f   }|j*                  |   }|j                  ||dd|      sCt        j                   |g |      }tC        |||||||      5  t#        j%                  d      ||||||       d d d        |j'                         r|j                  j                  |        y c c}}w c c}}}	w # 1 sw Y   ExY w)N.rR   FzDetected added table %rr   column_reflectinclude_columnsTzDetected removed table %rc                    | d   xs d| d   fS )Nr        )xs    r8   <lambda>z!_compare_tables.<locals>.<lambda>   s    1Q4:2qt:L r:   )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	
 /VT5A	
+' 03/1E0
	  ,NOVU 	::$$UF3
 	
N  ?(334DE 95'(!U#e'E
3--E7E4
 OO""!!,,^< HH.5"11%AF  )  $,,.&&'78+9. !))+$//0DE 85''q1)000OOE#3A>LL 1166.. 9%33At3L--atL"11%AF  )!11eQ $,,.&&'78OO""3??#=#=a#@AHH0$7588 '334HIO!**,# )5''q1*111OOE#4Q?LL 1166..y9 9%33At3L'(!U$)" ?0LM 95I'(!U#e'E
3&--d3
--E7E:
  #11%AF!   $$W-#$"$ $,,.&&'78;9y	
z s   R'
1R- R44R=	)ascdescnulls_first
nulls_last
nullsfirst	nullslastzMapping[str, Any]_IndexColumnSortingOpsc                   g }|j                  d      }t        |d         D ]j  \  }}|d|v sJ |d   |   }t        |      }n|}|j                  |   }|r%||v r!||   D ]  }	|	t        v st	        |	   |      } |j                  |       l t        j                  |d   g||d   |d| j                  |d      }
d|v r|d   |
j                  d<   |
S )	Ncolumn_sortingcolumn_namesexpressionsrK   unique)r   _tableindexduplicates_constraint)
rA   	enumerater   cr   rv   rs   r    adjust_reflected_dialect_optionsrz   )r~   paramsr   exprssortingnumcol_namerK   itemoperatorixs              r8   _make_indexr   *  s$    35Ejj)*G"6.#9: X F***-(-D:DD<<)Dtw#DM B551(;DADB 	T 
v
	
 h	

 
/
/
@
B &(+12I+J'(Ir:   c                    t        j                  |d   D cg c]  }|j                  |    c}d|d   i| j                  |d      }d|v r|d   |j                  d<   |S c c}w )Nr   rK   unique_constraintduplicates_index)rs   r   r   r   rz   )r~   r   r   cnameuqs        r8   _make_unique_constraintr   J  s~     
	#	#+1.+A	B%*,,u
	B
F^
 
/
/8K
L
B
 V#&,-?&@"#I 
Cs   A!c           
        | d   }| d   r
| d   d|}| j                  di       }t        j                  | d   D cg c]  }|j                  |    c}| d   D cg c]	  }|d| c}|j                  d      |j                  d      |j                  d	      |j                  d
      | d         }|j	                  |       |S c c}w c c}w )Nreferred_tablereferred_schemare   optionsconstrained_columnsreferred_columnsonupdateondelete
deferrable	initiallyrK   )r   r   r   r   rK   )rA   rs   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e	H'-.@'AB!E1	BZ(Z(;;|,++k*F^E   'L 	IBs   C	C
c           
   #    K   | r| d|n|}t        d |j                  D              }|j                  D 	ci c]  }	|	j                  r|	j                  |	 }
}	|j                  D 	ci c]/  }	|j	                  |	j                  d|| d      r|	j                  |	1 }}	|j                  |      D ]o  }|j                  |
|   |ddd       s|j                  j                  t        j                  j                  | ||
|                t        j                  d||       q |j                  |      D ]  }|
|   }|j                  |   }|j                  ||dd|      s-t        j                  |||       }t        j!                  d      ||| ||||       |j#                         sv|j                  j                  |        d  t%        |      j                  |      D ]  }|j                  |j                  |   |ddd       s&|j                  j                  t        j&                  j                  | ||j                  |                t        j                  d	||        y c c}	w c c}	w w)
Nre   c              3  N   K   | ]  }|j                   r|j                    y wN)systemrK   )rT   r   s     r8   rV   z#_compare_columns.<locals>.<genexpr>z  s      $$s   %%column
table_namerS   FzDetected added column '%s.%s'r   TzDetected removed column '%s.%s')r   r   r   rK   rH   r\   ru   r   rv   AddColumnOpfrom_column_and_tablenamery   rz   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  s     )/fe$ED# $&(($  *++188	  ++FFHU6J
 	
	N  $..~> 	C--!%(%5$
   ''99E#8#?
 HH4dEB	C &22>B 9,W5<<(11'8UH
 ++E76JX&	
 &&(  ''8)9, 
^$//0BC 	E--LL$
   ''  ::E:<<#6
 HH6eD	E_s7   6I5I+
I+I5)4I0.I5CI5)A I5
A+I5_C)boundc                  :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
r   rL   c                    || _         y r   r   )selfrL   s     r8   __init__z_InspectorConv.__init__  s	    "r:   c                r    |s|S |D ]-  }|d   	t        |d   t              rt        |d         |d<   / |S )NrK   )
isinstancer   r   constsr   s      r8   _apply_reflectinfo_convz&_InspectorConv._apply_reflectinfo_conv  sN    M 	4EV}(ft2 !%U6] 3f		4
 r:   c                    |s|S |D ]D  }|j                   t        |j                   t              r+t        |j                         |_         F |S r   )rK   r   r   r   s      r8   _apply_constraint_convz%_InspectorConv._apply_constraint_conv  sG    M 	.Ezz%jT.J!%**-
	. r:   c                X    | j                   | j                  j                  |i |      S r   )r   rL   get_indexesr   argskws      r8   r   z_InspectorConv.get_indexes  s.    ++&DNN&&33
 	
r:   c                X    | j                   | j                  j                  |i |      S r   )r   rL   get_unique_constraintsr   s      r8   r   z%_InspectorConv.get_unique_constraints  s.    ++1DNN114>2>
 	
r:   c                X    | j                   | j                  j                  |i |      S r   )r   rL   get_foreign_keysr   s      r8   r   z_InspectorConv.get_foreign_keys  s.    +++DNN++T8R8
 	
r:   c                   | j                   j                  ||       | j                  |j                         | j                  |j                         y )Nrg   )rL   r   r   constraintsindexes)r   rR   rh   s      r8   r   z_InspectorConv.reflect_table  sA    $$UO$L
 	##E$5$56##EMM2r:   N)__name__
__module____qualname__	__slots__r   r   r   r   r   r   r   rl   r:   r8   r   r     s*    I#





3r:   r   rR   c           
     D   +,-./  j                   }d u -|d u . j                  j                  ,|I|j                  D ch c]  }t	        |t
        j                        r|  }}t        |j                        }	nt               }t               }	t               x}
}d/d}	 t        |      j                  |      }
d/|
D cg c]  } j                  |d   d|d      r| }
}|
D ]  }|j                  d      sd} 	 	 t        |      j!                  |      }|D cg c]  } j                  |d   d|d      r| }}.rt               }
n|
D ch c]  }t#        ,|       }
},fd	|D        D ch c]  }|| }}|rt%        |
|||	 j&                  ,       ,j)                  |
|||	       |D ch c]  },j+                  |       }}|	D ch c]  },j+                  |       }}|
D ch c]  },j-                  |       }}|D ch c]  },j-                  |       }}|j/                  |      D ci c].  }|j0                  r t3        t4        |j7                               |0 }}|D ci c]  }|j8                  | }}|D ci c]  }|j8                  | }}|j/                  |      D ci c].  }t;        j<                  |j8                        r|j8                  |0 }}t        |      j?                  |      D ci c]  }|||   ||   f }}|D ci c]  }|j@                  | }}|D ci c]  }|j@                  | }}|D ci c]9  }t;        jB                  |jD                   j&                        s|j@                  |; }}d -./fd
}d -./fd}	 	 	 	 	 	 d fd} tG        t        |      jI                  |            D ]j  }!||!   }"tK        |"      r|"j@                  |v r"|!|v r=||!   \  }#+tM        +fd|D              sC|#j@                  |vsR ||#        |+       c ||"       l tG        t        |      j?                  |            D ]  }$||$   }%|$|v r||$   \  }#+tO        |%      r+}"n|#}"n||$   }"tQ        |"      tQ        |%      k7  r ||"        ||%       R|%jS                  |"      }&|&jT                  r | |"|%|&jV                         |&jX                  r<tO        |"      rdnd}'tZ        j]                  d|'|"j8                  |&jV                         |&j^                  rJ  tG        t        |      jI                  |            D ]  }(||(   }) ||)        |D ]  }*|*|vs |||*           y c c}w c c}w # t        $ r Y t        $ r Y w xY wc c}w # t        $ r Y w xY wc c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )NFr   TrK   r   r   r   r   c              3  8   K   | ]  }t        |        y wr   )r   )rT   r   r   r~   s     r8   rV   z/_compare_indexes_and_uniques.<locals>.<genexpr>F  s      68D"j1s   c                   t        |       rj                  | j                  | j                  ddd       rnj                  j                  t        j                  j                  | j                               t        j                  d| j                  | j                         y y t        |       rsy sry j                  | j                  | j                  ddd       rnj                  j                  t        j                  j                  | j                               t        j                  d| j                  | j                         y y J )Nr   FzDetected added index %r on '%s'r   z+Detected added unique constraint %r on '%s')r   ru   r   rK   r   rv   CreateIndexOp
from_indexry   rz   r   r   AddConstraintOpfrom_constraint)objr4   is_create_tableis_drop_table
modify_opssupports_unique_constraintss    r8   	obj_addedz/_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                   t        |       r| j                  rsy j                  | j                  | j                  ddd       rdj
                  j                  t
        j                  j                  | j                               t        j                  d| j                         y y t        |       rsry j                  | j                  | j                  ddd       rdj
                  j                  t
        j                  j                  | j                               t        j                  d| j                         y y J )Nr   TzDetected removed index %r on %rr   z+Detected removed unique constraint %r on %r)r   	is_uniqueru   r   rK   r   rv   DropIndexOpr   ry   rz   r   DropConstraintOpr   )r   r4   r   r   r   r   rU   s    r8   obj_removedz1_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                   t        |       rt        |      sJ j                  |j                  |j                  dd| j                        rt        j                  d| j                  |       j                  j                  t        j                  j                  | j                               j                  j                  t        j                  j                  |j                               y y t        |       rt        |      sJ j                  |j                  |j                  dd| j                        rt        j                  d| j                  |       j                  j                  t        j                  j                  | j                               j                  j                  t        j                  j                  |j                               y y J )Nr   Fz#Detected changed index %r on %r: %sr   z/Detected changed unique constraint %r on %r: %s)r   ru   r   rK   ry   rz   r   rv   r   r   r   r   r  r   r   )oldnewmsgr4   r   rU   s      r8   obj_changedz1_compare_indexes_and_uniques.<locals>.obj_changed  sk   
 $$$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  P   K   | ]  }j                   |j                   k7    y wr   )unnamed)rT   meta_idxconn_idxs     r8   rV   z/_compare_indexes_and_uniques.<locals>.<genexpr>  s*        $$(8(88rW   zunique constraintz5Cannot compare %s %r, assuming equal and skipping. %s)r   r-   )r  r-   r  r-   r  str)0rL   rX   r~   r   r   rs   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_skipry   rz   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_uniquesr;    sQ     ))I D(O"d*M,,11D ! %00'
"i889 '
# '

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

B 
 2 //HHo--
 	

B     B @### #J s:99.IJ "l+h  $<<00 3L AGX $8  OO+BBG$H%!'"*  N 3 @ @ LM "+%m4// 3M BGXL)#"!-0H>T,//!l#%::8DJ&&HlJ4F4FG##  ,H5G;N  KMM&&	 "****E"+H S0;;JGH 
Z(# + 8,,.v678]
'
@ # 	 	 		2 # 		&

F'

 H@ M s   #V"&V, "V'	W )"WWW!W&!W+?W0W5
3W:W?X3X	X/X	X#>X,	W8WW	WWc                   |D cg c]  }t        j                  ||      |f }}|D ch c]
  \  }}|	| }	}}|D ch c]"  \  }}||j                  |      j                  $ }
}}|D ch c]$  }|j                  rt        j                  ||      & }}|D ci c]  }|j                  s|j
                  | }}| D ci c]  }|j                  d   r|j
                  |  }}|D ]U  }||	vr6|j                  ||         j                  |
vs(| j                  ||          =||vsB|j                  ||          W y c c}w c c}}w c c}}w c c}w c c}w c c}w )Nr   )	r    _get_constraint_final_namer  r	  r   rK   rz   r  rF   )r(  r#  r   r!  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 
	/	/g	>E   3td6F  .D$< 	,,T2::  %;; 	..tW=  2>MTYY_MMM ,99'( 			4  $ 
9++55$W-'+,
 (//0@0IJ--  w!78
9?
 Ns-   E
EE'E0)EE1E#E!r   c                   |j                   }|j                   }||_        ||urt        j                  |j                  |j                        rt        j
                  |      s*t        j                  |j                  |j                        rt        j                  d||       y ||_	        t        j                  d|rdnd||       y y )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_identityry   rz   modify_nullable)	r4   r   r   rU   r   r   r   metadata_col_nullableconn_col_nullables	            r8   _compare_nullablerQ    s     )11 ))(9O% 5533++X-D-D 77E77 //1H1H
 HHE /DO+HH//Z	' 6r:   c                    |j                   j                  |u rd|j                  d<   y |j                  du rd|j                  d<   y |j                  du rd|j                  d<   y y )NTautoincrementF)rR   _autoincrement_columnr   rS  )r4   r   r   rU   r   r   r   s          r8   _setup_autoincrementrU    si     //<?.2?+		#	#t	+.2?+		#	#u	,.3?+ 
-r:   c                   |j                   }||_        |j                   }|j                  t        j                  u rt
        j                  d||       y |j                  t        j                  u rt
        j                  d||       y | j                  j                  ||      }	|	r!||_	        t
        j                  d||||       y y )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NullTypery   rz   rX   _compare_typemodify_type)
r4   r   r   rU   r   r   r   	conn_typemetadata_typeisdiffs
             r8   r[  r[    s     I$-O! %%M8#4#44D	

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

 	..<<,F &3#;	
 r:   c                   t        | t        j                        rYt        | j                  t              r| j                  } n2t	        | j                  j                  |j                  ddi            } t        | t              r| S y )Nliteral_bindsTrB   compile_kwargs)r   rs   DefaultClauseargr  compilerB   )metadata_defaultr4   s     r8   "_render_server_default_for_comparerh    s}     "I$;$;<&**C0/33" $$,,+33$3T#: -   "C(r:   c                L    t        j                  dd|       j                         S )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_defaultrn    s!     66*B8>>@@r:   c                   t        t        t        j                  |j                        j
                  j                  | j                  ddi            }t        |      }t        |j                  t        j                        rMt        |j                  j
                  j                  | j                  ddi            }|d}nt        |      }nd}||k7  rt        ||       y y )Nra  Trb  rj   )r  r   rs   ComputedrK  rm  rf  rB   rn  r   _warn_computed_not_supported)	r4   r   r   rU   r   r   r   rendered_metadata_defaultrendered_conn_defaults	            r8   _compare_computed_defaultrt    s     !$Y!<!<=EEMM#+++T2 	N 	
! !<!! ())9+=+=> ###++33'// /6 4 !
 !($&!$?%%! !# $99$UE2 :r:   c                <    t        j                  d| d|d       y )NzComputed default on re   z cannot be modified)r   warn)rU   r   s     r8   rq  rq  =  s    IIuMNr:   c                    | j                   j                  }|j                  |j                  |j                        \  }}	}
||
fS r   )rX   r~   _compare_identity_defaultrK  )r4   r   r   rU   r   r   r   r~   diffignored_attris_alters              r8   rx  rx  A  sI     ,,11D#'#A#A##X%<%<$ D, >r:   c           	     |   |j                   }|j                   }||yt        j                  |      rt        | ||||||      S t        j                  |      rt	        ||       yt        j
                  ||      rH||_        t        | ||||||      \  }	}
|
r*||_        |	r!t        j                  d||t        |	             y t        ||       }|r$t        t        |      j                  j                   nd }||_        | j"                  j%                  ||||      }|r||_        t        j                  d||       y )NFzIDetected server default on column '%s.%s': identity options attributes %sz)Detected server default on column '%s.%s')rK  r    rJ  rt  rq  rM  existing_server_defaultrx  modify_server_defaultry   rz   r   rh  r   r   re  r   rX   _compare_server_default)r4   r   r   rU   r   r   r   rg  conn_col_defaultry  r{  rr  rs  is_diffs                 r8   r  r  R  ss    $22..$4$<../?@(
 	
 ../?@$UE2..* 3C/2
h 4DO154L8 ) %Go%
!
 5ED&'++00$ 	 3C/!33KK%!	
 4DO1HH@%Or:   c                    | j                   J | j                   j                  sy |j                  }|j                  }||y||_        ||k7  r||_        t
        j                  d||       y )NFzDetected column comment '%s.%s')rB   supports_commentscommentexisting_commentmodify_commentry   rz   )	r4   r   r   rU   r   r   r   metadata_commentconn_col_comments	            r8   _compare_column_commentr    s|     ""...""44#++''$4$<'7O$++)9&2E5Ar:   c           
        
 ||y  j                   }|j                  D ch c]  }t        |t        j                        r|  }}t        |      j                  ||      D cg c]  } j                  |d   d||d      r| }	}|	D 
ch c]  }
t        |
|       }}
 j                  j                  } j                  j                  j                  ||       |D ch c]  }|j                  |       }}|D ch c]  }|j                  |       }}|	r<d|	d   v r5|D ci c]  }|j                  | }}|D ci c]  }|j                  | }}n4|D ci c]  }|j                  | }}|D ci c]  }|j                  | }}|D ci c]  }|j                   |j                   | }}|D ci c]  }|j                   |j                   | }} 
fd} fd}t#        |      j%                  |      D ]>  }||   
||vs
j                   |v r|
j                      j&                  nd } |
|       @ t#        |      j%                  |      D ]>  }||   
||vs
j                   |v r|
j                      j&                  nd } |
|       @ y c c}w c c}w c c}
w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )	Nr   rK   foreign_key_constraintr   r   r   c                   j                  | j                  | j                  dd|      rj                  j	                  t        j
                  j                  j                               t        j                  ddj                  | j                        dj                  | j                        | j                  rd| j                  z  nd| j                         y y )Nr  Fz1Detected added foreign key (%s)(%s) on table %s%s, %s.rj   )ru   r   rK   r   rv   CreateForeignKeyOpr   ry   rz   joinsource_columnstarget_columnssource_schemasource_table)r   
compare_tor4   r   r   s     r8   _add_fkz&_compare_foreign_keys.<locals>._add_fk   s    --IIsxx!95*
   ''&&66u{{C HHC		#,,-		#,,--0->->)))B  
r:   c                   j                  | j                  | j                  dd|      rj                  j	                  t        j
                  j                  | j                               t        j                  ddj                  | j                        dj                  | j                        | j                  rd| j                  z  nd| j                         y y )Nr  Tz3Detected removed foreign key (%s)(%s) on table %s%sr  r  rj   )ru   r   rK   r   rv   r  r   ry   rz   r  r  r  r  r  )r   r  r4   r   s     r8   
_remove_fkz)_compare_foreign_keys.<locals>._remove_fk  s    --IIsxx!94
   ''$$44SYY? HHE		#,,-		#,,--0->->)))B  
r:   )rL   r   r   rs   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    sU    ^3))I !,,b)889 	L  !+<<& = 

 ++vJ$ 8
	 	
M 
 ;H16%,H  ,,11D %%**JJ,
 <H57,,R0 
 =E68--b1L  mA&661=>A199a<>>5EFqyy!|FF =IIq1//2II-=
()A  !#
 

 ,qvv/A	  ,8Na166;M	NN $ ?+667JK *,11 ::!55 %UZZ066 
 uj)* ,-88I '	#I.O+ ::!11 !,22 
 E:&'G
 ?F J
 OsM   #J&"J$J)#J.J3(J8J=K7KK#K8K
Kc                   | j                   J | j                   j                  sy ||y |j                  |j                  y |j                  H|j                  <|j                  j	                  t        j
                  ||j                  |             y |j                  |j                  k7  rG|j                  j	                  t        j                  ||j                  |j                  |             y y )N)r  r   )rB   r  r  r   rv   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  )rg  zOptional[Any]r4   r'   r  r  )rm  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loggingrj  typingr   r   r   r   r   r	   r
   r   r   r   r   
sqlalchemyr   r   r   rs   r   r   rY  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   ry   r9   
DispatcherrI   r2   dispatch_forrc   r_   immutabledictr   r   r   r   r   __annotations__r   r   r   contextmanagerr   r   r   r;  r  rQ  rU  r[  rh  rn  rt  rq  rx  r  r  r  r  rl   r:   r8   <module>r     s   #   	               *  ( % ( 6 ' 2 &  ' $  632,+7,4651. g!,#,7F,	, dood+#2<	> (#'#'' 2' 
	' $'TH9H9H9 H9 	H9
 $H9 
H9V -?D,>,>~~!,, ** ++))	- ) 	
-;@@
-;@(-. 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:   