o
    h5                  	   @  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( erd 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;e<Z=dd1d2Z>e"j?d3d4Z@dd7d8ZAe@Bd9dd<d=ZCddCdDZDe"EejFejGejHejIejHejIdEZJdFeKdG< ddOdPZLddRdSZMddUdVZNejOdd^d_ZPed`eeeef daZQe@BdbddedfZRdgdh ZSe@BdiddpdqZTe@BdiddsdtZUe@BdiddudvZVddydzZWdd}d~ZXdddZYdddZZdd Z[e@BdidddZ\e@BdidddZ]e@BdbdddZ^e@Bdbddd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                 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 r7   p/var/www/html/construction_image-detection-poc/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_schemasF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   rC   r;   	inspectordefault_schemaschemasr7   rA   r8   r3   H   s$   


r3   r   rQ   $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,   rT   r7   r8   	<genexpr>}   s    

z&_autogen_for_tables.<locals>.<genexpr>c                 S  s   g | ]}|j |jfqS r7   )r   rN   )r?   rS   r7   r7   r8   
<listcomp>       z'_autogen_for_tables.<locals>.<listcomp>)rO   rH   migration_contextversion_table_schemaversion_tableget_table_names
differenceupdater   sorted_tables_compare_tables)	r,   r5   rQ   rO   conn_table_namesr[   r\   tablesmetadata_table_namesr7   rV   r8   _autogen_for_tablesg   s4   
re   rb   rH   rd   rO   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 ]c\}}t||}	|	|jv }tj|||d	}|st|d
 jj| |j|d d  ||ddd rtj|g |d	}td ||||d  | s|j| |jtj
| td|	 qx| |}t }i }|D ]3\}}t||}	|	|jv }tj|||d	}|st|d
 jj| |j|d d ||||f< qt|dd dD ]d\}}|p-d }|r7d||f n|}	|||f }
|j|	 } |
|dd|rtj|g |d	}t||||
| | td |||||
 W d    n	1 sxw   Y  | s|j| q%d S )Nc                   s$   g | ]\}}| kr|nd |fqS Nr7   )r?   r   rU   )rP   r7   r8   rX      s    z#_compare_tables.<locals>.<listcomp>c                   s(   i | ]\}\}}| j t|| qS r7   )table_key_to_table	sa_schema_get_table_key)r?   no_dflt_schemar   rU   rA   r7   r8   
<dictcomp>   s    

z#_compare_tables.<locals>.<dictcomp>%s.%srS   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) bindrF   rG   r   zipr^   run_object_filtersr   appendCreateTableOp
from_tableloginfor)   rL   rM   is_emptyrh   MetaDatari   rc   r$   r   listenrZ   impl_compat_autogen_column_reflectreflect_tableDropTableOpintersectionsorted_compare_columns)rb   rd   rO   r5   r,   #metadata_table_names_no_dflt_schematname_to_tabler@   rU   rN   metadata_tablemodify_table_opsremoval_metadataexiststexisting_tablesexisting_metadataconn_column_info
conn_tabler7   )r,   rP   r8   ra      s   






	




	
ra   )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expressionsrN   unique)r   _tableindexduplicates_constraint)
rE   	enumerater   cr   rx   rh   r    adjust_reflected_dialect_optionsr|   )r   r   r   exprssortingnumcol_namerN   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   rX   L      z+_make_unique_constraint.<locals>.<listcomp>r   rN   unique_constraintduplicates_index)rh   r   r   r|   )r   r   r   uqr7   r   r8   _make_unique_constraintH  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_schemarl   optionsc                   r   r7   r   r   r   r7   r8   rX   `  r   z%_make_foreign_key.<locals>.<listcomp>constrained_columnsc                   s   g | ]}d  |f qS )rl   r7   )r?   n)rU   r7   r8   rX   a  rY   referred_columnsonupdateondelete
deferrable	initiallyrN   )r   r   r   r   rN   )rE   rh   r   append_constraint)r   r   r   constr7   )r   rU   r8   _make_foreign_keyV  s   

