o
    ‹åg;$  ã                   @  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&d3d*d+„Z'd4d-d.„Z(d5d0d1„Z)d2S )6é    )Ú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                   @  sr   e Zd ZU ded< ded< eddd„ƒZedd	d
„ƒZeddd„ƒZeddd„ƒZ	eddd„ƒZ
eddd„ƒZdS )ÚComparisonResultz%Literal['equal', 'different', 'skip']ÚstatusÚstrÚmessageÚreturnÚboolc                 C  ó
   | j dkS )NÚequal©r   ©Úself© r(   úP/var/www/html/flaskapp/venv/lib/python3.10/site-packages/alembic/ddl/_autogen.pyÚis_equal-   ó   
zComparisonResult.is_equalc                 C  r#   )NÚ	differentr%   r&   r(   r(   r)   Úis_different1   r+   zComparisonResult.is_differentc                 C  r#   )NÚskipr%   r&   r(   r(   r)   Úis_skip5   r+   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.EqualÚreasonúUnion[str, Sequence[str]]c                 C  ó   | dd  t |¡¡ƒS )z9the constraints are different for the provided reason(s).r,   ú, ©Újoinr   Úto_list©r1   r3   r(   r(   r)   Ú	Different>   s   zComparisonResult.Differentc                 C  r5   )zãthe 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.   r6   r7   r:   r(   r(   r)   ÚSkipC   s   zComparisonResult.SkipN©r!   r"   )r!   r   )r3   r4   r!   r   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Úpropertyr*   r-   r/   Úclassmethodr2   r;   r<   r(   r(   r(   r)   r   )   s   
 r   c                   @  s  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< d9dd„Zedd„ ƒZ	d:dd„Z
d;dd„Zd<dd „Zed=d"d#„ƒZd>d'd(„Zejd)d*„ ƒZejd?d+d,„ƒZejd?d-d.„ƒZejd?d/d0„ƒZd@d1d2„Zd@d3d4„ZdAd6d7„Zd8S )BÚ_constraint_sigr   ÚconstúTuple[Any, ...]Ú_sigz,Optional[sqla_compat._ConstraintNameDefined]Únamer   ÚimplFzClassVar[bool]Ú	_is_indexÚ_is_fkÚ_is_uqr"   Ú_is_metadatar!   ÚNonec                 C  s   |   ¡  d S ©N)Ú	_registerr0   r(   r(   r)   Ú__init_subclass__\   ó   z!_constraint_sig.__init_subclass__c                 C  ó   t ƒ ‚rO   ©ÚNotImplementedErrorr0   r(   r(   r)   rP   _   ó   z_constraint_sig._registerÚis_metadatac                 C  rS   rO   rT   ©r'   rW   rI   rE   r(   r(   r)   Ú__init__c   ó   z_constraint_sig.__init__Úotherú_constraint_sig[Any]r   c                 C  s.   | j |j u sJ ‚| jsJ ‚|jrJ ‚|  |¡S rO   )rI   rM   Ú_compare_to_reflected©r'   r[   r(   r(   r)   Úcompare_to_reflectedh   s   


z$_constraint_sig.compare_to_reflectedú_constraint_sig[_C]c                 C  rS   rO   rT   r^   r(   r(   r)   r]   q   rZ   z%_constraint_sig._compare_to_reflectedÚ
constraintc                 C  s   t |j |||ƒ}|S rO   )r   Ú__visit_name__)r1   rW   rI   ra   Úsigr(   r(   r)   Úfrom_constraintv   s   z_constraint_sig.from_constraintÚcontextr   úOptional[str]c                 C  s   t  | j|j¡S rO   )r   Ú_get_constraint_final_namerE   Údialect)r'   re   r(   r(   r)   Úmd_name_to_sql_name�   s   ÿz#_constraint_sig.md_name_to_sql_namec                 C  s   t  | j| jj¡S rO   )r   Ú_constraint_is_namedrE   rI   rh   r&   r(   r(   r)   Úis_named†   s   z_constraint_sig.is_namedc                 C  ó   | j S rO   )rG   r&   r(   r(   r)   ÚunnamedŠ   rV   z_constraint_sig.unnamedc                 C  rS   rO   rT   r&   r(   r(   r)   Úunnamed_no_optionsŽ   rV   z"_constraint_sig.unnamed_no_optionsc                 C  ó   | j f| j S rO   )rH   rm   r&   r(   r(   r)   Ú	_full_sig’   ó   z_constraint_sig._full_sigc                 C  s   | j |j kS rO   ©rp   r^   r(   r(   r)   Ú__eq__–   rR   z_constraint_sig.__eq__c                 C  s   | j |j kS rO   rr   r^   r(   r(   r)   Ú__ne__™   rR   z_constraint_sig.__ne__Úintc                 C  s
   t | jƒS rO   )Úhashrp   r&   r(   r(   r)   Ú__hash__œ   s   
z_constraint_sig.__hash__N©r!   rN   )rW   r"   rI   r   rE   r   r!   rN   )r[   r\   r!   r   ©r[   r`   r!   r   )rW   r"   rI   r   ra   r   r!   r`   )re   r   r!   rf   )r!   rF   r=   )r!   ru   )r>   r?   r@   rA   rJ   rK   rL   rQ   rC   rP   rY   r_   r]   rd   ri   r   Úmemoized_propertyrk   rm   rn   rp   rs   rt   rw   r(   r(   r(   r)   rD   N   s:   
 




	




rD   c                   @  sD   e Zd ZdZeddd„ƒZdZddd„Zeddd„ƒZ	ddd„Z
dS )Ú_uq_constraint_sigTr!   rN   c                 C  ó   | t d< d S )NÚunique_constraint©r   r0   r(   r(   r)   rP   £   ó   z_uq_constraint_sig._registerrW   r"   rI   r   rE   r   c                 C  s>   || _ || _t |j¡| _ttdd„ |jD ƒƒƒ| _|| _	d S )Nc                 S  ó   g | ]}|j ‘qS r(   ©rH   ©Ú.0Úcolr(   r(   r)   Ú
<listcomp>²   ó    z/_uq_constraint_sig.__init__.<locals>.<listcomp>)
rI   rE   r   Úconstraint_name_or_nonerH   ÚtupleÚsortedÚcolumnsrG   rM   rX   r(   r(   r)   rY   ©   s
   
z_uq_constraint_sig.__init__úTuple[str, ...]c                 C  ó   t dd„ | jjD ƒƒS )Nc                 S  r€   r(   r�   r‚   r(   r(   r)   r…   ·   r†   z3_uq_constraint_sig.column_names.<locals>.<listcomp>©rˆ   rE   rŠ   r&   r(   r(   r)   Úcolumn_namesµ   ó   z_uq_constraint_sig.column_namesr[   r`   r   c                 C  ó0   | j sJ ‚| }|}t|ƒsJ ‚| j |j|j¡S rO   )rM   Ú	is_uq_sigrI   Úcompare_unique_constraintrE   ©r'   r[   Úmetadata_objÚconn_objr(   r(   r)   r]   ¹   s   
ÿz(_uq_constraint_sig._compare_to_reflectedNrx   )rW   r"   rI   r   rE   r   r!   rN   ©r!   r‹   ry   )r>   r?   r@   rL   rC   rP   Ú	is_uniquerY   rB   rŽ   r]   r(   r(   r(   r)   r{       s    
r{   c                   @  s†   e Zd ZU dZded< ed"dd„ƒZd#dd„Zd$dd„Ze	j
dd„ ƒZe	j
d%dd„ƒZe	j
d&dd„ƒZe	j
dd„ ƒZe	j
dd „ ƒZd!S )'Ú_ix_constraint_sigTzsqla_compat._ConstraintNamerH   r!   rN   c                 C  r|   )NÚindexr~   r0   r(   r(   r)   rP   Ë   r   z_ix_constraint_sig._registerrW   r"   rI   r   rE   r   c                 C  s*   || _ || _|j| _t|jƒ| _|| _d S rO   )rI   rE   rH   r"   Úuniquer—   rM   rX   r(   r(   r)   rY   Ï   s
   
