o
    8 h                  	   @  s  U d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" ddl#m$Z$ ddl%m&Z& ddl%m'Z' ddl(m)Z) ddl$m*Z* er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$lm1Z1 d d%l2m3Z3 d d&l4m5Z5 d d'l6m7Z7 d d(l6m8Z8 d d)l6m9Z9 d d*l6m:Z: dd+l%m;Z; e<e=Z>dd2d3Z?e$j@d4d5ZAdd8d9ZBeACd:dd=d>ZDddDdEZEe$FejGejHejIejJejIejJdFZKdGeLdH< ddPdQZMddSdTZNddVdWZOejPdd_d`ZQedaee eef dbZRG dcdd ddZSeACdeddhdiZTdjdk ZUeACdlddsdtZVeACdlddvdwZWeACdlddxdyZXdd|d}ZYdddZZdddZ[dddZ\dd Z]eACdldddZ^eACdldddZ_eACdedddZ`eACdedddZadS )    )annotationsN)Any)cast)Dict)Iterator)Mapping)Optional)Set)Tuple)TYPE_CHECKING)TypeVar)Union)event)inspectschema)text)types)
expression)conv)ForeignKeyConstraint)Index)UniqueConstraint)
OrderedSet   )util)is_index_sig)	is_uq_sig)ops)sqla_compat)Literal)	Inspector)quoted_name)
TextClause)Column)Table)AutogenContext)DefaultImpl)AlterColumnOp)MigrationScript)ModifyTableOps)
UpgradeOps)_constraint_sigautogen_contextr&   migration_scriptr)   returnNonec                 C  s,   |j d }|jd }t| | || d S )N)upgrade_ops_listdowngrade_ops_list_produce_net_changesZreverse_into)r-   r.   upgrade_opsdowngrade_ops r7   d/var/www/html/figdemos/bartoux_crm/venv/lib/python3.10/site-packages/alembic/autogenerate/compare.py_populate_migration_script<   s   


r9   T)uselistr5   r+   c                   s    j }|d us	J  jdd}t|}|jj}|r0t| }|d || |	d  nd h} fdd|D } jd usCJ t
d jj || d S )Ninclude_schemasFZinformation_schemac                   s   h | ]}  |d i r|qS r   run_name_filters).0sr-   r7   r8   	<setcomp>^   s
    z'_produce_net_changes.<locals>.<setcomp>r   )
connectionoptsgetr   dialectdefault_schema_namesetget_schema_namesdiscardaddcomparatorsdispatchname)r-   r5   rB   r;   	inspectordefault_schemaschemasr7   r@   r8   r4   I   s$   


r4   r   rP   $Union[Set[None], Set[Optional[str]]]c           	        s    j }t } jj} jj}|D ]#t|jd}|kr&| jjg}| fdd|D  qtdd  j	D ||fg}t
||||  d S )Nr   c                 3  s*    | ]}  |d dir|fV  qdS )tableschema_nameNr<   )r>   tnamer-   rS   r7   r8   	<genexpr>~   s    

z&_autogen_for_tables.<locals>.<genexpr>c                 S  s   g | ]}|j |jfqS r7   )r   rM   )r>   rR   r7   r7   r8   
<listcomp>       z'_autogen_for_tables.<locals>.<listcomp>)rN   rG   migration_contextversion_table_schemaversion_tableget_table_names
differenceupdater   sorted_tables_compare_tables)	r-   r5   rP   rN   conn_table_namesrZ   r[   tablesmetadata_table_namesr7   rU   r8   _autogen_for_tablesh   s4   
rd   ra   rG   rc   rN   r!   c              	     s   |j jjtfdd|D } fddt||D }|}|| D ]K\}}|r/d||f n|}	|||f }
 |
|ddd rn|jtj	
|
 td|	 tj|g |d	}td |||d |
 | sn|j| q#t }| |D ]e\}}t||}	|	|jv }tj|||d	}|st|d
 jj| t|j|d d  ||ddd rtj|g |d	}td ||||d  | s|j| |jtj
| td|	 qx| |}t }i }|D ]5\}}t||}	|	|jv }tj|||d	}|st|d
 jj| t|j|d d ||||f< qt|dd dD ]d\}}|p1d }|r;d||f n|}	|||f }
|j|	 } |
|dd|rtj|g |d	}t ||||
| | td |||||
 W d    n	1 s|w   Y  | s|j| q)d S )Nc                   s$   g | ]\}}| kr|nd |fqS Nr7   )r>   r   rT   )rO   r7   r8   rW      s    z#_compare_tables.<locals>.<listcomp>c                   s(   i | ]\}\}}| j t|| qS r7   )table_key_to_table	sa_schema_get_table_key)r>   Zno_dflt_schemar   rT   r@   r7   r8   
