o
    Ph                  	   @  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_changesreverse_into)r-   r.   upgrade_opsdowngrade_ops r8   a/var/www/html/stock_analysis/be/venv/lib/python3.10/site-packages/alembic/autogenerate/compare.py_populate_migration_script<   s   


r:   T)uselistr6   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_schemasFinformation_schemac                   s   h | ]}  |d i r|qS r   run_name_filters).0sr-   r8   r9   	<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-   r6   rD   r<   	inspectordefault_schemaschemasr8   rB   r9   r4   I   s$   


r4   r   rR   $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-   rU   r8   r9   	<genexpr>~   s    

z&_autogen_for_tables.<locals>.<genexpr>c                 S  s   g | ]}|j |jfqS r8   )r   rO   )r@   rT   r8   r8   r9   
<listcomp>       z'_autogen_for_tables.<locals>.<listcomp>)rP   rI   migration_contextversion_table_schemaversion_tableget_table_names
differenceupdater   sorted_tables_compare_tables)	r-   r6   rR   rP   conn_table_namesr\   r]   tablesmetadata_table_namesr8   rW   r9   _autogen_for_tablesh   s4   
rf   rc   rI   re   rP   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 Nr8   )r@   r   rV   )rQ   r8   r9   rY      s    z#_compare_tables.<locals>.<listcomp>c                   s(   i | ]\}\}}| j t|| qS r8   )table_key_to_table	sa_schema_get_table_key)r@   no_dflt_schemar   rV   rB   r8   r9   
<dictcomp>   s    

z#_compare_tables.<locals>.<dictcomp>%s.%srT   FzDetected added table %rr   column_reflectinclude_columnsTzDetected removed table %rc                 S  s   | d pd| d fS )Nr       r8   )xr8   r8   r9   <lambda>       z!_compare_tables.<locals>.<lambda>)key)!bindrG   rH   r   zipr_   run_object_filtersr   appendCreateTableOp
from_tableloginfor*   rM   rN   is_emptyri   MetaDatarj   rd   r%   r   listenr[   impl_compat_autogen_column_reflect_InspectorConvreflect_tableDropTableOpintersectionsorted_compare_columns)rc   re   rP   r6   r-   #metadata_table_names_no_dflt_schematname_to_tablerA   rV   rO   metadata_tablemodify_table_opsremoval_metadataexiststexisting_tablesexisting_metadataconn_column_info
conn_tabler8   )r-   rQ   r9   rb      s   






	




	
rb   )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expressionsrO   unique)r   _tableindexduplicates_constraint)
rF   	enumerater   cr   rz   ri   r    adjust_reflected_dialect_optionsr~   )r   r   r   exprssortingnumcol_namerO   itemoperatorixr8   r8   r9   _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 r8   r   r@   cnamer   r8   r9   rY   N      z+_make_unique_constraint.<locals>.<listcomp>r   rO   unique_constraintduplicates_index)ri   r   r   r~   )r   r   r   uqr8   r   r9   _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_schemarm   optionsc                   r   r8   r   r   r   r8   r9   rY   b  r   z%_make_foreign_key.<locals>.<listcomp>constrained_columnsc                   s   g | ]}d  |f qS )rm   r8   )r@   n)rV   r8   r9   rY   c  rZ   referred_columnsonupdateondelete
deferrable	initiallyrO   )r   r   r   r   rO   )rF   ri   r   append_constraint)r   r   r   constr8   )r   rV   r9   _make_foreign_keyX  s   

r   Optional[str]rV   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 )Nrm   c                 s  s    | ]	}|j s|jV  qd S rg   systemrO   r@   r   r8   r8   r9   rX   z  s    
z#_compare_columns.<locals>.<genexpr>c                 S  s   i | ]	}|j s|j|qS r8   r   r   r8   r8   r9   rl   }  s
    z$_compare_columns.<locals>.<dictcomp>c              	     s*   i | ]}  |jd dr|j|qS )column
