
    Oj1%                       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ZdZ G d d          Z G d de          Z G d de          ZdS )    )annotations)Any)cast)
Collection)TYPE_CHECKING)conv)Self   )sqla_compat)Table)	Inspector)ReflectedForeignKeyConstraint)ReflectedIndex)ReflectedUniqueConstraint_ReflectionInfo)columnspk_constraintforeign_keysindexesunique_constraintstable_commentcheck_constraintstable_options)r   r   r   r   r   c                  J    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 )#_InspectorConv	inspectorr   r   returnr	   c                .   t           j        r;t                              t                    }t                              ||           n:t                              t                    }t                              ||           t          t          |          S N)	r   sqla_2object__new___SQLA2InspectorConv__init___LegacyInspectorConvr   r	   )clsr   objs      u/lsinfo/ai/hellotax_ai/training_center/backend/venv/lib/python3.11/site-packages/alembic/autogenerate/compare/util.pyr$   z_InspectorConv.__new__-   sn     	:..!455C((i8888..!566C ))#y999D#    c                    || _         d S r!   r   )selfr   s     r*   r&   z_InspectorConv.__init__7   s    "r+   schema
str | None
tablenames	list[str]all_available_tablenamesCollection[str]Nonec                    d S r!    )r-   r.   r0   r2   s       r*   pre_cache_tablesz_InspectorConv.pre_cache_tables:   s	     	r+   tnamestrlist[ReflectedUniqueConstraint]c                    t                      r!   NotImplementedErrorr-   r8   r.   s      r*   get_unique_constraintsz%_InspectorConv.get_unique_constraintsB        "###r+   list[ReflectedIndex]c                    t                      r!   r<   r>   s      r*   get_indexesz_InspectorConv.get_indexesG   r@   r+   #list[ReflectedForeignKeyConstraint]c                    t                      r!   r<   r>   s      r*   get_foreign_keysz_InspectorConv.get_foreign_keysL   r@   r+   tabler   c                    t                      r!   r<   r-   rG   s     r*   reflect_tablez_InspectorConv.reflect_tableQ   s    !###r+   N)r   r   r   r	   )r   r   r.   r/   r0   r1   r2   r3   r   r4   r8   r9   r.   r/   r   r:   r8   r9   r.   r/   r   rA   r8   r9   r.   r/   r   rD   rG   r   r   r4   )__name__
__module____qualname__	__slots__r$   r&   r7   r?   rC   rF   rJ   r6   r+   r*   r   r   *   s        I   # # # #   $ $ $ $
$ $ $ $
$ $ $ $
$ $ $ $ $ $r+   r   c                  :    e Zd Zd Zd Zdd	ZddZddZddZdS )r'   c                    |s|S |D ]=}|d         3t          |d         t                    st          |d                   |d<   >|S Nname)
isinstancer   r-   constsconsts      r*   _apply_reflectinfo_convz,_LegacyInspectorConv._apply_reflectinfo_convW   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 r!   )rW   rX   r   rY   s      r*   _apply_constraint_convz+_LegacyInspectorConv._apply_constraint_conva   sN     	M 	. 	.Ez%jT.J.J%!%*--
r+   r8   r9   r.   r/   r   rA   c                `    |                      | j                            ||                    S N)r.   )r\   r   rC   r>   s      r*   rC   z _LegacyInspectorConv.get_indexesi   s4     ++N&&uV&<<
 
 	
r+   r:   c                `    |                      | j                            ||                    S r`   )r\   r   r?   r>   s      r*   r?   z+_LegacyInspectorConv.get_unique_constraintsp   s4     ++N11%1GG
 
 	
r+   rD   c                `    |                      | j                            ||                    S r`   )r\   r   rF   r>   s      r*   rF   z%_LegacyInspectorConv.get_foreign_keysw   s4     ++N++E&+AA
 
 	
r+   rG   r   r4   c                    | j                             |d            |                     |j                   |                     |j                   d S )N)include_columns)r   rJ   r^   constraintsr   rI   s     r*   rJ   z"_LegacyInspectorConv.reflect_table~   sP    $$UD$AAA##E$5666##EM22222r+   NrM   rL   rN   rO   )	rP   rQ   rR   r\   r^   rC   r?   rF   rJ   r6   r+   r*   r'   r'   U   s            
 
 
 

 
 
 

 
 
 
3 3 3 3 3 3r+   r'   c                  Z    e Zd Zd"dZ	 	 d#d$dZd%dZd&dZd'dZd Zd(dZ	d)dZ
d*d Zd!S )+r%   r.   r/   r0   r1   r2   r3   info_keyr9   inspector_methodr   r   r4   c                ~   || j         j        v rd S |r5|r3t          |          dk    r t          |          t          |          z  }nd }|*|dk    s$| j         j                            |j                  s|}nd }	  |||          }|| j         j        |<   d S # t          $ r t          | j         j        |<   Y d S w xY w)Nd   g      ?)r.   filter_names)r   
info_cachelendialect_overrides_defaultrP   r=   )	r-   r.   r0   r2   rg   rh   fractionoptimized_filter_nameselementss	            r*   
_pre_cachez_SQLA2InspectorConv._pre_cache   s    t~000F  	2 	s:7L7L:-E)F)FFHHH 3>)<< )  
 &0""%)"	;'',B  H 3;DN%h/// # 	F 	F 	F2EDN%h////	Fs   <B B<;B<FTr8   apply_constraint_convboolc                |   t                      }|| j        j        v rd| j        j        |         }|t          u r|ri S t                      |                    ||f|          }	|	|ur|r|	|                     |	          S |	S 	  |||          }
n# t          $ r |ri cY S  w xY w|r|                     |
          S |
S r`   )r#   r   rl   r=   getr\   )r-   r8   r.   rg   rh   rt   optionalnot_in_cachecache
individualdatas              r*   _return_from_cachez&_SQLA2InspectorConv._return_from_cache   s
    xxt~000N-h7E+++ 0I
 .///FE?LAAJ--( &Z-C77
