§
    ZøÁi�¯  ã            	      ó’  — 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j;        e<¦  «        Z=dyd1„Z> e"j?        d2¬3¦  «        Z@dzd6„ZAe@ B                    d7¦  «        d{d:„¦   «         ZCd|d@„ZD e"jE        ejF        ejG        ejH        ejI        ejH        ejI        dAœ¦  «        ZJdBeKdC<   d}dK„ZLd~dM„ZMddO„ZNejO        d€dW„¦   «         ZP edXeeeef         ¬Y¦  «        ZQe@ B                    dZ¦  «        d�d]„¦   «         ZRd^„ ZSe@ B                    d_¦  «        d‚df„¦   «         ZTe@ B                    d_¦  «        dƒdh„¦   «         ZUe@ B                    d_¦  «        d‚di„¦   «         ZVd„dl„ZWd…do„ZXd†dp„ZYd‡dq„ZZdr„ Z[e@ B                    d_¦  «        dˆdt„¦   «         Z\e@ B                    d_¦  «        d‰dv„¦   «         Z]e@ B                    dZ¦  «        dŠdw„¦   «         Z^e@ B                    dZ¦  «        d‹dx„¦   «         Z_dS )Œé    )Ú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_sigÚautogen_contextr&   Úmigration_scriptr)   ÚreturnÚNonec                ó„   — |j         d         }|j        d         }t          | |¦  «         |                     |¦  «         d S )Néÿÿÿÿ)Úupgrade_ops_listÚdowngrade_ops_listÚ_produce_net_changesÚreverse_into)r-   r.   Úupgrade_opsÚdowngrade_opss       úf/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/alembic/autogenerate/compare.pyÚ_populate_migration_scriptr:   ;   sH   € ð #Ô3°BÔ7€KØ$Ô7¸Ô;€Må˜¨+Ñ6Ô6Ð6Ø×Ò˜]Ñ+Ô+Ð+Ð+Ð+ó    T)Úuselistr7   r+   c                óâ  ‡ — ‰ j         }|€J ‚‰ j                             dd¦  «        }t          |¦  «        }|j        j        }|rat          |                     ¦   «         ¦  «        }|                     d¦  «         |                     |¦  «         | 	                    d ¦  «         nd h}ˆ fd„|D ¦   «         }‰ j        €J ‚t                               d‰ j        j        ¦  «        ‰ ||¦  «         d S )NÚinclude_schemasFÚinformation_schemac                óB   •— h | ]}‰                      |d i ¦  «        ¯|’ŒS r   ©Úrun_name_filters)Ú.0Úsr-   s     €r9   ú	<setcomp>z'_produce_net_changes.<locals>.<setcomp>]   s@   ø€ ð ð ð Ø˜o×>Ò>¸qÀ(ÈBÑOÔOðØ	ðð ð r;   r   )Ú
