o
    8 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+dsd>d?Z6ee3dtd@dAZ7ee4dudBdCZ8ee-dvdDdEZ9ee.dwdFdGZ:ee/dxdHdIZ;ee0dydJdKZ<ee1dzdLdMZ=ee2d{dNdOZ>d|dTdUZ?d}dYdZZ@d~d[d\ZAdd_d`ZBddcddZCddfdgZD	dddjdkZEddldmZF	dddqdr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'   X/var/www/html/figdemos/bartoux_crm/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                      s"   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                   s   t  j||d || _d S N)r!   )superr)   r0   )r&   r/   r0   r!   	__class__r'   r(   r)   <   s   
zRenameTable.__init__r%   )r/   r    r0   r1   r!   r"   r#   r$   r*   r+   r,   r)   __classcell__r'   r'   r4   r(   r.   ;   s    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 r2   )	r3   r)   r:   sqltypesto_instancer<   r>   r@   rB   )r&   r9   r:   r!   r<   r>   r@   rB   r4   r'   r(   r)   G   s   


zAlterColumn.__init__)NNNNN)r9   r    r:   r    r!   r;   r<   r=   r>   r?   r@   rA   rB   r;   r#   r$   r6   r'   r'   r4   r(   r8   F   s    r8   c                         e Zd Zd
 fdd	Z  ZS )ColumnNullabler9   r    r:   nullableboolr#   r$   c                       t  j||fi | || _d S r%   )r3   r)   rG   )r&   r9   r:   rG   kwr4   r'   r(   r)   ^      
zColumnNullable.__init__)r9   r    r:   r    rG   rH   r#   r$   r6   r'   r'   r4   r(   rF   ]       rF   c                      rE   )
ColumnTyper9   r    r:   type_r   r#   r$   c                   s&   t  j||fi | t|| _d S r%   )r3   r)   rC   rD   rN   )r&   r9   r:   rN   rJ   r4   r'   r(   r)   f   s   zColumnType.__init__)r9   r    r:   r    rN   r   r#   r$   r6   r'   r'   r4   r(   rM   e   rL   rM   c                      s   e Zd Zd	 fddZ  ZS )

ColumnNamer9   r    r:   newnamer#   r$   c                   rI   r%   )r3   r)   rP   )r&   r9   r:   rP   rJ   r4   r'   r(   r)   n   rK   zColumnName.__init__)r9   r    r:   r    rP   r    r#   r$   r6   r'   r'   r4   r(   rO   m   rL   rO   c                      rE   )ColumnDefaultr9   r    r:   defaultrA   r#   r$   c                   rI   r%   r3   r)   rR   r&   r9   r:   rR   rJ   r4   r'   r(   r)   v   s   
zColumnDefault.__init__)r9   r    r:   r    rR   rA   r#   r$   r6   r'   r'   r4   r(   rQ   u   rL   rQ   c                      rE   )ComputedColumnDefaultr9   r    r:   rR   Optional[Computed]r#   r$   c                   rI   r%   rS   rT   r4   r'   r(   r)      rK   zComputedColumnDefault.__init__)r9   r    r:   r    rR   rV   r#   r$   r6   r'   r'   r4   r(   rU      rL   rU   c                      s   e Zd Zd fd
dZ  ZS )IdentityColumnDefaultr9   r    r:   rR   Optional[Identity]implr   r#   r$   c                   s&   t  j||fi | || _|| _d S r%   )r3   r)   rR   rY   )r&   r9   r:   rR   rY   rJ   r4   r'   r(   r)      s   
zIdentityColumnDefault.__init__)
r9   r    r:   r    rR   rX   rY   r   r#   r$   r6   r'   r'   r4   r(   rW      rL   rW   c                      $   e Zd Z		dd fddZ  ZS )	AddColumnNr9   r    columnColumn[Any]r!   r"   if_not_existsr?   r#   r$   c                       t  j||d || _|| _d S r2   )r3   r)   r\   r^   )r&   r9   r\   r!   r^   r4   r'   r(   r)         
zAddColumn.__init__NN)
r9   r    r\   r]   r!   r"   r^   r?   r#   r$   r6   r'   r'   r4   r(   r[          r[   c                      rZ   )
DropColumnNr9   r    r\   r]   r!   r;   	if_existsr?   r#   r$   c                   r_   r2   )r3   r)   r\   rd   )r&   r9   r\   r!   rd   r4   r'   r(   r)      r`   zDropColumn.__init__ra   )
r9   r    r\   r]   r!   r;   rd   r?   r#   r$   r6   r'   r'   r4   r(   rc      rb   rc   c                      rE   )ColumnCommentr9   r    r:   commentr;   r#   r$   c                   rI   r%   )r3   r)   rf   )r&   r9   r:   rf   rJ   r4   r'   r(   r)      rK   zColumnComment.__init__)r9   r    r:   r    rf   r;   r#   r$   r6   r'   r'   r4   r(   re      rL   re   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_namer0   rg   rh   rJ   r'   r'   r(   visit_rename_table   s   rl   c                 K  s.   dt || j| jt|| jfd| ji|f S )N%s %sr^   )ri   r   r!   
add_columnr\   r^   rk   r'   r'   r(   visit_add_column   s   ro   c                 K  s0   dt || j| jt|| jjfd| ji|f S )Nrm   rd   )ri   r   r!   drop_columnr\   r9   rd   rk   r'   r'   r(   visit_drop_column   s   rq   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)ri   r   r!   alter_columnr:   rG   rk   r'   r'   r(   visit_column_nullable   s   
rt   c                 K  s.   dt || j| jt|| jdt|| j f S )Nrr   zTYPE %s)ri   r   r!   rs   r:   format_typerN   rk   r'   r'   r(   visit_column_type   s
   
rv   c                 K  s*   dt || j| jt|| jt|| jf S )Nz%s RENAME %s TO %s)ri   r   r!   format_column_namer:   rP   rk   r'   r'   r(   visit_column_name   s
   

rx   c                 K  s@   dt || j| jt|| j| jd urdt|| j f S df S )Nrr   zSET DEFAULT %szDROP DEFAULT)ri   r   r!   rs   r:   rR   format_server_defaultrk   r'   r'   r(   visit_column_default   s   

rz   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   CompileErrorrk   r'   r'   r(   visit_computed_column     r~   c                 K  r{   )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|   rk   r'   r'   r(   visit_identity_column  r   r   r9   r1   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)r9   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   )rh   r9   r!   r   r'   r'   r(   rj   #  s   rj   c                 C  s   | j |S r%   )r   r   rh   r9   r'   r'   r(   rw   /  s   rw   rR   rA   c                 C  s$   |  tdt|d}|d usJ |S )Nr   )server_default)get_column_default_stringr
   r   )rh   rR   Zdefault_strr'   r'   r(   ry   5  s
   ry   rN   r   c                 C  s   | j j|S r%   )dialecttype_compilerprocess)rh   rN   r'   r'   r(   ru   B     ru   r;   c                 C  s   dt | || S )NzALTER TABLE %s)rj   )rh   r9   r!   r'   r'   r(   ri   F  s   ri   rd   r?   c                 K  s   d|rdndt | |f S )NzDROP COLUMN %s%sz