table_namerU   )r?   rO   r   r-   r   rV   r8   r9   rl     s    r   FzDetected added column '%s.%s'r   TzDetected removed column '%s.%s')r   r   r_   ry   r   rz   AddColumnOpfrom_column_and_tablenamer}   r~   r   r(   rM   rN   has_changesrI   DropColumnOp)r   rV   r   r   r   r-   rP   rO   metadata_col_namesmetadata_cols_by_nameconn_col_namesr   colnamemetadata_colconn_colalter_column_opr8   r   r9   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   rP   c                 C  s
   || _ d S rg   r   )selfrP   r8   r8   r9   __init__  s   
z_InspectorConv.__init__c                 C  s@   |s|S |D ]}|d d urt |d tst|d |d< q|S )NrO   )
isinstancer   r   constsr   r8   r8   r9   _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 rg   )rO   r   r   r   r8   r8   r9   _apply_constraint_conv  s   z%_InspectorConv._apply_constraint_convc                 O     |  | jj|i |S rg   )r   rP   get_indexesr   argskwr8   r8   r9   r        z_InspectorConv.get_indexesc                 O  r   rg   )r   rP   get_unique_constraintsr   r8   r8   r9   r     r   z%_InspectorConv.get_unique_constraintsc                 O  r   rg   )r   rP   get_foreign_keysr   r8   r8   r9   r     r   z_InspectorConv.get_foreign_keysc                C  s,   | j j||d | |j | |j d S )Nro   )rP   r   r   constraintsindexes)r   rT   rp   r8   r8   r9   r     s   z_InspectorConv.reflect_tableN)__name__
__module____qualname__	__slots__r   r   r   r   r   r   r   r8   r8   r8   r9   r     s    
r   rT   
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 r8   )r   ri   r   r@   r   r8   r8   r9   rC         
z/_compare_indexes_and_uniques.<locals>.<setcomp>Fr   Tc              	     (   g | ]}  |d  ddr|qS )rO   r   r   r>   r   r   r8   r9   rY         z0_compare_indexes_and_uniques.<locals>.<listcomp>r   c              	     r   )rO   r   r   r>   r@   r   r   r8   r9   rY   /  r   c                   s   h | ]}t | qS r8   )r   )r@   uq_defr   r   r8   r9   rC   ?  s    
c                 S  s   h | ]}|d ur|qS rg   r8   )r@   r   r8   r8   r9   rC   D  s    c                 3  s    | ]	}t | V  qd S rg   )r   r   r   r8   r9   rX   F  s    
z/_compare_indexes_and_uniques.<locals>.<genexpr>c                      h | ]}  |qS r8   _create_metadata_constraint_sigr   r   r8   r9   rC   g  s    c                   r   r8   r   r   r  r8   r9   rC   l      
c                   r   r8    _create_reflected_constraint_sigr   r  r8   r9   rC   p  r  c                   r   r8   r  r   r  r8   r9   rC   t  r  c                   s$   i | ]}|j rtt| |qS r8   )is_namedr   strmd_name_to_sql_namer   rB   r8   r9   rl   y  s    z0_compare_indexes_and_uniques.<locals>.<dictcomp>c                 S     i | ]}|j |qS r8   rO   r   r8   r8   r9   rl     ru   c                 S  r	  r8   r
  r   r8   r8   r9   rl     ru   c                 S  s    i | ]}t |jr|j|qS r8   )r   constraint_name_stringrO   r   r8   r8   r9   rl     s    
c                   s   i | ]}||  | fqS r8   r8   )r@   rO   )conn_indexes_by_nameconn_uniques_by_namer8   r9   rl     s    c                 S  r	  r8   unnamedr   r8   r8   r9   rl     ru   c                 S  r	  r8   r  r   r8   r8   r9   rl         c                   s$   i | ]}t |j js|j|qS r8   )r   _constraint_is_namedr   rG   r  r   rB   r8   r9   rl     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   ry   r   rO   r   rz   CreateIndexOp
from_indexr}   r~   r   r   AddConstraintOpfrom_constraintr  )r-   is_create_tableis_drop_tabler   supports_unique_constraintsr8   r9   	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_uniquery   r   rO   r   rz   DropIndexOpr  r}   r~   r   DropConstraintOpr  r  )r-   r  r  r   r  rV   r8   r9   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   ry   r   rO   r}   r~   r   rz   r  r  r  r   r  r  r  )r   r!  r"  )r-   r   rV   r8   r9   obj_changed  s<   
z1_compare_indexes_and_uniques.<locals>.obj_changedc                 3  s    | ]	} j |j kV  qd S rg   r  )r@   meta_idx)conn_idxr8   r9   rX     s
    

