o
    ‹åg,&  ã                   @  s  d dl mZ d dl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 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ddd e(f Z)G d!d"„ d"eƒZ*G d#d$„ d$e*ƒZ+G d%d&„ d&e*ƒZ,G d'd(„ d(e,ƒZ-G d)d*„ d*e,ƒZ.G d+d,„ d,e,ƒZ/G d-d.„ d.e,ƒZ0G d/d0„ d0e,ƒZ1G d1d2„ d2e,ƒZ2G d3d4„ d4e*ƒZ3G d5d6„ d6e*ƒZ4G d7d8„ d8e,ƒZ5ee+ƒdpd>d?„ƒZ6ee3ƒdqd@dA„ƒZ7ee4ƒdrdBdC„ƒZ8ee-ƒdsdDdE„ƒZ9ee.ƒdtdFdG„ƒZ:ee/ƒdudHdI„ƒZ;ee0ƒdvdJdK„ƒZ<ee1ƒdwdLdM„ƒZ=ee2ƒdxdNdO„ƒZ>dydTdU„Z?dzdYdZ„Z@d{d[d\„ZAd|d_d`„ZBd}dcdd„ZCd~dfdg„ZDddhdi„ZEddjdk„ZFd€dndo„ZGdS )�é    )ÚannotationsN)ÚOptional)ÚTYPE_CHECKING)ÚUnion)Úexc)ÚInteger)Útypes)Úcompiles)ÚColumn)Ú
DDLElement)Úquoted_nameé   )Ú_columns_for_constraint)Ú_find_columns)Ú_fk_spec)Ú_is_type_bound)Ú_table_for_constraint)ÚAny)ÚComputed)ÚIdentity)ÚCompiled)ÚDDLCompiler)Ú
TextClause)ÚFunction)ÚFetchedValue)Ú
TypeEngineé   )ÚDefaultImplr   r   zFunction[Any]c                   @  s   e Zd ZdZ	ddd	d
„ZdS )Ú
AlterTablez“Represent an ALTER TABLE statement.

    Only the string name and optional schema name of the table
    is required, not a full Table object.

    NÚ
table_nameÚstrÚschemaú!Optional[Union[quoted_name, str]]ÚreturnÚNonec                 C  s   || _ || _d S ©N)r   r!   )Úselfr   r!   © r'   úL/var/www/html/flaskapp/venv/lib/python3.10/site-packages/alembic/ddl/base.pyÚ__init__2   s   
zAlterTable.__init__r%   )r   r    r!   r"   r#   r$   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r)   r'   r'   r'   r(   r   *   s    
ýr   c                      ó"   e Zd Z	dd‡ fd
d„Z‡  ZS )ÚRenameTableNÚold_table_namer    Únew_table_nameúUnion[quoted_name, str]r!   r"   r#   r$   c                   ó   t ƒ j||d� || _d S ©N)r!   )Úsuperr)   r1   )r&   r0   r1   r!   ©Ú	__class__r'   r(   r)   <   ó   
zRenameTable.__init__r%   )r0   r    r1   r2   r!   r"   r#   r$   ©r*   r+   r,   r)   Ú__classcell__r'   r'   r6   r(   r/   ;   ó    ür/   c                      s*   e Zd Z					dd‡ fdd„Z‡  ZS )ÚAlterColumnNÚnamer    Úcolumn_namer!   úOptional[str]Úexisting_typeúOptional[TypeEngine]Úexisting_nullableúOptional[bool]Úexisting_server_defaultúOptional[_ServerDefault]Úexisting_commentr#   r$   c                   sD   t ƒ j||d� || _|d urt |¡nd | _|| _|| _|| _d S r4   )	r5   r)   r>   ÚsqltypesÚto_instancer@   rB   rD   rF   )r&   r=   r>   r!   r@   rB   rD   rF   r6   r'   r(   r)   G   s   

