o
    voi1%                     @  s   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rVd 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 dZG dd deZG d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                   @  sV   e Zd ZdZd#ddZd$dd	Zd%ddZd&ddZd'ddZd(ddZ	d)d d!Z
d"S )*_InspectorConv	inspectorr   r   returnr   c                 C  s>   t jrtt}t|| ntt}t|| tt|S N)	r
   sqla_2object__new___SQLA2InspectorConv__init___LegacyInspectorConvr   r   )clsr   obj r'   U/home/ubuntu/.local/lib/python3.10/site-packages/alembic/autogenerate/compare/util.pyr!   -   s   


z_InspectorConv.__new__c                 C  s
   || _ d S r   r   )selfr   r'   r'   r(   r#   7   s   
z_InspectorConv.__init__schema
str | None
tablenames	list[str]all_available_tablenamesCollection[str]Nonec                 C  s   d S r   r'   )r)   r*   r,   r.   r'   r'   r(   pre_cache_tables:   s   z_InspectorConv.pre_cache_tablestnamestrlist[ReflectedUniqueConstraint]c                 C     t  r   NotImplementedErrorr)   r2   r*   r'   r'   r(   get_unique_constraintsB      z%_InspectorConv.get_unique_constraintslist[ReflectedIndex]c                 C  r5   r   r6   r8   r'   r'   r(   get_indexesG   r:   z_InspectorConv.get_indexes#list[ReflectedForeignKeyConstraint]c                 C  r5   r   r6   r8   r'   r'   r(   get_foreign_keysL   r:   z_InspectorConv.get_foreign_keystabler   c                 C  r5   r   r6   r)   r?   r'   r'   r(   reflect_tableQ   s   z_InspectorConv.reflect_tableN)r   r   r   r   )r   r   r*   r+   r,   r-   r.   r/   r   r0   r2   r3   r*   r+   r   r4   r2   r3   r*   r+   r   r;   r2   r3   r*   r+   r   r=   r?   r   r   r0   )__name__
__module____qualname__	__slots__r!   r#   r1   r9   r<   r>   rA   r'   r'   r'   r(   r   *   s    






r   c                   @  sD   e Zd Zdd Zdd ZdddZdddZdddZdddZdS )r$   c                 C  s@   |s|S |D ]}|d d urt |d tst|d |d< q|S Nname)
isinstancer   r)   constsconstr'   r'   r(   _apply_reflectinfo_convW   s   z,_LegacyInspectorConv._apply_reflectinfo_convc                 C  s8   |s|S |D ]}|j d urt|j tst|j |_ q|S r   )rL   rM   r   rN   r'   r'   r(   _apply_constraint_conva   s   z+_LegacyInspectorConv._apply_constraint_convr2   r3   r*   r+   r   r;   c                 C     |  | jj||dS N)r*   )rQ   r   r<   r8   r'   r'   r(   r<   i      z _LegacyInspectorConv.get_indexesr4   c                 C  rS   rT   )rQ   r   r9   r8   r'   r'   r(   r9   p   rU   z+_LegacyInspectorConv.get_unique_constraintsr=   c                 C  rS   rT   )rQ   r   r>   r8   r'   r'   r(   r>   w   rU   z%_LegacyInspectorConv.get_foreign_keysr?   r   r0   c                 C  s,   | j j|d d | |j | |j d S )N)include_columns)r   rA   rR   constraintsr   r@   r'   r'   r(   rA   ~   s   z"_LegacyInspectorConv.reflect_tableNrD   rC   rE   rF   )	rG   rH   rI   rQ   rR   r<   r9   r>   rA   r'   r'   r'   r(   r$   U   s    



r$   c                   @  sj   e Zd Zd+ddZ		d,d-ddZd.ddZd/ddZd0ddZdd  Zd1d!d"Z	d2d$d%Z
d3d(d)Zd*S )4r"   r*   r+   r,   r-   r.   r/   info_keyr3   inspector_methodr   r   r0   c           	      C  s   || j jv rd S |r|rt|dkrt|t| }nd }|d u s-|dks-| j j|js0|}nd }z|||d}W n tyJ   t| j j|< Y d S w || j j|< d S )Nd   g      ?)r*   filter_names)r   
info_cachelendialect_overrides_defaultrG   r7   )	r)   r*   r,   r.   rX   rY   fractionoptimized_filter_nameselementsr'   r'   r(   
_pre_cache   s*   	
z_SQLA2InspectorConv._pre_cacheFTr2   apply_constraint_convboolc                 C  s   t  }|| jjv r3| jj| }|tu r|ri S t |||f|}	|	|ur3|r1|	d ur1| |	S |	S z|||d}
W n tyI   |rHi  Y S  w |rQ| |
S |
S rT   )r    r   r\   r7   getrQ   )r)   r2   r*   rX   rY   rd   optionalnot_in_cachecache
individualdatar'   r'   r(   _return_from_cache   s,   	

z&_SQLA2InspectorConv._return_from_cacher4   c                 C     | j ||d| jjdddS )Nalembic_unique_constraintsTFrd   rg   )rl   r   r9   r8   r'   r'   r(   r9         z*_SQLA2InspectorConv.get_unique_constraintsr;   c                 C  rm   )Nalembic_indexesTFro   )rl   r   r<   r8   r'   r'   r(   r<      rp   z_SQLA2InspectorConv.get_indexesr=   c                 C  s   | j ||d| jjddS )Nalembic_foreign_keysTrd   )rl   r   r>   r8   r'   r'   r(   r>      s   z$_SQLA2InspectorConv.get_foreign_keysc                 C  sP   |s|S t |ts|n|gD ]}|d d ur%t |d ts%t|d |d< q|S rK   )rM   dictr   rN   r'   r'   r(   rQ      s   z+_SQLA2InspectorConv._apply_reflectinfo_convc                 C  s<   t D ]}d| }t| jd| }| ||||| qd S )Nalembic_
get_multi_)
_INSP_KEYSgetattrr   rc   )r)   r*   r,   r.   keykeynamemethr'   r'   r(   r1   	  s   
z$_SQLA2InspectorConv.pre_cache_tablesr   c                   s:   ddl m}  f|ddi i fddtD S )Nr   r   unreflectablec                   s>   i | ]}|j  d | tjd| |tv diqS )ru   get_rs   )rl   rx   r   _CONSTRAINT_INSP_KEYS).0ry   r*   r)   	table_keyr2   r'   r(   
<dictcomp>$  s    
z=_SQLA2InspectorConv._make_reflection_info.<locals>.<dictcomp>r'   )sqlalchemy.engine.reflectionr   rw   )r)   r2   r*   r   r'   r   r(   _make_reflection_info  s   
z)_SQLA2InspectorConv._make_reflection_infor?   r   c                 C  s(   |  |j|j}| jj|d d|d d S )NF)rV   resolve_fks_reflect_info)r   rL   r*   r   rA   )r)   r?   rir'   r'   r(   rA   2  s   
z!_SQLA2InspectorConv.reflect_tableN)r*   r+   r,   r-   r.   r/   rX   r3   rY   r   r   r0   )FT)r2   r3   r*   r+   rX   r3   rY   r   rd   re   r   r   rC   rD   rE   rB   )r2   r3   r*   r+   r   r   rF   )rG   rH   rI   rc   rl   r9   r<   r>   rQ   r1   r   rA   r'   r'   r'   r(   r"      s    
0
+




r"   N)
__future__r   typingr   r   r   r   sqlalchemy.sql.elementsr   typing_extensionsr   utilr
   
sqlalchemyr   sqlalchemy.enginer   sqlalchemy.engine.interfacesr   r   r   r   r   rw   r~   r   r$   r"   r'   r'   r'   r(   <module>   s(   
	+0