<dictcomp>   s    

z#_compare_tables.<locals>.<dictcomp>%s.%srR   FzDetected added table %rr   column_reflectinclude_columnsTzDetected removed table %rc                 S  s   | d pd| d fS )Nr       r7   )xr7   r7   r8   <lambda>       z!_compare_tables.<locals>.<lambda>)key)!bindrE   rF   r   zipr]   run_object_filtersr   appendZCreateTableOp
from_tableloginfor*   rK   rL   is_emptyrg   MetaDatarh   rb   r%   r   listenrY   impl_compat_autogen_column_reflect_InspectorConvreflect_tableZDropTableOpintersectionsorted_compare_columns)ra   rc   rN   r5   r-   Z#metadata_table_names_no_dflt_schemaZtname_to_tabler?   rT   rM   metadata_tablemodify_table_opsZremoval_metadataexiststZexisting_tablesZexisting_metadataZconn_column_info
conn_tabler7   )r-   rO   r8   r`      s   






	




	
r`   )ascdescnulls_first
nulls_last
nullsfirst	nullslastzMapping[str, Any]_IndexColumnSortingOpsr~   r'   paramsDict[str, Any]r   r%   Optional[Index]c                 C  s   g }| d}t|d D ]<\}}|d u r&d|v sJ |d | }t|}n|}|j| }|rD||v rD|| D ]}	|	tv rCt|	 |}q7|| qtj|d g|R |d |d| |d}
d|v rl|d |
j	d< |
S )	Ncolumn_sortingcolumn_namesexpressionsrM   unique)r   _tableindexduplicates_constraint)
rD   	enumerater   cr   rw   rg   r    adjust_reflected_dialect_optionsrz   )r~   r   r   exprssortingnumcol_namerM   itemoperatorixr7   r7   r8   _make_index*  s8   



r   r   c                   sL   t j fdd|d D d|d i| |d}d|v r$|d |jd< |S )Nc                      g | ]} j | qS r7   r   r>   cnamer   r7   r8   rW   N      z+_make_unique_constraint.<locals>.<listcomp>r   rM   unique_constraintduplicates_index)rg   r   r   rz   )r~   r   r   uqr7   r   r8   _make_unique_constraintJ  s   
r   r   c              	     s   | d | d rd| d f |  di }tj fdd| d D fdd| d	 D | d
| d| d| d| d d} | |S )Nreferred_tablereferred_schemarj   optionsc                   r   r7   r   r   r   r7   r8   rW   b  r   z%_make_foreign_key.<locals>.<listcomp>constrained_columnsc                   s   g | ]}d  |f qS )rj   r7   )r>   n)rT   r7   r8   rW   c  rX   referred_columnsonupdateondelete
deferrable	initiallyrM   )r   r   r   r   rM   )rD   rg   r   append_constraint)r   r   r   constr7   )r   rT   r8   _make_foreign_keyX  s   

r   Optional[str]rT   Union[quoted_name, str]r   r   r*   Iterator[None]c              	   #  sx   r	df n}t dd |jD }dd |jD }	 fdd|jD }
||
D ]"} |	| |ddd rP|jtj|	|  t	d	|| q.|
|
D ]4}|	| }|j| } ||dd|skqVtj|d
}td |||| | r|j| qVd V  t|
|D ]$} |j| |ddd r|jtj|j|  t	d|| qd S )Nrj   c                 s  s    | ]	}|j s|jV  qd S re   systemrM   r>   r   r7   r7   r8   rV   z  s    
z#_compare_columns.<locals>.<genexpr>c                 S  s   i | ]	}|j s|j|qS r7   r   r   r7   r7   r8   ri   }  s
    z$_compare_columns.<locals>.<dictcomp>c              	     s*   i | ]}  |jd dr|j|qS )column
table_namerS   )r=   rM   r   r-   r   rT   r7   r8   ri     s    r   FzDetected added column '%s.%s'r   TzDetected removed column '%s.%s')r   r   r]   rv   r   rw   ZAddColumnOpZfrom_column_and_tablenamery   rz   r   r(   rK   rL   has_changesrG   ZDropColumnOp)r   rT   r   r   r   r-   rN   rM   Zmetadata_col_namesZmetadata_cols_by_nameZconn_col_namesr   colnamemetadata_colconn_colalter_column_opr7   r   r8   r   o  sn   