connectionÚoptsÚgetr   ÚdialectÚdefault_schema_nameÚsetÚget_schema_namesÚdiscardÚaddÚcomparatorsÚdispatchÚname)r-   r7   rF   r>   Ú	inspectorÚdefault_schemaÚschemass   `      r9   r5   r5   H   s  ø€ ð !Ô+€JØÐ!Ð!Ð!Ø%Ô*×.Ò.Ð/@À%ÑHÔH€Oå" :Ñ.Ô.€IàÔ'Ô;€Nàð Ý�i×0Ò0Ñ2Ô2Ñ3Ô3ˆà�ŠÐ,Ñ-Ô-Ð-à�Š˜Ñ'Ô'Ð'Ø�Š�DÑÔÐÐà�&ˆðð ð ð Øðñ ô €Gð Ô"Ð.Ð.Ð.Ý×Ò˜ ?Ô#:Ô#?Ñ@Ô@Ø˜ gñô ð ð ð r;   r   rT   ú$Union[Set[None], Set[Optional[str]]]c                óÒ  ‡ ‡	— ‰ j         }t          ¦   «         }‰ j        j        }‰ j        j        }|D ]mŠ	t          |                     ‰	¬¦  «        ¦  «        }‰	|k    r |                     ‰ j        j        g¦  «        }|                     ˆ ˆ	fd„|D ¦   «         ¦  «         Œnt          d„ ‰ j	        D ¦   «         ¦  «                             ||fg¦  «        }t          ||||‰ ¦  «         d S )Nr   c              3  óR   •K  — | ]!}‰                      |d d‰i¦  «        ¯‰|fV — Œ"dS )ÚtableÚschema_nameNrA   )rC   Útnamer-   rY   s     €€r9   ú	<genexpr>z&_autogen_for_tables.<locals>.<genexpr>}   s^   øè è € ð  
ð  
àØ×/Ò/Ø�w °Ð <ñô ð 
Ø˜%Ð ð 
ð  
ð  
ð  
ð  
ð  
r;   c                ó*   — g | ]}|j         |j        f‘ŒS © )r   rQ   )rC   rX   s     r9   ú
<listcomp>z'_autogen_for_tables.<locals>.<listcomp>†   s!   € ÐOÐOÐO¨ˆ%Œ,˜œ
Ð	#ÐOÐOÐOr;   )rR   rK   Úmigration_contextÚversion_table_schemaÚversion_tableÚget_table_namesÚ
differenceÚupdater   Úsorted_tablesÚ_compare_tables)
r-   r7   rT   rR   Úconn_table_namesr`   ra   ÚtablesÚmetadata_table_namesrY   s
   `        @r9   Ú_autogen_for_tablesrj   g   sD  øø€ ð  Ô)€Iå7:±u´uÐð 	Ô)Ô>ð ð $Ô5ÔC€Màð 
ð 
ˆÝ�Y×.Ò.°kÐ.ÑBÔBÑCÔCˆØÐ.Ò.Ð.Ø×&Ò&Ø Ô2Ô@ÐAñô ˆFð 	×Òð  
ð  
ð  
ð  
ð  
àð 
ñ  
ô  
ñ 	
ô 	
ð 	
ð 	
õ &ØOÐO°Ô1NÐOÑOÔOñô ç‚jÐ'¨Ð7Ð8Ñ9Ô9ð õ ØØØØØñô ð ð ð r;   rg   rK   ri   rR   r!   c           
     ó	  ‡‡— |j         j        j        Št          ˆfd„|D ¦   «         ¦  «        }ˆfd„t	          ||¦  «        D ¦   «         }|}|                     | ¦  «        D ]ñ\  }}|r|›d|›�n|}	|||f         }
‰                     |
|ddd ¦  «        r¾|j                             t          j	         
                    |
¦  «        ¦  «         t                               d|	¦  «         t          j        |g |¬¦  «        }t                               d¦  «        ‰|||d |
¦  «         |                     ¦   «         s|j                             |¦  «         Œòt#          j        ¦   «         }|                      |¦  «        D �]\\  }}t#          j        ||¦  «        }	|	|j        v }t#          j        |||¬¦  «        }|sHt-          j        |d‰j        j                             |¦  «        ¦  «         t7          j        ||¦  «         ‰                     ||dd	d ¦  «        r¾t          j        |g |¬¦  «        }t                               d¦  «        ‰||||d ¦  «         |                     ¦   «         s|j                             |¦  «         |j                             t          j         
                    |¦  «        ¦  «         t                               d
|	¦  «         �Œ^|                      |¦  «        }t#          j        ¦   «         }i }|D ]‹\  }}t#          j        ||¦  «        }	|	|j        v }t#          j        |||¬¦  «        }|sHt-          j        |d‰j        j                             |¦  «        ¦  «         t7          j        ||¦  «         ||||f<   ŒŒt?          |d„ ¬¦  «        D ]Ý\  }}|pd }|r|›d|›�n|}	|||f         }
|j        |	         }‰                     |
|dd|¦  «        r™t          j        |g |¬¦  «        }tA          ||||
|‰|¦  «        5  t                               d¦  «        ‰|||||
¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         s|j                             |¦  «         ŒÞd S )Nc                ó.   •— g | ]\  }}|‰k    r|nd |f‘ŒS ©Nr]   )rC   r   rZ   rS   s      €r9   r^   z#_compare_tables.<locals>.<listcomp>¡   s@   ø€ ð 	
ð 	
ð 	
á�˜ð  Ò/Ð/ˆVˆV°T¸5ÐAð	
ð 	
ð 	
r;   c                ó^   •— i | ])\  }\  }}|‰j         t          j        ||¦  «                 “Œ*S r]   )Útable_key_to_tableÚ	sa_schemaÚ_get_table_key)rC   Úno_dflt_schemar   rZ   r-   s       €r9   ú
<dictcomp>z#_compare_tables.<locals>.<dictcomp>ª   sM   ø€ ð ð ð ñ ,ˆN™O˜V Uð 	˜Ô:ÝÔ$ U¨FÑ3Ô3ô
ðð ð r;   ú.rX   FzDetected added table %rr   Úcolumn_reflectTzDetected removed table %rc                ó&   — | d         pd| d         fS )Nr   Ú é   r]   )Úxs    r9   ú<lambda>z!_compare_tables.<locals>.<lambda>ü   s   € ¸1¸Q¼4¸:À2ÀqÈÄtÐ:L€ r;   )Úkey)!ÚbindrI   rJ   r   Úziprc   Úrun_object_filtersr   ÚappendÚCreateTableOpÚ
from_tableÚlogÚinfor*   rO   rP   Úis_emptyrp   ÚMetaDatarq   rh   r%   r   Úlistenr_   ÚimplÚ_compat_autogen_column_reflectr   Ú_reflect_tableÚDropTableOpÚintersectionÚsortedÚ_compare_columns)rg   ri   rR   r7   r-   Ú#metadata_table_names_no_dflt_schemaÚtname_to_tablerD   rZ   rQ   Úmetadata_tableÚmodify_table_opsÚremoval_metadataÚexistsÚtÚexisting_tablesÚexisting_metadataÚconn_column_infoÚ
conn_tablerS   s       `              @r9   rf   rf   ’   s™  øø€ ð ”^Ô+Ô?€Nõ +5ð	
ð 	
ð 	
ð 	
à!5ð	
ñ 	
ô 	
ñ+ô +Ð'ðð ð ð õ 03Ø/Ð1Eñ0
ô 0
ð	ñ ô €Nð ?Ðà(×3Ò3Ð4DÑEÔEð 9ð 9‰ˆˆ5Ø'(Ð3˜!˜!˜!˜U˜UÐ#Ð#¨eˆØ'¨¨E¨
Ô3ˆØ×-Ò-Ø˜E 7¨E°4ñ
ô 
ð 	9ð ŒO×"Ò"ÝÔ!×,Ò,¨^Ñ<Ô<ñô ð õ �HŠHÐ.°Ñ5Ô5Ð5Ý"Ô1°%¸ÀAÐFÑFÔFÐå× Ò  Ñ)Ô)ØØ ØØØØñô ð ð $×,Ò,Ñ.Ô.ð 9Ø”×&Ò&Ð'7Ñ8Ô8Ð8øå Ô)Ñ+Ô+ÐØ$×/Ò/Ð0DÑEÔEð 8ñ 8‰ˆˆ5ÝÔ'¨¨qÑ1Ô1ˆØÐ)Ô0Ð0ˆÝŒO˜EÐ#3¸AÐ>Ñ>Ô>ˆàð 
	5ÝŒLØØ àÔ1Ô6ß.Ò.Øñô ñô ð õ Ô& y°!Ñ4Ô4Ð4Ø×-Ò-¨a°¸ÀÀtÑLÔLð 
	8Ý"Ô1°%¸ÀAÐFÑFÔFÐå× Ò  Ñ)Ô)ØÐ!1°1°e¸QÀñô ð ð $×,Ò,Ñ.Ô.ð 9Ø”×&Ò&Ð'7Ñ8Ô8Ð8àŒO×"Ò"¥3¤?×#=Ò#=¸aÑ#@Ô#@ÑAÔAÐAÝ�HŠHÐ0°$Ñ7Ô7Ð7ùà&×3Ò3Ð4HÑIÔI€Oå!Ô*Ñ,Ô,ÐØÐØ#ð )ð )‰ˆˆ5ÝÔ'¨¨qÑ1Ô1ˆØÐ*Ô1Ð1ˆÝŒO˜EÐ#4¸QÐ?Ñ?Ô?ˆØð 		5ÝŒLØØ àÔ1Ô6ß.Ò.¨yÑ9Ô9ñô ð õ Ô& y°!Ñ4Ô4Ð4Ø'(Ð˜!˜U˜Ñ$Ð$å˜?Ð0LÐ0LÐMÑMÔMð 9ð 9‰ˆˆ5ØˆI�ˆØ'(Ð3˜!˜!˜!˜U˜UÐ#Ð#¨eˆØ'¨¨E¨
Ô3ˆØ&Ô-¨dÔ3ˆ
à×-Ò-Ø˜E 7¨E°:ñ
ô 
ð 	9õ  #Ô1°%¸ÀAÐFÑFÔFÐÝ!ØØØØØ ØØñô ð ð õ ×$Ò$ WÑ-Ô-Ø#Ø$ØØØØ"ñô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð$ $×,Ò,Ñ.Ô.ð 9Ø”×&Ò&Ð'7Ñ8Ô8Ð8øð;9ð 9s   Ð(QÑQ	ÑQ	)ÚascÚdescÚnulls_firstÚ
nulls_lastÚ
nullsfirstÚ	nullslastzMapping[str, Any]Ú_IndexColumnSortingOpsr‡   r'   ÚparamsúDict[str, Any]r˜   r%   úOptional[Index]c                óô  — g }|                      d¦  «        }t          |d         ¦  «        D ]~\  }}|€$d|v sJ ‚|d         |         }t          |¦  «        }n|}|j        |         }|r-||v r)||         D ] }	|	t          v rt	          |	         |¦  «        }Œ!|                     |¦  «         Œt          j        |d         g|¢R |d         |dœ|                      |d¦  «        ¤Ž}
d|v r|d         |
j	        d<   |
S )	NÚcolumn_sortingÚcolumn_namesÚexpressionsrQ   Úunique)r§   Ú_tableÚindexÚduplicates_constraint)
rH   Ú	enumerater   ÚcrŸ   r   rp   r   Ú adjust_reflected_dialect_optionsrƒ   )r‡   r    r˜   ÚexprsÚsortingÚnumÚcol_namerQ   ÚitemÚoperatorÚixs              r9   Ú_make_indexrµ   (  sT  € ð 35€EØ�jŠjÐ)Ñ*Ô*€Gå" 6¨.Ô#9Ñ:Ô:ð ð ‰ˆˆXàÐØ  FÐ*Ð*Ð*Ð*Ø˜-Ô(¨Ô-ˆDÝ˜‘:”:ˆDˆDàˆDØ”< Ô)ˆDØð 	B�t˜w��Ø# DœMð Bð B�ØÕ5Ð5Ð5Ý1°(Ô;¸DÑAÔA�DøØ�Š�TÑÔÐÐÝ	ŒØˆvŒð
à	ð
ð 
ð �hÔØð	
ð 
ð
 ×
