
    Zi1%                        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y)    )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                  |    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
y	)_InspectorConv	inspectorc                    t         j                  r0t        j                  t              }t        j                  ||       n/t        j                  t              }t        j                  ||       t        t        |      S N)	r   sqla_2object__new___SQLA2InspectorConv__init___LegacyInspectorConvr   r	   )clsr   objs      ]/home/portmadness/app/.venv/lib/python3.12/site-packages/alembic/autogenerate/compare/util.pyr#   z_InspectorConv.__new__-   sU    ..!45C((i8..!56C ))#y9D#    c                    || _         y r    r   )selfr   s     r)   r%   z_InspectorConv.__init__7   s	    "r*   c                     y r     )r,   schema
tablenamesall_available_tablenamess       r)   pre_cache_tablesz_InspectorConv.pre_cache_tables:   s     	r*   c                    t               r    NotImplementedErrorr,   tnamer/   s      r)   get_unique_constraintsz%_InspectorConv.get_unique_constraintsB        "##r*   c                    t               r    r4   r6   s      r)   get_indexesz_InspectorConv.get_indexesG   r9   r*   c                    t               r    r4   r6   s      r)   get_foreign_keysz_InspectorConv.get_foreign_keysL   r9   r*   c                    t               r    r4   r,   tables     r)   reflect_tablez_InspectorConv.reflect_tableQ   s    !##r*   N)r   r   returnr	   )r   r   r/   
str | Noner0   	list[str]r1   Collection[str]rB   Noner7   strr/   rD   rB   zlist[ReflectedUniqueConstraint]r7   rI   r/   rD   rB   zlist[ReflectedIndex]r7   rI   r/   rD   rB   z#list[ReflectedForeignKeyConstraint]r@   r   rB   rG   )__name__
__module____qualname__	__slots__r#   r%   r2   r8   r;   r=   rA   r.   r*   r)   r   r   *   s    I#  #2	
 
$$",$	($
$$",$	$
$$",$	,$
$r*   r   c                  \    e Zd Zd Zd Z	 	 	 	 	 	 ddZ	 	 	 	 	 	 d	dZ	 	 	 	 	 	 d
dZddZy)r&   c                r    |s|S |D ]-  }|d   	t        |d   t              rt        |d         |d<   / |S Nname)
isinstancer   r,   constsconsts      r)   _apply_reflectinfo_convz,_LegacyInspectorConv._apply_reflectinfo_convW   sN    M 	4EV}(ft2 !%U6] 3f		4
 r*   c                    |s|S |D ]D  }|j                   t        |j                   t              r+t        |j                         |_         F |S r    )rT   rU   r   rV   s      r)   _apply_constraint_convz+_LegacyInspectorConv._apply_constraint_conva   sG    M 	.Ezz%jT.J!%**-
	. r*   c                Z    | j                  | j                  j                  ||            S N)r/   )rY   r   r;   r6   s      r)   r;   z _LegacyInspectorConv.get_indexesi   s.     ++NN&&uV&<
 	
r*   c                Z    | j                  | j                  j                  ||            S r]   )rY   r   r8   r6   s      r)   r8   z+_LegacyInspectorConv.get_unique_constraintsp   s.     ++NN11%1G
 	
r*   c                Z    | j                  | j                  j                  ||            S r]   )rY   r   r=   r6   s      r)   r=   z%_LegacyInspectorConv.get_foreign_keysw   s.     ++NN++E&+A
 	
r*   c                    | j                   j                  |d        | j                  |j                         | j                  |j                         y )N)include_columns)r   rA   r[   constraintsr   r?   s     r)   rA   z"_LegacyInspectorConv.reflect_table~   s?    $$UD$A##E$5$56##EMM2r*   NrJ   rH   rK   rL   )	rM   rN   rO   rY   r[   r;   r8   r=   rA   r.   r*   r)   r&   r&   U   sh    

",
	


",
	(


",
	,
3r*   r&   c                      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y
)r$   c                   || j                   j                  v ry |r(|r&t        |      dkD  rt        |      t        |      z  }nd }|4|dk  s/| j                   j                  j	                  |j
                        s|}nd }	  |||      }|| j                   j                  |<   y # t        $ r  t        | j                   j                  |<   Y y w xY w)Nd   g      ?)r/   filter_names)r   
