Ë
    ýÿæis)  ã                  ó²  — d dl m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 e	r*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jF                  e$«      Z%	 	 	 	 	 	 	 	 dd„Z&	 	 	 	 	 	 	 	 	 	 	 	 dd„Z'ejP                  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Z)dd„Z*y) é    )ÚannotationsN)ÚIterator)ÚOptional)ÚSet)ÚTuple)ÚTYPE_CHECKING)ÚUnion)Úevent©Úschema)Ú
OrderedSeté   )Ú_InspectorConvé   )Úops)ÚPriorityDispatchResult)Ú	Inspector)Úquoted_name)ÚTable)ÚAutogenContext)ÚModifyTableOps)Ú
UpgradeOps)ÚPluginc           
     óÞ  ‡— | j                   }t        «       }| j                  j                  }| j                  j                  }|D ]²  Št        |j                  ‰¬«      «      x}}‰|k(  r&|j                  | j                  j                  g«      }|D �	cg c]  }	| j                  |	dd‰i«      r|	‘Œ }
}	|j                  ˆfd„|
D «       «       | j                   }t        |«      }|j                  ‰|
|«       Œ´ t        | j                  D �cg c]  }|j                  |j                  f‘Œ c}«      j                  ||fg«      }t        ||||| «       t         j"                  S c c}	w c c}w )Nr   ÚtableÚschema_namec              3  ó&   •K  — | ]  }‰|f–— Œ
 y ­w©N© )Ú.0Útnamer   s     €úx/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/alembic/autogenerate/compare/tables.pyÚ	<genexpr>z&_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‡  ø€ ð
  ×)Ñ)€Iä7:³uÐð 	×)Ñ)×>Ñ>ð ð $×5Ñ5×CÑC€MãˆÜ  ×!:Ñ!:À+Ð!:Ó!NÓOÐOˆ�ØÐ.Ò.Ø×&Ñ&Ø ×2Ñ2×@Ñ@ÐAóˆFñ  ó
á�Ø×/Ñ/Ø�w °Ð <ôò Øð 	ð 
ð 	×ÑÓMÁ*ÓMÔMà#×-Ñ-ˆ	Ü˜iÓ(ˆØ×Ñ˜k¨:°yÕAð' ô* &Ø1@×1NÒ1NÓOÑ1N¨ˆ%�,‰,˜Ÿ
™
Ò	#Ð1NÑOóç�jÐ'¨Ð7Ð8Ó9ð ô ØØØØØôô "×*Ñ*Ð*ùò5
ùò 	Ps   ÂE%ÄE*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 |¬«      } |j"                  j%                  d|j                  j&                  ¬«      ||||d |«       |j)                  «       rŒá|j                  j                  |«       Œý t        j*                  «       }| j                  |«      D �]{  \  }}t        j                  ||«      }||j,                  v }t        j.                  |||¬«      }|sTt1        j2                  |d|j4                  j6                  j9                  |«      «       t;        |«      j=                  |«       |j                  ||ddd «      sŒ¯t        j                   |g |¬«      } |j"                  j%                  d|j                  j&                  ¬«      |||||d «       |j)                  «       s|j                  j                  |«       |j                  j                  t        j>                  j                  |«      «       t        j                  d	|«       �Œ~ | jA                  |«      }t        j*                  «       }i }|D ]ž  \  }}t        j                  ||«      }||j,                  v }t        j.                  |||¬«      }|sTt1        j2                  |d|j4                  j6                  j9                  |«      «       t;        |«      j=                  |«       ||||f<   Œ  tC        |d
„ ¬«      D ]Ü  \  }}|xs d }|r|›d|›�n|}|
||f   }|j,                  |   }|j                  ||dd|«      sŒCt        j                   |g |¬«      }tE        |||||||«      5   |j"                  j%                  d|j                  j&                  ¬«      ||||||«       d d d «       |j)                  «       rŒÂ|j                  j                  |«       ŒÞ y c c}}w c c}}}	w # 1 sw Y   ŒExY w)NÚ.r   FzDetected added table %rr   ©Ú	qualifierÚcolumn_reflectTzDetected removed table %rc                ó   — | d   xs d| d   fS )Nr   Ú r   r   )Úxs    r"   Ú<lambda>z!_compare_tables.<locals>.<lambda>É   s   € ¸1¸Q¹4º:À2ÀqÈÁ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Údispatchr/   Úis_emptyÚMetaDatar6   r   r
   Úlistenr&   ÚimplÚ_compat_autogen_column_reflectr   Úreflect_tableÚDropTableOpÚintersectionÚsortedÚ_compare_columns)r5   r:   r$   r3   r2   Údefault_schemar   r!   Ú#metadata_table_names_no_dflt_schemaÚno_dflt_schemaÚtname_to_tableÚsr/   Úmetadata_tableÚmodify_table_opsÚremoval_metadataÚexistsÚtÚexisting_tablesÚexisting_metadataÚconn_column_infoÚ
