
    Ojs)                    d   d dl m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 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mZ ddlm Z  ddl!m"Z"  ej#        e$          Z%d6d Z&d7d'Z'ej(        d8d2            Z)d9d5Z*dS ):    )annotationsN)Iterator)Optional)Set)Tuple)TYPE_CHECKING)Union)eventschema)
OrderedSet   )_InspectorConv   )ops)PriorityDispatchResult)	Inspector)quoted_name)Table)AutogenContext)ModifyTableOps)
UpgradeOps)Pluginautogen_contextr   upgrade_opsr   schemasSet[Optional[str]]returnr   c                `     j         }t                      } j        j        } j        j        }|D ]t          |                                        x}}|k    r |                     j        j        g          } fd|D             }	|                    fd|	D                         j         }t          |          }
|
	                    |	|           t          d  j        D                                           ||fg          }t          ||||            t          j        S )Nr   c                F    g | ]}                     |d di          |S )tableschema_name)run_name_filters).0tnamer   r"   s     w/lsinfo/ai/hellotax_ai/training_center/backend/venv/lib/python3.11/site-packages/alembic/autogenerate/compare/tables.py
<listcomp>z'_autogen_for_tables.<locals>.<listcomp>9   sK     
 
 
//w < 

 
 
    c              3      K   | ]}|fV  	d S N )r$   r%   r"   s     r&   	<genexpr>z&_autogen_for_tables.<locals>.<genexpr>A   s(      MMe 4MMMMMMr(   c                *    g | ]}|j         |j        fS r+   )r   name)r$   r!   s     r&   r'   z'_autogen_for_tables.<locals>.<listcomp>H   s!    OOO%,
	#OOOr(   )	inspectorsetmigration_contextversion_table_schemaversion_tableget_table_names
differenceupdater   pre_cache_tablesr   sorted_tables_compare_tablesr   CONTINUE)r   r   r   r/   conn_table_namesr2   r3   tables	available
tablenamesinspmetadata_table_namesr"   s   `           @r&   _autogen_for_tablesrA   $   s   
  )I7:uu 	)>  $5CM B B !:!:+!:!N!NOOO...&& 2@A F
 
 
 
 

 
 

 	MMMM*MMMMMM#-	i((k:yAAAA%OO1NOOO j'7899     "**r(   r;   set[tuple[str | None, str]]r@   r/   r   Nonec           
     	   |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 |          } j                            dj        j                  |||d |
           |                                s|j                            |           t%          j                    }|                     |          D ]v\  }}t%          j        ||          }	|	|j        v }t%          j        |||          }|sUt/          j        |d	j        j                            |                     t9          |                              |                               ||dd
d           rt          j        |g |          } j                            dj        j                  ||||d            |                                s|j                            |           |j                            t          j        
                    |                     t                              d|	           x|                     |          }t%          j                    }i }|D ]\  }}t%          j        ||          }	|	|j        v }t%          j        |||          }|sUt/          j        |d	j        j                            |                     t9          |                              |           ||||f<   tA          |d           D ]\  }}|pd }|r|d|n|}	|||f         }
|j        |	         }                    |
|dd|          rt          j        |g |          }tC          ||||
||          5   j                            dj        j                  |||||
           d d d            n# 1 swxY w Y   |                                s|j                            |           d S )Nc                .    g | ]\  }}|k    r|nd |fS r*   r+   )r$   r   r%   default_schemas      r&   r'   z#_compare_tables.<locals>.<listcomp>e   s@     	
 	
 	
 //VVT5A	
 	
 	
r(   c                ^    i | ])\  }\  }}|j         t          j        ||                   *S r+   )table_key_to_table	sa_schema_get_table_key)r$   no_dflt_schemar   r%   r   s       r&   
<dictcomp>z#_compare_tables.<locals>.<dictcomp>n   sM        ,NOVU 	:$UF33
  r(   .r!   FzDetected added table %rr   	qualifiercolumn_reflectTzDetected removed table %rc                &    | d         pd| d         fS )Nr    r   r+   )xs    r&   <lambda>z!_compare_tables.<locals>.<lambda>   s    1Q4:2qt:L r(   )key)"binddialectdefault_schema_namer   zipr5   run_object_filtersr   appendCreateTableOp
