Ë
    …V.j�¯  ã            	      óþ  — 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( erNd 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m0Z0 d d$l1m2Z2 d d%l3m4Z4 d d&l5m6Z6 d d'l5m7Z7 d d(l5m8Z8 d d)l5m9Z9 dd*l#m:Z:  ejv                  e<«      Z=	 	 	 	 	 	 dKd+„Z> e"j~                  d,¬-«      Z@	 	 	 	 	 	 dLd.„ZAe@j…                  d/«      	 	 	 	 	 	 	 	 dMd0„«       ZC	 	 	 	 	 	 	 	 	 	 	 	 dNd1„ZD e"jŠ                  ejŒ                  ejŽ                  ej�                  ej’                  ej�                  ej’                  d2œ«      ZJd3eKd4<   	 	 	 	 	 	 	 	 dOd5„ZL	 	 	 	 	 	 	 	 dPd6„ZM	 	 	 	 	 	 dQd7„ZNejž                  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dRd8„«       ZP ed9eeeef   ¬:«      ZQe@j…                  d;«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 dSd<„«       ZRd=„ ZSe@j…                  d>«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dTd?„«       ZTe@j…                  d>«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dUd@„«       ZUe@j…                  d>«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dTdA„«       ZV	 	 	 	 	 	 dVdB„ZWdWdC„ZX	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dXdD„ZYdYdE„ZZdF„ Z[e@j…                  d>«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dZdG„«       Z\e@j…                  d>«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d[dH„«       Z]e@j…                  d;«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 d\dI„«       Z^e@j…                  d;«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 d]dJ„«       Z_y)^é    )ÚannotationsN)ÚAny)Úcast)ÚDict)ÚIterator)ÚMapping)ÚOptional)ÚSet)ÚTuple)ÚTYPE_CHECKING)ÚTypeVar)ÚUnion)Úevent)Úinspect©Úschema)Útext)Útypes)Ú
expression)ÚForeignKeyConstraint)ÚIndex)ÚUniqueConstraint)Ú
OrderedSeté   )Úutil)Úis_index_sig)Ú	is_uq_sig)Úops)Úsqla_compat)ÚLiteral)Ú	Inspector)Úquoted_name)Ú
TextClause)ÚColumn)ÚTable)ÚAutogenContext)ÚDefaultImpl)ÚAlterColumnOp)ÚMigrationScript)ÚModifyTableOps)Ú
UpgradeOps)Ú_constraint_sigc                ó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       ú^C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\alembic/autogenerate/compare.pyÚ_populate_migration_scriptr8   ;   s<   € ð #×3Ñ3°BÑ7€KØ$×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)r3   r5   r>   r<   Ú	inspectorÚdefault_schemaÚschemasÚss           r7   r1   r1   H   s  € ð !×+Ñ+€JØÐ!Ð!Ð!Ø%×*Ñ*×.Ñ.Ð/@À%ÓH€Oä" :Ó.€Ià×'Ñ'×;Ñ;€NáÜ�i×0Ñ0Ó2Ó3ˆà�‰Ð,Ô-à�‰˜Ô'Ø�‰�DÕà�&ˆñ óÙˆa˜o×>Ñ>¸qÀ(ÈBÕOŠ�7ð ð ð ×"Ñ"Ð.Ð.Ð.Ü×Ñ˜ ?×#:Ñ#:×#?Ñ#?Ó@Ø˜ 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)rG   )Ú.0Útnamer3   rR   s     €€r7   Ú	<genexpr>z&_autogen_for_tables.<locals>.<genexpr>}   s8   øè ø€ ð  
á�Ø×/Ñ/Ø�w °Ð <ôð ˜%Ô Ùùó   ƒ#&)rK   rC   Úmigration_contextÚversion_table_schemaÚversion_tableÚget_table_namesÚ
differenceÚupdater   Úsorted_tablesr   rJ   Ú_compare_tables)r3   r5   rM   rK   Úconn_table_namesrX   rY   ÚtablesrQ   Úmetadata_table_namesrR   s   `         @r7   Ú_autogen_for_tablesrb   g   s  ù€ ð  ×)Ñ)€Iä7:³uÐð 	×)Ñ)×>Ñ>ð ð $×5Ñ5×CÑC€MãˆÜ�Y×.Ñ.°kÐ.ÓBÓCˆØÐ.Ò.Ø×&Ñ&Ø ×2Ñ2×@Ñ@ÐAóˆFð 	×Ñô  
áó 
õ 	
ð ô &Ø1@×1NÒ1NÓOÑ1N¨ˆ%�,‰,˜Ÿ
™
Ò	#Ð1NÑOóç�jÐ'¨Ð7Ð8Ó9ð ô ØØØØØõùò 	Ps   Ã Dc                óh	  — |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 �]Z  \  }}t        j                  ||«      }||j*                  v }t        j,                  |||¬«      }|sPt/        j0                  |d|j2                  j4                  j7                  |«      «       t9        j:                  ||«       |j                  ||ddd «      sŒ«t        j                   |g |¬«      }t#        j%                  d«      |||||d «       |j'                  «       s|j                  j                  |«       |j                  j                  t        j<                  j                  |«      «       t        j                  d|«       �Œ] | j?                  |«      }t        j(                  «       }i }|D ]š  \  }}t        j                  ||«      }||j*                  v }t        j,                  |||¬«      }|sPt/        j0                  |d|j2                  j4                  j7                  |«      «       t9        j:                  ||«       ||||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Ú.rQ   FzDetected added table %rr   Úcolumn_reflectTzDetected removed table %rc                ó   — | d   xs d| d   fS )Nr   Ú é   © )Úxs    r7   Ú<lambda>z!_compare_tables.<locals>.<lambda>ü   s   € ¸1¸Q¹4º:À2ÀqÈÁtÑ:Lr9   )Úkey)"ÚbindrA   rB   r   ÚzipÚtable_key_to_tableÚ	sa_schemaÚ_get_table_keyr[   Úrun_object_filtersr   ÚappendÚCreateTableOpÚ
from_tableÚlogÚinfor*   rH   rI   Úis_emptyÚMetaDatar`   r%   r   ÚlistenrW   ÚimplÚ_compat_autogen_column_reflectr   Ú_reflect_tableÚDropTableOpÚintersectionÚsortedÚ_compare_columns)r_   ra   rK   r5   r3   rL   r   rT   Ú#metadata_table_names_no_dflt_schemaÚno_dflt_schemaÚtname_to_tablerN   rJ   Úmetadata_tableÚmodify_table_opsÚremoval_metadataÚexistsÚtÚexisting_tablesÚexisting_metadataÚconn_column_infoÚ
conn_tables                         r7   r^   r^   ’   s›  € ð —^‘^×+Ñ+×?Ñ?€Nô +5ñ "6ô	
á!5‘�˜ð  Ò/‰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Ðä× Ñ  Ó)ØØ ØØØØôð $×,Ñ,Õ.Ø—‘×&Ñ&Ð'7Õ8ð+ Fô. !×)Ñ)Ó+ÐØ$×/Ñ/Ð0D×E‰ˆˆ5Ü×'Ñ'¨¨qÓ1ˆØÐ)×0Ñ0Ð0ˆÜ�O‰O˜EÐ#3¸AÔ>ˆáÜ�L‰LØØ à×1Ñ1×6Ñ6ß.Ñ.Øóôô ×&Ñ& y°!Ô4Ø×-Ñ-¨a°¸ÀÀtÕLÜ"×1Ñ1°%¸ÀAÔFÐä× Ñ  Ó)ØÐ!1°1°e¸QÀôð $×,Ñ,Ô.Ø—‘×&Ñ&Ð'7Ô8à�O‰O×"Ñ"¤3§?¡?×#=Ñ#=¸aÓ#@ÔAÜ�H‰HÐ0°$Ö7ð5 Fð8 '×3Ñ3Ð4HÓI€Oä!×*Ñ*Ó,ÐØÐÛ#‰ˆˆ5Ü×'Ñ'¨¨qÓ1ˆØÐ*×1Ñ1Ð1ˆÜ�O‰O˜EÐ#4¸QÔ?ˆÙÜ�L‰LØØ à×1Ñ1×6Ñ6ß.Ñ.¨yÓ9ôô ×&Ñ& y°!Ô4Ø'(Ð˜!˜U˜Ò$ð $ô  ˜?Ñ0L×M‰ˆˆ5ØŠI�ˆÙ'(š!™UÑ#¨eˆØ'¨¨E¨
Ñ3ˆØ&×-Ñ-¨dÑ3ˆ
à×-Ñ-Ø˜E 7¨E°:õ
ô  #×1Ñ1°%¸ÀAÔFÐÜ!ØØØØØ ØØõô ×$Ñ$ WÓ-Ø#Ø$ØØØØ"ô÷ð$ $×,Ñ,Õ.Ø—‘×&Ñ&Ð'7Õ8ñ; Nùów	
ùô÷xð ús   «R
Á1R!Ñ R(Ò(R1	)Ú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ÚexpressionsrJ   Úunique)r™   Ú_tableÚindexÚduplicates_constraint)
r@   Ú	enumerater   Úcr”   rs   rp   r   Ú adjust_reflected_dialect_optionsrw   )r{   Úparamsr�   ÚexprsÚsortingÚnumÚcol_namerJ   ÚitemÚoperatorÚixs              r7   Ú_make_indexr¨   (  s  € ð 35€EØ�j‰jÐ)Ó*€Gä" 6¨.Ñ#9Ö:‰ˆˆXàÐØ  FÑ*Ð*Ð*Ø˜-Ñ(¨Ñ-ˆDÜ˜“:‰DàˆDØ—<‘< Ñ)ˆDÙ�t˜w‘Ø# DœM�ØÔ5Ò5Ü1°(Ñ;¸DÓA‘Dð *ð 	�‰�TÕð ;ô 
�‰Øˆv‰ð
à	ñ
ð �hÑØñ	
ð
 ×
/Ñ
/°¸Ó
@ñ
€Bð  &Ñ(Ø+1Ð2IÑ+Jˆ�‰Ð'Ñ(Ø€Ir9   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—   rJ   Úunique_constraintÚduplicates_index)rp   r   rž   rŸ   rw   )r{   r    r�   ÚcnameÚuqs        r7   Ú_make_unique_constraintr®   H  s„   € ô 
×	#Ñ	#Ø+1°.Ò+AÓ	BÑ+A %ˆ*�,‰,�uÓ
Ð+AÑ	Bð
à�F‰^ð
ð ×
/Ñ
/°Ð8KÓ
Lñ
€Bð
 ˜VÑ#Ø&,Ð-?Ñ&@ˆ�‰Ð"Ñ#à€Iùò 
Cs   —A!c           
     ó¦  — | 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_schemard   ÚoptionsÚconstrained_columnsÚreferred_columnsÚonupdateÚondeleteÚ
deferrableÚ	initiallyrJ   )rµ   r¶   r·   r¸   rJ   )r@   rp   r   rž   Úappend_constraint)r    r�   rT   r²   r¬   ÚnÚconsts          r7   Ú_make_foreign_keyr¼   V  sß   € ð Ð#Ñ$€EØÐÒ Ø!Ð"3Ó4±eÐ<ˆà�j‰j˜ BÓ'€Gä×*Ñ*Ø*0Ð1FÒ*GÓHÑ*G ˆ�‰�eÓ	Ð*GÑHØ'-Ð.@Ò'AÓBÑ'A !’E™1Ò	Ð'AÑ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)
Nrd   c              3  óN   K  — | ]  }|j                   rŒ|j                  –— Œ y ­w©N)ÚsystemrJ   )rS   rž   s     r7   rU   z#_compare_columns.<locals>.<genexpr>x  s   è ø€ ð $Ù(�1°·³ˆ��Ñ(ùs   ‚%”%Úcolumn©Ú
table_namerR   FzDetected added column '%s.%s'r   TzDetected removed column '%s.%s')r   rž   rÀ   rJ   rG   r[   rr   r   rs   ÚAddColumnOpÚfrom_column_and_tablenamerv   rw   r   r(   rH   rI   Úhas_changesrC   ÚDropColumnOp)r   rT   r�   r…   r†   r3   rK   rJ   Úmetadata_col_namesrž   Úmetadata_cols_by_nameÚconn_col_namesr¬   ÚcolnameÚmetadata_colÚconn_colÚalter_column_ops                    r7   r�   r�   m  sw  è ø€ ñ )/’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ˆä×Ñ˜XÓ&ØØØØØØØô	
ð ×&Ñ&Õ(Ø× Ñ ×'Ñ'¨Õ8ð) Có, 
ä�^Ó$×/Ñ/Ð0BÖCˆØ×-Ñ-Ø�L‰L˜Ñ ¨°$¸õ
ð × Ñ ×'Ñ'Ü× Ñ ×:Ñ:Ø˜E :§<¡<°Ñ#6óôô
 �H‰HÐ6¸¸eÕDñ Dùò_ùòùs7   ‚6I5¸I+Á