conn_tables                         r"   r0   r0   V   s  € ð —^‘^×+Ñ+×?Ñ?€Nô +5ñ "6ô	
á!5‘�˜ð  Ò/‰V°T¸5ÒAØ!5ò	
ó+Ð'ô 03Ø/Ð1Eô0
õ	ñ0
Ñ+ˆN™O˜V Uð 	˜×:Ñ:Ü×$Ñ$ U¨FÓ3ñ
ñ 	
ð0
ð	 ò ð ?Ðà(×3Ñ3Ð4DÖE‰ˆˆ5Ù'(š!™UÑ#¨eˆØ'¨¨E¨
Ñ3ˆØ×-Ñ-Ø˜E 7¨E°4õ
ð �O‰O×"Ñ"Ü×!Ñ!×,Ñ,¨^Ó<ôô �H‰HÐ.°Ô5Ü"×1Ñ1°%¸ÀAÔFÐðˆO×'Ñ'×0Ñ0Ø ?×#:Ñ#:×#?Ñ#?ð 1ó ð  Ø ØØØØô	ð $×,Ñ,Õ.Ø—‘×&Ñ&Ð'7Õ8ð/ Fô2 !×)Ñ)Ó+ÐØ$×/Ñ/Ð0D×E‰ˆˆ5Ü×'Ñ'¨¨qÓ1ˆð Ð)×0Ñ0Ð0ˆÜ�O‰O˜EÐ#3¸AÔ>ˆáÜ�L‰LØØ à×1Ñ1×6Ñ6ß.Ñ.Øóôô ˜9Ó%×3Ñ3°AÔ6Ø×-Ñ-¨a°¸ÀÀtÕLÜ"×1Ñ1°%¸ÀAÔFÐðˆO×'Ñ'×0Ñ0Ø ?×#:Ñ#:×#?Ñ#?ð 1ó àÐ/°°E¸1¸dôDð $×,Ñ,Ô.Ø—‘×&Ñ&Ð'7Ô8à�O‰O×"Ñ"¤3§?¡?×#=Ñ#=¸aÓ#@ÔAÜ�H‰HÐ0°$Ö7ð; Fð> '×3Ñ3Ð4HÓI€Oä!×*Ñ*Ó,ÐØÐÛ#‰ˆˆ5Ü×'Ñ'¨¨qÓ1ˆØÐ*×1Ñ1Ð1ˆô �O‰O˜EÐ#4¸QÔ?ˆÙÜ�L‰LØØ à×1Ñ1×6Ñ6ß.Ñ.¨yÓ9ôô ˜9Ó%×3Ñ3°AÔ6à'(Ð˜!˜U˜Ò$ð% $ô( ˜?Ñ0L×M‰ˆˆ5ØŠI�ˆÙ'(š!™UÑ#¨eˆØ'¨¨E¨
Ñ3ˆØ&×-Ñ-¨dÑ3ˆ
à×-Ñ-Ø˜E 7¨E°:õ
ô  #×1Ñ1°%¸ÀAÔFÐÜ!ØØØØØ ØØõð�×+Ñ+×4Ñ4Ø ×'>Ñ'>×'CÑ'Cð 5ó ð $Ø$ØØØØ"ô	÷ð( $×,Ñ,Õ.Ø—‘×&Ñ&Ð'7Õ8ñ? NùóI	
ùô÷Jð ús   «S:
Á1T Ò=TÔT	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                  ||| ¬«      } |j                  j!                  d|j"                  j                  ¬«      ||| ||||«       |j%                  «       sŒ“|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)Nr=   c              3  óN   K  — | ]  }|j                   rŒ|j                  –— Œ y ­wr   )Úsystemr/   )r    Úcs     r"   r#   z#_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   rq   rp   r/   r+   r*   rN   r   rO   ÚAddColumnOpÚfrom_column_and_tablenamerR   rS   r]   ÚAlterColumnOprT   rU   rH   Úhas_changesr%   ÚDropColumnOp)r   r!   rm   re   rf   r2   r$   r/   Úmetadata_col_namesrq   Úmetadata_cols_by_nameÚconn_col_namesÚcnameÚcolnameÚmetadata_colÚconn_colÚalter_column_ops                    r"   r_   r_   ë   s™  è ø€ ñ )/’f™eÑ$°E€DÜ#ñ $Ø&×(Ò(ó$ó Ðð *×+Ò+óÙ+�a°1·8³8ˆ�‰�‰	Ð+ð ð ð —’óáˆAØ×+Ñ+Ø�F‰F�H¨UÀ6ÑJô
ð 	
�‰�‰	Øð ð ð $×.Ñ.¨~Ö>ˆØ×-Ñ-Ø! %Ñ(¨%°¸5À$õ
ð × Ñ ×'Ñ'Ü—‘×9Ñ9Ø˜EÐ#8¸Ñ#?óôô
 �H‰HÐ4°d¸EÕBð ?ð &×2Ñ2°>ÖBˆØ,¨WÑ5ˆØ—<‘< Ñ(ˆØ×1Ñ1Ø˜' 8¨U°Hô
ð Ü×+Ñ+¨E°7À6ÔJˆð	
ˆ×#Ñ#×,Ñ,Ø × 7Ñ 7× <Ñ <ð 	-ó 	
ð ØØØØØØô
	
ð ×&Ñ&Õ(Ø× Ñ ×'Ñ'¨Õ8ð- Có0 
ä�^Ó$×/Ñ/Ð0BÖCˆØ×-Ñ-Ø�L‰L˜Ñ ¨°$¸õ
ð × Ñ ×'Ñ'Ü× Ñ ×:Ñ:Ø˜E :§<¡<°Ñ#6óôô
 �H‰HÐ6¸¸eÕDñ Dùòcùòùs7   ‚6J¸JÁ
JÁJÁ)4JÂ.JÃC9JÇA JÈ'A+Jc                ó2   — | j                  t        dd«       y )Nr   r6   )Úadd_autogenerate_comparatorr;   )Úplugins    r"   Úsetupr„   6  s   € à
×&Ñ&ÜØØõrE   )r2   r   r3   r   r4   zSet[Optional[str]]Úreturnr   )r5   úset[tuple[str | None, str]]r:   r†   r$   r   r3   r   r2   r   r…   ÚNone)r   zOptional[str]r!   zUnion[quoted_name, str]rm   r   re   r   rf   r   r2   r   r$   r   r…   zIterator[None])rƒ   r   r…   r‡   )+Ú
__future__r   Ú
contextlibÚloggingÚtypingr   r   r   r   r   r	   Ú
sqlalchemyr
   r   rL   Úsqlalchemy.utilr   Úutilr   Ú
operationsr   r   Úsqlalchemy.engine.reflectionr   Úsqlalchemy.sql.elementsr   Úsqlalchemy.sql.schemar   Úautogenerate.apir   Úoperations.opsr   r   Úruntime.pluginsr   Ú	getLoggerÚ__name__rR   r;   r0   Úcontextmanagerr_   r„   r   rE   r"   Ú<module>r™      sO  ðõ #ã Û Ý Ý Ý Ý Ý  Ý å Ý *Ý &å  Ý Ý *áÝ6Ý3Ý+å2Ý0Ý,Ý)ð €g×Ñ˜Ó!€ð/+Ø#ð/+àð/+ð  ð/+ð ó	/+ðdR9Ø1ðR9à5ðR9ð ðR9ð ð	R9ð
 $ðR9ð 
óR9ðj ×ÑðGEØðGEà"ðGEð ðGEð ð	GEð
 %ðGEð $ðGEð ðGEð òGEó ðGEôTrE   