info_cachelendialect_overrides_defaultrM   r5   )	r,   r/   r0   r1   info_keyinspector_methodfractionoptimized_filter_nameselementss	            r)   
_pre_cachez_SQLA2InspectorConv._pre_cache   s     t~~000 2s:7L:-E)FFHH 3>>))<< )) &0"%)"	;',BH 3;DNN%%h/ # 	F2EDNN%%h/	Fs   
B& &&CCc                j   t               }|| j                  j                  v r^| j                  j                  |   }|t        u r|ri S t               |j	                  ||f|      }	|	|ur|r|	| j                  |	      S |	S 	  |||      }
|r| j                  |
      S |
S # t        $ r |ri cY S  w xY wr]   )r"   r   rg   r5   getrY   )r,   r7   r/   rk   rl   apply_constraint_convoptionalnot_in_cachecache
individualdatas              r)   _return_from_cachez&_SQLA2InspectorConv._return_from_cache   s     xt~~000NN--h7E++I
 .//FE?LAJ-(Z-C77
CC%%	#E&9D !//55K # 				s   
B! !B20B2c                X    | j                  ||d| j                  j                  dd      S )Nalembic_unique_constraintsTFrs   rt   )ry   r   r8   r6   s      r)   r8   z*_SQLA2InspectorConv.get_unique_constraints   s8     &&(NN11"& ' 
 	
r*   c                X    | j                  ||d| j                  j                  dd      S )Nalembic_indexesTFr|   )ry   r   r;   r6   s      r)   r;   z_SQLA2InspectorConv.get_indexes   s8     &&NN&&"& ' 
 	
r*   c                V    | j                  ||d| j                  j                  d      S )Nalembic_foreign_keysTrs   )ry   r   r=   r6   s      r)   r=   z$_SQLA2InspectorConv.get_foreign_keys   s5     &&"NN++"& ' 
 	
r*   c                    |s|S t        |t              s|n|gD ]-  }|d   	t        |d   t              rt        |d         |d<   / |S rS   )rU   dictr   rV   s      r)   rY   z+_SQLA2InspectorConv._apply_reflectinfo_conv   s[    M#-fd#;V& 	4EV}(ft2 !%U6] 3f		4
 r*   c                    t         D ]5  }d| }t        | j                  d|       }| j                  |||||       7 y )Nalembic_
get_multi_)
_INSP_KEYSgetattrr   rp   )r,   r/   r0   r1   keykeynamemeths          r)   r2   z$_SQLA2InspectorConv.pre_cache_tables	  sQ      
	C &G4>>Zu+=>DOO(	
	r*   c                    ddl m} ||f} |ddi it        D ci c];  }||| j                  ||d| t	        | j
                  d|       |t        v       i= c}S c c}w )Nr   r   unreflectabler   get_r   r.   )sqlalchemy.engine.reflectionr   r   ry   r   r   _CONSTRAINT_INSP_KEYS)r,   r7   r/   r   	table_keyr   s         r)   _make_reflection_infoz)_SQLA2InspectorConv._make_reflection_info  s     	AUO	 

 &  t66"3%($se=/26K/K  7   
 	
s   A Ac                    | j                  |j                  |j                        }| j                  j	                  |d d|       y )NF)ra   resolve_fks_reflect_info)r   rT   r/   r   rA   )r,   r@   ris      r)   rA   z!_SQLA2InspectorConv.reflect_table2  s?    ''

ELLA$$ 	 	% 	
r*   N)r/   rD   r0   rE   r1   rF   rk   rI   rl   r   rB   rG   )FT)r7   rI   r/   rD   rk   rI   rl   r   rs   boolrB   r   rH   rJ   rK   rC   )r7   rI   r/   rD   rB   r   rL   )rM   rN   rO   rp   ry   r8   r;   r=   rY   r2   r   rA   r.   r*   r)   r$   r$      s3   (;(; (; #2	(;
 (; (; 
(;` ',)) ) 	)
 )  $) 
)V



",

	(





",

	

	
	
",	
	,	
  #2	
 
$

",
	
.
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$   r.   r*   r)   <module>r      si    #      ( "  +J;F<	
 ($ ($V-3> -3`u
. u
r*   