CCC%%	##E&999DD" 	 	 	 					 ! 	//555Ks   B B" B"r:   c                L    |                      ||d| j        j        dd          S )Nalembic_unique_constraintsTFrt   rx   )r}   r   r?   r>   s      r*   r?   z*_SQLA2InspectorConv.get_unique_constraints   s8     &&(N1"& ' 
 
 	
r+   rA   c                L    |                      ||d| j        j        dd          S )Nalembic_indexesTFr   )r}   r   rC   r>   s      r*   rC   z_SQLA2InspectorConv.get_indexes   s8     &&N&"& ' 
 
 	
r+   rD   c                J    |                      ||d| j        j        d          S )Nalembic_foreign_keysTrt   )r}   r   rF   r>   s      r*   rF   z$_SQLA2InspectorConv.get_foreign_keys   s5     &&"N+"& ' 
 
 	
r+   c                    |s|S t          |t                    s|n|gD ]=}|d         3t          |d         t                    st          |d                   |d<   >|S rV   )rX   dictr   rY   s      r*   r\   z+_SQLA2InspectorConv._apply_reflectinfo_conv   sr     	M#-fd#;#;IVV& 	4 	4EV}(ft2 2( !%U6] 3 3fr+   c                    t           D ]8}d| }t          | j        d|           }|                     |||||           9d S )Nalembic_
get_multi_)
_INSP_KEYSgetattrr   rs   )r-   r.   r0   r2   keykeynamemeths          r*   r7   z$_SQLA2InspectorConv.pre_cache_tables	  sn      
	 
	C&&&G4>+=+=+=>>DOO(   	
	 
	r+   r   c                Z     ddl m} f |ddi i fdt          D             S )Nr   r   unreflectablec                    i | ]?}|                     d | t          j        d|           |t          v           i@S )r   get_r   )r}   r   r   _CONSTRAINT_INSP_KEYS).0r   r.   r-   	table_keyr8   s     r*   
<dictcomp>z=_SQLA2InspectorConv._make_reflection_info.<locals>.<dictcomp>$  sy         t66(3((s==/26K/K  7      r+   r6   )sqlalchemy.engine.reflectionr   r   )r-   r8   r.   r   r   s   ``` @r*   _make_reflection_infoz)_SQLA2InspectorConv._make_reflection_info  s     	A@@@@@UO	 
 

       &  
 
 	
r+   rG   r   c                    |                      |j        |j                  }| j                            |d d|           d S )NF)rd   resolve_fks_reflect_info)r   rW   r.   r   rJ   )r-   rG   ris      r*   rJ   z!_SQLA2InspectorConv.reflect_table2  sP    ''
ELAA$$ 	 	% 	
 	
 	
 	
 	
r+   N)r.   r/   r0   r1   r2   r3   rg   r9   rh   r   r   r4   )FT)r8   r9   r.   r/   rg   r9   rh   r   rt   ru   r   r   rL   rM   rN   rK   )r8   r9   r.   r/   r   r   rO   )rP   rQ   rR   rs   r}   r?   rC   rF   r\   r7   r   rJ   r6   r+   r*   r%   r%      s        (; (; (; (;` ',) ) ) ) )V

 

 

 



 

 

 

	
 	
 	
 	
     $
 
 
 
.
 
 
 
 
 
r+   r%   N)
__future__r   typingr   r   r   r   sqlalchemy.sql.elementsr   typing_extensionsr	   utilr   
sqlalchemyr   sqlalchemy.enginer   sqlalchemy.engine.interfacesr   r   r   r   r   r   r   r   r'   r%   r6   r+   r*   <module>r      s   # " " " " "                               ( ( ( ( ( ( " " " " " "       =      ++++++JJJJJJ;;;;;;FFFFFF<<<<<<	
 ($ ($ ($ ($ ($ ($ ($ ($V-3 -3 -3 -3 -3> -3 -3 -3`u
 u
 u
 u
 u
. u
 u
 u
 u
 u
r+   