r   Optional[str]rU   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 )Nrl   c                 s  s    | ]	}|j s|jV  qd S rf   systemrN   r?   r   r7   r7   r8   rW   x  s    
z#_compare_columns.<locals>.<genexpr>c                 S  s   i | ]	}|j s|j|qS r7   r   r   r7   r7   r8   rk   {  s
    z$_compare_columns.<locals>.<dictcomp>c              	     s*   i | ]}  |jd dr|j|qS )column
table_namerT   )r>   rN   r   r,   r   rU   r7   r8   rk     s    r   FzDetected added column '%s.%s'r   TzDetected removed column '%s.%s')r   r   r^   rw   r   rx   AddColumnOpfrom_column_and_tablenamer{   r|   r   r'   rL   rM   has_changesrH   DropColumnOp)r   rU   r   r   r   r,   rO   rN   metadata_col_namesmetadata_cols_by_nameconn_col_namesr   colnamemetadata_colconn_colalter_column_opr7   r   r8   r   m  sn   




r   _C)boundrS   
modify_opsOptional[Table]c           $        sN   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|j	d}	d
W n tyH   Y n  t	yP   Y nw  	fdd|	D }	|	D ]	}|
drgd}q^z	|j	d}
W n	 tyz   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|rc|j|v rcqP||v r|| \}tfd'd|D r|j|vr|| | qP|| qPt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sJ qtt||D ]}!||! }"||" q|D ]}#|#|vr#|||#  qd S )-Nc                 S     h | ]
}t |tjr|qS r7   )
isinstancerh   r   r?   r   r7   r7   r8   rB         
z/_compare_indexes_and_uniques.<locals>.<setcomp>Fr   Tc              	     (   g | ]}  |d  ddr|qS )rN   r   r   r=   r   r   r7   r8   rX         z0_compare_indexes_and_uniques.<locals>.<listcomp>r   c              	     r   )rN   r   r   r=   r?   r   r   r7   r8   rX     r   c                   s   h | ]}t | qS r7   )r   )r?   uq_defr   r   r7   r8   rB     s    
c                 S  s   h | ]}|d ur|qS rf   r7   )r?   r   r7   r7   r8   rB     s
    c                 3  s    | ]	}t | V  qd S rf   )r   r   r   r7   r8   rW     s    
