U
    ^g%i;$                     @  s  U 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rd dlmZ d dlmZ d dlmZ eeef ZededZi Z de!d< G dd deZ"G dd  d ee Z#G d!d" d"e#e Z$G d#d$ d$e#e Z%G d%d& d&e#e Z&d d'd(d)d*Z'd d+d(d,d-Z(d d.d(d/d0Z)d1S )2    )annotations)Any)ClassVar)Dict)Generic)
NamedTuple)Optional)Sequence)Tuple)Type)TYPE_CHECKING)TypeVar)Union)
Constraint)ForeignKeyConstraint)Index)UniqueConstraint)	TypeGuard   )util)sqla_compat)Literal)AutogenContext)DefaultImpl_C)boundz Dict[str, Type[_constraint_sig]]_clsregc                   @  s   e Zd ZU ded< ded< eddddZeddd	d
ZeddddZed dddZ	edd dddZ
edd dddZdS )ComparisonResultz'Literal[('equal', 'different', 'skip')]statusstrmessageboolreturnc                 C  s
   | j dkS )Nequalr   self r(   S/var/www/html/api-medvista/venv/lib/python3.8/site-packages/alembic/ddl/_autogen.pyis_equal-   s    zComparisonResult.is_equalc                 C  s
   | j dkS )N	differentr%   r&   r(   r(   r)   is_different1   s    zComparisonResult.is_differentc                 C  s
   | j dkS )Nskipr%   r&   r(   r(   r)   is_skip5   s    zComparisonResult.is_skipc                 C  s
   | ddS )zthe constraints are equal.r$   zThe two constraints are equalr(   clsr(   r(   r)   Equal9   s    zComparisonResult.EqualzUnion[str, Sequence[str]])reasonr#   c                 C  s   | dd t|S )z9the constraints are different for the provided reason(s).r+   , joinr   Zto_listr0   r2   r(   r(   r)   	Different>   s    zComparisonResult.Differentc                 C  s   | dd t|S )zthe constraint cannot be compared for the provided reason(s).

        The message is logged, but the constraints will be otherwise
        considered equal, meaning that no migration command will be
        generated.
        r-   r3   r4   r6   r(   r(   r)   SkipC   s    zComparisonResult.SkipN)__name__
__module____qualname____annotations__propertyr*   r,   r.   classmethodr1   r7   r8   r(   r(   r(   r)   r   )   s   
r   c                   @  sD  e Zd ZU ded< ded< ded< ded< d	Zd
ed< d	Zd
ed< d	Zd
ed< ded< ddddZedd Z	dddddddZ
dddddZddddd Zeddddd!d"d#Zd$d%d&d'd(Zejd)d* Zejddd+d,Zejddd-d.Zejddd/d0Zddd1d2Zddd3d4Zd5dd6d7Zd8S )9_constraint_sigr   constzTuple[Any, ...]_sigz,Optional[sqla_compat._ConstraintNameDefined]namer   implFzClassVar[bool]	_is_index_is_fk_is_uqr!   _is_metadataNoner"   c                 C  s   |    d S N)	_registerr/   r(   r(   r)   __init_subclass__\   s    z!_constraint_sig.__init_subclass__c                 C  s
   t  d S rI   NotImplementedErrorr/   r(   r(   r)   rJ   _   s    z_constraint_sig._registeris_metadatarC   r@   r#   c                 C  s
   t  d S rI   rL   r'   rO   rC   r@   r(   r(   r)   __init__c   s    z_constraint_sig.__init__z_constraint_sig[Any]r   otherr#   c                 C  s.   | j |j kst| jst|jr$t| |S rI   )rC   AssertionErrorrG   _compare_to_reflectedr'   rS   r(   r(   r)   compare_to_reflectedh   s    

z$_constraint_sig.compare_to_reflected_constraint_sig[_C]c                 C  s
   t  d S rI   rL   rV   r(   r(   r)   rU   q   s    z%_constraint_sig._compare_to_reflected)rO   rC   
constraintr#   c                 C  s   t |j |||}|S rI   )r   Z__visit_name__)r0   rO   rC   rY   sigr(   r(   r)   from_constraintv   s    z_constraint_sig.from_constraintr   zOptional[str])contextr#   c                 C  s   t | j|jS rI   )r   Z_get_constraint_final_namer@   dialect)r'   r\   r(   r(   r)   md_name_to_sql_name   s     z#_constraint_sig.md_name_to_sql_namec                 C  s   t | j| jjS rI   )r   Z_constraint_is_namedr@   rC   r]   r&   r(   r(   r)   is_named   s    z_constraint_sig.is_namedc                 C  s   | j S rI   )rA   r&   r(   r(   r)   unnamed   s    z_constraint_sig.unnamedc                 C  s
   t  d S rI   rL   r&   r(   r(   r)   unnamed_no_options   s    z"_constraint_sig.unnamed_no_optionsc                 C  s   | j f| j S rI   )rB   r`   r&   r(   r(   r)   	_full_sig   s    z_constraint_sig._full_sigc                 C  s   | j |j kS rI   rb   rV   r(   r(   r)   __eq__   s    z_constraint_sig.__eq__c                 C  s   | j |j kS rI   rc   rV   r(   r(   r)   __ne__   s    z_constraint_sig.__ne__intc                 C  s
   t | jS rI   )hashrb   r&   r(   r(   r)   __hash__   s    z_constraint_sig.__hash__N)r9   r:   r;   r<   rD   rE   rF   rK   r>   rJ   rQ   rW   rU   r[   r^   r   memoized_propertyr_   r`   ra   rb   rd   re   rh   r(   r(   r(   r)   r?   N   s8   

	

r?   c                   @  s\   e Zd ZdZeddddZdZddddd	d
dZeddddZ	dddddZ
dS )_uq_constraint_sigTrH   r"   c                 C  s   | t d< d S )NZunique_constraintr   r/   r(   r(   r)   rJ      s    z_uq_constraint_sig._registerr!   r   r   rN   c                 C  s>   || _ || _t|j| _ttdd |jD | _|| _	d S )Nc                 S  s   g | ]
}|j qS r(   rB   .0colr(   r(   r)   
<listcomp>   s     z/_uq_constraint_sig.__init__.<locals>.<listcomp>)
rC   r@   r   constraint_name_or_nonerB   tuplesortedcolumnsrA   rG   rP   r(   r(   r)   rQ      s
    z_uq_constraint_sig.__init__Tuple[str, ...]c                 C  s   t dd | jjD S )Nc                 S  s   g | ]
}|j qS r(   rl   rm   r(   r(   r)   rp      s     z3_uq_constraint_sig.column_names.<locals>.<listcomp>rr   r@   rt   r&   r(   r(   r)   column_names   s    z_uq_constraint_sig.column_namesrX   r   rR   c                 C  s0   | j s
t| }|}t|st| j|j|jS rI   )rG   rT   	is_uq_sigrC   Zcompare_unique_constraintr@   r'   rS   Zmetadata_objZconn_objr(   r(   r)   rU      s    
 z(_uq_constraint_sig._compare_to_reflectedN)r9   r:   r;   rF   r>   rJ   	is_uniquerQ   r=   rw   rU   r(   r(   r(   r)   rj      s   rj   c                   @  s   e Zd ZU dZded< eddddZdd	d
ddddZdddddZe	j
dd Ze	j
ddddZe	j
ddddZe	j
dd Ze	j
dd ZdS ) _ix_constraint_sigTzsqla_compat._ConstraintNamerB   rH   r"   c                 C  s   | t d< d S )Nindexrk   r/   r(   r(   r)   rJ      s    z_ix_constraint_sig._registerr!   r   r   rN   c                 C  s*   || _ || _|j| _t|j| _|| _d S rI   )rC   r@   rB   r!   uniquerz   rG   rP   r(   r(   r)   rQ      s
    z_ix_constraint_sig.__init__rX   r   rR   c                 C  s0   | j s
t| }|}t|st| j|j|jS rI   )rG   rT   is_index_sigrC   Zcompare_indexesr@   ry   r(   r(   r)   rU      s
    
z(_ix_constraint_sig._compare_to_reflectedc                 C  s   t | jS rI   )r   Zis_expression_indexr@   r&   r(   r(   r)   has_expressions   s    z"_ix_constraint_sig.has_expressionsru   c                 C  s   t dd | jjD S )Nc                 S  s   g | ]
}|j qS r(   rl   rm   r(   r(   r)   rp      s     z3_ix_constraint_sig.column_names.<locals>.<listcomp>rv   r&   r(   r(   r)   rw      s    z_ix_constraint_sig.column_nameszTuple[Optional[str], ...]c                 C  s   t dd | jjD S )Nc                 S  s   g | ]}t |d dqS )rB   N)getattrrm   r(   r(   r)   rp      s     z<_ix_constraint_sig.column_names_optional.<locals>.<listcomp>)rr   r@   Zexpressionsr&   r(   r(   r)   column_names_optional   s    z(_ix_constraint_sig.column_names_optionalc                 C  s   dS )NTr(   r&   r(   r(   r)   r_      s    z_ix_constraint_sig.is_namedc                 C  s   | j f| j S rI   )rz   r   r&   r(   r(   r)   r`      s    z_ix_constraint_sig.unnamedN)r9   r:   r;   rD   r<   r>   rJ   rQ   rU   r   ri   r   rw   r   r_   r`   r(   r(   r(   r)   r{      s    
	


r{   c                   @  sD   e Zd ZdZeddddZddddd	d
dZejdd Z	dS )_fk_constraint_sigTrH   r"   c                 C  s   | t d< d S )NZforeign_key_constraintrk   r/   r(   r(   r)   rJ      s    z_fk_constraint_sig._registerr!   r   r   rN   c                 C  s   || _ || _|| _t|j| _t|\
| _| _| _	| _
| _| _}}}}| j| jt| j	| j
| jt| jf|r| dkrd q| nd |r| dkrd q| nd |r| dkrdn
|rdndf | _d S )Nz	no actiondeferredZinitially_deferrable
deferrableznot deferrable)rG   rC   r@   r   rq   rB   Z_fk_specsource_schemasource_tablesource_columnstarget_schematarget_tabletarget_columnsrr   lowerrA   )r'   rO   rC   r@   ZonupdateZondeleter   Z	initiallyr(   r(   r)   rQ      sH    


z_fk_constraint_sig.__init__c                 C  s$   | j | jt| j| j| jt| jfS rI   )r   r   rr   r   r   r   r   r&   r(   r(   r)   ra   4  s    z%_fk_constraint_sig.unnamed_no_optionsN)
r9   r:   r;   rE   r>   rJ   rQ   r   ri   ra   r(   r(   r(   r)   r      s   4r   zTypeGuard[_ix_constraint_sig])rZ   r#   c                 C  s   | j S rI   )rD   rZ   r(   r(   r)   r~   @  s    r~   zTypeGuard[_uq_constraint_sig]c                 C  s   | j S rI   )rF   r   r(   r(   r)   rx   D  s    rx   zTypeGuard[_fk_constraint_sig]c                 C  s   | j S rI   )rE   r   r(   r(   r)   	is_fk_sigH  s    r   N)*
__future__r   typingr   r   r   r   r   r   r	   r
   r   r   r   r   Zsqlalchemy.sql.schemar   r   r   r   Ztyping_extensionsr    r   r   r   Zalembic.autogenerate.apir   Zalembic.ddl.implr   ZCompareConstraintTyper   r   r<   r   r?   rj   r{   r   r~   rx   r   r(   r(   r(   r)   <module>   sF    %R&3G