I+ÁI5Á)4I0Â.I5ÃCI5Æ)A I5È
A+I5Ú_C)ÚboundrQ   c           
     ó   ‡ ‡‡‡‡+‡,‡-‡.‡/— ‰ 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}‰�Ø	 |j                  ‰|¬«      }
dŠ/|
D �cg c]  }‰ j                  |d   d‰|dœ«      r|‘Œ }
}|
D ]  }|j                  d«      sŒd}Œ 	 	 |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].  }|j.                  r t1        t2        |j5                  ‰ «      «      |“Œ0 }}|D �ci c]  }|j6                  |“Œ }}|D �ci c]  }|j6                  |“Œ }}|j-                  |«      D �ci c].  }t9        j:                  |j6                  «      r|j6                  |“Œ0 }}t        |«      j=                  |«      D �ci c]  }|||   ||   f“Œ }}|D �ci c]  }|j>                  |“Œ }}|D �ci c]  }|j>                  |“Œ }}|D �ci c]9  }t9        j@                  |jB                  ‰ j$                  «      s|j>                  |“Œ; }}dˆ ˆ-ˆ.ˆˆ/fd
„}dˆ ˆ-ˆ.ˆˆ/ˆfd„}	 	 	 	 	 	 dˆ ˆˆfd„} tE        t        |«      jG                  |«      «      D ]j  }!||!   }"tI        |"«      r|"j>                  |v rŒ"|!|v r=||!   \  }#Š+tK        ˆ+fd„|D «       «      sŒC|#j>                  |vsŒR ||#«        |‰+«       Œc ||"«       Œl tE        t        |«      j=                  |«      «      D ]Ù  }$||$   }%|$|v r||$   \  }#Š+tM        |%«      r‰+}"n|#}"n||$   }"tO        |"«      tO        |%«      k7  r ||"«        ||%«       ŒR|%jQ                  |"«      }&|&jR                  r | |"|%|&jT                  «       Œ„|&jV                  r<tM        |"«      rdnd}'tX        j[                  d|'|"j6                  |&jT                  «       ŒÌ|&j\                  rŒÙJ ‚ tE        t        |«      jG                  |«      «      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   TrJ   rª   rÂ   r«   r›   c              3  ó8   •K  — | ]  }t        ‰|‰«      –— Œ y ­wr¿   )r¨   )rS   r§   r�   r{   s     €€r7   rU   z/_compare_indexes_and_uniques.<locals>.<genexpr>  s   øè ø€ ð Ù<H°b”˜D " j×1¹Lù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   rr   r»   rJ   r   rs   ÚCreateIndexOpÚ
from_indexrv   rw   r—   r   ÚAddConstraintOpÚfrom_constraint)Úobjr3   Úis_create_tableÚis_drop_tableÚ
modify_opsÚsupports_unique_constraintss    €€€€€r7   Ú	obj_addedz/_compare_indexes_and_uniques.<locals>.obj_addeds  s  ø€ Ü˜ÔØ×1Ñ1Ø—	‘	˜3Ÿ8™8 W¨e°Tôð —‘×%Ñ%¤c×&7Ñ&7×&BÑ&BÀ3Ç9Á9Ó&MÔNÜ—‘Ø7Ø—H‘HØ×$Ñ$õð	ô �sŒ^Ù.ð Ù¡-àØ×1Ñ1Ø—	‘	˜3Ÿ8™8Ð%8¸%Àôð —‘×%Ñ%Ü×'Ñ'×7Ñ7¸¿	¹	ÓBôô —‘ØAØ—H‘HØ×$Ñ$õðð �5r9   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_uniquerr   r»   rJ   r   rs   ÚDropIndexOprÕ   rv   rw   r   ÚDropConstraintOpr×   )rØ   r3   rÙ   rÚ   rÛ   rÜ   rT   s    €€€€€€r7   Úobj_removedz1_compare_indexes_and_uniques.<locals>.obj_removed”  s  ø€ Ü˜ÔØ�}Š}Ñ%@ð à×1Ñ1Ø—	‘	˜3Ÿ8™8 W¨d°Dôð —‘×%Ñ%¤c§o¡o×&@Ñ&@ÀÇÁÓ&KÔLÜ—‘Ð:¸C¿H¹HÀeÕLð	ô
 �sŒ^Ù¡-ð Ø×1Ñ1Ø—	‘	˜3Ÿ8™8Ð%8¸$Àôð —‘×%Ñ%Ü×(Ñ(×8Ñ8¸¿¹ÓCôô —‘ØAØ—H‘HØõðð �5r9   c                óÔ  •— t        | «      rèt        |«      sJ ‚‰j                  |j                  |j                  dd| j                  «      r§t        j                  d| j                  ‰|«       ‰j                  j                  t        j                  j                  | j                  «      «       ‰j                  j                  t        j                  j                  |j                  «      «       y y t        | «      rèt        |«      sJ ‚‰j                  |j                  |j                  dd| j                  «      r§t        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   rr   r»   rJ   rv   rw   r   rs   rà   rÕ   rÔ   r   rá   r×   rÖ   )ÚoldÚnewÚmsgr3   rÛ   rT   s      €€€r7   Úobj_changedz1_compare_indexes_and_uniques.<locals>.obj_changed´  sk  ø€ ô
 ˜ÔÜ Ô$Ð$Ð$à×1Ñ1Ø—	‘	˜3Ÿ8™8 W¨e°S·Y±Yôô —‘Ø9¸3¿8¹8ÀUÈCôð —‘×%Ñ%¤c§o¡o×&@Ñ&@ÀÇÁÓ&KÔLØ—‘×%Ñ%¤c×&7Ñ&7×&BÑ&BÀ3Ç9Á9Ó&MÕNðô �sŒ^Ü˜S”>Ð!�>à×1Ñ1Ø—	‘	˜3Ÿ8™8Ð%8¸%ÀÇÁôô —‘ØEØ—H‘HØØô	ð —‘×%Ñ%Ü×(Ñ(×8Ñ8¸¿¹ÓCôð —‘×%Ñ%Ü×'Ñ'×7Ñ7¸¿	¹	ÓBõðð  �5r9   c              3  óP   •K  — | ]  }‰j                   |j                   k7  –— Œ y ­wr¿   )Úunnamed)rS   Úmeta_idxÚconn_idxs     €r7   rU   z/_compare_indexes_and_uniques.<locals>.<genexpr>ã  s*   øè ø€ ð á$8˜ð ×$Ñ$¨×(8Ñ(8Õ8Ù$8ùrV   zunique constraintz5Cannot compare %s %r, assuming equal and skipping. %s)rØ   r,   )rä   r,   rå   r,   ræ   Ústr)/rK   rW   r{   ÚconstraintsÚ
isinstancerp   r   rC   ÚindexesÚ	frozensetÚget_unique_constraintsrG   r@   ÚNotImplementedErrorÚ	TypeErrorÚget_indexesr®   Ú_correct_for_uq_duplicates_uixrA   Úcorrect_for_autogen_constraintsÚ_create_metadata_constraint_sigÚ _create_reflected_constraint_sigÚunionÚis_namedr   rì   Úmd_name_to_sql_namerJ   r   Úconstraint_name_stringr   ré   Ú_constraint_is_namedr»   r€   r[   r   Úallr   ÚtypeÚcompare_to_reflectedÚis_differentÚmessageÚis_skiprv   rw   Úis_equal)0r3   rÛ   r   rT   r�   r…   rK   r­   Úmetadata_unique_constraintsÚmetadata_indexesÚconn_uniquesÚconn_indexesÚ+unique_constraints_duplicate_unique_indexesr§   Úuq_defr›   Úmetadata_unique_constraints_sigÚmetadata_indexes_sigÚconn_unique_constraintsÚconn_indexes_sigrž   Úmetadata_namesÚconn_uniques_by_nameÚconn_indexes_by_nameÚ
conn_namesrJ   Údoubled_constraintsÚconn_uniques_by_sigÚmetadata_uniques_by_sigÚunnamed_metadata_uniquesrÝ   râ   rç   Úremoved_nameÚconn_objÚconn_uqÚexisting_nameÚmetadata_objÚ
comparisonÚthingÚ
added_namerØ   Úuq_sigrë   r{   rÙ   rÚ   rÜ   s0   `` ``                                      @@@@@r7   Ú_compare_indexes_and_uniquesr   ¹  s]  ÿø€ ð  ×)Ñ)€IØ  DÐ(€OØ" dÐ*€MØ×,Ñ,×1Ñ1€Dð Ð!ð %×0Ò0ó'
á0�Ü˜"œi×8Ñ8Ô9ò Ø0ð 	$ð '
ô
 ˜~×5Ñ5Ó6Ñä&)£eÐ#Ü›5Ðä"+£+Ð-€L�<à"'Ðà27Ð/àÐð	GØ$×;Ñ;Ø˜fð <ó ˆLð +/Ð'ñ 'óá&�BØ"×3Ñ3Ø�v‘JØ'Ø#(¸Ñ@ôò Ø&ð ð ó #�Ø—6‘6Ð,Õ-ØBFÑ?ñ #ð	Ø$×0Ñ0Ø˜fð 1ó ˆLñ 'óá&�BØ"×3Ñ3Ø�v‘JØØ#(¸Ñ@ôò Ø&ð ð ñ ä›5‰Lñ +óá*�Fô (¨¨f°jÕAØ*ð ð ôÙ<Hôó