ÿý
zAlterColumn.__init__)NNNNN)r=   r    r>   r    r!   r?   r@   rA   rB   rC   rD   rE   rF   r?   r#   r$   r9   r'   r'   r6   r(   r<   F   s    ør<   c                      ó   e Zd Zd
‡ fdd	„Z‡  ZS )ÚColumnNullabler=   r    r>   ÚnullableÚboolr#   r$   c                   ó    t ƒ j||fi |¤Ž || _d S r%   )r5   r)   rK   )r&   r=   r>   rK   Úkwr6   r'   r(   r)   ^   ó   
zColumnNullable.__init__)r=   r    r>   r    rK   rL   r#   r$   r9   r'   r'   r6   r(   rJ   ]   ó    rJ   c                      rI   )Ú
ColumnTyper=   r    r>   Útype_r   r#   r$   c                   s&   t ƒ j||fi |¤Ž t |¡| _d S r%   )r5   r)   rG   rH   rR   )r&   r=   r>   rR   rN   r6   r'   r(   r)   f   s   zColumnType.__init__)r=   r    r>   r    rR   r   r#   r$   r9   r'   r'   r6   r(   rQ   e   rP   rQ   c                      s   e Zd Zd	‡ fdd„Z‡  ZS )
Ú
ColumnNamer=   r    r>   Únewnamer#   r$   c                   rM   r%   )r5   r)   rT   )r&   r=   r>   rT   rN   r6   r'   r(   r)   n   rO   zColumnName.__init__)r=   r    r>   r    rT   r    r#   r$   r9   r'   r'   r6   r(   rS   m   rP   rS   c                      rI   )ÚColumnDefaultr=   r    r>   ÚdefaultrE   r#   r$   c                   rM   r%   ©r5   r)   rV   ©r&   r=   r>   rV   rN   r6   r'   r(   r)   v   s   
zColumnDefault.__init__)r=   r    r>   r    rV   rE   r#   r$   r9   r'   r'   r6   r(   rU   u   rP   rU   c                      rI   )ÚComputedColumnDefaultr=   r    r>   rV   úOptional[Computed]r#   r$   c                   rM   r%   rW   rX   r6   r'   r(   r)   ‚   rO   zComputedColumnDefault.__init__)r=   r    r>   r    rV   rZ   r#   r$   r9   r'   r'   r6   r(   rY   �   rP   rY   c                      s   e Zd Zd‡ fd
d„Z‡  ZS )ÚIdentityColumnDefaultr=   r    r>   rV   úOptional[Identity]Úimplr   r#   r$   c                   s&   t ƒ j||fi |¤Ž || _|| _d S r%   )r5   r)   rV   r]   )r&   r=   r>   rV   r]   rN   r6   r'   r(   r)   Š   s   
zIdentityColumnDefault.__init__)
r=   r    r>   r    rV   r\   r]   r   r#   r$   r9   r'   r'   r6   r(   r[   ‰   rP   r[   c                      r.   )Ú	AddColumnNr=   r    ÚcolumnúColumn[Any]r!   r"   r#   r$   c                   r3   r4   ©r5   r)   r_   ©r&   r=   r_   r!   r6   r'   r(   r)   ˜   r8   zAddColumn.__init__r%   )r=   r    r_   r`   r!   r"   r#   r$   r9   r'   r'   r6   r(   r^   —   r;   r^   c                      r.   )Ú
DropColumnNr=   r    r_   r`   r!   r?   r#   r$   c                   r3   r4   ra   rb   r6   r'   r(   r)   £   s   
zDropColumn.__init__r%   )r=   r    r_   r`   r!   r?   r#   r$   r9   r'   r'   r6   r(   rc   ¢   s    ÿrc   c                      rI   )ÚColumnCommentr=   r    r>   Úcommentr?   r#   r$   c                   rM   r%   )r5   r)   re   )r&   r=   r>   re   rN   r6   r'   r(   r)   «   rO   zColumnComment.__init__)r=   r    r>   r    re   r?   r#   r$   r9   r'   r'   r6   r(   rd   ª   rP   rd   ÚelementÚcompilerr   r#   r    c                 K  s$   dt || j| jƒt|| j| jƒf S )Nz%s RENAME TO %s)Úalter_tabler   r!   Úformat_table_namer1   ©rf   rg   rN   r'   r'   r(   Úvisit_rename_table²   s   þrk   c                 K  s(   dt || j| jƒt|| jfi |¤Žf S ©Nz%s %s)rh   r   r!   Ú
add_columnr_   rj   r'   r'   r(   Úvisit_add_column¼   s   þrn   c                 K  s*   dt || j| jƒt|| jjfi |¤Žf S rl   )rh   r   r!   Údrop_columnr_   r=   rj   r'   r'   r(   Úvisit_drop_columnÄ   s   þrp   c                 K  s0   dt || j| jƒt|| jƒ| jrdf S df S )Nú%s %s %szDROP NOT NULLzSET NOT NULL)rh   r   r!   Úalter_columnr>   rK   rj   r'   r'   r(   Úvisit_column_nullableÌ   s   
ýýrs   c                 K  s.   dt || j| jƒt|| jƒdt|| jƒ f S )Nrq   zTYPE %s)rh   r   r!   rr   r>   Úformat_typerR   rj   r'   r'   r(   Úvisit_column_type×   s
   
ýru   c                 K  s*   dt || j| jƒt|| jƒt|| jƒf S )Nz%s RENAME %s TO %s)rh   r   r!   Úformat_column_namer>   rT   rj   r'   r'   r(   Úvisit_column_nameà   s
   

ýrw   c                 K  s@   dt || j| jƒt|| jƒ| jd urdt|| jƒ f S df S )Nrq   zSET DEFAULT %szDROP DEFAULT)rh   r   r!   rr   r>   rV   Úformat_server_defaultrj   r'   r'   r(   Úvisit_column_defaulté   s   

ÿüúry   c                 K  ó
   t  d¡‚)NztAdding or removing a "computed" construct, e.g. GENERATED ALWAYS AS, to or from an existing column is not supported.©r   ÚCompileErrorrj   r'   r'   r(   Úvisit_computed_columnø   ó   ÿr}   c                 K  rz   )Nz’Adding, removing or modifying an "identity" construct, e.g. GENERATED AS IDENTITY, to or from an existing column is not supported in this dialect.r{   rj   r'   r'   r(   Úvisit_identity_column  r~   r   r=   r2   Úquoteúfunctools.partialc                   s4   t | tƒr	ˆ | ƒS d ‡ fdd„|  d¡D ƒ¡}|S )z#quote the elements of a dotted nameÚ.c                   s   g | ]}ˆ |ƒ‘qS r'   r'   )Ú.0Úx©r€   r'   r(   Ú