z_ix_constraint_sig.__init__r[   r`   r   c                 C  r�   rO   )rM   Úis_index_sigrI   Úcompare_indexesrE   r“   r(   r(   r)   r]   Ø   s
   
z(_ix_constraint_sig._compare_to_reflectedc                 C  s   t  | j¡S rO   )r   Úis_expression_indexrE   r&   r(   r(   r)   Úhas_expressionsâ   r   z"_ix_constraint_sig.has_expressionsr‹   c                 C  rŒ   )Nc                 S  r€   r(   r�   r‚   r(   r(   r)   r…   è   r†   z3_ix_constraint_sig.column_names.<locals>.<listcomp>r�   r&   r(   r(   r)   rŽ   æ   r�   z_ix_constraint_sig.column_namesúTuple[Optional[str], ...]c                 C  rŒ   )Nc                 S  s   g | ]}t |d dƒ‘qS )rH   N)Úgetattrr‚   r(   r(   r)   r…   í   s    z<_ix_constraint_sig.column_names_optional.<locals>.<listcomp>)rˆ   rE   Úexpressionsr&   r(   r(   r)   Úcolumn_names_optionalê   s   ÿz(_ix_constraint_sig.column_names_optionalc                 C  s   dS )NTr(   r&   r(   r(   r)   rk   ð   s   z_ix_constraint_sig.is_namedc                 C  ro   rO   )r—   r¢   r&   r(   r(   r)   rm   ô   rq   z_ix_constraint_sig.unnamedNrx   )rW   r"   rI   r   rE   r   r!   rN   ry   r–   )r!   rŸ   )r>   r?   r@   rJ   rA   rC   rP   rY   r]   r   rz   rž   rŽ   r¢   rk   rm   r(   r(   r(   r)   r˜   Æ   s"   
 

	


r˜   c                   @  s6   e Zd ZdZeddd„ƒZddd„Zejdd„ ƒZ	dS )Ú_fk_constraint_sigTr!   rN   c                 C  r|   )NÚforeign_key_constraintr~   r0   r(   r(   r)   rP   ü   r   z_fk_constraint_sig._registerrW   r"   rI   r   rE   r   c                 C  sÒ   || _ || _|| _t |j¡| _t |¡\
| _| _| _	| _
| _| _}}}}| j| jt| j	ƒ| j
| jt| jƒf|rD| ¡ dkr@d n| ¡ nd |rS| ¡ dkrOd n| ¡ nd |r^| ¡ dkr^dn|rbdndf | _d S )Nz	no actionÚdeferredÚinitially_deferrableÚ
deferrableznot deferrable)rM   rI   rE   r   r‡   rH   Ú_fk_specÚsource_schemaÚsource_tableÚsource_columnsÚtarget_schemaÚtarget_tableÚtarget_columnsrˆ   ÚlowerrG   )r'   rW   rI   rE   ÚonupdateÚondeleter§   Ú	initiallyr(   r(   r)   rY      sH   õú
ÿÿÿÿ
ñ
ùz_fk_constraint_sig.__init__c                 C  s$   | j | jt| jƒ| j| jt| jƒfS rO   )r©   rª   rˆ   r«   r¬   r­   r®   r&   r(   r(   r)   rn   4  s   úz%_fk_constraint_sig.unnamed_no_optionsNrx   )rW   r"   rI   r   rE   r   r!   rN   )
r>   r?   r@   rK   rC   rP   rY   r   rz   rn   r(   r(   r(   r)   r£   ù   s    
4r£   rc   r!   úTypeGuard[_ix_constraint_sig]c                 C  rl   rO   )rJ   ©rc   r(   r(   r)   r›   @  ó   r›   úTypeGuard[_uq_constraint_sig]c                 C  rl   rO   )rL   r´   r(   r(   r)   r‘   D  rµ   r‘   úTypeGuard[_fk_constraint_sig]c                 C  rl   rO   )rK   r´   r(   r(   r)   Ú	is_fk_sigH  rµ   r¸   N)rc   rD   r!   r³   )rc   rD   r!   r¶   )rc   rD   r!   r·   )*Ú
__future__r   Útypingr   r   r   r   r   r   r	   r
   r   r   r   r   Úsqlalchemy.sql.schemar   r   r   r   Útyping_extensionsr   Ú r   r   r   Úalembic.autogenerate.apir   Úalembic.ddl.implr   ÚCompareConstraintTyper   r   rA   r   rD   r{   r˜   r£   r›   r‘   r¸   r(   r(   r(   r)   Ú<module>   sF   %R&3
G