z/_compare_indexes_and_uniques.<locals>.<genexpr>c                      h | ]}  |qS r7   _create_metadata_constraint_sigr   r   r7   r8   rB   3      c                   r   r7   r   r   r   r7   r8   rB   8      
c                   r   r7    _create_reflected_constraint_sigr   r   r7   r8   rB   <  r   c                   r   r7   r   r   r   r7   r8   rB   @  r   c                   s$   i | ]}|j rtt| |qS r7   )is_namedr   strmd_name_to_sql_namer   rA   r7   r8   rk   E  s    z0_compare_indexes_and_uniques.<locals>.<dictcomp>c                 S     i | ]}|j |qS r7   rN   r   r7   r7   r8   rk   N  rs   c                 S  r   r7   r   r   r7   r7   r8   rk   O  rs   c                 S  s    i | ]}t |jr|j|qS r7   )r   constraint_name_stringrN   r   r7   r7   r8   rk   P  s    
c                   s   i | ]}||  | fqS r7   r7   )r?   rN   )conn_indexes_by_nameconn_uniques_by_namer7   r8   rk   V  s    c                 S  r   r7   unnamedr   r7   r7   r8   rk   _  rs   c                 S  r   r7   r   r   r7   r7   r8   rk   `      c                   s$   i | ]}t |j js|j|qS r7   )r   _constraint_is_namedr   rF   r   r   rA   r7   r8   rk   c  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   rw   r   rN   r   rx   CreateIndexOp
from_indexr{   r|   r   r   AddConstraintOpfrom_constraintr   )r,   is_create_tableis_drop_tabler   supports_unique_constraintsr7   r8   	obj_addeds  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_uniquerw   r   rN   r   rx   DropIndexOpr   r{   r|   r   DropConstraintOpr   r   )r,   r  r  r   r  rU   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   rw   r   rN   r{   r|   r   rx   r  r   r   r   r  r   r   )r	  r
  r  )r,   r   rU   r7   r8   obj_changed  s<   
z1_compare_indexes_and_uniques.<locals>.obj_changedc                 3  s    | ]	} j |j kV  qd S rf   r   )r?   meta_idx)conn_idxr7   r8   rW     s
    

r   zunique constraintz5Cannot compare %s %r, assuming equal and skipping. %s)r   r+   )r	  r+   r
  r+   r  r   ) rO   rZ   r   constraintsrH   indexes	frozensetget_unique_constraintsNotImplementedError	TypeErrorrE   get_indexes_correct_for_uq_duplicates_uixrF   correct_for_autogen_constraintsunionr   r   r^   r   r   allr   typecompare_to_reflectedis_differentmessageis_skipr{   r|   rN   is_equal)$r,   r   r   rU   r   r   rO   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_sigr7   )r,   r  r   r   r   r   r  r  r   r   r  rU   r8   _compare_indexes_and_uniques  s.  	
	






		
! %




r8  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rF   r7   r8   rX   .  s    z2_correct_for_uq_duplicates_uix.<locals>.<listcomp>c                 S  s   h | ]
\}}|d ur|qS rf   r7   r?   rN   r;  r7   r7   r8   rB   3  s    z1_correct_for_uq_duplicates_uix.<locals>.<setcomp>c                   s$   h | ]\}}|d u r  |jqS rf   )r   r   r=  r   r7   r8   rB   7  s
    
c                   s   h | ]}|j rt| qS r7   )r   r   r9  r:  r<  r7   r8   rB   =  s    
c                 S  s   i | ]	}|j r|j|qS r7   )r   rN   r:  r7   r7   r8   rk   E  s    z2_correct_for_uq_duplicates_uix.<locals>.<dictcomp>c                 S  s   i | ]}|j d  r|j|qS )r   )r|   rN   r:  r7   r7   r8   rk   G  s    )r   r   rJ   )r'  r#  r   r!  rF   r   metadata_cons_namesmetadata_uq_namesunnamed_metadata_uqsmetadata_ix_namesconn_ix_namesuqs_dupe_indexesoverlapr7   )rF   r   r8   r    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   rU   r   r   r   metadata_col_nullableconn_col_nullabler7   r7   r8   _compare_nullableZ  s6   

rP  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)rS   _autoincrement_columnkwrQ  )r,   r   r   rU   r   r   r   r7   r7   r8   _setup_autoincrement  s   


rT  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|   rZ   _compare_typemodify_type)
r,   r   r   rU   r   r   r   	conn_typemetadata_typeisdiffr7   r7   r8   rY    s<   
rY  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rF   compile_kwargs)r   rh   DefaultClauseargr   compilerF   )r^  r,   r7   r7   r8   "_render_server_default_for_compare  s   
rf  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]ro   )resublower)rg  r7   r7   r8   _normalize_computed_default  s   rk  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 )Nr`  Tra  ro   )r   r   rh   ComputedrJ  rg  re  rF   rk  r   _warn_computed_not_supported)	r,   r   r   rU   r   r   r   rendered_metadata_defaultrendered_conn_defaultr7   r7   r8   _compare_computed_default  s2   	rp  c                 C  s   t d| |f  d S )Nz,Computed default on %s.%s cannot be modified)r   warn)rU   r   r7   r7   r8   rm  	  s   rm  c                 C  s&   | j j}||j|j\}}	}
||
fS rf   )rZ   r   _compare_identity_defaultrJ  )r,   r   r   rU   r   r   r   r   diffignored_attris_alterr7   r7   r8   rr    s
   	
rr  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')rJ  r   rI  rp  rm  rL  existing_server_defaultrr  modify_server_defaultr{   r|   r   rf  r   r   rd  r   rZ   _compare_server_default)r,   r   r   rU   r   r   r   r^  conn_col_defaultrs  ru  rn  ro  is_diffr7   r7   r8   ry    sp   


	
	ry  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')rF   supports_commentscommentexisting_commentmodify_commentr{   r|   )	r,   r   r   rU   r   r   r   metadata_commentconn_col_commentr7   r7   r8   _compare_column_commentj  s   