<listcomp>  s    z quote_dotted.<locals>.<listcomp>)Ú
isinstancer   ÚjoinÚsplit)r=   r€   Úresultr'   r…   r(   Úquote_dotted  s   
r‹   r   r!   r"   c                 C  s0   t  | jj¡}|rt||ƒd ||ƒ S ||ƒS )Nr‚   )Ú	functoolsÚpartialÚpreparerr€   r‹   )rg   r=   r!   r€   r'   r'   r(   ri     s   ri   c                 C  s   | j  |¡S r%   )rŽ   r€   ©rg   r=   r'   r'   r(   rv   $  s   rv   rV   rE   c                 C  s   |   tdt|d�¡S )Nr„   )Úserver_default)Úget_column_default_stringr
   r   )rg   rV   r'   r'   r(   rx   *  s   ÿrx   rR   r   c                 C  s   | j j |¡S r%   )ÚdialectÚtype_compilerÚprocess)rg   rR   r'   r'   r(   rt   3  ó   rt   r?   c                 C  s   dt | ||ƒ S )NzALTER TABLE %s)ri   )rg   r=   r!   r'   r'   r(   rh   7  s   rh   c                 K  ó   dt | |ƒ S )NzDROP COLUMN %s©rv   )rg   r=   rN   r'   r'   r(   ro   ?  r•   ro   c                 C  r–   )NzALTER COLUMN %sr—   r�   r'   r'   r(   rr   C  r•   rr   r_   r`   c                   sD   dˆ j |fi |¤Ž }d ‡ fdd„|jD ƒ¡}|r |d| 7 }|S )NzADD COLUMN %sú c                 3  s   � | ]}ˆ   |¡V  qd S r%   )r”   )rƒ   Ú
constraint©rg   r'   r(   Ú	<genexpr>J  s   € 

ÿzadd_column.<locals>.<genexpr>)Úget_column_specificationrˆ   Úconstraints)rg   r_   rN   ÚtextÚconstr'   rš   r(   rm   G  s   ÿrm   )rf   r/   rg   r   r#   r    )rf   r^   rg   r   r#   r    )rf   rc   rg   r   r#   r    )rf   rJ   rg   r   r#   r    )rf   rQ   rg   r   r#   r    )rf   rS   rg   r   r#   r    )rf   rU   rg   r   r#   r    )rf   rY   rg   r   )rf   r[   rg   r   )r=   r2   r€   r�   r#   r2   )rg   r   r=   r2   r!   r"   r#   r2   )rg   r   r=   r"   r#   r2   )rg   r   rV   rE   r#   r    )rg   r   rR   r   r#   r    )rg   r   r=   r    r!   r?   r#   r    )rg   r   r=   r    r#   r    )rg   r   r_   r`   r#   r    )HÚ
__future__r   rŒ   Útypingr   r   r   Ú
sqlalchemyr   r   r   rG   Úsqlalchemy.ext.compilerr	   Úsqlalchemy.schemar
   r   Úsqlalchemy.sql.elementsr   Úutil.sqla_compatr   r   r   r   r   r   r   r   Úsqlalchemy.sql.compilerr   r   r   Úsqlalchemy.sql.functionsr   Úsqlalchemy.sql.schemar   Úsqlalchemy.sql.type_apir   r]   r   r    Ú_ServerDefaultr   r/   r<   rJ   rQ   rS   rU   rY   r[   r^   rc   rd   rk   rn   rp   rs   ru   rw   ry   r}   r   r‹   ri   rv   rx   rt   rh   ro   rr   rm   r'   r'   r'   r(   Ú<module>   sˆ   	
	





	