IF EXISTS  rw   )rh   r9   rd   rJ   r'   r'   r(   rp   N  s   
rp   c                 C  s   dt | | S )NzALTER COLUMN %sr   r   r'   r'   r(   rs   W  r   rs   r\   r]   r^   c                   sP   d|rdnd j |fi |f }d fdd|jD }|r&|d| 7 }|S )NzADD COLUMN %s%szIF NOT EXISTS r    c                 3  s    | ]}  |V  qd S r%   )r   )r   
constraintrh   r'   r(   	<genexpr>f  s    

zadd_column.<locals>.<genexpr>)get_column_specificationr   constraints)rh   r\   r^   rJ   textconstr'   r   r(   rn   [  s   
rn   )rg   r.   rh   r   r#   r    )rg   r[   rh   r   r#   r    )rg   rc   rh   r   r#   r    )rg   rF   rh   r   r#   r    )rg   rM   rh   r   r#   r    )rg   rO   rh   r   r#   r    )rg   rQ   rh   r   r#   r    )rg   rU   rh   r   )rg   rW   rh   r   )r9   r1   r   r   r#   r1   )rh   r   r9   r1   r!   r"   r#   r1   )rh   r   r9   r"   r#   r1   )rh   r   rR   rA   r#   r    )rh   r   rN   r   r#   r    )rh   r   r9   r    r!   r;   r#   r    r%   )rh   r   r9   r    rd   r?   r#   r    )rh   r   r9   r    r#   r    )rh   r   r\   r]   r^   r?   r#   r    )H
__future__r   r   typingr   r   r   
sqlalchemyr   r   r   rC   Zsqlalchemy.ext.compilerr	   sqlalchemy.schemar
   r   sqlalchemy.sql.elementsr   util.sqla_compatr   r   r   r   r   r   r   r   Zsqlalchemy.sql.compilerr   r   r   Zsqlalchemy.sql.functionsr   sqlalchemy.sql.schemar   sqlalchemy.sql.type_apir   rY   r   r    _ServerDefaultr   r.   r8   rF   rM   rO   rQ   rU   rW   r[   rc   re   rl   ro   rq   rt   rv   rx   rz   r~   r   r   rj   rw   ry   ru   ri   rp   rs   rn   r'   r'   r'   r(   <module>   s   			
	






	
	