r   zunique constraintz5Cannot compare %s %r, assuming equal and skipping. %s)r  r,   )r   r,   r!  r,   r"  r  )!rP   r[   r   r   rI   r   	frozensetr   r   NotImplementedError	TypeErrorrF   r   _correct_for_uq_duplicates_uixrG   correct_for_autogen_constraintsunionr   r   r_   r   r  allr   typecompare_to_reflectedis_differentmessageis_skipr}   r~   rO   is_equal)$r-   r   r   rV   r   r   rP   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_sigr8   )r-   r%  r  r   r  r   r  r  r   r   r  rV   r9   _compare_indexes_and_uniques  s2  	
	






		
! %




rK  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 r8   )r   _get_constraint_final_namer@   consrG   r8   r9   rY   b  s    z2_correct_for_uq_duplicates_uix.<locals>.<listcomp>c                 S  s   h | ]
\}}|d ur|qS rg   r8   r@   rO   rN  r8   r8   r9   rC   g  s
    z1_correct_for_uq_duplicates_uix.<locals>.<setcomp>c                   s$   h | ]\}}|d u r  |jqS rg   )r  r  rP  r  r8   r9   rC   k  s    
c                   s   h | ]}|j rt| qS r8   )r   r   rL  rM  rO  r8   r9   rC   q  s    
c                 S  s   i | ]	}|j r|j|qS r8   )r   rO   rM  r8   r8   r9   rl   y  s    z2_correct_for_uq_duplicates_uix.<locals>.<dictcomp>c                 S  s   i | ]}|j d  r|j|qS )r   )r~   rO   rM  r8   r8   r9   rl   {  s    )r  r  rK   )r:  r6  r3  r4  rG   r   metadata_cons_namesmetadata_uq_namesunnamed_metadata_uqsmetadata_ix_namesconn_ix_namesuqs_dupe_indexesoverlapr8   )rG   r   r9   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_identityr}   r~   modify_nullable)	r-   r   r   rV   r   r   r   metadata_col_nullableconn_col_nullabler8   r8   r9   _compare_nullable  s6   

rc  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)rT   _autoincrement_columnr   rd  )r-   r   r   rV   r   r   r   r8   r8   r9   _setup_autoincrement  s   


rf  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NullTyper}   r~   r[   _compare_typemodify_type)
r-   r   r   rV   r   r   r   	conn_typemetadata_typeisdiffr8   r8   r9   rk    s<   
rk  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rG   compile_kwargs)r   ri   DefaultClauseargr  compilerG   )rp  r-   r8   r8   r9   "_render_server_default_for_compare  s   
rx  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]rq   )resublower)ry  r8   r8   r9   _normalize_computed_default  s   r}  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 )Nrr  Trs  rq   )r  r   ri   Computedr]  ry  rw  rG   r}  r   _warn_computed_not_supported)	r-   r   r   rV   r   r   r   rendered_metadata_defaultrendered_conn_defaultr8   r8   r9   _compare_computed_default  s2   	r  c                 C  s   t d| |f  d S )Nz,Computed default on %s.%s cannot be modified)r   warn)rV   r   r8   r8   r9   r  =  s   r  c                 C  s&   | j j}||j|j\}}	}
||
fS rg   )r[   r   _compare_identity_defaultr]  )r-   r   r   rV   r   r   r   r   diffignored_attris_alterr8   r8   r9   r  A  s
   	