/Ò
/°¸Ñ
@Ô
@ð
ð 
€Bð  &Ð(Ð(Ø+1Ð2IÔ+JˆŒÐ'Ñ(Ø€Ir;   r   c                ó®   ‡— t          j        ˆfd„|d         D ¦   «         d|d         i|                      |d¦  «        ¤Ž}d|v r|d         |j        d<   |S )Nc                ó*   •— g | ]}‰j         |         ‘ŒS r]   ©r¬   ©rC   Úcnamer˜   s     €r9   r^   z+_make_unique_constraint.<locals>.<listcomp>L  s    ø€ Ð	BÐ	BÐ	B %ˆ*Œ,�uÔ
Ð	BÐ	BÐ	Br;   r¥   rQ   Úunique_constraintÚduplicates_index)rp   r   r­   rƒ   )r‡   r    r˜   Úuqs     ` r9   Ú_make_unique_constraintr¾   H  s   ø€ õ 
Ô	#Ø	BÐ	BÐ	BÐ	B¨6°.Ô+AÐ	BÑ	BÔ	Bð
à�FŒ^ð
ð ×
/Ò
/°Ð8KÑ
LÔ
Lð
ð 
€Bð
 ˜VÐ#Ð#Ø&,Ð-?Ô&@ˆŒÐ"Ñ#à€Ir;   r   c           
     ó¼  ‡‡— | d         Š| d         r| d         ›d‰›�Š|                       di ¦  «        }t          j        ˆfd„| d         D ¦   «         ˆfd„| d         D ¦   «         |                      d	¦  «        |                      d
¦  «        |                      d¦  «        |                      d¦  «        | d         ¬¦  «        }‰                     |¦  «         |S )NÚreferred_tableÚreferred_schemart   Úoptionsc                ó*   •— g | ]}‰j         |         ‘ŒS r]   r¸   r¹   s     €r9   r^   z%_make_foreign_key.<locals>.<listcomp>`  s    ø€ ÐHÐHÐH ˆŒ�eÔ	ÐHÐHÐHr;   Úconstrained_columnsc                ó   •— g | ]	}‰›d |›�‘Œ
S )rt   r]   )rC   ÚnrZ   s     €r9   r^   z%_make_foreign_key.<locals>.<listcomp>a  s$   ø€ ÐBÐBÐB !�E�E�E˜1˜1Ð	ÐBÐBÐBr;   Úreferred_columnsÚonupdateÚondeleteÚ
deferrableÚ	initiallyrQ   )rÈ   rÉ   rÊ   rË   rQ   )rH   rp   r   Úappend_constraint)r    r˜   rÂ   ÚconstrZ   s    `  @r9   Ú_make_foreign_keyrÎ   V  sù   øø€ ð Ð#Ô$€EØÐÔ ð =Ø!Ð"3Ô4Ð4Ð4°e°eÐ<ˆà�jŠj˜ BÑ'Ô'€GåÔ*ØHÐHÐHÐH¨&Ð1FÔ*GÐHÑHÔHØBÐBÐBÐB vÐ.@Ô'AÐBÑBÔBØ—’˜ZÑ(Ô(Ø—’˜ZÑ(Ô(Ø—;’;˜|Ñ,Ô,Ø—+’+˜kÑ*Ô*Ø�FŒ^ðñ ô €Eð × Ò  Ñ'Ô'Ð'Ø€Lr;   úOptional[str]rZ   úUnion[quoted_name, str]r�   r‘   r*   úIterator[None]c           
   #  ó”  ‡ ‡‡K  — ‰ r‰ ›d‰›�n‰}t          d„ |j        D ¦   «         ¦  «        }d„ |j        D ¦   «         }	ˆˆ ˆfd„|j        D ¦   «         }
|                     |
¦  «        D ]|}‰                     |	|         |ddd ¦  «        r[|j                             t          j                             ‰ ‰|	|         ¦  «        ¦  «         t           	                    d||¦  «         Œ}| 
                    |
¦  «        D ]ž}|	|         }|j        |         }‰                     ||dd|¦  «        sŒ1t	          j        ‰|‰ ¬¦  «        }t                               d¦  «        ‰|‰ ‰|||¦  «         |                     ¦   «         r|j                             |¦  «         ŒŸd V — t          |
¦  «                             |¦  «        D ]†}‰                     |j        |         |dd	d ¦  «        r`|j                             t          j                             ‰ ‰|j        |         ¦  «        ¦  «         t           	                    d
||¦  «         Œ‡d S )Nrt   c              3  ó2   K  — | ]}|j         °	|j        V — Œd S rm   ©ÚsystemrQ   ©rC   r¬   s     r9   r[   z#_compare_columns.<locals>.<genexpr>x  s?   è è € ð $ð $Ø°´ð$Ø	Œð$ð $ð $ð $ð $ð $r;   c                ó,   — i | ]}|j         °	|j        |“ŒS r]   rÔ   rÖ   s     r9   rs   z$_compare_columns.<locals>.<dictcomp>{  s3   € ð ð ð Ø°1´8ðØ	Œ�ðð ð r;   c           	     ó^   •— i | ])}‰                      |j        d ‰‰dœ¦  «        ¯!|j        |“Œ*S )Úcolumn©Ú
table_namerY   )rB   rQ   )rC   r¬   r-   r   rZ   s     €€€r9   rs   z$_compare_columns.<locals>.<dictcomp>  sT   ø€ ð ð ð àØ×+Ò+ØŒF�H¨UÀ6ÐJÐJñ
ô 
ðØ	Œ�ðð ð r;   rÙ   FzDetected added column '%s.%s'r   TzDetected removed column '%s.%s')r   r¬   rc   r~   r   r   ÚAddColumnOpÚfrom_column_and_tablenamer‚   rƒ   r‹   r(   rO   rP   Úhas_changesrK   ÚDropColumnOp)r   rZ   r˜   r�   r‘   r-   rR   rQ   Úmetadata_col_namesÚmetadata_cols_by_nameÚconn_col_namesrº   ÚcolnameÚmetadata_colÚconn_colÚalter_column_ops   ``   `          r9   r�   r�   m  så  øøøè è € ð )/Ð9�f�f�f˜e˜eÐ$Ð$°E€DÝ#ð $ð $Ø&Ô(ð$ñ $ô $ñ ô Ððð Ø)Ô+ðñ ô Ððð ð ð ð ð à”ðñ ô €Nð $×.Ò.¨~Ñ>Ô>ð 	Cð 	CˆØ×-Ò-Ø! %Ô(¨%°¸5À$ñ
ô 
ð 	Cð Ô ×'Ò'Ý”×9Ò9Ø˜EÐ#8¸Ô#?ñô ñô ð õ
 �HŠHÐ4°d¸EÑBÔBÐBøà%×2Ò2°>ÑBÔBð 9ð 9ˆØ,¨WÔ5ˆØ”< Ô(ˆØ×1Ò1Ø˜' 8¨U°Hñ
ô 
ð 	ð ÝÔ+¨E°7À6ÐJÑJÔJˆå×Ò˜XÑ&Ô&ØØØØØØØñ	
ô 	
ð 	
ð ×&Ò&Ñ(Ô(ð 	9ØÔ ×'Ò'¨Ñ8Ô8Ð8øà	€E€E€Eå�^Ñ$Ô$×/Ò/Ð0BÑCÔCð 	Eð 	EˆØ×-Ò-ØŒL˜Ô ¨°$¸ñ
ô 
ð 	Eð Ô ×'Ò'ÝÔ ×:Ò:Ø˜E :¤<°Ô#6ñô ñô ð õ
 �HŠHÐ6¸¸eÑDÔDÐDøð	Eð 	Er;   Ú_C)ÚboundrX   Ú
modify_opsúOptional[Table]c                óV	  ‡ ‡‡‡‡‡$‡%‡&‡'‡(‡)‡*— ‰ j         }‰d u Š(|d u Š)‰ j        j        Š'|�&d„ |j        D ¦   «         }t	          |j        ¦  «        }nt	          ¦   «         }t	          ¦   «         }t          ¦   «         x}	}
dŠ*d}‰�Ô	 |                     ‰‰¬¦  «        }	dŠ*ˆ ˆˆfd„|	D ¦   «         }	|	D ]}|                     d¦  «        rd}Œn# t          $ r Y nt          $ r Y nw xY w	 |                     ‰‰¬¦  «        }
ˆ ˆˆfd„|
D ¦   «         }
n# t          $ r Y nw xY w‰)rt	          ¦   «         }	nˆˆ'fd„|	D ¦   «         }	d	„ ˆˆ'fd
„|
D ¦   «         D ¦   «         }
|rt          |	|
||‰ j        ‰'¦  «         ‰'                     |	|
||¦  «         ˆ'fd„|D ¦   «         }ˆ'fd„|D ¦   «         }ˆ'fd„|	D ¦   «         }ˆ'fd„|
D ¦   «         }ˆ fd„|                     |¦  «        D ¦   «         }d„ |D ¦   «         Š&d„ |D ¦   «         Š%d„ |                     |¦  «        D ¦   «         }ˆ%ˆ&fd„t	          ‰&¦  «                             ‰%¦  «        D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }ˆ fd„|D ¦   «         }d$ˆ ˆ(ˆ)ˆˆ*fd„}d$ˆ ˆ(ˆ)ˆˆ*ˆfd„}d%ˆ ˆˆfd„}t#          t	          |¦  «                             |¦  «        ¦  «        D ]x}||         }t'          |¦  «        r
|j        |v rŒ#||v rF||         \  }Š$t+          ˆ$fd „|D ¦   «         ¦  «        r|j        |vr ||¦  «          |‰$¦  «         Œm ||¦  «         Œyt#          t	          |¦  «                             |¦  «        ¦  «        D ]ç}||         }||v r ||         \  }Š$t-          |¦  «        r‰$}n|}n||         }t/          |¦  «        t/          |¦  «        k    r ||¦  «          ||¦  «         Œm|                     |¦  «        }|j        r ||||j        ¦  «         Œœ|j        r;t-          |¦  «        rd!nd"} t8                               d#| |j        |j        ¦  «         ŒÞ|j        sJ ‚Œèt#          t	          |¦  «                             |¦  «        ¦  «        D ]}!||!         }" ||"¦  «         Œ|D ]}#|#|vr |||#         ¦  «         Œd S )&Nc                óF   — h | ]}t          |t          j        ¦  «        ¯|’ŒS r]   )Ú
isinstancerp   r   ©rC   r½   s     r9   rE   z/_compare_indexes_and_uniques.<locals>.<setcomp>É  s;   € ð '
ð '
ð '
àÝ˜"�iÔ8Ñ9Ô9ð'
Øð'
ð '
ð '
r;   Fr   Tc           	     óT   •— g | ]$}‰                      |d          d‰‰dœ¦  «        ¯"|‘Œ%S )rQ   r»   rÚ   rA   )rC   r½   r-   r   rZ   s     €€€r9   r^   z0_compare_indexes_and_uniques.<locals>.<listcomp>è  sT   ø€ ð ð ð àØ"×3Ò3Ø�v”JØ'Ø#(¸Ð@Ð@ñô ðØðð ð r;   r¼   c           	     óT   •— g | ]$}‰                      |d          d‰‰dœ¦  «        ¯"|‘Œ%S )rQ   r©   rÚ   rA   )rC   r´   r-   r   rZ   s     €€€r9   r^   z0_compare_indexes_and_uniques.<locals>.<listcomp>û  sT   ø€ ð ð ð àØ"×3Ò3Ø�v”JØØ#(¸Ð@Ð@ñô ðØðð ð r;   c                ó2   •— h | ]}t          ‰|‰¦  «        ’ŒS r]   )r¾   )rC   Úuq_defr˜   r‡   s     €€r9   rE   z/_compare_indexes_and_uniques.<locals>.<setcomp>  s5   ø€ ð ð ð àõ (¨¨f°jÑAÔAðð ð r;   c                ó   — h | ]}|®|’ŒS rm   r]   )rC   r©   s     r9   rE   z/_compare_indexes_and_uniques.<locals>.<setcomp>  s,   € ð 
ð 
ð 
àð Ð ð	 ð !Ð Ð r;   c              3  ó:   •K  — | ]}t          ‰|‰¦  «        V — Œd S rm   )rµ   )rC   r´   r˜   r‡   s     €€r9   r[   z/_compare_indexes_and_uniques.<locals>.<genexpr>  s@   øè è € ð ð Ø68•˜D " jÑ1Ô1ðð ð ð ð ð r;   c                ó:   •— h | ]}‰                      |¦  «        ’ŒS r]   ©Ú_create_metadata_constraint_sig©rC   r½   r‡   s     €r9   rE   z/_compare_indexes_and_uniques.<locals>.<setcomp>3  s7   ø€ ð 'ð 'ð 'àð 	×,Ò,¨RÑ0Ô0ð'ð 'ð 'r;   c                ó:   •— h | ]}‰                      |¦  «        ’ŒS r]   rö   ©rC   r´   r‡   s     €r9   rE   z/_compare_indexes_and_uniques.<locals>.<setcomp>8  s4   ø€ ð ð ð Ø57ˆ×,Ò,¨RÑ0Ô0ðð ð r;   c                ó:   •— h | ]}‰                      |¦  «        ’ŒS r]   ©Ú _create_reflected_constraint_sigrø   s     €r9   rE   z/_compare_indexes_and_uniques.<locals>.<setcomp><  s4   ø€ ð ð ð Ø68ˆ×-Ò-¨bÑ1Ô1ðð ð r;   c                ó:   •— h | ]}‰                      |¦  «        ’ŒS r]   rü   rú   s     €r9   rE   z/_compare_indexes_and_uniques.<locals>.<setcomp>@  s4   ø€ ð ð ð Ø68ˆ×-Ò-¨bÑ1Ô1ðð ð r;   c                óp   •— i | ]2}|j         ¯	t          t          |                     ‰¦  «        ¦  «        |“Œ3S r]   )Úis_namedr   ÚstrÚmd_name_to_sql_name)rC   r¬   r-   s     €r9   rs   z0_compare_indexes_and_uniques.<locals>.<dictcomp>E  sK   ø€ ð ð ð àØŒ:ðÝ�S�!×'Ò'¨Ñ8Ô8Ñ9Ô9¸1ðð ð r;   c                ó   — i | ]
}|j         |“ŒS r]   ©rQ   rÖ   s     r9   rs   z0_compare_indexes_and_uniques.<locals>.<dictcomp>N  s   € ÐGÐGÐG¨!˜AœF AÐGÐGÐGr;   c                ó   — i | ]
}|j         |“ŒS r]   r  rÖ   s     r9   rs   z0_compare_indexes_and_uniques.<locals>.<dictcomp>O  s   € Ð@Ð@Ð@¨!˜AœF AÐ@Ð@Ð@r;   c                óP   — i | ]#}t          j        |j        ¦  «        ¯|j        |“Œ$S r]   )r   Úconstraint_name_stringrQ   rÖ   s     r9   rs   z0_compare_indexes_and_uniques.<locals>.<dictcomp>P  s?   € ð ð ð àÝÔ-¨a¬fÑ5Ô5ðØ	Œ�ðð ð r;   c                ó2   •— i | ]}|‰|         ‰|         f“ŒS r]   r]   )rC   rQ   Úconn_indexes_by_nameÚconn_uniques_by_names     €€r9   rs   z0_compare_indexes_and_uniques.<locals>.<dictcomp>V  s<   ø€ ð ð ð àð 	Ð# DÔ)Ð+?ÀÔ+EÐFðð ð r;   c                ó   — i | ]
}|j         |“ŒS r]   ©Úunnamedrî   s     r9   rs   z0_compare_indexes_and_uniques.<locals>.<dictcomp>_  s   € ÐLÐLÐL¨b˜2œ: rÐLÐLÐLr;   c                ó   — i | ]
}|j         |“ŒS r]   r  rî   s     r9   rs   z0_compare_indexes_and_uniques.<locals>.<dictcomp>`  s)   € ð ð ð ØˆŒ
�Bðð ð r;   c                ó^   •— i | ])}t          j        |j        ‰j        ¦  «        °!|j        |“Œ*S r]   )r   Ú_constraint_is_namedrÍ   rI   r  )rC   r½   r-   s     €r9   rs   z0_compare_indexes_and_uniques.<locals>.<dictcomp>c  sJ   ø€ ð  ð  ð  àÝÔ/ØŒH�oÔ-ñ
ô 
ð Ø
Œ
�Bð ð  ð  r;   Úobjr,   c                ó|  •— t          | ¦  «        r‰‰                     | j        | j        ddd ¦  «        rd‰j                             t          j                             | j        ¦  «        ¦  «         t           	                    d| j        | j
        ¦  «         d S d S t          | ¦  «        r“‰sd S ‰s‰rd S ‰                     | j        | j        ddd ¦  «        rd‰j                             t          j                             | j        ¦  «        ¦  «         t           	                    d| j        | j
        ¦  «         d S d S J ‚)Nr©   Fz!Detected added index '%r' on '%s'r»   z+Detected added unique constraint %r on '%s')r   r~   rÍ   rQ   r   r   ÚCreateIndexOpÚ
