
    ZeIi              	         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rNd 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j<        e=          Z>d|d2Z? e$j@        d34          ZAd}d7ZBeAC                    d8          d~d;            ZDddAZE e$jF        ejG        ejH        ejI        ejJ        ejI        ejJ        dB          ZKdCeLdD<   ddLZMddNZNddPZOejP        ddX            ZQ edYee eef         Z          ZR G d[ d\          ZSeAC                    d]          dd`            ZTda ZUeAC                    db          ddi            ZVeAC                    db          ddk            ZWeAC                    db          ddl            ZXddoZYddrZZddsZ[ddtZ\du Z]eAC                    db          ddw            Z^eAC                    db          ddy            Z_eAC                    d]          ddz            Z`eAC                    d]          dd{            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                    |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       a/var/www/html/MCyber-Diagnostic/venv/lib/python3.11/site-packages/alembic/autogenerate/compare.py_populate_migration_scriptr;   <   sH     #3B7K$7;M+666]+++++    T)uselistr8   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     r:   	<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.   r8   rG   r?   	inspectordefault_schemaschemass   `      r:   r6   r6   I   s    !+J!!!%*../@%HHO":..I';N i002233,---'''D&     G "...?#:#?@@g    r<   r   rU   $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_nameNrB   )rD   tnamer.   rZ   s     r:   	<genexpr>z&_autogen_for_tables.<locals>.<genexpr>~   s^        
  
//w <  
%  
  
  
  
  
  
r<   c                *    g | ]}|j         |j        fS  )r   rR   )rD   rY   s     r:   
<listcomp>z'_autogen_for_tables.<locals>.<listcomp>   s!    OOO%,
	#OOOr<   )rS   rL   migration_contextversion_table_schemaversion_tableget_table_names
differenceupdater   sorted_tables_compare_tables)
r.   r8   rU   rS   conn_table_namesra   rb   tablesmetadata_table_namesrZ   s
   `        @r:   _autogen_for_tablesrk   h   sD     )I7:uu 	)>  $5CM 
 
Y..k.BBCC...&& 2@A F 	  
  
  
  
  
 
  
  
 	
 	
 	
 	
 &OO1NOOO j'7899      r<   rh   rL   rj   rS   r"   c           
     D	   |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 ]k\  }}t#          j        ||          }	|	|j        v }t#          j        |||          }|sWt-          j        |dj        j                            |                     t7          |                              |d 	                               ||dd
d           rt          j        |g |          }t                              d          ||||d            |                                s|j                            |           |j                            t          j        
                    |                     t                              d|	           m|                     |          }t#          j                    }i }|D ]\  }}t#          j        ||          }	|	|j        v }t#          j        |||          }|sWt-          j        |dj        j                            |                     t7          |                              |d 	           ||||f<   t?          |d           D ]\  }}|pd }|r|d|n|}	|||f         }
|j        |	         }                    |
|dd|          rt          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^   )rD   r   r[   rT   s      r:   r_   z#_compare_tables.<locals>.<listcomp>   s@     	
 	
 	
 //VVT5A	
 	
 	
r<   c                ^    i | ])\  }\  }}|j         t          j        ||                   *S r^   )table_key_to_table	sa_schema_get_table_key)rD   no_dflt_schemar   r[   r.   s       r:   
<dictcomp>z#_compare_tables.<locals>.<dictcomp>   sM        ,NOVU 	:$UF33
  r<   .rY   FzDetected added table %rr   column_reflectinclude_columnsTzDetected removed table %rc                &    | d         pd| d         fS )Nr       r^   )xs    r:   <lambda>z!_compare_tables.<locals>.<lambda>   s    1Q4:2qt:L r<   )key)!bindrJ   rK   r   ziprd   run_object_filtersr   appendCreateTableOp
from_tableloginfor+   rP   rQ   is_emptyrq   MetaDatarr   ri   r&   r   listenr`   impl_compat_autogen_column_reflect_InspectorConvreflect_tableDropTableOpintersectionsorted_compare_columns)rh   rj   rS   r8   r.   #metadata_table_names_no_dflt_schematname_to_tablerE   r[   rR   metadata_tablemodify_table_opsremoval_metadataexiststexisting_tablesexisting_metadataconn_column_info
conn_tablerT   s       `              @r:   rg   rg      s    ^+?N +5	
 	
 	
 	
!5	
 	
 	
+ +'    03/1E0
 0
	  N ?(334DEE 9 95'(3!!!UU##e'E
3--E7E4
 
 	9 O""!,,^<<   HH.555"1%AFFF  ))    $,,.. 9&&'7888 )++$//0DEE 8 85'q11)00OE#3A>>> 
	ML 16..    9%%33At3LLL--atLL 
	8"1%AFFF  ))!11eQ   $,,.. 9&&'7888O""3?#=#=a#@#@AAAHH0$777&334HIIO!*,,# ) )5'q11*11OE#4Q??? 		ML 16..y99   9%%33At3LLL'(!U$$?0L0LMMM 9 95I'(3!!!UU##e'E
3&-d3
--E7E:
 
 	9  #1%AFFF!     $$W--#$"                $ $,,.. 9&&'7888;9 9s   2(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expressionsrR   unique)r   _tableindexduplicates_constraint)
rI   	enumerater   cr   r   rq   r    adjust_reflected_dialect_optionsr   )r   r   r   exprssortingnumcol_namerR   itemoperatorixs              r:   _make_indexr   *  sT    35Ejj)**G"6.#9::  X F****-(-D::DDD<)D 	Btw#DM B B5551(;DAADT	v
	
 
 h	
 

 
/
/
@
@
 
B &((+12I+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   rD   cnamer   s     r:   r_   z+_make_unique_constraint.<locals>.<listcomp>N  s     	B	B	B%*,u
	B	B	Br<   r   rR   unique_constraintduplicates_index)rq   r   r   r   )r   r   r   uqs     ` r:   _make_unique_constraintr   J  s     
	#	B	B	B	B6.+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_schemaru   optionsc                *    g | ]}j         |         S r^   r   r   s     r:   r_   z%_make_foreign_key.<locals>.<listcomp>b  s     HHHe	HHHr<   constrained_columnsc                    g | ]	}d |
