o
    h&                     @  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rd 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ZFddndo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 )
AlterTablezRepresent 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'   d/var/www/html/construction_image-detection-poc/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   )NzAdding, 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}|d usJ |S )Nr   )server_default)get_column_default_stringr
   r   )rg   rV   default_strr'   r'   r(   rx   *  s
   rx   rR   r   c                 C  s   | j j|S r%   )dialecttype_compilerprocess)rg   rR   r'   r'   r(   rt   7     rt   r?   c                 C  s   dt | || S )NzALTER TABLE %s)ri   )rg   r=   r!   r'   r'   r(   rh   ;  s   rh   c                 K     dt | | S )NzDROP COLUMN %srv   )rg   r=   rN   r'   r'   r(   ro   C  r   ro   c                 C  r   )NzALTER COLUMN %sr   r   r'   r'   r(   rr   G  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>N  s    

zadd_column.<locals>.<genexpr>)get_column_specificationr   constraints)rg   r_   rN   textconstr'   r   r(   rm   K  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   	
	