from_indexr‚   rƒ   r¥   r   ÚAddConstraintOpÚfrom_constraint)r  r-   Úis_create_tableÚis_drop_tableré   Úsupports_unique_constraintss    €€€€€r9   Ú	obj_addedz/_compare_indexes_and_uniques.<locals>.obj_addeds  sk  ø€ Ý˜ÑÔð 	Ø×1Ò1Ø”	˜3œ8 W¨e°Tñô ð ð ”×%Ò%¥cÔ&7×&BÒ&BÀ3Ä9Ñ&MÔ&MÑNÔNÐNÝ—’Ø7Ø”HØÔ$ñô ð ð ð ð	ð õ �s‰^Œ^ð 	Ø.ð ð �Øð  -ð à�Ø×1Ò1Ø”	˜3œ8Ð%8¸%Àñô ð 
ð ”×%Ò%ÝÔ'×7Ò7¸¼	ÑBÔBñô ð õ —’ØAØ”HØÔ$ñô ð ð ð ð
ð 
ð �5r;   c                óv  •— t          | ¦  «        r�| j        r‰sd S ‰                     | j        | j        ddd ¦  «        r_‰j                             t
          j                             | j        ¦  «        ¦  «         t           
                    d| j        ‰¦  «         d S d S t          | ¦  «        rŠ‰s‰rd S ‰                     | j        | j        ddd ¦  «        r_‰j                             t
          j                             | j        ¦  «        ¦  «         t           
                    d| j        ‰¦  «         d S d S J ‚)Nr©   TzDetected removed index %r on %rr»   z+Detected removed unique constraint %r on %r)r   Ú	is_uniquer~   rÍ   rQ   r   r   ÚDropIndexOpr  r‚   rƒ   r   ÚDropConstraintOpr  )r  r-   r  r  ré   r  rZ   s    €€€€€€r9   Úobj_removedz1_compare_indexes_and_uniques.<locals>.obj_removed”  sg  ø€ Ý˜ÑÔð 	ØŒ}ð Ð%@ð ð �à×1Ò1Ø”	˜3œ8 W¨d°Dñô ð Mð ”×%Ò%¥c¤o×&@Ò&@ÀÄÑ&KÔ&KÑLÔLÐLÝ—’Ð:¸C¼HÀeÑLÔLÐLÐLÐLð	Mð Mõ
 �s‰^Œ^ð 	Øð  -ð ð �Ø×1Ò1Ø”	˜3œ8Ð%8¸$Àñô ð 