S )ru   r^   )rD   nr[   s     r:   r_   z%_make_foreign_key.<locals>.<listcomp>c  s$    BBB!EEE11	BBBr<   referred_columnsonupdateondelete
deferrable	initiallyrR   )r   r   r   r   rR   )rI   rq   r   append_constraint)r   r   r   constr[   s    `  @r:   _make_foreign_keyr   X  s     #$E  =!"3444ee<jjB''G*HHHH&1F*GHHHBBBBv.@'ABBBZ((Z((;;|,,++k**F^  E   '''Lr<   Optional[str]r[   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 )Nru   c              3  2   K   | ]}|j         	|j        V  d S rn   systemrR   rD   r   s     r:   r\   z#_compare_columns.<locals>.<genexpr>z  s?       $ $$	$ $ $ $ $ $r<   c                ,    i | ]}|j         	|j        |S r^   r   r   s     r:   rt   z$_compare_columns.<locals>.<dictcomp>}  s3       18	  r<   c           	     ^    i | ])}                     |j        d d          !|j        |*S )column
table_namerZ   )rC   rR   )rD   r   r.   r   r[   s     r:   rt   z$_compare_columns.<locals>.<dictcomp>  sT       ++FHU6JJ
 
	  r<   r   FzDetected added column '%s.%s'r   TzDetected removed column '%s.%s')r   r   rd   r   r   r   AddColumnOpfrom_column_and_tablenamer   r   r   r)   rP   rQ   has_changesrL   DropColumnOp)r   r[   r   r   r   r.   rS   rR   metadata_col_namesmetadata_cols_by_nameconn_col_namesr   colnamemetadata_colconn_colalter_column_ops   ``   `          r:   r   r   o  s      )/9fffee$$ED# $ $&($ $ $   )+         N $..~>> 	C 	C--!%(%5$
 
 	C  ''99E#8#?   
 HH4dEBBB%22>BB 9 9,W5<(11'8UH
 
 	 +E76JJJX&&	
 	
 	
 &&(( 	9 ''888	EEE^$$//0BCC 	E 	E--L$
 
 	E  '' ::E:<#6   
 HH6eDDD	E 	Er<   _C)boundc                  <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
r   rS   c                    || _         d S rn   r   )selfrS   s     r:   __init__z_InspectorConv.__init__  s    "r<   c                    |s|S |D ]=}|d         3t          |d         t                    st          |d                   |d<   >|S )NrR   )
isinstancer   r   constsr   s      r:   _apply_reflectinfo_convz&_InspectorConv._apply_reflectinfo_conv  s]     	M 	4 	4EV}(ft2 2( !%U6] 3 3fr<   c                    |s|S |D ]<}|j         3t          |j         t                    st          |j                   |_         =|S rn   )rR   r   r   r   s      r:   _apply_constraint_convz%_InspectorConv._apply_constraint_conv  sN     	M 	. 	.Ez%jT.J.J%!%*--
r<   c                L    |                       | j        j        |i |          S rn   )r   rS   get_indexesr   argskws      r:   r   z_InspectorConv.get_indexes  s1    ++&DN&333
 
 	
r<   c                L    |                       | j        j        |i |          S rn   )r   rS   get_unique_constraintsr   s      r:   r   z%_InspectorConv.get_unique_constraints  s1    ++1DN14>2>>
 
 	
r<   c                L    |                       | j        j        |i |          S rn   )r   rS   get_foreign_keysr   s      r:   r  z_InspectorConv.get_foreign_keys  s1    +++DN+T8R88
 
 	
r<   c                   | j                             ||           |                     |j                   |                     |j                   d S )Nrw   )rS   r   r   constraintsindexes)r   rY   rx   s      r:   r   z_InspectorConv.reflect_table  sR    $$UO$LLL
 	##E$5666##EM22222r<   N)__name__