from_tableloginfor   comparatorsdispatchr.   is_emptyrI   MetaDatarJ   r<   r   r
   listenr1   impl_compat_autogen_column_reflectr   reflect_tableDropTableOpintersectionsorted_compare_columns)r;   r@   r/   r   r   #metadata_table_names_no_dflt_schematname_to_tablesr%   r.   metadata_tablemodify_table_opsremoval_metadataexiststexisting_tablesexisting_metadataconn_column_info
conn_tablerF   s       `              @r&   r9   r9   V   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O'00?#:#? 1     	 	 	 $,,.. 9&&'7888 )++$//0DEE 8 85'q11 )00OE#3A>>> 
	7L 16..    9%%33A666--atLL 
	8"1%AFFFO'00?#:#? 1  /E1dD D D $,,.. 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??? 		7L 16..y99   9%%33A666'(!U$$?0L0LMMM 9 95I'(3!!!UU##e'E
3&-d3
--E7E:
 
 	9  #1%AFFF!    +44'>'C 5   $$"	 	 	              ( $,,.. 9&&'7888?9 9s   5R		R	R	r   Optional[str]r%   Union[quoted_name, str]rw   r   ro   rp   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        |           } j                            dj        j        	          | |||           |                                r|j                            |           d V  t#          |
                              |          D ]}                    |j        |         |dd
d           r`|j                            t          j                             |j        |                              t          	                    d||           d S )NrM   c              3  2   K   | ]}|j         	|j        V  d S r*   systemr.   r$   cs     r&   r,   z#_compare_columns.<locals>.<genexpr>   s?       $ $$	$ $ $ $ $ $r(   c                ,    i | ]}|j         	|j        |S r+   r}   r   s     r&   rL   z$_compare_columns.<locals>.<dictcomp>   s3       18	  r(   c           	     ^    i | ])}                     |j        d d          !|j        |*S )column)
table_namer"   )r#   r.   )r$   r   r   r   r%   s     r&   rL   z$_compare_columns.<locals>.<dictcomp>   sT       ++FHU6JJ
 
	  r(   r   FzDetected added column '%s.%s'r   rN   TzDetected removed column '%s.%s')r   r   r5   rZ   r   r[   AddColumnOpfrom_column_and_tablenamer^   r_   ri   AlterColumnOpr`   ra   rW   r.   has_changesr0   DropColumnOp)r   r%   rw   ro   rp   r   r/   r.   metadata_col_namesmetadata_cols_by_nameconn_col_namescnamecolnamemetadata_colconn_colalter_column_ops   ``   `          r&   rk   rk      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	
#,, 7 < 	- 	
 	
 
	
 
	
 
	
 &&(( 	9 ''888	EEE^$$//0BCC 	E 	E--L$
 
 	E  '' ::E:<#6   
 HH6eDDD	E 	Er(   pluginr   c                >    |                      t          dd           d S )Nr   r<   )add_autogenerate_comparatorrA   )r   s    r&   setupr   6  s-    
&&    r(   )r   r   r   r   r   r   r   r   )r;   rB   r@   rB   r/   r   r   r   r   r   r   rC   )r   rx   r%   ry   rw   r   ro   r   rp   r   r   r   r/   r   r   rz   )r   r   r   rC   )+
__future__r   
contextlibloggingtypingr   r   r   r   r   r	   
sqlalchemyr
   r   rI   sqlalchemy.utilr   utilr   
operationsr   r   sqlalchemy.engine.reflectionr   sqlalchemy.sql.elementsr   sqlalchemy.sql.schemar   autogenerate.apir   operations.opsr   r   runtime.pluginsr   	getLogger__name__r^   rA   r9   contextmanagerrk   r   r+   r(   r&   <module>r      s   # " " " " "                                                      * * * * * * & & & & & &                   * * * * * * *666666333333++++++222222000000,,,,,,)))))) g!!/+ /+ /+ /+dR9 R9 R9 R9j GE GE GE GET     r(   