r   _C)boundc                   @  sH   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dS )r   rN   c                 C  s
   || _ d S re   r   )selfrN   r7   r7   r8   __init__  s   
z_InspectorConv.__init__c                 C  s@   |s|S |D ]}|d d urt |d tst|d |d< q|S )NrM   )
isinstancer   r   Zconstsr   r7   r7   r8   _apply_reflectinfo_conv  s   z&_InspectorConv._apply_reflectinfo_convc                 C  s8   |s|S |D ]}|j d urt|j tst|j |_ q|S re   )rM   r   r   r   r7   r7   r8   _apply_constraint_conv  s   z%_InspectorConv._apply_constraint_convc                 O     |  | jj|i |S re   )r   rN   get_indexesr   argskwr7   r7   r8   r        z_InspectorConv.get_indexesc                 O  r   re   )r   rN   get_unique_constraintsr   r7   r7   r8   r     r   z%_InspectorConv.get_unique_constraintsc                 O  r   re   )r   rN   get_foreign_keysr   r7   r7   r8   r     r   z_InspectorConv.get_foreign_keysc                C  s,   | j j||d | |j | |j d S )Nrl   )rN   r   r   constraintsindexes)r   rR   rm   r7   r7   r8   r     s   z_InspectorConv.reflect_tableN)__name__
__module____qualname__	__slots__r   r   r   r   r   r   r   r7   r7   r7   r8   r     s    
r   rR   
modify_opsOptional[Table]c           $        sV   j }d u |d u  jj|d ur!dd |jD }t|j}nt }t }t  }	}
d
d}d urzt|j	d}	d
W n t	yJ   Y n  t
yR   Y nw  	fdd|	D }	|	D ]	}|drid}q`zt|j	d}
W n	 t	y~   Y nw  	fd	d|
D }
rt }	n
fd
d|	D }	dd fdd|
D D }
|rt|	|
|| j |	|
|| fdd|D }fdd|D }fdd|	D }fdd|
D } fdd||D }dd |D dd |D dd ||D }fddtD }dd |D }dd |D } fdd|D }d+ 
fdd}d+ 
fdd }d, fd%d&}tt||D ]?}|| }t|rg|j|v rgqT||v r|| \}tfd'd|D r|j|vr|| | qT|| qTtt||D ]e}|| }||v r|| \}t|r}n|}n|| }t|t|kr|| || q||}|jr||||j q|jrt|rd(nd)} td*| |j|j q|j sJ qtt||D ]}!||! }"||" q|D ]}#|#|vr'|||#  qd S )-Nc                 S     h | ]
}t |tjr|qS r7   )r   rg   r   r>   r   r7   r7   r8   rA         
z/_compare_indexes_and_uniques.<locals>.<setcomp>Fr   Tc              	     (   g | ]}  |d  ddr|qS )rM   r   r   r<   r   r   r7   r8   rW         z0_compare_indexes_and_uniques.<locals>.<listcomp>r   c              	     r   )rM   r   r   r<   r>   r   r   r7   r8   rW   /  r   c                   s   h | ]}t | qS r7   )r   )r>   Zuq_defr   r~   r7   r8   rA   ?  s    
c                 S  s   h | ]}|d ur|qS re   r7   )r>   r   r7   r7   r8   rA   D  s
    c                 3  s    | ]	}t | V  qd S re   )r   r   r   r7   r8   rV   F  s    
z/_compare_indexes_and_uniques.<locals>.<genexpr>c                      h | ]}  |qS r7   _create_metadata_constraint_sigr   r~   r7   r8   rA   g  s    c                   r   r7   r   r   r   r7   r8   rA   l      
c                   r   r7    _create_reflected_constraint_sigr   r   r7   r8   rA   p  r   c                   r   r7   r   r   r   r7   r8   rA   t  r   c                   s$   i | ]}|j rtt| |qS r7   )is_namedr   strmd_name_to_sql_namer   r@   r7   r8   ri   y  s    z0_compare_indexes_and_uniques.<locals>.<dictcomp>c                 S     i | ]}|j |qS r7   rM   r   r7   r7   r8   ri     rr   c                 S  r   r7   r   r   r7   r7   r8   ri     rr   c                 S  s    i | ]}t |jr|j|qS r7   )r   constraint_name_stringrM   r   r7   r7   r8   ri     s    
c                   s   i | ]}||  | fqS r7   r7   )r>   rM   )conn_indexes_by_nameconn_uniques_by_namer7   r8   ri     s    c                 S  r   r7   unnamedr   r7   r7   r8   ri     rr   c                 S  r   r7   r   r   r7   r7   r8   ri         c                   s$   i | ]}t |j js|j|qS r7   )r   _constraint_is_namedr   rE   r   r   r@   r7   r8   ri     s    objr,   c                   s   t | r' | j| jddd r%jtj| j t	d| j| j
 d S d S t| rXs/d S s3r5d S  | j| jddd rV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   rv   r   rM   r   rw   CreateIndexOp
from_indexry   rz   r   r   AddConstraintOpfrom_constraintr   )r-   is_create_tableis_drop_tabler   supports_unique_constraintsr7   r8   	obj_added  s:   	z/_compare_indexes_and_uniques.<locals>.obj_addedc                   s   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| rYs5r7d S  | j| jddd rW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_uniquerv   r   rM   r   rw   DropIndexOpr  ry   rz   r   DropConstraintOpr  r  )r-   r  r  r   r  rT   r7   r8   obj_removed  s2   
z1_compare_indexes_and_uniques.<locals>.obj_removedoldnewmsgr   c                   s   t | r9t |s
J  |j|jdd| jr7td| j| jtj	| j jtj
	|j d S d S t| rrt|sCJ  |j|jdd| jrpt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   rv   r   rM   ry   rz   r   rw   r
  r  r   r   r  r  r  )r  r  r  )r-   r   rT   r7   r8   obj_changed  s<   
z1_compare_indexes_and_uniques.<locals>.obj_changedc                 3  s    | ]	} j |j kV  qd S re   r   )r>   Zmeta_idx)conn_idxr7   r8   rV     s
    

r   zunique constraintz5Cannot compare %s %r, assuming equal and skipping. %s)r   r,   )r  r,   r  r,   r  r   )!rN   rY   r~   r   rG   r   	frozensetr   r   NotImplementedError	TypeErrorrD   r   _correct_for_uq_duplicates_uixrE   correct_for_autogen_constraintsunionr   r   r]   r   r   allr   typecompare_to_reflectedis_differentmessageis_skipry   rz   rM   is_equal)$r-   r   r   rT   r   r   rN   metadata_unique_constraintsmetadata_indexesconn_uniquesconn_indexesZ+unique_constraints_duplicate_unique_indexesr   Zmetadata_unique_constraints_sigZmetadata_indexes_sigconn_unique_constraintsZconn_indexes_sigZmetadata_namesZ
conn_namesdoubled_constraintsZconn_uniques_by_sigZmetadata_uniques_by_sigZunnamed_metadata_uniquesr  r  r  Zremoved_nameconn_objZconn_uqZexisting_namemetadata_obj
comparisonthingZ
added_namer   Zuq_sigr7   )r-   r  r   r   r   r~   r  r  r   r   r  rT   r8   _compare_indexes_and_uniques  s.  	
	






		
! %




r)  c                   s    fdd|D }dd |D }fdd|D } fdd|D }	dd |D }
d	d | D }|D ]#}||vrJ || j|vrI| ||  q2||	vrU||
|  q2d S )
Nc                   s   g | ]
}t | |fqS r7   )r   _get_constraint_final_namer>   consrE   r7   r8   rW   b  s    z2_correct_for_uq_duplicates_uix.<locals>.<listcomp>c                 S  s   h | ]
\}}|d ur|qS re   r7   r>   rM   r,  r7   r7   r8   rA   g  s    z1_correct_for_uq_duplicates_uix.<locals>.<setcomp>c                   s$   h | ]\}}|d u r  |jqS re   )r   r   r.  r   r7   r8   rA   k  s
    
c                   s   h | ]}|j rt| qS r7   )r   r   r*  r+  r-  r7   r8   rA   q  s    
c                 S  s   i | ]	}|j r|j|qS r7   )r   rM   r+  r7   r7   r8   ri   y  s    z2_correct_for_uq_duplicates_uix.<locals>.<dictcomp>c                 S  s   i | ]}|j d  r|j|qS )r   )rz   rM   r+  r7   r7   r8   ri   {  s    )r   r   rI   )r#  r"  r  r   rE   r~   Zmetadata_cons_namesZmetadata_uq_namesZunnamed_metadata_uqsZmetadata_ix_namesZconn_ix_namesZuqs_dupe_indexesoverlapr7   )rE   r~   r8   r  O  s<   


r  r   r   r(   r   r   Column[Any]r   c           	      C  s|   |j }|j }||_||ur<t|j|jrt|s"t|j|jr+td|| d S ||_	td|r5d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_identityry   rz   Zmodify_nullable)	r-   r   r   rT   r   r   r   Zmetadata_col_nullableZconn_col_nullabler7   r7   r8   _compare_nullable  s6   

r8  r"   c                 C  sN   |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)rR   _autoincrement_columnr   r9  )r-   r   r   rT   r   r   r   r7   r7   r8   _setup_autoincrement  s   


r;  c           
      C  s   |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')
r  existing_type_type_affinitysqltypesNullTypery   rz   rY   _compare_typeZmodify_type)
r-   r   r   rT   r   r   r   Z	conn_typeZmetadata_typeZisdiffr7   r7   r8   r@    s<   
r@  metadata_defaultOptional[Any]c                 C  sL   t | tjrt | jtr| j} nt| jj|jddid} t | tr$| S d S )Nliteral_bindsTrE   compile_kwargs)r   rg   DefaultClauseargr   compilerE   )rA  r-   r7   r7   r8   "_render_server_default_for_compare  s   
rI  sqltextr   c                 C  s   t dd|  S )zwe want to warn if a computed sql expression has changed.  however
    we don't want false positives and the warning is not that critical.
    so filter out most forms of variability from the SQL text.

    z[ \(\)'\"`\[\]\t\r\n]rn   )resublower)rJ  r7   r7   r8   _normalize_computed_default  s   rN  c           	      C  s   t ttj|jjj| jddid}t|}t	|jtjr7t |jjj| jddid}|d u r2d}nt|}nd}||krDt