__module____qualname__	__slots__r   r   r   r   r   r  r   r^   r<   r:   r   r     s        I# # #    
 
 


 
 


 
 

3 3 3 3 3r<   r   rY   
modify_opsOptional[Table]c                	   $%&'()*  j         }d u (|d u ) j        j        '|&d |j        D             }t	          |j                  }nt	                      }t	                      }t                      x}	}
d*d}	 t          |                                        }	d* fd|	D             }	|	D ]}|	                    d          rd}n# t          $ r Y nt          $ r Y nw xY w	 t          |                                        }
 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||         }t1          |          t1          |          k    r ||            ||           m|                    |          }|j        r ||||j                   |j        r;t/          |          rd!nd"} t:                              d#| |j        |j                   |j         sJ t%          t	          |                              |                    D ]}!||!         }" ||"           |D ]}#|#|vr |||#                    d S )&Nc                F    h | ]}t          |t          j                  |S r^   )r   rq   r   rD   r   s     r:   rF   z/_compare_indexes_and_uniques.<locals>.<setcomp>  s;     '
 '
 '
"i899'
'
 '
 '
r<   Fr   Tc           	     T    g | ]$}                     |d          dd          "|%S )rR   r   r   rB   )rD   r   r.   r   r[   s     r:   r_   z0_compare_indexes_and_uniques.<locals>.<listcomp>  sT       "33vJ'#(@@   r<   r   c           	     T    g | ]$}                     |d          dd          "|%S )rR   r   r   rB   )rD   r   r.   r   r[   s     r:   r_   z0_compare_indexes_and_uniques.<locals>.<listcomp>/  sT       "33vJ#(@@   r<   c                2    h | ]}t          |          S r^   )r   )rD   uq_defr   r   s     r:   rF   z/_compare_indexes_and_uniques.<locals>.<setcomp>?  s5        (fjAA  r<   c                    h | ]}||S rn   r^   )rD   r   s     r:   rF   z/_compare_indexes_and_uniques.<locals>.<setcomp>D  s,     
 
 
  	  !  r<   c              3  :   K   | ]}t          |          V  d S rn   )r   )rD   r   r   r   s     r:   r\   z/_compare_indexes_and_uniques.<locals>.<genexpr>F  s@        68D"j11     r<   c                :    h | ]}                     |          S r^   _create_metadata_constraint_sigrD   r   r   s     r:   rF   z/_compare_indexes_and_uniques.<locals>.<setcomp>g  s7     ' ' ' 	,,R00' ' 'r<   c                :    h | ]}                     |          S r^   r  rD   r   r   s     r:   rF   z/_compare_indexes_and_uniques.<locals>.<setcomp>l  s4       57,,R00  r<   c                :    h | ]}                     |          S r^    _create_reflected_constraint_sigr  s     r:   rF   z/_compare_indexes_and_uniques.<locals>.<setcomp>p  s4       68--b11  r<   c                :    h | ]}                     |          S r^   r  r  s     r:   rF   z/_compare_indexes_and_uniques.<locals>.<setcomp>t  s4       68--b11  r<   c                p    i | ]2}|j         	t          t          |                                        |3S r^   )is_namedr   strmd_name_to_sql_name)rD   r   r.   s     r:   rt   z0_compare_indexes_and_uniques.<locals>.<dictcomp>y  sK       :S!''88991  r<   c                    i | ]
}|j         |S r^   rR   r   s     r:   rt   z0_compare_indexes_and_uniques.<locals>.<dictcomp>  s    GGG!AFAGGGr<   c                    i | ]
}|j         |S r^   r#  r   s     r:   rt   z0_compare_indexes_and_uniques.<locals>.<dictcomp>  s    @@@!AFA@@@r<   c                P    i | ]#}t          j        |j                  |j        |$S r^   )r    constraint_name_stringrR   r   s     r:   rt   z0_compare_indexes_and_uniques.<locals>.<dictcomp>  s?       -af55	  r<   c                2    i | ]}||         |         fS r^   r^   )rD   rR   conn_indexes_by_nameconn_uniques_by_names     r:   rt   z0_compare_indexes_and_uniques.<locals>.<dictcomp>  s<        	#D)+?+EF  r<   c                    i | ]
}|j         |S r^   unnamedr  s     r:   rt   z0_compare_indexes_and_uniques.<locals>.<dictcomp>  s    LLLb2:rLLLr<   c                    i | ]
}|j         |S r^   r+  r  s     r:   rt   z0_compare_indexes_and_uniques.<locals>.<dictcomp>  s)       
B  r<   c                ^    i | ])}t          j        |j        j                  !|j        |*S r^   )r    _constraint_is_namedr   rJ   r,  )rD   r   r.   s     r:   rt   z0_compare_indexes_and_uniques.<locals>.<dictcomp>  sJ          /Ho-
 
 

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   rR   r   r   CreateIndexOp
from_indexr   r   r   r   AddConstraintOpfrom_constraint)r0  r.   is_create_tableis_drop_tabler	  supports_unique_constraintss    r:   	obj_addedz/_compare_indexes_and_uniques.<locals>.obj_added  sk    	11	38WeT   %%c&7&B&B39&M&MNNN5H$    	  s^^ 	.   - 11	38%8%  
 %%'77	BB   AH$    
 
 Lr<   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   rR   r   r   DropIndexOpr3  r   r   r   DropConstraintOpr5  )r0  r.   r6  r7  r	  r8  r[   s    r:   obj_removedz1_compare_indexes_and_uniques.<locals>.obj_removed  sg    	} %@  11	38WdD  M %%co&@&@&K&KLLL:CHeLLLLL	M M
 s^^ 	 -  11	38%8$  
 %%(88CC   AH    
 
 Lr<   oldnewmsgr   c                   t          |           rt          |          sJ                     |j        |j        dd| j                  rt                              d| j        |           j                            t          j        	                    | j                             j                            t          j
        	                    |j                             d S d S t          |           rt          |          sJ                     |j        |j        dd| j                  rt                              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   rR   r   r   r   r   r<  r3  r2  r   r=  r5  r4  )r?  r@  rA  r.   r	  r[   s      r:   obj_changedz1_compare_indexes_and_uniques.<locals>.obj_changed  s   
  	$$$$$11	38WeSY  O 938UC   %%co&@&@&K&KLLL%%c&7&B&B39&M&MNNNNNO O s^^ 	S>>!!!11	38%8%   EH	   %%(88CC   %%'77	BB       Lr<   c              3  8   K   | ]}j         |j         k    V  d S rn   r+  )rD   meta_idxconn_idxs     r:   r\   z/_compare_indexes_and_uniques.<locals>.<genexpr>  sB          $(88     r<   r   zunique constraintz5Cannot compare %s %r, assuming equal and skipping. %s)r0  r-   )r?  r-   r@  r-   rA  r   )!rS   r`   r   r  rL   r  	frozensetr   r   rI   NotImplementedError	TypeErrorr   _correct_for_uq_duplicates_uixrJ   correct_for_autogen_constraintsunionr   r   rd   r   r,  allr   typecompare_to_reflectedis_differentmessageis_skipr   r   rR   is_equal)+r.   r	  r   r[   r   r   rS   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_uniquesr9  r>  rC  removed_nameconn_objconn_uqexisting_namemetadata_obj
comparisonthing
added_namer0  uq_sigrF  r(  r)  r   r6  r7  r8  s+   `````                               @@@@@@@r:   _compare_indexes_and_uniquesrl    s"     )I D(O"d*M,1D !'
 '
$0'
 '
 '
#
 ~566&)ee#55"+++-L<"'27/	G))44KKf L  L +/'     &  L # G G66,-- GBF?G# # 	 	 	D 	 	 	 D		$	))44@@f A  L     &  LL # 	 	 	D	  	55LL    *  L

 
    <H  
 
 
 3 
&'#	
 	
 	
 	((#	  ' ' ' '-' ' '#
   ;K     <H     <H  
   0667KLL  N HG/FGGG@@/?@@@ (../?@@  J    ,--:: 
 
   ML4KLLL !@         1               B          @# # # # # # # #J s:99.IIJJ " "l+h	" $<<<000 3L AGX    $8    &
 O+BBBG$$$H%%%K!!!!N 3 3 @ @ L LMM "+ "+%m4/// 3M BGXL)) ##"!-0H>>T,////K!!!Il####%::8DDJ& +HlJ4FGGGG# +  ,H55NGG;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.2$D' '
D43D4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rD   consrJ   s     r:   r_   z2_correct_for_uq_duplicates_uix.<locals>.<listcomp>b  s;        
	/g	>	>E  r<   c                    h | ]	\  }}||
S rn   r^   )rD   rR   rq  s      r:   rF   z1_correct_for_uq_duplicates_uix.<locals>.<setcomp>g  s(       td6F6F6F6Fr<   c                N    h | ]!\  }}|                     |          j        "S rn   )r  r,  )rD   rR   rq  r   s      r:   rF   z1_correct_for_uq_duplicates_uix.<locals>.<setcomp>k  s;       D$< 	,,T22:<<r<   c                H    h | ]}|j         	t          j        |          S r^   )r   r    ro  rp  s     r:   rF   z1_correct_for_uq_duplicates_uix.<locals>.<setcomp>q  s>       ;.tW==  r<   c                ,    i | ]}|j         	|j        |S r^   )r   rR   rD   rq  s     r:   rt   z2_correct_for_uq_duplicates_uix.<locals>.<dictcomp>y  s#    MMMMTYMMMr<   c                8    i | ]}|j         d          |j        |S )r   )r   rR   rv  s     r:   rt   z2_correct_for_uq_duplicates_uix.<locals>.<dictcomp>{  s:       9'(	4  r<   )r  r,  rN   )r[  rW  rT  rU  rJ   r   metadata_cons_namesmetadata_uq_namesunnamed_metadata_uqsmetadata_ix_namesconn_ix_namesuqs_dupe_indexesoverlaps       ``       r:   rJ  rJ  O  sh   &   /  
 2     -     $   NMMMMM +   $ 
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rt          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   r[   r   r   r   metadata_col_nullableconn_col_nullables	            r:   _compare_nullabler    s     )1 )(9O% 5553+X-D 	 7EE		 7 /1H 	 HHE     /DO+HH//?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)rY   _autoincrement_columnr   r  )r.   r   r   r[   r   r   r   s          r:   _setup_autoincrementr    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')
rN  existing_type_type_affinitysqltypesNullTyper   r   r`   _compare_typemodify_type)
r.   r   r   r[   r   r   r   	conn_typemetadata_typeisdiffs
             r:   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rJ   compile_kwargs)r   rq   DefaultClauseargr   compilerJ   )r  r.   s     r:   "_render_server_default_for_comparer    s     "I$;<< 	&*C00 	/3" $,,+3$3T#: -      "C(( tr<   sqltextr   c                R    t          j        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]rz   )resublower)r  s    r:   _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  rz   )r   r   rq   Computedr  r  r  rJ   r  r   _warn_computed_not_supported)	r.   r   r   r[   r   r   r   rendered_metadata_defaultrendered_conn_defaults	            r:   _compare_computed_defaultr    s    !$Y!<==EMM#++T2 	N 	
 	
! ! !<!! ! ()9+=>> # ##+33'/ /6 4  !
 !
 !($&!!$?%% %!! !# $999$UE22222 :9r<   c                <    t          j        d| d|d           d S )NzComputed default on ru   z cannot be modified)r   warn)r[   r   s     r:   r  r  =  s'    IIuuuMNNNNNr<   c                j    | j         j        }|                    |j        |j                  \  }}	}
||
fS rn   )r`   r   _compare_identity_defaultr  )r.   r   r   r[   r   r   r   r   diffignored_attris_alters              r:   r  r  A  sB     ,1D#'#A#A#X%<$ $ D, >r<   Optional[bool]c           	        |j         }|j         }||dS t          j        |          r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')r  r    r  r  r  r  existing_server_defaultr  modify_server_defaultr   r   r   r  r   r   r  r   r`   _compare_server_default)r.   r   r   r[   r   r   r   r  conn_col_defaultr  r  r  r  is_diffs                 r:   r  r  R  s    $2.$4$<u./?@@ 	
(
 
 	
 ./?@@ $UE222u.*  *P 3C/2
 
h  		4DO1 54LL   %Go%
 %
!
 5END&''+00$ 	 3C/!3KK%!	
 
  	P4DO1HH@%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')rJ   supports_commentscommentexisting_commentmodify_commentr   r   )	r.   r   r   r[   r   r   r   metadata_commentconn_col_comments	            r:   _compare_column_commentr    s     "..."4 t#+'$4$<u'7O$+++)9&2E5AAA4r<   c                    |d S  j         }d |j        D             } fdt          |                                        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   rq   r   )rD   fks     r:   rF   z(_compare_foreign_keys.<locals>.<setcomp>  s;       b)899
  r<   c           	     T    g | ]$}                     |d          dd          "|%S )rR   foreign_key_constraintr   rB   )rD   r  r.   r   r[   s     r:   r_   z)_compare_foreign_keys.<locals>.<listcomp>  sV     
 
 
 ++vJ$ 88
 



 
 