ñ�ð Ð ò	 ðð 	ð 
ñ 3Ü&ØØØ'ØØ×#Ñ#Øô	
ð 	×(Ñ(ØØØ#Øô	ñ .ó'á-ˆBð 	×,Ñ,¨RÕ0Ø-ð $ð 'ñ <LóÙ;K°Rˆ×,Ñ,¨RÕ0Ð;Kð ð ñ
 =IóÙ<H°bˆ×-Ñ-¨bÕ1¸Lð ð ñ
 =IóÙ<H°bˆ×-Ñ-¨bÕ1¸Lð ð ð 1×6Ñ6Ð7KÔLóáLˆAØ�:Š:ô 	ŒS�!×'Ñ'¨Ó8Ó9¸1Ñ<ØLð ð ñ 0GÓGÑ/F¨!˜AŸF™F A™IÐ/FÐÐGÙ/?Ó@Ñ/?¨!˜AŸF™F A™IÐ/?ÐÐ@ð )×.Ñ.Ð/?Ô@óá@ˆAÜ×-Ñ-¨a¯f©fÔ5ð 	
�‰�‰	Ø@ð ð ô Ð,Ó-×:Ñ:Ø ô
óñ
ˆDð 	Ð# DÑ)Ð+?ÀÑ+EÐFÑFð
ð ð ñ 5LÓLÑ4K¨b˜2Ÿ:™: r™>Ð4KÐÐLá!@óÙ!@˜2ˆ�
‰
�B‰Ð!@ð ð ñ
 2ó á1ˆBÜ×/Ñ/Ø�H‰H�o×-Ñ-ô
ð 	�
‰
�B‰Ø1ð ð  ÷ ñ ÷Bò ð@#Øð#àð#ð ÷#ôJ œs :›×9Ñ9¸.ÓIÖJˆØ˜lÑ+ˆä�hÔØ× Ñ Ð$<Ñ<àØÐ0Ñ0Ø 3°LÑ AÑˆG�Xäó á$8óõ ð —O‘OÐ+BÒBá˜GÔ$Ù˜HÕ%á˜Õ!ð' Kô*  ¤ NÓ 3× @Ñ @ÀÓ LÖMˆØ% mÑ4ˆàÐ/Ñ/Ø 3°MÑ BÑˆG�XÜ˜LÔ)Ø#‘à"‘à! -Ñ0ˆHä�‹>œT ,Ó/Ò/Ù˜Ô!Ù�lÕ#à%×:Ñ:¸8ÓDˆJà×&Ò&á˜H l°J×4FÑ4FÕGØ×#Ò#ô  ,¨HÔ5‘GÐ;Nð ô —‘ØKØØ—M‘MØ×&Ñ&õ	ð "×*Ó*Ð*Ð*ðE NôH œS Ó0×;Ñ;¸JÓGÖHˆ
Ø˜ZÑ(ˆÙ�#�ð Ió +ˆØÐ,Ò,ÙÐ.¨vÑ6Õ7ñ +ùò[
'
ùò>øô #ò 	ÚÜò 	ò ð		üò2øô #ò 	Úð	üò&ùò

ùòF'ùò
ùòùòùò
ùò HùÚ@ùòùòùò Mùòùò s�   Á#VÂ&V Â?"VÄ V: Ä"V5ÅW
Å0WÆ1WÇWÇ-WÈW#È83W(É1W-ÊW2Ê43W7ÌW<ÌXÌ7XÍ>XÖ	V2Ö&V2Ö1V2Ö:	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™   rJ   rw   rø   rE   )r  r  r  r  rA   r{   ÚconsÚmetadata_cons_namesrJ   Úmetadata_uq_namesÚunnamed_metadata_uqsÚmetadata_ix_namesÚconn_ix_namesÚuqs_dupe_indexesÚoverlaps                  r7   rõ   rõ     s´  € ñ* 0óá/ˆDô 
×	/Ñ	/°°gÓ	>ÀÒEØ/ð ð ñ  3ôÙ2‘��t°dÑ6FŠÐ2ð ñ ñ .ôá-‰JˆD�$Øˆ<ð 	×,Ñ,¨TÓ2×:Ó:Ø-ð ñ ñ %óá$ˆDØ�;Š;ô 	×.Ñ.¨t°WÕ=Ø$ð ð ñ 2>ÓM±¨ÀÇÃ�T—Y‘Y ‘_°€MÐMñ ,óá+ˆDØ�9‰9Ð'Ò(ð 	�	‰	�4‰Ø+ð ð ó $ˆØÐ+Ñ+à×5Ñ5Ø$ WÑ-óç‘'Ø+ò,ð
 (×/Ñ/Ð0@ÀÑ0IÕJØÐ-Ò-Ø× Ñ  ¨wÑ!7Õ8ñ $ùò?ùó
ùóùòùò Nùòs-   …E«
E¶EÁ'EÁ0)EÂEÂ1EÃ#E!rÁ   c                ó”  — |j                   }|j                   }||_        ||ur¥t        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_identityrv   rw   Úmodify_nullable)	r3   rÎ   r   rT   r¬   rÍ   rÌ   Úmetadata_col_nullableÚconn_col_nullables	            r7   Ú_compare_nullabler6  Z  s¾   € ð )×1Ñ1ÐØ ×)Ñ)ÐØ(9€OÔ%àÐ 5Ñ5ä×3Ñ3Ø×+Ñ+¨X×-DÑ-Dôô ×7Ñ7¸ÔEä×7Ñ7Ø ×/Ñ/°×1HÑ1Hôô
 �H‰HØEØØõð /DˆOÔ+Ü�H‰HØ/Ù/‘°ZØØõ	ð' 6r9   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)rQ   Ú_autoincrement_columnÚkwr8  )r3   rÎ   r   rT   r¬   rÍ   rÌ   s          r7   Ú_setup_autoincrementr;  ƒ  si   € ð ×Ñ×/Ñ/°<Ñ?Ø.2ˆ×Ñ˜?Ò+Ø	×	#Ñ	# tÑ	+Ø.2ˆ×Ñ˜?Ò+Ø	×	#Ñ	# uÑ	,Ø.3ˆ×Ñ˜?Ò+ð 
-r9   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ÚNullTyperv   rw   rW   Ú_compare_typeÚmodify_type)
r3   rÎ   r   rT   r¬   rÍ   rÌ   Ú	conn_typeÚmetadata_typeÚisdiffs
             r7   rA  rA  •  sÄ   € ð —‘€IØ$-€OÔ!Ø ×%Ñ%€MØ×Ñ¤8×#4Ñ#4Ñ4Ü�‰ØDØØô	
ð
 	Ø×#Ñ#¤x×'8Ñ'8Ñ8Ü�‰ØKØØô	
ð
 	à×.Ñ.×<Ñ<Ø�,ó€Fñ Ø&3ˆÔ#Ü�‰Ø;ØØØØõ	
ð r9   c                ó  — t        | t        j                  «      rYt        | j                  t        «      r| j                  } n2t	        | j                  j                  |j                  ddi¬«      «      } t        | t        «      r| S y )NÚliteral_bindsT©rA   Úcompile_kwargs)rî   rp   ÚDefaultClauseÚargrì   ÚcompilerA   )Úmetadata_defaultr3   s     r7   Ú"_render_server_default_for_comparerN  À  s}   € ô Ð"¤I×$;Ñ$;Ô<ÜÐ&×*Ñ*¬CÔ0Ø/×3Ñ3Ñä"Ø ×$Ñ$×,Ñ,Ø+×3Ñ3Ø$3°TÐ#:ð -ó ó Ðô Ð"¤CÔ(ØÐàr9   c                óL   — t        j                  dd| «      j                  «       S )zÏwe want to warn if a computed sql expression has changed.  however
    we don't want false positives and the warning is not that critical.
    so filter out most forms of variability from the SQL text.

    z[ \(\)'\"`\[\]\t\r\n]rg   )ÚreÚsubÚlower)Úsqltexts    r7   Ú_normalize_computed_defaultrT  Ó  s!   € ô �6‰6Ð*¨B°Ó8×>Ñ>Ó@Ð@r9   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 )NrG  TrH  rg   )rì   r   rp   ÚComputedr0  rS  rL  rA   rT  rî   Ú_warn_computed_not_supported)	r3   rÎ   r   rT   r¬   rÍ   rÌ   Úrendered_metadata_defaultÚrendered_conn_defaults	            r7   Ú_compare_computed_defaultrZ  Ý  sì   € ô !$ÜŒY×Ñ ×!<Ñ!<Ó=×EÑE×MÑMØ#×+Ñ+Ø+¨TÐ2ð 	Nó 	
ó!Ðô !<Ø!ó!Ðô �(×)Ñ)¬9×+=Ñ+=Ô>Ü #Ø×#Ñ#×+Ñ+×3Ñ3Ø'×/Ñ/Ø /°Ð6ð 4ó ó!
Ðð !Ð(Ø$&Ñ!ä$?Ø%ó%Ñ!ð !#Ðà Ð$9Ò9Ü$ U¨EÕ2ð :r9   c                ó<   — t        j                  d| ›d|›d�«       y )NzComputed default on rd   z cannot be modified)r   Úwarn)rT   r¬   s     r7   rW  rW  	  s   € Ü‡I‚IÂÂuÐMÕNr9   c                óŠ   — | j                   j                  }|j                  |j                  |j                  «      \  }}	}
||
fS r¿   )rW   r{   Ú_compare_identity_defaultr0  )r3   rÎ   r   rT   r¬   rÍ   rÌ   r{   ÚdiffÚignored_attrÚis_alters              r7   r^  r^    sI   € ð ×,Ñ,×1Ñ1€DØ#'×#AÑ#AØ×#Ñ# X×%<Ñ%<ó$Ñ €Dˆ,˜ð �ˆ>Ðr9   c           	     óž  — |j                   }|j                   }|€|€yt        j                  |«      r"t        j                  sy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')r0  r   r/  Úhas_computed_reflectionrZ  rW  r2  Úexisting_server_defaultr^  Úmodify_server_defaultrv   rw   r€   rN  r   r   rK  r   rW   Ú_compare_server_default)r3   rÎ   r   rT   r¬   rÍ   rÌ   rM  Úconn_col_defaultr_  ra  rX  rY  Úis_diffs                 r7   rf  rf    sƒ  € ð $×2Ñ2ÐØ×.Ñ.ÐØÐÐ$4Ð$<Øä×.Ñ.Ð/?Ô@ô ×2Ò2Øô *Ø#Ø#ØØØØØ óð
ô ×.Ñ.Ð/?Ô@Ü$ U¨EÔ2Øä×.Ñ.ØÐ*ôð 3CˆÔ/Ü2ØØØØØØØó
‰ˆˆhñ Ø4DˆOÔ1ÙÜ—‘ð5àØÜ˜4“Lôð8 ô) %GØ˜oó%
Ð!ñ
 5EŒD”Ð&Ó'×+Ñ+×0Ò0È$ð 	ð 3CˆÔ/à!×3Ñ3×KÑKØØØ%Ø!ó	