ð ”×%Ò%ÝÔ(×8Ò8¸¼ÑCÔCñô ð õ —’ØAØ”HØñô ð ð ð ð
ð 
ð �5r;   ÚoldÚnewÚmsgr  c                ó   •— t          | ¦  «        r×t          |¦  «        sJ ‚‰                     |j        |j        dd| j        ¦  «        rœt                               d| j        ‰|¦  «         ‰j                             t          j         	                    | j        ¦  «        ¦  «         ‰j                             t          j
         	                    |j        ¦  «        ¦  «         d S d S t          | ¦  «        r×t          |¦  «        sJ ‚‰                     |j        |j        dd| j        ¦  «        rœt                               d| j        ‰|¦  «         ‰j                             t          j                             | j        ¦  «        ¦  «         ‰j                             t          j                             |j        ¦  «        ¦  «         d S d S J ‚)Nr©   Fz#Detected changed index %r on %r: %sr»   z/Detected changed unique constraint %r on %r: %s)r   r~   rÍ   rQ   r‚   rƒ   r   r   r  r  r  r   r  r  r  )r   r!  r"  r-   ré   rZ   s      €€€r9   Úobj_changedz1_compare_indexes_and_uniques.<locals>.obj_changed´  sË  ø€ õ
 ˜ÑÔð 	Ý Ñ$Ô$Ð$Ð$Ð$à×1Ò1Ø”	˜3œ8 W¨e°S´Yñô ð Oõ —’Ø9¸3¼8ÀUÈCñô ð ð ”×%Ò%¥c¤o×&@Ò&@ÀÄÑ&KÔ&KÑLÔLÐLØ”×%Ò%¥cÔ&7×&BÒ&BÀ3Ä9Ñ&MÔ&MÑNÔNÐNÐNÐNðOð Oõ �s‰^Œ^ð 	Ý˜S‘>”>Ð!Ð!�>à×1Ò1Ø”	˜3œ8Ð%8¸%ÀÄñô ð õ —’ØEØ”HØØñ	ô ð ð ”×%Ò%ÝÔ(×8Ò8¸¼ÑCÔCñô ð ð ”×%Ò%ÝÔ'×7Ò7¸¼	ÑBÔBñô ð ð ð ðð ð  �5r;   c              3  ó8   •K  — | ]}‰j         |j         k    V — Œd S rm   r  )rC   Úmeta_idxÚconn_idxs     €r9   r[   z/_compare_indexes_and_uniques.<locals>.<genexpr>ã  sB   øè è € ð ð à ð Ô$¨Ô(8Ò8ðð ð ð ð ð r;   r©   zunique constraintz5Cannot compare %s %r, assuming equal and skipping. %s)r  r,   )r   r,   r!  r,   r"  r  ) rR   r_   r‡   ÚconstraintsrK   ÚindexesÚ	frozensetÚget_unique_constraintsrH   ÚNotImplementedErrorÚ	TypeErrorÚget_indexesÚ_correct_for_uq_duplicates_uixrI   Úcorrect_for_autogen_constraintsÚunionr‹   rŒ   rc   r   r  Úallr   ÚtypeÚcompare_to_reflectedÚis_differentÚmessageÚis_skipr‚   rƒ   rQ   Úis_equal)+r-   ré   r   rZ   r˜   r�   rR   Úmetadata_unique_constraintsÚmetadata_indexesÚconn_uniquesÚconn_indexesÚ+unique_constraints_duplicate_unique_indexesr½   Úmetadata_unique_constraints_sigÚmetadata_indexes_sigÚconn_unique_constraintsÚconn_indexes_sigÚmetadata_namesÚ
conn_namesÚ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  r  r  s+   `````                               @@@@@@@r9   Ú_compare_indexes_and_uniquesrQ  ¹  s  øøøøøøøøøøøø€ ð  Ô)€IØ  DÐ(€OØ" dÐ*€MØÔ,Ô1€Dð Ð!ð'
ð '
à$Ô0ð'
ñ '
ô '
Ð#õ
 ˜~Ô5Ñ6Ô6ÐÐå&)¡e¤eÐ#Ý™5œ5Ðå"+¡+¤+Ð-€L�<à"'Ðà27Ð/àÐð	GØ$×;Ò;Ø˜fð <ñ ô ˆLð +/Ð'ðð ð ð ð ð à&ðñ ô ˆLð #ð Gð G�Ø—6’6Ð,Ñ-Ô-ð GØBFÐ?øðGøõ# #ð 	ð 	ð 	ØˆDÝð 	ð 	ð 	ð ˆDð		øøøð$	Ø$×0Ò0Ø˜fð 1ñ ô ˆLðð ð ð ð ð à&ðñ ô ˆLˆLøõ #ð 	ð 	ð 	ØˆDð	øøøð ð 	å™5œ5ˆLˆLðð ð ð ð à*ðñ ô ˆLð

ð 
ðð ð ð ð Ø<Hðñ ô ð
ñ 
ô 
ˆð 3ð 
Ý&ØØØ'ØØÔ#Øñ	
ô 	
ð 	
ð 	×(Ò(ØØØ#Øñ	ô ð ð'ð 'ð 'ð 'à-ð'ñ 'ô 'Ð#ð
ð ð ð Ø;Kðñ ô Ððð ð ð Ø<Hðñ ô Ððð ð ð Ø<Hðñ ô Ðð
ð ð ð à0×6Ò6Ð7KÑLÔLðñ ô €Nð HÐGÐ/FÐGÑGÔGÐØ@Ð@Ð/?Ð@Ñ@Ô@Ððð à(×.Ò.Ð/?Ñ@Ô@ðñ ô €Jðð ð ð ð åÐ,Ñ-Ô-×:Ò:Ø ñ
ô 
ðñ ô Ðð MÐLÐ4KÐLÑLÔLÐðð Ø!@ðñ ô Ðð ð  ð  ð  à1ð ñ  ô  Ðð ð ð ð ð ð ð ð ð ð ðBð ð ð ð ð ð ð ð ð ð ð@#ð #ð #ð #ð #ð #ð #ð #õJ �s :™œ×9Ò9¸.ÑIÔIÑJÔJð "ð "ˆØ˜lÔ+ˆå�hÑÔð	"àÔ Ð$<Ð<Ð<àØÐ0Ð0Ð0Ø 3°LÔ AÑˆG�Xåð ð ð ð à$8ðñ ô ñ ô ð&ð
 ”OÐ+BÐBÐBà�˜GÑ$Ô$Ð$Ø�˜HÑ%Ô%Ð%øàˆK˜Ñ!Ô!Ð!Ð!å¥ NÑ 3Ô 3× @Ò @ÀÑ LÔ LÑMÔMð "+ð "+ˆØ% mÔ4ˆàÐ/Ð/Ð/Ø 3°MÔ BÑˆG�XÝ˜LÑ)Ô)ð #Ø#��à"��à! -Ô0ˆHå�‰>Œ>�T ,Ñ/Ô/Ò/Ð/ØˆK˜Ñ!Ô!Ð!ØˆI�lÑ#Ô#Ð#Ð#à%×:Ò:¸8ÑDÔDˆJàÔ&ð +à�˜H l°JÔ4FÑGÔGÐGÐGØÔ#ð +õ  ,¨HÑ5Ô5ÐN�G�GÐ;Nð õ —’ØKØØ”MØÔ&ñ	ô ð ð ð "Ô*Ð*Ð*Ð*Ð*å�S Ñ0Ô0×;Ò;¸JÑGÔGÑHÔHð ð ˆ
Ø˜ZÔ(ˆØˆ	�#‰Œˆˆà*ð 8ð 8ˆØÐ,Ð,Ð,ØˆIÐ.¨vÔ6Ñ7Ô7Ð7øð8ð 8s*   ÂC	 Ã	
C!Ã	C!Ã C!Ã%D Ä
DÄDc                ór  ‡‡— ˆfd„|D ¦   «         }d„ |D ¦   «         }ˆfd„|D ¦   «         }ˆfd„|D ¦   «         }	d„ |D ¦   «         }
d„ | D ¦   «         }|D ]c}||vr>‰                      ||         ¦  «        j        |vr|                      ||         ¦  «         ŒD||	vr|                     |
|         ¦  «         Œdd S )Nc                ó>   •— g | ]}t          j        |‰¦  «        |f‘ŒS r]   )r   Ú_get_constraint_final_name©rC   ÚconsrI   s     €r9   r^   z2_correct_for_uq_duplicates_uix.<locals>.<listcomp>.  s;   ø€ ð ð ð àõ 
Ô	/°°gÑ	>Ô	>ÀÐEðð ð r;   c                ó   — h | ]	\  }}|®|’Œ
S rm   r]   )rC   rQ   rV  s      r9   rE   z1_correct_for_uq_duplicates_uix.<locals>.<setcomp>3  s(   € ð ð ð Ù��t°dÐ6FˆÐ6FÐ6FÐ6Fr;   c                óN   •— h | ]!\  }}|­‰                      |¦  «        j        ’Œ"S rm   )r÷   r  )rC   rQ   rV  r‡   s      €r9   rE   z1_correct_for_uq_duplicates_uix.<locals>.<setcomp>7  s;   ø€ ð ð ð áˆD�$Øˆ<ð 	×,Ò,¨TÑ2Ô2Ô:àˆ<ˆ<r;   c                óH   •— h | ]}|j         ¯	t          j        |‰¦  «        ’ŒS r]   )r§   r   rT  rU  s     €r9   rE   z1_correct_for_uq_duplicates_uix.<locals>.<setcomp>=  s>   ø€ ð ð ð àØŒ;ðÝÔ.¨t°WÑ=Ô=ðð ð r;   c                ó,   — i | ]}|j         ¯	|j        |“ŒS r]   )r§   rQ   ©rC   rV  s     r9   rs   z2_correct_for_uq_duplicates_uix.<locals>.<dictcomp>E  s#   € ÐMÐMÐM¨ÀÄÐM�T”Y ÐMÐMÐMr;   c                ó8   — i | ]}|j         d          ¯|j        |“ŒS )r¼   )rƒ   rQ   r[  s     r9   rs   z2_correct_for_uq_duplicates_uix.<locals>.<dictcomp>G  s:   € ð ð ð àØŒ9Ð'Ô(ðØŒ	�4ðð ð r;   )rý   r  rM   )r@  r<  r9  r:  rI   r‡   Úmetadata_cons_namesÚmetadata_uq_namesÚunnamed_metadata_uqsÚmetadata_ix_namesÚconn_ix_namesÚuqs_dupe_indexesÚoverlaps       ``       r9   r/  r/    sh  øø€ ð&ð ð ð à/ðñ ô Ðð
ð Ø2ðñ ô Ððð ð ð à-ðñ ô Ððð ð ð à$ðñ ô Ðð NÐM°ÐMÑMÔM€Mðð à+ðñ ô Ðð $ð 
9ð 
9ˆØÐ+Ð+Ð+à×5Ò5Ø$ WÔ-ñô äØ+ð,ð ,ð
 (×/Ò/Ð0@ÀÔ0IÑJÔJÐJøØÐ-Ð-Ð-Ø× Ò  ¨wÔ!7Ñ8Ô8Ð8øð
9ð 
9r;   rÙ   ræ   r(   rº   rå   úColumn[Any]rä   c                ól  — |j         }|j         }||_        ||uršt          j        |j        |j        ¦  «        rt          j        |¦  «        st          j        |j        |j        ¦  «        rt                               d||¦  «         d S ||_	        t                               d|rdnd||¦  «         d S d S )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_identityr‚   rƒ   Úmodify_nullable)	r-   ræ   r   rZ   rº   rå   rä   Úmetadata_col_nullableÚconn_col_nullables	            r9   Ú_compare_nullablerp  Z  sô   € ð )Ô1ÐØ Ô)ÐØ(9€OÔ%àÐ 5Ð5Ð5åÔ3ØÔ+¨XÔ-Dñô ð	õ Ô7¸ÑEÔEð		õ Ô7Ø Ô/°Ô1Hñô ð	õ �HŠHØEØØñô ð ð ð ð /DˆOÔ+Ý�HŠHØ/Ø/Ð?��°ZØØñ	ô ð ð ð ð' 6Ð5r;   r"   c                óŽ   — |j         j        |u rd|j        d<   d S |j        du rd|j        d<   d S |j        du rd|j        d<   d S d S )NTÚautoincrementF)rX   Ú_autoincrement_columnÚkwrr  )r-   ræ   r   rZ   rº   rå   rä   s          r9   Ú_setup_autoincrementru  ƒ  sr   € ð ÔÔ/°<Ð?Ð?Ø.2ˆÔ˜?Ñ+Ð+Ð+Ø	Ô	# tÐ	+Ð	+Ø.2ˆÔ˜?Ñ+Ð+Ð+Ø	Ô	# uÐ	,Ð	,Ø.3ˆÔ˜?Ñ+Ð+Ð+ð 
-Ð	,r;   c                ó|  — |j         }||_        |j         }|j        t          j        u rt
                               d||¦  «         d S |j        t          j        u rt
                               d||¦  «         d S | j                             ||¦  «        }	|	r'||_	        t
                               d||||¦  «         d S d S )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')
r3  Úexisting_typeÚ_type_affinityÚsqltypesÚNullTyper‚   rƒ   r_   Ú_compare_typeÚmodify_type)
r-   ræ   r   rZ   rº   rå   rä   Ú	conn_typeÚmetadata_typeÚisdiffs
             r9   r{  r{  •  sñ   € ð ”€IØ$-€OÔ!Ø Ô%€MØÔ¥8Ô#4Ð4Ð4Ý�ŠØDØØñ	
ô 	
ð 	
ð
 	ˆØÔ#¥xÔ'8Ð8Ð8Ý�ŠØKØØñ	
ô 	
ð 	
ð
 	ˆàÔ.×<Ò<Ø�,ñô €Fð ð 
Ø&3ˆÔ#Ý�ŠØ;ØØØØñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r;   Úmetadata_defaultúOptional[Any]c                ó  — t          | t          j        ¦  «        rRt          | j        t          ¦  «        r| j        } n0t	          | j                             |j        ddi¬¦  «        ¦  «        } t          | t          ¦  «        r| S d S )NÚliteral_bindsT©rI   Úcompile_kwargs)rí   rp   ÚDefaultClauseÚargr  ÚcompilerI   )r€  r-   s     r9   Ú"_render_server_default_for_comparer‰  À  s•   € õ Ð"¥IÔ$;Ñ<Ô<ð 	ÝÐ&Ô*­CÑ0Ô0ð 	Ø/Ô3ÐÐå"Ø Ô$×,Ò,Ø+Ô3Ø$3°TÐ#:ð -ñ ô ñ ô  Ðõ Ð"¥CÑ(Ô(ð ØÐàˆtr;   Úsqltextr  c                óR   — t          j        dd| ¦  «                             ¦   «         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]rw   )ÚreÚsubÚlower)rŠ  s    r9   Ú_normalize_computed_defaultr�  Ó  s%   € õ Œ6Ð*¨B°Ñ8Ô8×>Ò>Ñ@Ô@Ð@r;   c                óÄ  — t          t          t          j        |j        ¦  «        j                             | j        ddi¬¦  «        ¦  «        }t          |¦  «        }t          |j        t          j        ¦  «        rJt          |j        j                             | j        ddi¬¦  «        ¦  «        }|€d}nt          |¦  «        }nd}||k    rt          ||¦  «         d S d S )Nrƒ  Tr„  rw   )r  r   rp   ÚComputedrj  rŠ  rˆ  rI   r�  rí   Ú_warn_computed_not_supported)	r-   ræ   r   rZ   rº   rå   rä   Úrendered_metadata_defaultÚrendered_conn_defaults	            r9   Ú_compare_computed_defaultr•  Ý  s  € õ !$Ý�YÔ Ô!<Ñ=Ô=ÔE×MÒMØ#Ô+Ø+¨TÐ2ð 	Nñ 	
ô 	
ñ!ô !Ðõ !<Ø!ñ!ô !Ðõ �(Ô)­9Ô+=Ñ>Ô>ð #Ý #ØÔ#Ô+×3Ò3Ø'Ô/Ø /°Ð6ð 4ñ ô ñ!
ô !
Ðð !Ð(Ø$&Ð!Ð!å$?Ø%ñ%ô %Ð!Ð!ð !#Ðà Ð$9Ò9Ð9Ý$ U¨EÑ2Ô2Ð2Ð2Ð2ð :Ð9r;   c                ó<   — t          j        d| ›d|›d�¦  «         d S )NzComputed default on rt   z cannot be modified)r   Úwarn)rZ   rº   s     r9   r’  r’  	  s'   € Ý„I€IÀÀÀÀuÀuÀuÐMÑNÔNÐNÐNÐNr;   c                ój   — | j         j        }|                     |j        |j        ¦  «        \  }}	}
||
fS rm   )r_   r‡   Ú_compare_identity_defaultrj  )r-   ræ   r   rZ   rº   rå   rä   r‡   ÚdiffÚignored_attrÚis_alters              r9   r™  r™    sB   € ð Ô,Ô1€DØ#'×#AÒ#AØÔ# XÔ%<ñ$ô $Ñ €Dˆ,˜ð �ˆ>Ðr;   úOptional[bool]c           	     ó´  — |j         }|j         }|€|€dS t          j        |¦  «        r#t          j        sdS t	          | ||||||¦  «        S t          j        |¦  «        rt          ||¦  «         dS t          j        ||¦  «        rU||_        t          | ||||||¦  «        \  }	}
|
r3||_	        |	r*t                               d||t          |	¦  «        ¦  «         n|t          || ¦  «        }|rt          t          |¦  «        j        j        nd }||_        | j                             ||||¦  «        }|r#||_	        t                               d||¦  «         d S )NFzIDetected server default on column '%s.%s': identity options attributes %sz)Detected server default on column '%s.%s')rj  r   ri  Úhas_computed_reflectionr•  r’  rl  Úexisting_server_defaultr™  Úmodify_server_defaultr‚   rƒ   rŒ   r‰  r   r   r‡  r   r_   Ú_compare_server_default)r-   ræ   r   rZ   rº   rå   rä   r€  Úconn_col_defaultrš  rœ  r“  r”  Úis_diffs                 r9   r¢  r¢    sÑ  € ð $Ô2ÐØÔ.ÐØÐÐ$4Ð$<ØˆuåÔ.Ð/?Ñ@Ô@ð õ Ô2ð 	Ø�5õ *Ø#Ø#ØØØØØ ñô ð
õ Ô.Ð/?Ñ@Ô@ð Ý$ U¨EÑ2Ô2Ð2ØˆuåÔ.ØÐ*ñô ð *Pð 3CˆÔ/Ý2ØØØØØØØñ
ô 
‰ˆˆhð ð 		Ø4DˆOÔ1Øð Ý—’ð5àØÝ˜4‘L”Lñô ð øõ %GØ˜oñ%
ô %
Ð!ð
 5EÐN�D•Ð&Ñ'Ô'Ô+Ô0Ð0È$ð 	ð 3CˆÔ/à!Ô3×KÒKØØØ%Ø!ñ	
ô 
ˆð ð 	PØ4DˆOÔ1Ý�HŠHÐ@À%ÈÑOÔOÐOàˆ4r;   úOptional[Literal[False]]c                ó¼   — | j         €J ‚| j         j        sd S |j        }|j        }|€|€dS ||_        ||k    r#||_        t
                               d||¦  «         d S )NFzDetected column comment '%s.%s')rI   Úsupports_commentsÚcommentÚexisting_commentÚmodify_commentr‚   rƒ   )	r-   ræ   r   rZ   rº   rå   rä   Úmetadata_commentÚconn_col_comments	            r9   Ú_compare_column_commentr­  v  s�   € ð Ô"Ð.Ð.Ð.ØÔ"Ô4ð Øˆtà#Ô+ÐØÔ'ÐØÐÐ$4Ð$<Øˆuà'7€OÔ$àÐ+Ò+Ð+Ø)9ˆÔ&Ý�ŠÐ2°E¸5ÑAÔAÐAàˆ4r;   c                ór  ‡ ‡‡‡‡‡‡— ‰�|€d S ‰ j         }d„ |j        D ¦   «         }ˆ ˆˆfd„|                     ‰‰¬¦  «        D ¦   «         }ˆfd„|D ¦   «         }	‰ j        j        Š‰ j        j                             |	|¦  «         ˆfd„|D ¦   «         }
ˆfd„|	D ¦   «         }|r#d|d         v rd	„ |D ¦   «         }d
„ |
D ¦   «         }nd„ |D ¦   «         }d„ |
D ¦   «         }d„ |
D ¦   «         }d„ |D ¦   «         }ˆ ˆˆfd„}ˆ ˆfd„}t          |¦  «                             |¦  «        D ]7}||         Š||vr)‰j        |v r|‰j                 j	        nd } |‰|¦  «         Œ8t          |¦  «                             |¦  «        D ]7}||         Š||vr)‰j        |v r|‰j                 j	        nd } |‰|¦  «         Œ8d S )Nc                óF   — h | ]}t          |t          j        ¦  «        ¯|’ŒS r]   )rí   rp   r   )rC   Úfks     r9   rE   z(_compare_foreign_keys.<locals>.<setcomp>¡  s;   € ð ð ð àÝ�b�)Ô8Ñ9Ô9ðØ
ðð ð r;   c           	     óT   •— g | ]$}‰                      |d          d‰‰dœ¦  «        ¯"|‘Œ%S )rQ   Úforeign_key_constraintrÚ   rA   )rC   r°  r-   r   rZ   s     €€€r9   r^   z)_compare_foreign_keys.<locals>.<listcomp>§  sT   ø€ ð ð ð àØ×+Ò+ØˆvŒJØ$Ø °Ð8Ð8ñ
ô 
ðØ
ðð ð r;   r   c                ó0   •— h | ]}t          |‰¦  «        ’ŒS r]   )rÎ   )rC   rÍ   r˜   s     €r9   rE   z(_compare_foreign_keys.<locals>.<setcomp>±  s3   ø€ ð ð ð àõ 	˜% Ñ,Ô,ðð ð r;   c                ó:   •— h | ]}‰                      |¦  «        ’ŒS r]   rö   ©rC   r°  r‡   s     €r9   rE   z(_compare_foreign_keys.<locals>.<setcomp>¾  s4   ø€ ð ð ð Ø57ˆ×,Ò,¨RÑ0Ô0ðð ð r;   c                ó:   •— h | ]}‰                      |¦  «        ’ŒS r]   rü   rµ  s     €r9   rE   z(_compare_foreign_keys.<locals>.<setcomp>Â  s4   ø€ ð ð ð Ø68ˆ×-Ò-¨bÑ1Ô1ðð ð r;   rÂ   r   c                ó   — i | ]
}|j         |“ŒS r]   r  rÖ   s     r9   rs   z)_compare_foreign_keys.<locals>.<dictcomp>É  s   € Ð>Ð>Ð>¨A˜1œ9 aÐ>Ð>Ð>r;   c                ó   — i | ]
}|j         |“ŒS r]   r  rÖ   s     r9   rs   z)_compare_foreign_keys.<locals>.<dictcomp>Ê  s   € ÐFÐFÐF°˜qœy¨!ÐFÐFÐFr;   c                ó   — i | ]
}|j         |“ŒS r]   ©Úunnamed_no_optionsrÖ   s     r9   rs   z)_compare_foreign_keys.<locals>.<dictcomp>Í  s   € ÐIÐIÐI°q˜1Ô/°ÐIÐIÐIr;   c                ó   — i | ]
}|j         |“ŒS r]   rº  rÖ   s     r9   rs   z)_compare_foreign_keys.<locals>.<dictcomp>Î  s*   € ð 
ð 
ð 
Ø()ˆAÔ  !ð
ð 
ð 
r;   c                ó,   — i | ]}|j         ®	|j         |“ŒS rm   r  rÖ   s     r9   rs   z)_compare_foreign_keys.<locals>.<dictcomp>Ò  s*   € ð ð ð Ø¨q¬vÐ/AˆŒ�Ð/AÐ/AÐ/Ar;   c                ó,   — i | ]}|j         ®	|j         |“ŒS rm   r  rÖ   s     r9   rs   z)_compare_foreign_keys.<locals>.<dictcomp>Õ  s#   € ÐNÐNÐN a¸1¼6Ð;M˜œ Ð;MÐ;MÐ;Mr;   c                ó’  •— ‰                      | j        | j        dd|¦  «        r¢‰j                             t          j                             ‰j        ¦  «        ¦  «         t                               dd 	                    | j
        ¦  «        d 	                    | j        ¦  «        | j        r
d| j        z  nd| j        ¦  «         d S d S )Nr²  Fz1Detected added foreign key (%s)(%s) on table %s%sú, ú%s.rw   )r~   rÍ   rQ   r   r   ÚCreateForeignKeyOpr  r‚   rƒ   ÚjoinÚsource_columnsÚtarget_columnsÚsource_schemaÚsource_table)r  Ú
compare_tor-   rÍ   r‘   s     €€€r9   Ú_add_fkz&_compare_foreign_keys.<locals>._add_fk×  sÏ   ø€ Ø×-Ò-ØŒI�s”xÐ!9¸5À*ñ
ô 
ð 	ð Ô ×'Ò'ÝÔ&×6Ò6°u´{ÑCÔCñô ð õ �HŠHØCØ—	’	˜#Ô,Ñ-Ô-Ø—	’	˜#Ô,Ñ-Ô-Ø-0Ô->ÐF�˜Ô)Ñ)Ð)ÀBØÔ ñô ð ð ð ð	ð 	r;   c                ó’  •— ‰                      | j        | j        dd|¦  «        r¢‰j                             t          j                             | j        ¦  «        ¦  «         t                               dd 	                    | j
        ¦  «        d 	                    | j        ¦  «        | j        r
d| j        z  nd| j        ¦  «         d S d S )Nr²  Tz3Detected removed foreign key (%s)(%s) on table %s%srÀ  rÁ  rw   )r~   rÍ   rQ   r   r   r  r  r‚   rƒ   rÃ  rÄ  rÅ  rÆ  rÇ  )r  rÈ  r-   r‘   s     €€r9   Ú
_remove_fkz)_compare_foreign_keys.<locals>._remove_fkç  sÏ   ø€ Ø×-Ò-ØŒI�s”xÐ!9¸4Àñ
ô 
ð 	ð Ô ×'Ò'ÝÔ$×4Ò4°S´YÑ?Ô?ñô ð õ �HŠHØEØ—	’	˜#Ô,Ñ-Ô-Ø—	’	˜#Ô,Ñ-Ô-Ø-0Ô->ÐF�˜Ô)Ñ)Ð)ÀBØÔ ñô ð ð ð ð	ð 	r;   )
rR   r(  Úget_foreign_keysr_   r‡   Úcorrect_for_autogen_foreignkeysrK   rc   rQ   rÍ   )r-   r‘   r   rZ   r˜   r�   rR   Úmetadata_fksÚconn_fks_listÚconn_fksÚmetadata_fks_sigÚconn_fks_sigÚconn_fks_by_sigÚmetadata_fks_by_sigÚmetadata_fks_by_nameÚconn_fks_by_namerÉ  rË  Úremoved_sigrÈ  Ú	added_sigrÍ   r‡   s   `````                @@r9   Ú_compare_foreign_keysrÙ  ’  s%  øøøøøøø€ ð Ð˜^Ð3ØˆàÔ)€Iðð à Ô,ðñ ô €Lðð ð ð ð ð à×,Ò,¨U¸6Ð,ÑBÔBðñ ô €Mðð ð ð à"ðñ ô €Hð
 Ô,Ô1€Dð Ô%Ô*×JÒJØ�,ñô ð ðð ð ð Ø;Gðñ ô Ððð ð ð Ø<Dðñ ô €Lð ð 