r<   r   c                0    h | ]}t          |          S r^   )r   )rD   r   r   s     r:   rF   z(_compare_foreign_keys.<locals>.<setcomp>  s1       16%,,  r<   c                :    h | ]}                     |          S r^   r  rD   r  r   s     r:   rF   z(_compare_foreign_keys.<locals>.<setcomp>  s4       57,,R00  r<   c                :    h | ]}                     |          S r^   r  r  s     r:   rF   z(_compare_foreign_keys.<locals>.<setcomp>  s4       68--b11  r<   r   r   c                    i | ]
}|j         |S r^   r+  r   s     r:   rt   z)_compare_foreign_keys.<locals>.<dictcomp>  s    >>>A19a>>>r<   c                    i | ]
}|j         |S r^   r+  r   s     r:   rt   z)_compare_foreign_keys.<locals>.<dictcomp>  s    FFFqy!FFFr<   c                    i | ]
}|j         |S r^   unnamed_no_optionsr   s     r:   rt   z)_compare_foreign_keys.<locals>.<dictcomp>  s    IIIq1/IIIr<   c                    i | ]
}|j         |S r^   r  r   s     r:   rt   z)_compare_foreign_keys.<locals>.<dictcomp>  s*     
 
 
()A !
 
 
r<   c                ,    i | ]}|j         	|j         |S rn   r#  r   s     r:   rt   z)_compare_foreign_keys.<locals>.<dictcomp>  s*       qv/A/A/A/Ar<   c                ,    i | ]}|j         	|j         |S rn   r#  r   s     r:   rt   z)_compare_foreign_keys.<locals>.<dictcomp>  s#    NNNa16;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.rz   )r   r   rR   r   r   CreateForeignKeyOpr5  r   r   joinsource_columnstarget_columnssource_schemasource_table)r0  
compare_tor.   r   r   s     r:   _add_fkz&_compare_foreign_keys.<locals>._add_fk   s    --Isx!95*
 
 	  ''&66u{CC   HH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  rz   )r   r   rR   r   r   r=  r5  r   r   r  r  r  r  r  )r0  r  r.   r   s     r:   