r  c                   s  d u s|d u r
d S  j }dd |jD } fdd|jdD }fdd|D }	 jj jj|	| fdd|D }
fdd|	D }|rcd	|d
 v rcd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   rh   r   r?   fkr7   r7   r8   rB     r   z(_compare_foreign_keys.<locals>.<setcomp>c              	     r   )rN   foreign_key_constraintr   r=   r  r   r7   r8   rX     r   z)_compare_foreign_keys.<locals>.<listcomp>r   c                   s   h | ]}t | qS r7   )r   )r?   r   r   r7   r8   rB     r   c                   r   r7   r   r  r   r7   r8   rB     r   c                   r   r7   r   r  r   r7   r8   rB     r   r   r   c                 S  r   r7   r   r   r7   r7   r8   rk     rs   z)_compare_foreign_keys.<locals>.<dictcomp>c                 S  r   r7   r   r   r7   r7   r8   rk     rs   c                 S  r   r7   unnamed_no_optionsr   r7   r7   r8   rk     rs   c                 S  r   r7   r  r   r7   r7   r8   rk     r   c                 S     i | ]}|j d ur|j |qS rf   r   r   r7   r7   r8   rk     s    c                 S  r  rf   r   r   r7   r7   r8   rk     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.ro   )rw   r   rN   r   rx   CreateForeignKeyOpr   r{   r|   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 )Nr  Tz3Detected removed foreign key (%s)(%s) on table %s%sr  r  ro   )rw   r   rN   r   rx   r  r   r{   r|   r  r  r  r  r  r  )r,   r   r7   r8   
_remove_fk  s   

z)_compare_foreign_keys.<locals>._remove_fk)
rO   r  get_foreign_keysrZ   r   correct_for_autogen_foreignkeysrH   r^   rN   r   )r,   r   r   rU   r   r   rO   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_sigr7   )r,   r   r   r   r   r   rU   r8   _compare_foreign_keys  sl   







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   )rF   r}  r~  r   rx   DropTableCommentOpCreateTableCommentOp)r,   r   r   rU   r   r   r7   r7   r8   _compare_table_comment  s.   	r  )r,   r%   r-   r(   r.   r/   )r,   r%   r5   r*   r.   r/   )r,   r%   r5   r*   rQ   rR   r.   r/   )rb   rH   rd   rH   rO   r    r5   r*   r,   r%   r.   r/   )r   r&   r   r   r   r$   r.   r   )r   r&   r   r   r   r$   r.   r   )r   r   r   r$   r.   r   )r   r   rU   r   r   r$   r   r$   r   r)   r,   r%   rO   r    r.   r   )r,   r%   r   r)   r   r   rU   r   r   r   r   r   r.   r/   )r,   r%   r   r'   r   r   rU   r   r   r   r   rE  r   rE  r.   r/   )r,   r%   r   r'   r   r   rU   r   r   r!   r   rE  r   rE  r.   r/   )r^  r_  r,   r%   r.   r   )rg  r   r.   r   )r,   r%   r   r'   r   r   rU   r   r   r   r   rE  r   rE  r.   r/   )rU   r   r   r   r.   r/   )r,   r%   r   r'   r   r   rU   r   r   r   r   rE  r   rE  r.   rv  )r,   r%   r   r'   r   r   rU   r   r   r!   r   rE  r   rE  r.   r|  )r,   r%   r   r)   r   r   rU   r   r   r$   r   r$   r.   r/   )r,   r%   r   r)   r   r   rU   r   r   r   r   r   r.   r/   )`
__future__r   
contextlibloggingrh  typingr   r   r   r   r   r   r	   r
   r   r   r   
sqlalchemyr   r   r   rh   r   r   rW  sqlalchemy.sqlr   sqlalchemy.sql.schemar   r   r   sqlalchemy.utilr   ro   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{   r9   
DispatcherrL   r3   dispatch_forre   ra   immutabledictr   r   r   r   r   __annotations__r   r   r   contextmanagerr   r   r8  r  rP  rT  rY  rf  rk  rp  rm  rr  ry  r  r  r  r7   r7   r7   r8   <module>   s   



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


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