r  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')r]  r   r\  r  r  r_  existing_server_defaultr  modify_server_defaultr}   r~   r   rx  r   r   rv  r   r[   _compare_server_default)r-   r   r   rV   r   r   r   rp  conn_col_defaultr  r  r  r  is_diffr8   r8   r9   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')rG   supports_commentscommentexisting_commentmodify_commentr}   r~   )	r-   r   r   rV   r   r   r   metadata_commentconn_col_commentr8   r8   r9   _compare_column_comment  s   
r  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   r8   )r   ri   r   r@   fkr8   r8   r9   rC     r   z(_compare_foreign_keys.<locals>.<setcomp>c              	     r   )rO   foreign_key_constraintr   r>   r  r   r8   r9   rY     s    z)_compare_foreign_keys.<locals>.<listcomp>r   c                   s   h | ]}t | qS r8   )r   )r@   r   r   r8   r9   rC     r  c                   r   r8   r   r  r  r8   r9   rC     r  c                   r   r8   r  r  r  r8   r9   rC     r  r   r   c                 S  r	  r8   r  r   r8   r8   r9   rl     ru   z)_compare_foreign_keys.<locals>.<dictcomp>c                 S  r	  r8   r  r   r8   r8   r9   rl     ru   c                 S  r	  r8   unnamed_no_optionsr   r8   r8   r9   rl     ru   c                 S  r	  r8   r  r   r8   r8   r9   rl     r  c                 S     i | ]}|j d ur|j |qS rg   r
  r   r8   r8   r9   rl     s
    
c                 S  r  rg   r
  r   r8   r8   r9   rl     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 )Nr  Fz1Detected added foreign key (%s)(%s) on table %s%s, %s.rq   )ry   r   rO   r   rz   CreateForeignKeyOpr  r}   r~   joinsource_columnstarget_columnssource_schemasource_tabler  
compare_to)r-   r   r   r8   r9   _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 )Nr  Tz3Detected removed foreign key (%s)(%s) on table %s%sr  r  rq   )ry   r   rO   r   rz   r  r  r}   r~   r  r  r  r  r  r  )r-   r   r8   r9   
_remove_fk  s   

z)_compare_foreign_keys.<locals>._remove_fk)rP   r   r   r   r[   r   correct_for_autogen_foreignkeysrI   r_   rO   r   )r-   r   r   rV   r   r   rP   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_sigr8   )r-   r   r   r   r   r   rV   r9   _compare_foreign_keys  sp   




r  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   )rG   r  r  r   rz   DropTableCommentOpCreateTableCommentOp)r-   r   r   rV   r   r   r8   r8   r9   _compare_table_comment7  s.   	r  )r-   r&   r.   r)   r/   r0   )r-   r&   r6   r+   r/   r0   )r-   r&   r6   r+   rR   rS   r/   r0   )rc   rI   re   rI   rP   r!   r6   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   rV   r   r   r%   r   r%   r   r*   r-   r&   rP   r!   r/   r   )r-   r&   r   r*   r   r   rV   r   r   r   r   r   r/   r0   )r-   r&   r   r(   r   r   rV   r   r   r   r   rX  r   rX  r/   r0   )r-   r&   r   r(   r   r   rV   r   r   r"   r   rX  r   rX  r/   r0   )rp  rq  r-   r&   r/   r   )ry  r  r/   r  )r-   r&   r   r(   r   r   rV   r  r   r  r   rX  r   rX  r/   r0   )rV   r  r   r  r/   r0   )r-   r&   r   r(   r   r   rV   r   r   r   r   rX  r   rX  r/   r  )r-   r&   r   r(   r   r   rV   r   r   r"   r   rX  r   rX  r/   r  )r-   r&   r   r*   r   r   rV   r   r   r%   r   r%   r/   r0   )r-   r&   r   r*   r   r   rV   r   r   r   r   r   r/   r0   )b
__future__r   
contextlibloggingrz  typingr   r   r   r   r   r   r	   r
   r   r   r   
sqlalchemyr   r   r   ri   r   r   ri  sqlalchemy.sqlr   sqlalchemy.sql.elementsr   sqlalchemy.sql.schemar   r   r   sqlalchemy.utilr   rq   r   ddl._autogenr   r   
operationsr   r   r    sqlalchemy.engine.reflectionr!   r"   r#   r$   r%   alembic.autogenerate.apir&   alembic.ddl.implr'   alembic.operations.opsr(   r)   r*   r+   r,   	getLoggerr   r}   r:   
DispatcherrM   r4   dispatch_forrf   rb   immutabledictr   r   r   r   r   __annotations__r   r   r   contextmanagerr   r   r   rK  r)  rc  rf  rk  rx  r}  r  r  r  r  r  r  r  r8   r8   r8   r9   <module>   s   



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


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