
    -jis)                       S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S S	KJr  S S
KJr  S SKJr  SSKJr  SSKJr  SSKJr  \	(       a*  S SKJr  S SKJr  S SKJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"  \RF                  " \$5      r%        SS jr&            SS jr'\RP                                  SS j5       r)SS jr*g)     )annotationsN)Iterator)Optional)Set)Tuple)TYPE_CHECKING)Union)eventschema)
OrderedSet   )_InspectorConv   )ops)PriorityDispatchResult)	Inspector)quoted_name)Table)AutogenContext)ModifyTableOps)
UpgradeOps)Pluginc           
       ^ U R                   n[        5       nU R                  R                  nU R                  R                  nU H  m[        UR                  TS95      =pxTU:X  a&  UR                  U R                  R                  /5      nU V	s/ s H!  n	U R                  U	SST05      (       d  M  U	PM#     n
n	UR                  U4S jU
 5       5        U R                   n[        U5      nUR                  TX5        M     [        U R                   Vs/ s H  oR                  UR                  4PM     sn5      R                  XV4/5      n[        UUUUU 5        [         R"                  $ s  sn	f s  snf )Nr   tableschema_namec              3  ,   >#    U  H	  nTU4v   M     g 7fN ).0tnamer   s     ]/home/james-whalen/.local/lib/python3.13/site-packages/alembic/autogenerate/compare/tables.py	<genexpr>&_autogen_for_tables.<locals>.<genexpr>A   s     M*e 4*s   )	inspectorsetmigration_contextversion_table_schemaversion_tableget_table_names
differencerun_name_filtersupdater   pre_cache_tablesr   sorted_tablesr   name_compare_tablesr   CONTINUE)autogen_contextupgrade_opsschemasr%   conn_table_namesr(   r)   tables	availabler!   
tablenamesinspr   metadata_table_namesr   s                 @r"   _autogen_for_tablesr<   $   s   
  ))I7:u 	))>>  $55CCM !:!:+!:!NOO..&& 22@@AF  
//w <  	 
 	M*MM#--	i(k:A' * &1@1N1NO1N,,

	#1NOj'789   "***5
 	Ps   E/4E/!E4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       GH  u  pU(       a	  U< SU< 3OUnXU4   nUR                  XSSS 5      (       d  M9  UR                  R                  [        R                  R                  U5      5        [        R                  SU5        [        R                   " U/ US9nUR"                  R%                  SUR                  R&                  S9" UUUUS U5        UR)                  5       (       a  M  UR                  R                  U5        GM     [        R*                  " 5       nU R                  U5       GH  u  p[        R                  " X{5      nXR,                  ;   n[        R.                  " XUS9nU(       dU  [0        R2                  " USUR4                  R6                  R9                  U5      5        [;        U5      R=                  U5        UR                  UUSSS 5      (       d  M  [        R                   " U/ US9nUR"                  R%                  SUR                  R&                  S9" 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M     U RA                  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(       dU  [0        R2                  " USUR4                  R6                  R9                  U5      5        [;        U5      R=                  U5        UUX4'   M     [C        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[E        UUUUUUU5         UR"                  R%                  SUR                  R&                  S9" 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.r   FzDetected added table %rr   	qualifiercolumn_reflectTzDetected removed table %rc                (    U S   =(       d    SU S   4$ )Nr    r   r   )xs    r"   <lambda>!_compare_tables.<locals>.<lambda>   s    1Q4:2qt:L    )key)#binddialectdefault_schema_namer   ziptable_key_to_table	sa_schema_get_table_keyr+   run_object_filtersr   appendCreateTableOp
from_tableloginfor   comparatorsdispatchr0   is_emptyMetaDatar7   r   r
   listenr'   impl_compat_autogen_column_reflectr   reflect_tableDropTableOpintersectionsorted_compare_columns)r6   r;   r%   r4   r3   default_schemar   r!   #metadata_table_names_no_dflt_schemano_dflt_schematname_to_tablesr0   metadata_tablemodify_table_opsremoval_metadataexiststexisting_tablesexisting_metadataconn_column_info
conn_tables                         r"   r1   r1   V   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''00?#:#:#?#? 1    	 $,,..&&'78/ F2 !))+$//0DE''1 000OOEA>LL 1166.. 9%33A6--atLL"11%AF''00?#:#:#?#? 1 1dD $,,..&&'78OO""3??#=#=a#@AHH0$7; F> '334HIO!**,#''1*111 OOE#4Q?LL 1166..y9 9%33A6'(!$% $( ?0LMI'(!U#e'E
3&--d3
--7E:
 
  #11%AF!   ++44'>'>'C'C 5  $$"	( $,,..&&'78? NI	
J s   T)
2T/0:T66
U	c           
   #  x  #    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UR                  R!                  SUR"                  R                  S9" 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)Nr>   c              3  ^   #    U  H#  oR                   (       a  M  UR                  v   M%     g 7fr   )systemr0   )r    cs     r"   r#   #_compare_columns.<locals>.<genexpr>   s      $(1(s   --column)
table_namer   FzDetected added column '%s.%s'r   r?   TzDetected removed column '%s.%s')r   rs   rr   r0   r,   r+   rP   r   rQ   AddColumnOpfrom_column_and_tablenamerT   rU   r_   AlterColumnOprV   rW   rJ   has_changesr&   DropColumnOp)r   r!   ro   rg   rh   r3   r%   r0   metadata_col_namesrs   metadata_cols_by_nameconn_col_namescnamecolnamemetadata_colconn_colalter_column_ops                    r"   ra   ra      s     )/fe$ED# $&(($  *+++a88		+   A++FFHUJ
 		   $..~>--!(%5$
 
   ''99#8#?
 HH4dB ? &22>B,5<<(118UH
 
 ++E6J##,, 7 7 < < 	- 	
 
	
 &&((  ''8- C0 
^$//0BC--LL$
 
   ''  :::<<#6
 HH6D Dcs=   =J:J0J0(J:8(J5$J550J:)C9J:&A%J:A+J:c                2    U R                  [        SS5        g )Nr   r7   )add_autogenerate_comparatorr<   )plugins    r"   setupr   6  s    
&&rG   )r3   r   r4   r   r5   zSet[Optional[str]]returnr   )r6   set[tuple[str | None, str]]r;   r   r%   r   r4   r   r3   r   r   None)r   zOptional[str]r!   zUnion[quoted_name, str]ro   r   rg   r   rh   r   r3   r   r%   r   r   zIterator[None])r   r   r   r   )+
__future__r   
contextlibloggingtypingr   r   r   r   r   r	   
sqlalchemyr
   r   rN   sqlalchemy.utilr   utilr   
operationsr   r   sqlalchemy.engine.reflectionr   sqlalchemy.sql.elementsr   sqlalchemy.sql.schemar   autogenerate.apir   operations.opsr   r   runtime.pluginsr   	getLogger__name__rT   r<   r1   contextmanagerra   r   r   rG   r"   <module>r      sM   #           * &    *63+20,) !/+#/+/+  /+ 	/+dR91R95R9 R9 	R9
 $R9 
R9j GEGE"GE GE 	GE
 %GE $GE GE GE GETrG   