˜ m°AÔ&6Ð6Ð6Ø>Ð>°Ð>Ñ>Ô>ˆØFÐFÐ5EÐFÑFÔFÐÐð JÐI¸LÐIÑIÔIˆð
ð 
Ø-=ð
ñ 
ô 
Ððð Ø+ðñ ô Ðð OÐN¨<ÐNÑNÔNÐðð ð ð ð ð ð ð ð ð ð ð ð õ$ ˜?Ñ+Ô+×6Ò6Ð7JÑKÔKð *ð *ˆØ Ô,ˆØÐ1Ð1Ð1ð ”:Ð!5Ð5Ð5ð % U¤ZÔ0Ô6Ð6àð ð
 ˆJ�u˜jÑ)Ô)Ð)øåÐ,Ñ-Ô-×8Ò8¸ÑIÔIð 'ð 'ˆ	Ø# IÔ.ˆØ˜OÐ+Ð+ð ”:Ð!1Ð1Ð1ð ! ¤Ô,Ô2Ð2àð ð
 ˆG�E˜:Ñ&Ô&Ð&øð'ð 'r;   c                ó€  — | j         €J ‚| j         j        sd S |�|€d S |j        €	|j        €d S |j        €=|j        �6|j                             t          j        ||j        |¬¦  «        ¦  «         d S |j        |j        k    r<|j                             t          j        ||j        |j        |¬¦  «        ¦  «         d S d S )N)r©  r   )rI   r§  r¨  r   r   ÚDropTableCommentOpÚCreateTableCommentOp)r-   r‘   r   rZ   r˜   r�   s         r9   Ú_compare_table_commentrÝ    s
  € ð Ô"Ð.Ð.Ð.ØÔ"Ô4ð Øˆð Ð˜^Ð3ØˆàÔÐ! nÔ&<Ð&DØˆàÔÐ%¨*Ô*<Ð*HØÔ×#Ò#ÝÔ"Ø¨
