
    Oj.                       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 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& eee'eee         f         Z( G d de          Z) G d  d!e)          Z* G d" d#e)          Z+ G d$ d%e+          Z, G d& d'e+          Z- G d( d)e+          Z. G d* d+e+          Z/ G d, d-e+          Z0 G d. d/e+          Z1 G d0 d1e)          Z2 G d2 d3e)          Z3 G d4 d5e+          Z4 ee*          d`d;            Z5 ee2          dad<            Z6 ee3          dbd=            Z7 ee,          dcd>            Z8 ee-          ddd?            Z9 ee.          ded@            Z: ee/          dfdA            Z; ee0          dgdB            Z< ee1          dhdC            Z=didHZ>djdLZ?dkdMZ@dldPZAdmdSZBdndUZC	 dodpdXZDdqdYZE	 	 	 drdsd_ZFdS )t    )annotationsN)Any)Optional)TYPE_CHECKING)Union)exc)Integer)types)compiles)Column)
DDLElement)ColumnElement)quoted_name)
TextClause)FetchedValue   )_columns_for_constraint)_find_columns)_fk_spec)_is_type_bound)_table_for_constraint)Computed)Identity)Compiled)DDLCompiler)
TypeEngine   )DefaultImplc                      e Zd ZdZ	 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                "    || _         || _        d S N)r!   r#   )selfr!   r#   s      d/lsinfo/ai/hellotax_ai/training_center/backend/venv/lib/python3.11/site-packages/alembic/ddl/base.py__init__zAlterTable.__init__2   s    
 %    r(   )r!   r"   r#   r$   r%   r&   )__name__
__module____qualname____doc__r+    r,   r*   r    r    *   s<          59      r,   r    c                  $     e Zd Z	 dd fd
Z xZS )RenameTableNold_table_namer"   new_table_nameUnion[quoted_name, str]r#   r$   r%   r&   c                \    t                                          ||           || _        d S N)r#   )superr+   r5   )r)   r4   r5   r#   	__class__s       r*   r+   zRenameTable.__init__<   s0     	777,r,   r(   )r4   r"   r5   r6   r#   r$   r%   r&   r-   r.   r/   r+   __classcell__r:   s   @r*   r3   r3   ;   sG        
 59	- - - - - - - - - - -r,   r3   c                  ,     e Zd Z	 	 	 	 	 dd fdZ xZS )AlterColumnNnamer"   column_namer#   Optional[str]existing_typeOptional[TypeEngine]existing_nullableOptional[bool]existing_server_defaultOptional[_ServerDefaultType]existing_commentr%   r&   c                    t                                          ||           || _        |t          j        |          nd | _        || _        || _        || _        d S r8   )	r9   r+   rA   sqltypesto_instancerC   rE   rG   rI   )	r)   r@   rA   r#   rC   rE   rG   rI   r:   s	           r*   r+   zAlterColumn.__init__G   sp     	f---& (  /// 	
 "3'>$ 0r,   )NNNNN)r@   r"   rA   r"   r#   rB   rC   rD   rE   rF   rG   rH   rI   rB   r%   r&   r;   r=   s   @r*   r?   r?   F   sS        
 !%.2,0@D*.1 1 1 1 1 1 1 1 1 1 1r,   r?   c                        e Zd Zd	 fdZ xZS )
ColumnNullabler@   r"   rA   nullableboolr%   r&   c                L     t                      j        ||fi | || _        d S r(   )r9   r+   rO   )r)   r@   rA   rO   kwr:   s        r*   r+   zColumnNullable.__init__^   s1     	{11b111 r,   )r@   r"   rA   r"   rO   rP   r%   r&   r;   r=   s   @r*   rN   rN   ]   s=        ! ! ! ! ! ! ! ! ! !r,   rN   c                        e Zd Zd	 fdZ xZS )

ColumnTyper@   r"   rA   type_r   r%   r&   c                p     t                      j        ||fi | t          j        |          | _        d S r(   )r9   r+   rK   rL   rU   )r)   r@   rA   rU   rR   r:   s        r*   r+   zColumnType.__init__f   s<     	{11b111)%00


r,   )r@   r"   rA   r"   rU   r   r%   r&   r;   r=   s   @r*   rT   rT   e   s=        1 1 1 1 1 1 1 1 1 1r,   rT   c                        e Zd Zd fdZ xZS )	
ColumnNamer@   r"   rA   newnamer%   r&   c                L     t                      j        ||fi | || _        d S r(   )r9   r+   rY   )r)   r@   rA   rY   rR   r:   s        r*   r+   zColumnName.__init__n   1     	{11b111r,   )r@   r"   rA   r"   rY   r"   r%   r&   r;   r=   s   @r*   rX   rX   m   =                 r,   rX   c                        e Zd Zd	 fdZ xZS )
ColumnDefaultr@   r"   rA   defaultrH   r%   r&   c                L     t                      j        ||fi | || _        d S r(   r9   r+   r_   r)   r@   rA   r_   rR   r:   s        r*   r+   zColumnDefault.__init__v   s1     	{11b111r,   )r@   r"   rA   r"   r_   rH   r%   r&   r;   r=   s   @r*   r^   r^   u   s=                 r,   r^   c                        e Zd Zd	 fdZ xZS )
ComputedColumnDefaultr@   r"   rA   r_   Optional[Computed]r%   r&   c                L     t                      j        ||fi | || _        d S r(   ra   rb   s        r*   r+   zComputedColumnDefault.__init__   r[   r,   )r@   r"   rA   r"   r_   re   r%   r&   r;   r=   s   @r*   rd   rd      r\   r,   rd   c                        e Zd Zd fd
Z xZS )IdentityColumnDefaultr@   r"   rA   r_   Optional[Identity]implr   r%   r&   c                Z     t                      j        ||fi | || _        || _        d S r(   )r9   r+   r_   rj   )r)   r@   rA   r_   rj   rR   r:   s         r*   r+   zIdentityColumnDefault.__init__   s8     	{11b111			r,   )
r@   r"   rA   r"   r_   ri   rj   r   r%   r&   r;   r=   s   @r*   rh   rh      s=        
 
 
 
 
 
 
 
 
 
r,   rh   c                  *     e Zd Z	 	 	 	 dd fdZ xZS )	AddColumnNr@   r"   columnColumn[Any]r#   r$   if_not_existsrF   inline_referencesinline_primary_keyr%   r&   c                    t                                          ||           || _        || _        || _        || _        d S r8   )r9   r+   rn   rp   rq   rr   )r)   r@   rn   r#   rp   rq   rr   r:   s          r*   r+   zAddColumn.__init__   sG     	f---*!2"4r,   )NNNN)r@   r"   rn   ro   r#   r$   rp   rF   rq   rF   rr   rF   r%   r&   r;   r=   s   @r*   rm   rm      sP        
 59(,,0-15 5 5 5 5 5 5 5 5 5 5r,   rm   c                  &     e Zd Z	 	 dd fdZ xZS )
DropColumnNr@   r"   rn   ro   r#   rB   	if_existsrF   r%   r&   c                j    t                                          ||           || _        || _        d S r8   )r9   r+   rn   rv   )r)   r@   rn   r#   rv   r:   s        r*   r+   zDropColumn.__init__   s4     	f---"r,   )NN)
r@   r"   rn   ro   r#   rB   rv   rF   r%   r&   r;   r=   s   @r*   ru   ru      sJ        
 !%$(	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#r,   ru   c                        e Zd Zd	 fdZ xZS )
ColumnCommentr@   r"   rA   commentrB   r%   r&   c                L     t                      j        ||fi | || _        d S r(   )r9   r+   rz   )r)   r@   rA   rz   rR   r:   s        r*   r+   zColumnComment.__init__   r[   r,   )r@   r"   rA   r"   rz   rB   r%   r&   r;   r=   s   @r*   ry   ry      r\   r,   ry   elementcompilerr   r%   r"   c                t    t          || j        | j                  dt          || j        | j                  S )Nz RENAME TO )alter_tabler!   r#   format_table_namer5   r|   r}   rR   s      r*   visit_rename_tabler      s?    
 	Hg0'.AAAA(G$:GNKKK r,   c           	         t          || j        | j                  dt          || j        f| j        | j        | j        d|S )N )rp   rq   rr   )r   r!   r#   
add_columnrn   rp   rq   rr   r   s      r*   visit_add_columnr      sj     	Hg0'.AAAAN	
 "/%7&9	
 	
 	
 	
 	

 
r,   c                |    t          || j        | j                  dt          || j        j        fd| j        i|S )Nr   rv   )r   r!   r#   drop_columnrn   r@   rv   r   s      r*   visit_drop_columnr      s\     	Hg0'.AAAAgn)	
 	
5<5F	
JL	
 	
 	
 r,   c                    t          || j        | j                  dt          || j                  d| j        rdndS )Nr   zDROP NOT NULLzSET NOT NULL)r   r!   r#   alter_columnrA   rO   r   s      r*   visit_column_nullabler      sP    
 	Hg0'.AAAAXw23333"+?? r,   c           	         t          || j        | j                  dt          || j                  ddt          || j                  z  S )Nr   zTYPE %s)r   r!   r#   r   rA   format_typerU   r   s      r*   visit_column_typer      sU     	Hg0'.AAAAXw23333K'-8888 r,   c                    t          || j        | j                  dt          || j                  dt          || j                  S )Nz RENAME z TO )r   r!   r#   format_column_namerA   rY   r   s      r*   visit_column_namer      sP     	Hg0'.AAAA8W%899998W_555 r,   c           	         t          || j        | j                  dt          || j                  d| j        dt          || j                  z  ndS )Nr   zSET DEFAULT %szDROP DEFAULT)r   r!   r#   r   rA   r_   format_server_defaultr   s      r*   visit_column_defaultr      sj    
 	Hg0'.AAAAXw23333 * 4XwOOOO 	 r,   c                *    t          j        d          )NztAdding or removing a "computed" construct, e.g. GENERATED ALWAYS AS, to or from an existing column is not supported.r   CompileErrorr   s      r*   visit_computed_columnr     s     
	E  r,   c                *    t          j        d          )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   r   s      r*   visit_identity_columnr     s     
	3  r,   r@   r6   quotefunctools.partialc                    t          | t                    r |           S d                    fd|                     d          D                       }|S )z#quote the elements of a dotted name.c                &    g | ]} |          S r1   r1   ).0xr   s     r*   
<listcomp>z quote_dotted.<locals>.<listcomp>(  s!    999AuuQxx999r,   )
isinstancer   joinsplit)r@   r   results    ` r*   quote_dottedr   !  sZ    
 $$$ uT{{XX9999C999::FMr,   r   r#   r$   c                    t          j        | j        j                  }|rt	          ||          dz    ||          z   S  ||          S )Nr   )	functoolspartialpreparerr   r   )r}   r@   r#   r   s       r*   r   r   ,  sR    
 h/566E FE**S055;;>>uT{{r,   c                6    | j                             |          S r(   )r   r   r}   r@   s     r*   r   r   8  s     ""4(((r,   r_   rH   c                b    |                      t          dt          |                    }|J |S )Nr   )server_default)get_column_default_stringr   r	   )r}   r_   default_strs      r*   r   r   >  s?     44sGG444 K """r,   rU   r   c                @    | j         j                            |          S r(   )dialecttype_compilerprocess)r}   rU   s     r*   r   r   K  s    )11%888r,   rB   c                *    dt          | ||          z  S )NzALTER TABLE %s)r   )r}   r@   r#   s      r*   r   r   O  s    
 /$GGGGr,   rv   rF   c                4    d|rdndt          | |          S )NzDROP COLUMN z
IF EXISTS  r   )r}   r@   rv   rR   s       r*   r   r   W  s/      ")r)8T*** r,   c                (    dt          | |          z  S )NzALTER COLUMN %sr   r   s     r*   r   r   `  s    1(DAAAAr,   rn   ro   rp   rq   rr   c                    d|rdnd  j         |fi |}|r|j        r|dz  }|rt          |j                  dk    rt	          |j                  d         x}r|j        t          |j        j                  dk    r|j        }|j        }	|	j	        rB j
                            |	j	                  d j
                            |	j                  }
n j
                            |	j                  }
|d|
d	 j
                            |j                  d
z  }d                     fd|j        D                       }|r|d|z   z  }|S )NzADD COLUMN zIF NOT EXISTS r   z PRIMARY KEYr   r   r   z REFERENCES z ()r   c              3  B   K   | ]}                     |          V  d S r(   )r   )r   
constraintr}   s     r*   	<genexpr>zadd_column.<locals>.<genexpr>  sB        )3$$     r,   )get_column_specificationprimary_keylenforeign_keyslistr   columnsrn   tabler#   r   quote_schemar   r@   r   constraints)r}   rn   rp   rq   rr   rR   textfkref_col	ref_tabler!   consts   `           r*   r   r   d  s     *1r1))&77B777D
  f0  	
#$$))+,,Q//R *M%%&&!++)M	  	A!..y/?@@@@!''	777JJ
 "*00@@JJJ##GL1111
 	

 HH    7=7I    E  eKr,   )r|   r3   r}   r   r%   r"   )r|   rm   r}   r   r%   r"   )r|   ru   r}   r   r%   r"   )r|   rN   r}   r   r%   r"   )r|   rT   r}   r   r%   r"   )r|   rX   r}   r   r%   r"   )r|   r^   r}   r   r%   r"   )r|   rd   r}   r   )r|   rh   r}   r   )r@   r6   r   r   r%   r6   )r}   r   r@   r6   r#   r$   r%   r6   )r}   r   r@   r$   r%   r6   )r}   r   r_   rH   r%   r"   )r}   r   rU   r   r%   r"   )r}   r   r@   r"   r#   rB   r%   r"   r(   )r}   r   r@   r"   rv   rF   r%   r"   )r}   r   r@   r"   r%   r"   )NNN)r}   r   rn   ro   rp   rF   rq   rF   rr   rF   r%   r"   )G
__future__r   r   typingr   r   r   r   
sqlalchemyr   r	   r
   rK   sqlalchemy.ext.compilerr   sqlalchemy.schemar   r   sqlalchemy.sql.elementsr   r   r   sqlalchemy.sql.schemar   util.sqla_compatr   r   r   r   r   r   r   sqlalchemy.sql.compilerr   r   sqlalchemy.sql.type_apir   rj   r   r"   _ServerDefaultTyper    r3   r?   rN   rT   rX   r^   rd   rh   rm   ru   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r,   r*   <module>r      sg   # " " " " "                                               ( ( ( ( ( ( , , , , , , $ $ $ $ $ $ ( ( ( ( ( ( 1 1 1 1 1 1 / / / / / / . . . . . . . . . . . . 6 6 6 6 6 6 , , , , , , ' ' ' ' ' ' - - - - - - 4 4 4 4 4 4 "############000000333333222222!!!!!!<j-:LLM        "- - - - -* - - -1 1 1 1 1* 1 1 1.! ! ! ! ![ ! ! !1 1 1 1 1 1 1 1       	 	 	 	 	K 	 	 	    K       K   5 5 5 5 5
 5 5 5"
# 
# 
# 
# 
# 
# 
# 
#    K    
+    
)    
*    
.    
*    
*    
-    

     !  

     !    	 	 	 	) ) ) )
 
 
 
9 9 9 9H H H H CG    B B B B %)(,)-2 2 2 2 2 2 2r,   