|| d S d S )NrC  TrD  rn   )r   r   rg   Computedr5  rJ  rH  rE   rN  r   _warn_computed_not_supported)	r-   r   r   rT   r   r   r   rendered_metadata_defaultrendered_conn_defaultr7   r7   r8   _compare_computed_default  s2   	rS  c                 C  s   t d| |f  d S )Nz,Computed default on %s.%s cannot be modified)r   warn)rT   r   r7   r7   r8   rP  =  s   rP  c                 C  s&   | j j}||j|j\}}	}
||
fS re   )rY   r~   _compare_identity_defaultr5  )r-   r   r   rT   r   r   r   r~   diffignored_attris_alterr7   r7   r8   rU  A  s
   	
rU  Optional[bool]c                 C  s   |j }|j }|d u r|d u rdS t|rt| ||||||S t|r+t|| dS t||rS||_t| ||||||\}	}
|
rQ||_|	rQt	
d||t|	 d S t|| }|rat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')r5  r   r4  rS  rP  r7  existing_server_defaultrU  Zmodify_server_defaultry   rz   r   rI  r   r   rG  r   rY   _compare_server_default)r-   r   r   rT   r   r   r   rA  conn_col_defaultrV  rX  rQ  rR  Zis_diffr7   r7   r8   r[  R  sp   


	
	r[  Optional[Literal[False]]c           	      C  s`   | j d usJ | j jsd S |j}|j}|d u r|d u rdS ||_||kr.||_td|| d S )NFzDetected column comment '%s.%s')rE   supports_commentscommentexisting_commentZmodify_commentry   rz   )	r-   r   r   rT   r   r   r   Zmetadata_commentZconn_col_commentr7   r7   r8   _compare_column_comment  s   
ra  c                   s  d u s|d u r
d S  j }dd |jD } fddt|jdD }fdd|D }	 jj jj|	| fdd|D }
fdd|	D }|red	|d
 v redd |D }dd |
D }ndd |D }dd |
D }dd |
D }dd |D } fdd} fdd}t||D ]}|| ||vrj	|v r|j	 j
nd }|| qt||D ]}|| ||vr׈j	|v r|j	 j
nd }|| qd S )Nc                 S  r   r7   )r   rg   r   r>   fkr7   r7   r8   rA     r   z(_compare_foreign_keys.<locals>.<setcomp>c              	     r   )rM   foreign_key_constraintr   r<   rb  r   r7   r8   rW     s    z)_compare_foreign_keys.<locals>.<listcomp>r   c                   s   h | ]}t | qS r7   )r   )r>   r   r   r7   r8   rA     r   c                   r   r7   r   rb  r   r7   r8   rA     r   c                   r   r7   r   rb  r   r7   r8   rA     r   r   r   c                 S  r   r7   r   r   r7   r7   r8   ri     rr   z)_compare_foreign_keys.<locals>.<dictcomp>c                 S  r   r7   r   r   r7   r7   r8   ri     rr   c                 S  r   r7   unnamed_no_optionsr   r7   r7   r8   ri     rr   c                 S  r   r7   re  r   r7   r7   r8   ri     r   c                 S     i | ]}|j d ur|j |qS re   r   r   r7   r7   r8   ri     s    c                 S  rg  re   r   r   r7   r7   r8   ri     s    c                   sh     | j| jdd|r2jtjj tdd	| j
d	| j| jr+d| j nd| j d S d S )Nrd  Fz1Detected added foreign key (%s)(%s) on table %s%s, %s.rn   )rv   r   rM   r   rw   ZCreateForeignKeyOpr  ry   rz   joinsource_columnstarget_columnssource_schemasource_tabler   
compare_to)r-   r   r   r7   r8   _add_fk   s   

z&_compare_foreign_keys.<locals>._add_fkc                   sh     | j| jdd|r2jtj| j tdd	| j
d	| j| jr+d| j nd| j d S d S )Nrd  Tz3Detected removed foreign key (%s)(%s) on table %s%srh  ri  rn   )rv   r   rM   r   rw   r  r  ry   rz   rj  rk  rl  rm  rn  ro  )r-   r   r7   r8   
_remove_fk  s   

z)_compare_foreign_keys.<locals>._remove_fk)rN   r   r   r   rY   r~   correct_for_autogen_foreignkeysrG   r]   rM   r   )r-   r   r   rT   r   r   rN   metadata_fksZconn_fks_listconn_fksZmetadata_fks_sigZconn_fks_sigZconn_fks_by_sigZmetadata_fks_by_sigZmetadata_fks_by_nameZconn_fks_by_namerq  rr  Zremoved_sigrp  Z	added_sigr7   )r-   r   r   r~   r   r   rT   r8   _compare_foreign_keys  sp   






rv  c                 C  s   | j d usJ | j jsd S |d u s|d u rd S |jd u r#|jd u r#d S |jd u r<|jd ur<|jtj||j|d d S |j|jkrS|jtj||j|j|d d S d S )N)r`  r   )rE   r^  r_  r   rw   ZDropTableCommentOpZCreateTableCommentOp)r-   r   r   rT   r   r   r7   r7   r8   _compare_table_comment7  s.   	rw  )r-   r&   r.   r)   r/   r0   )r-   r&   r5   r+   r/   r0   )r-   r&   r5   r+   rP   rQ   r/   r0   )ra   rG   rc   rG   rN   r!   r5   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   rT   r   r   r%   r   r%   r   r*   r-   r&   rN   r!   r/   r   )r-   r&   r   r*   r   r   rT   r   r   r   r   r   r/   r0   )r-   r&   r   r(   r   r   rT   r   r   r   r   r0  r   r0  r/   r0   )r-   r&   r   r(   r   r   rT   r   r   r"   r   r0  r   r0  r/   r0   )rA  rB  r-   r&   r/   r   )rJ  r   r/   r   )r-   r&   r   r(   r   r   rT   r   r   r   r   r0  r   r0  r/   r0   )rT   r   r   r   r/   r0   )r-   r&   r   r(   r   r   rT   r   r   r   r   r0  r   r0  r/   rY  )r-   r&   r   r(   r   r   rT   r   r   r"   r   r0  r   r0  r/   r]  )r-   r&   r   r*   r   r   rT   r   r   r%   r   r%   r/   r0   )r-   r&   r   r*   r   r   rT   r   r   r   r   r   r/   r0   )b
__future__r   
contextlibloggingrK  typingr   r   r   r   r   r   r	   r
   r   r   r   
sqlalchemyr   r   r   rg   r   r   r>  sqlalchemy.sqlr   sqlalchemy.sql.elementsr   sqlalchemy.sql.schemar   r   r   Zsqlalchemy.utilr   rn   r   Zddl._autogenr   r   
operationsr   r   r    Zsqlalchemy.engine.reflectionr!   r"   r#   r$   r%   Zalembic.autogenerate.apir&   Zalembic.ddl.implr'   Zalembic.operations.opsr(   r)   r*   r+   r,   	getLoggerr   ry   r9   
DispatcherrK   r4   dispatch_forrd   r`   immutabledictr   r   r   r   r   __annotations__r   r   r   contextmanagerr   r   r   r)  r  r8  r;  r@  rI  rN  rS  rP  rU  r[  ra  rv  rw  r7   r7   r7   r8   <module>   s   




* 

 
H1  d?(
*



,K|