Ô(:À6ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
ð
 
Ô	 :Ô#5Ò	5Ð	5ØÔ×#Ò#ÝÔ$ØØÔ&Ø!+Ô!3Øð	ñ ô ñ	
ô 	
ð 	
ð 	
ð 	
ð 
6Ð	5r;   )r-   r&   r.   r)   r/   r0   )r-   r&   r7   r+   r/   r0   )r-   r&   r7   r+   rT   rU   r/   r0   )rg   rK   ri   rK   rR   r!   r7   r+   r-   r&   r/   r0   )r‡   r'   r    r¡   r˜   r%   r/   r¢   )r‡   r'   r    r¡   r˜   r%   r/   r   )r    r¡   r˜   r%   r/   r   )r   rÏ   rZ   rÐ   r˜   r%   r�   r%   r‘   r*   r-   r&   rR   r!   r/   rÑ   )r-   r&   ré   r*   r   rÏ   rZ   rÐ   r˜   rê   r�   rê   r/   r0   )r-   r&   ræ   r(   r   rÏ   rZ   rÐ   rº   rÐ   rå   rd  rä   rd  r/   r0   )r-   r&   ræ   r(   r   rÏ   rZ   rÐ   rº   r"   rå   rd  rä   rd  r/   r0   )r€  r�  r-   r&   r/   rÏ   )rŠ  r  r/   r  )r-   r&   ræ   r(   r   rÏ   rZ   r  rº   r  rå   rd  rä   rd  r/   r0   )rZ   r  rº   r  r/   r0   )r-   r&   ræ   r(   r   rÏ   rZ   rÐ   rº   rÐ   rå   rd  rä   rd  r/   r�  )r-   r&   ræ   r(   r   rÏ   rZ   rÐ   rº   r"   rå   rd  rä   rd  r/   r¥  )r-   r&   r‘   r*   r   rÏ   rZ   rÐ   r˜   r%   r�   r%   r/   r0   )r-   r&   r‘   r*   r   rÏ   rZ   rÐ   r˜   rê   r�   rê   r/   r0   )`Ú
__future__r   Ú
contextlibÚloggingrŒ  Útypingr   r   r   r   r   r	   r
   r   r   r   r   Ú
sqlalchemyr   r   r   rp   r   r   ry  Úsqlalchemy.sqlr   Úsqlalchemy.sql.schemar   r   r   Úsqlalchemy.utilr   rw   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__r‚   r:   Ú
DispatcherrO   r5   Údispatch_forrj   rf   Úimmutabledictr™   rš   r�   rž   rŸ   Ú__annotations__rµ   r¾   rÎ   Úcontextmanagerr�   rç   rQ  r/  rp  ru  r{  r‰  r�  r•  r’  r™  r¢  r­  rÙ  rÝ  r]   r;   r9   ú<module>rô     s‹  ðð #Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø %Ð %Ð %Ð %Ð %Ð %Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø &Ð &Ð &Ð &Ð &Ð &à Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àð /ØÐÐÐÐÐà6Ð6Ð6Ð6Ð6Ð6Ø3Ð3Ð3Ð3Ð3Ð3Ø2Ð2Ð2Ð2Ð2Ð2Ø,Ð,Ð,Ð,Ð,Ð,Ø+Ð+Ð+Ð+Ð+Ð+à7Ð7Ð7Ð7Ð7Ð7Ø,Ð,Ð,Ð,Ð,Ð,Ø4Ð4Ð4Ð4Ð4Ð4Ø6Ð6Ð6Ð6Ð6Ð6Ø5Ð5Ð5Ð5Ð5Ð5Ø1Ð1Ð1Ð1Ð1Ð1Ø.Ð.Ð.Ð.Ð.Ð.ð €gÔ˜Ñ!Ô!€ð,ð ,ð ,ð ,ð ˆdŒo dÐ+Ñ+Ô+€ðð ð ð ð> ×Ò˜(Ñ#Ô#ð'ð 'ð 'ñ $Ô#ð'ðTG9ð G9ð G9ð G9ðT -?¨DÔ,>àŒ~Ø”Ø!Ô,Ø Ô*Ø Ô+ØÔ)ðð ñ	-ô 	-Ð ð 	ð 	ð 	ñ 	ðð ð ð ð@ð ð ð ðð ð ð ð. ÔðEEð EEð EEñ ÔðEEðP €WˆT˜Ð/Ð1EÀuÐLÔMÐNÑNÔN€ð ×Ò˜'Ñ"Ô"ð^8ð ^8ð ^8ñ #Ô"ð^8ðB<9ð <9ð <9ð~ ×Ò˜(Ñ#Ô#ð%ð %ð %ñ $Ô#ð%ðP ×Ò˜(Ñ#Ô#ð4ð 4ð 4ñ $Ô#ð4ð" ×Ò˜(Ñ#Ô#ð'
ð '
ð '
ñ $Ô#ð'
ðTð ð ð ð&Að Að Að Að)3ð )3ð )3ð )3ðXOð Oð Oð Oðð ð ð" ×Ò˜(Ñ#Ô#ðTð Tð Tñ $Ô#ðTðn ×Ò˜(Ñ#Ô#ðð ð ñ $Ô#ðð6 ×Ò˜'Ñ"Ô"ðx'ð x'ð x'ñ #Ô"ðx'ðv ×Ò˜'Ñ"Ô"ð"
ð "
ð "
ñ #Ô"ð"
ð "
ð "
r;   