ˆñ Ø4DˆOÔ1Ü�H‰HÐ@À%ÈÔOàr9   c                óÜ   — | j                   €J ‚| j                   j                  sy |j                  }|j                  }|€|€y||_        ||k7  r||_        t
        j                  d||«       y )NFzDetected column comment '%s.%s')rA   Úsupports_commentsÚcommentÚexisting_commentÚmodify_commentrv   rw   )	r3   rÎ   r   rT   r¬   rÍ   rÌ   Úmetadata_commentÚconn_col_comments	            r7   Ú_compare_column_commentrp  v  s|   € ð ×"Ñ"Ð.Ð.Ð.Ø×"Ñ"×4Ò4Øà#×+Ñ+ÐØ×'Ñ'ÐØÐÐ$4Ð$<Øà'7€OÔ$àÐ+Ò+Ø)9ˆÔ&Ü�‰Ð2°E¸5ÔAàr9   c           
     óš  ‡ ‡‡
— |�|€y ‰ j                   }|j                  D �ch c]  }t        |t        j                  «      r|’Œ  }}|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   rJ   Ú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 )Nrr  Fz1Detected added foreign key (%s)(%s) on table %s%sú, ú%s.rg   )rr   r»   rJ   r   rs   ÚCreateForeignKeyOpr×   rv   rw   ÚjoinÚsource_columnsÚtarget_columnsÚsource_schemaÚsource_table)rØ   Ú
compare_tor3   r»   r†   s     €€€r7   Ú_add_fkz&_compare_foreign_keys.<locals>._add_fk×  s®   ø€ Ø×-Ñ-Ø�I‰I�s—x‘xÐ!9¸5À*ô
ð × Ñ ×'Ñ'Ü×&Ñ&×6Ñ6°u·{±{ÓCôô �H‰HØCØ—	‘	˜#×,Ñ,Ó-Ø—	‘	˜#×,Ñ,Ó-Ø-0×->Ò->�˜×)Ñ)Ò)ÀBØ× Ñ õð
r9   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 )Nrr  Tz3Detected removed foreign key (%s)(%s) on table %s%srt  ru  rg   )rr   r»   rJ   r   rs   rá   r×   rv   rw   rw  rx  ry  rz  r{  )rØ   r|  r3   r†   s     €€r7   Ú
_remove_fkz)_compare_foreign_keys.<locals>._remove_fkç  s®   ø€ Ø×-Ñ-Ø�I‰I�s—x‘xÐ!9¸4Àô
ð × Ñ ×'Ñ'Ü×$Ñ$×4Ñ4°S·Y±YÓ?ôô �H‰HØEØ—	‘	˜#×,Ñ,Ó-Ø—	‘	˜#×,Ñ,Ó-Ø-0×->Ò->�˜×)Ñ)Ò)ÀBØ× Ñ õð
r9   )rK   rí   rî   rp   r   Úget_foreign_keysrG   r¼   rW   r{   Úcorrect_for_autogen_foreignkeysr÷   rø   ré   Úunnamed_no_optionsrJ   rC   r[   r»   )r3   r†   r   rT   r�   r…   rK   ÚfkÚmetadata_fksÚconn_fks_listr»   Úconn_fksr{   Úmetadata_fks_sigÚconn_fks_sigrž   Úconn_fks_by_sigÚmetadata_fks_by_sigÚmetadata_fks_by_nameÚconn_fks_by_namer}  r  Úremoved_sigr|  Ú	added_sigs   ``        `              r7   Ú_compare_foreign_keysr�  ’  sX  ú€ ð Ð˜^Ð3Øà×)Ñ)€Ið !×,Ò,óá,ˆBÜ�bœ)×8Ñ8Ô9ò 	Ø,ð ð ð ×,Ñ,¨U¸6Ð,ÔBóáBˆBØ×+Ñ+Øˆv‰JØ$Ø °Ñ8ô
ò 	ØBð ð ñ #óá"ˆEô 	˜% Õ,Ø"ð ð ð
 ×,Ñ,×1Ñ1€Dð ×%Ñ%×*Ñ*×JÑJØ�,ôñ
 <HóÙ;G°Rˆ×,Ñ,¨RÕ0¸<ð ð ñ
 =EóÙ<D°bˆ×-Ñ-¨bÕ1¸Hð ð ñ ˜ m°AÑ&6Ñ6Ù1=Ó>±¨A˜1Ÿ9™9 a™<°ˆÐ>Ù5EÓFÑ5E°˜qŸy™y¨!™|Ð5EÐÑFñ =IÓI¹L°q˜1×/Ñ/°Ñ2¸LˆÐIá-=ó
Ù-=¨ˆA× Ñ  !Ñ#Ð-=ð 	ð 
ñ
 ,óÙ+�a¨q¯v©vÑ/Aˆ�‰�‰	Ð+ð ð ñ ,8ÓN©< a¸1¿6¹6Ñ;M˜Ÿ™ ™	¨<ÐÐNöõ ô$ ˜?Ó+×6Ñ6Ð7JÖKˆØ Ñ,ˆØÐ1Ò1ð —:‘:Ð!5Ñ5ð % U§Z¡ZÑ0×6Ò6àð ñ
 �u˜jÕ)ð Lô Ð,Ó-×8Ñ8¸ÖIˆ	Ø# IÑ.ˆØ˜OÒ+ð —:‘:Ð!1Ñ1ð ! §¡Ñ,×2Ò2àð ñ
 �E˜:Õ&ñ JùòEùòùòùòùòùò ?ùÚFùò Jùò
ùòùò OsM   £#JÁ"JÂJ ÃJ%Ã8J*ÄJ/Ä9J4ÅJ9Å.J>ÆKÆKÆ/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)rl  r   )rA   rj  rk  r   rs   ÚDropTableCommentOpÚCreateTableCommentOp)r3   r†   r   rT   r�   r…   s         r7   Ú_compare_table_commentr“    sí   € ð ×"Ñ"Ð.Ð.Ð.Ø×"Ñ"×4Ò4Øð Ð˜^Ð3Øà×ÑÐ! n×&<Ñ&<Ð&DØà×ÑÐ%¨*×*<Ñ*<Ð*HØ×Ñ×#Ñ#Ü×"Ñ"Ø¨
×(:Ñ(:À6ôõ	
ð
 
×	Ñ	 :×#5Ñ#5Ò	5Ø×Ñ×#Ñ#Ü×$Ñ$ØØ×&Ñ&Ø!+×!3Ñ!3Øô	õ	
ð 
6r9   )r3   r&   r4   r)   ÚreturnÚNone)r3   r&   r5   r+   r”  r•  )r3   r&   r5   r+   rM   z$Union[Set[None], Set[Optional[str]]]r”  r•  )r_   rC   ra   rC   rK   r!   r5   r+   r3   r&   r”  r•  )r{   r'   r    úDict[str, Any]r�   r%   r”  zOptional[Index])r{   r'   r    r–  r�   r%   r”  r   )r    r–  r�   r%   r”  r   )r   úOptional[str]rT   úUnion[quoted_name, str]r�   r%   r…   r%   r†   r*   r3   r&   rK   r!   r”  zIterator[None])r3   r&   rÛ   r*   r   r—  rT   r˜  r�   úOptional[Table]r…   r™  r”  r•  )r3   r&   rÎ   r(   r   r—  rT   r˜  r¬   r˜  rÍ   úColumn[Any]rÌ   rš  r”  r•  )r3   r&   rÎ   r(   r   r—  rT   r˜  r¬   r"   rÍ   rš  rÌ   rš  r”  r•  )rM  zOptional[Any]r3   r&   r”  r—  )rS  rì   r”  rì   )r3   r&   rÎ   r(   r   r—  rT   rì   r¬   rì   rÍ   rš  rÌ   rš  r”  r•  )rT   rì   r¬   rì   r”  r•  )r3   r&   rÎ   r(   r   r—  rT   r˜  r¬   r˜  rÍ   rš  rÌ   rš  r”  zOptional[bool])r3   r&   rÎ   r(   r   r—  rT   r˜  r¬   r"   rÍ   rš  rÌ   rš  r”  zOptional[Literal[False]])r3   r&   r†   r*   r   r—  rT   r˜  r�   r%   r…   r%   r”  r•  )r3   r&   r†   r*   r   r—  rT   r˜  r�   r™  r…   r™  r”  r•  )`Ú
__future__r   Ú
contextlibÚloggingrP  Útypingr   r   r   r   r   r	   r
   r   r   r   r   Ú
sqlalchemyr   r   r   rp   r   r   r?  Úsqlalchemy.sqlr   Úsqlalchemy.sql.schemar   r   r   Úsqlalchemy.utilr   rg   r   Úddl._autogenr   r   Ú
operationsr   r   r    Úsqlalchemy.engine.reflectionr!   Úsqlalchemy.sql.elementsr"   r#   r$   r%   Úalembic.autogenerate.apir&   Úalembic.ddl.implr'   Úalembic.operations.opsr(   r)   r*   r+   r,   Ú	getLoggerÚ__name__rv   r8   Ú
DispatcherrH   r1   Údispatch_forrb   r^   ÚimmutabledictrŽ   r�   r’   r“   r”   Ú__annotations__r¨   r®   r¼   Úcontextmanagerr�   rÏ   r   rõ   r6  r;  rA  rN  rT  rZ  rW  r^  rf  rp  r�  r“  ri   r9   r7   Ú<module>r±     s¨  ðö #ã Û Û 	Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý Ý å Ý Ý *Ý Ý (Ý %Ý 6Ý 'Ý 2Ý &å Ý 'Ý $Ý Ý áÝå6Ý3Ý2Ý,Ý+å7Ý,Ý4Ý6Ý5Ý1Ý.ð €g×Ñ˜Ó!€ð,Ø#ð,Ø7Fð,à	ó,ð ˆd�o‰o dÔ+€ðØ#ðØ2<ðà	óð> ×Ñ˜(Ó#ð'Ø#ð'àð'ð 2ð'ð 
ò	'ó $ð'ðTG9ØðG9àðG9ð ðG9ð ð	G9ð
 $ðG9ð 
óG9ðT -?¨D×,>Ñ,>à�~‰~Ø—‘Ø!×,Ñ,Ø ×*Ñ*Ø ×+Ñ+Ø×)Ñ)ñó	-Ð Ð)ó 	ðØ
ðØ-ðØ;@ðàóð@Ø
ðØ-ðØ;@ðàóðØðØ(-ðàóð. ×ÑðEEØðEEà"ðEEð ðEEð ð	EEð
 %ðEEð $ðEEð ðEEð òEEó ðEEñP ˆT˜Ð/Ð1EÀuÐLÑMÔN€ð ×Ñ˜'Ó"ð^8Ø#ð^8àð^8ð ð^8ð #ð	^8ð
  ð^8ð $ð^8ð 
ò^8ó #ð^8òB<9ð~ ×Ñ˜(Ó#ð%Ø#ð%à"ð%ð ð%ð #ð	%ð
 #ð%ð ð%ð ð%ð 
ò%ó $ð%ðP ×Ñ˜(Ó#ð4Ø#ð4à"ð4ð ð4ð #ð	4ð
 ð4ð ð4ð ð4ð 
ò4ó $ð4ð" ×Ñ˜(Ó#ð'
Ø#ð'
à"ð'
ð ð'
ð #ð	'
ð
 #ð'
ð ð'
ð ð'
ð 
ò'
ó $ð'
ðTØ#ðØ6Dðàóó&Að)3Ø#ð)3à"ð)3ð ð)3ð ð	)3ð
 ð)3ð ð)3ð ð)3ð 
ó)3óXOòð" ×Ñ˜(Ó#ðTØ#ðTà"ðTð ðTð #ð	Tð
 #ðTð ðTð ðTð òTó $ðTðn ×Ñ˜(Ó#ðØ#ðà"ðð ðð #ð	ð
 ðð ðð ðð òó $ðð6 ×Ñ˜'Ó"ðx'Ø#ðx'à$ðx'ð ðx'ð #ð	x'ð
 ðx'ð ðx'ð 
òx'ó #ðx'ðv ×Ñ˜'Ó"ð"
Ø#ð"
à$ð"
ð ð"
ð #ð	"
ð
  ð"
ð $ð"
ð 
ò"
ó #ñ"
r9   