_remove_fkz)_compare_foreign_keys.<locals>._remove_fk  s    --Isx!94
 
 	  ''$44SY??   HHE		#,--		#,---0->F)))B     	 	r<   )rS   r  r   r  r`   r   correct_for_autogen_foreignkeysrL   rd   rR   r   )r.   r   r   r[   r   r   rS   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   `````                @@r:   _compare_foreign_keysr    s4    ^3)I  ,  L
 
 
 
 
 
 ++<<& = 
 

 
 
M   :G  H ,1D %*JJ,     ;G     <D  L  
mA&666>>>>>FF5EFFF JILIII
 
-=
 
 
 +   ON<NNN            $ ?++667JKK * *,111 :!555 %UZ066 
 Juj))),--88II ' '	#I.O++ :!111 !,22 
 GE:&&&' '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   )rJ   r  r  r   r   DropTableCommentOpCreateTableCommentOp)r.   r   r   r[   r   r   s         r:   _compare_table_commentr  7  s
    "..."4  ^3!n&<&D%**<*H##"
(:6  	
 	
 	
 	
 	

 
	:#5	5	5##$&!+!3	  	
 	
 	
 	
 	
 
6	5r<   )r.   r'   r/   r*   r0   r1   )r.   r'   r8   r,   r0   r1   )r.   r'   r8   r,   rU   rV   r0   r1   )rh   rL   rj   rL   rS   r"   r8   r,   r.   r'   r0   r1   )r   r(   r   r   r   r&   r0   r   )r   r(   r   r   r   r&   r0   r   )r   r   r   r&   r0   r   )r   r   r[   r   r   r&   r   r&   r   r+   r.   r'   rS   r"   r0   r   )r.   r'   r	  r+   r   r   r[   r   r   r
  r   r
  r0   r1   )r.   r'   r   r)   r   r   r[   r   r   r   r   r  r   r  r0   r1   )r.   r'   r   r)   r   r   r[   r   r   r#   r   r  r   r  r0   r1   )r  r  r.   r'   r0   r   )r  r   r0   r   )r.   r'   r   r)   r   r   r[   r   r   r   r   r  r   r  r0   r1   )r[   r   r   r   r0   r1   )r.   r'   r   r)   r   r   r[   r   r   r   r   r  r   r  r0   r  )r.   r'   r   r)   r   r   r[   r   r   r#   r   r  r   r  r0   r  )r.   r'   r   r+   r   r   r[   r   r   r&   r   r&   r0   r1   )r.   r'   r   r+   r   r   r[   r   r   r
  r   r
  r0   r1   )b
__future__r   
contextlibloggingr  typingr   r   r   r   r   r	   r
   r   r   r   r   
sqlalchemyr   r   r   rq   r   r   r  sqlalchemy.sqlr   sqlalchemy.sql.elementsr   sqlalchemy.sql.schemar   r   r   sqlalchemy.utilr   rz   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;   
DispatcherrP   r6   dispatch_forrk   rg   immutabledictr   r   r   r   r   __annotations__r   r   r   contextmanagerr   r   r   rl  rJ  r  r  r  r  r  r  r  r  r  r  r  r  r^   r<   r:   <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!!, , , , dod+++   > (##' ' ' $#'TH9 H9 H9 H9V -?D,>~!, * +) 	- 	-  	 	 	 	   @      . EE EE EE EEP WT/1EuLMNNN.3 .3 .3 .3 .3 .3 .3 .3b '""_8 _8 _8 #"_8D<9 <9 <9~ (##% % % $#%P (##4 4 4 $#4" (##'
 '
 '
 $#'
T   &A A A A)3 )3 )3 )3XO O O O  " (##H H H $#HV (##   $#6 '""y' y' y' #"y'x '"""
 "
 "
 #""
 "
 "
r<   