
    g                    f
   d dl mZ 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 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) 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%l0m1Z1 d d&l2m3Z3 d d'l4m5Z5 d d(l6m7Z7 d d)l6m8Z8 d d*l9m:Z: d d+l9m;Z; d,Z<	 	 	 	 	 	 dad-Z=dbd.Z>	 	 	 	 	 	 	 	 dcd/Z? ej                         xZAZB	 	 	 	 	 	 ddd0ZC	 	 	 	 	 	 ded1ZD	 	 	 	 	 	 dfd2ZEeBj                  ejp                        	 	 	 	 	 	 dgd3       ZGeBj                  ej                        	 	 	 	 	 	 dhd4       ZIeBj                  ej                        	 	 	 	 	 	 did5       ZKeBj                  ej                        djd6       ZMeBj                  ej                        dkd7       ZO	 	 	 	 	 	 dld8ZPeBj                  ej                        dmd9       ZReBj                  ej                        dnd:       ZTeBj                  ej                        	 	 	 	 	 	 dod;       ZVeBj                  ej                        	 	 	 	 	 	 dpd<       ZXeBj                  ej                        d=        ZZeBj                  ej                        d>        Z\eBj                  ej                        	 	 	 	 	 	 dqd?       Z^eBj                  ej                        drd@       Z`eBj                  ej                        dsdA       ZbeBj                  ej                        	 	 	 	 	 	 dtdB       Zd G dC dD      ZedudEZfdFdGdGdH	 	 	 	 	 	 	 	 	 	 	 dvdIZg	 	 	 	 	 	 dwdJZh	 	 	 	 	 	 	 	 dxdKZidL ZjdydMZkdydNZl	 	 	 	 	 	 	 	 dzdOZm	 	 	 	 	 	 d{dPZnd|dQZo	 d}	 	 	 	 	 	 	 d~dRZp	 	 	 	 	 	 ddSZq	 	 	 	 	 	 ddTZr	 d	 	 	 	 	 	 	 ddUZsddVZt	 	 	 	 	 	 ddWZu	 d	 	 	 	 	 	 	 	 	 	 	 ddXZv ej                         Zw	 	 	 	 	 	 	 	 ddYZxewj                  ejX                        	 	 	 	 	 	 	 	 ddZ       Zy	 	 	 	 	 	 	 	 dd[Zz	 	 	 	 	 	 dd\Z{ewj                  ejR                        	 	 	 	 	 	 	 	 dd]       Z|ewj                  ejZ                        	 	 	 	 	 	 	 	 dd^       Z}ewj                  ejH                        	 	 	 	 	 	 	 	 dd_       Z~eBj                  ej                        dd`       ZeAj                         ZBy)    )annotations)StringION)Any)cast)Dict)List)Optional)Tuple)TYPE_CHECKING)Union)PythonPrinter)schema)sql)types)conv)quoted_name   )util)ops)sqla_compat)Literal)DialectKWArgs)ColumnElement)
TextClause)CheckConstraint)Column)
Constraint)FetchedValue)
ForeignKey)ForeignKeyConstraint)Index)MetaData)PrimaryKeyConstraint)UniqueConstraint)ARRAY)
TypeEngine)AutogenContext)Config)MigrationScript)ModifyTableOps)Computed)Identity   c                v    t        |t              rt        t        |       |      S t	        j
                  |      S N)
isinstancer   _f_name_alembic_autogenerate_prefixr   constraint_name_or_none)autogen_contextnames     Z/var/www/html/AdoubleTech/venv/lib/python3.12/site-packages/alembic/autogenerate/render.py_render_gen_namer7   :   s2     $3ODdKK22488    c                    t        j                  dt         j                        j                  d|       j	                         } t        j                  dt         j                        j                  d|       } | S )N^    z +$ )recompileMsubstrip)texts    r6   _indentrC   D   sR    ::dBDD!%%fd399;D::fbdd#''D1DKr8   c                .   | j                   }t        |j                  |j                        D ]I  \  }}t	        t        ||             ||j                  <   t	        t        ||             ||j                  <   K dj                  t        |            |d<   y )N
imports)
rF   zipupgrade_ops_listdowngrade_ops_listrC   _render_cmd_bodyupgrade_tokendowngrade_tokenjoinsorted)r4   migration_scripttemplate_argsrF   upgrade_opsdowngrade_opss         r6    _render_python_into_templatevarsrS   J   s    
 %%G&)))+;+N+N' 
"] 4;[/:4
k//0 8?]O<8
m334
  $yy9M)r8   c                B   t               }t        |      }|j                  d       d}| j                  D ]5  }t	        ||      }|xs t        |      }|D ]  }|j                  |        7 |s|j                  d       |j                  d       |j                         S )Nz=# ### commands auto generated by Alembic - please adjust! ###Fpassz# ### end Alembic commands ###)r   r   	writeliner   	render_opboolgetvalue)op_containerr4   bufprinter	has_linesoplineslines           r6   rJ   rJ   `   s     *CC GG I $/2.,e	 	$Dd#	$	$ &!67<<>r8   c                h    t         j                  |      }t        j                   || |            }|S r/   )	renderersdispatchr   to_list)r4   r^   rendererr_   s       r6   rW   rW   {   s.     !!"%HLL/267ELr8   c                8    dj                  t        | |            S )NrE   )rM   rW   r4   r^   s     r6   render_op_textrh      s     99Y344r8   c                   | j                   }|j                  dd      }|j                  rg }|r| j                         5  |j	                  d|j
                  d|j                  d       |j                  D ]  }t        | |      }|j                  |       ! |j	                  d       d d d        |S |j                  D ]  }t        | |      }|j                  |       ! |S g S # 1 sw Y   |S xY w)Nrender_as_batchFzwith op.batch_alter_table(z	, schema=z) as batch_op:r<   )	optsgetr   _within_batchappend
table_namer   rW   extend)r4   r^   rk   rj   r_   t_opt_liness          r6   _render_modify_tablers      s     Dhh0%8O	vv ..0 !}}bii1 FF *D'>GLL)* R ! 	  &#OT:W%& 	!! s   A,C''C1c                &   | j                   rd}nd}|j                  t        |       |j                  |j                  d|j                  z  nd |j
                  d|j
                  z  nd |j                  d|j                  z  d      S d d      S )NzV{prefix}create_table_comment(
{indent}{comment},
{indent}existing_comment={existing}
)z{prefix}create_table_comment(
{indent}'{tname}',
{indent}{comment},
{indent}existing_comment={existing},
{indent}schema={schema}
)%r'%s'r;   )prefixtnamecommentexistingr   indent)
_has_batchformatr2   ro   ry   existing_commentr   r4   r^   templs      r6   _render_create_table_commentr      s     !! 	 	 <<+O<mm%'ZZ%;rzz! "". 2&&&%'YY%:v		!    AE   r8   c                    | j                   rd}nd}|j                  t        |       |j                  |j                  d|j                  z  nd |j
                  d|j
                  z  d      S d d      S )NzA{prefix}drop_table_comment(
{indent}existing_comment={existing}
)zm{prefix}drop_table_comment(
{indent}'{tname}',
{indent}existing_comment={existing},
{indent}schema={schema}
)ru   rv   r;   )rw   rx   rz   r   r{   )r|   r}   r2   ro   r~   r   r   s      r6   _render_drop_table_commentr      s     !! 	 	 <<+O<mm "". 2&&&%'YY%:v		!  
 
 AE  
 
r8   c                   |j                         }|j                  D cg c]  }t        ||        c}D cg c]  }|r| c}t        |j                  D cg c]  }t        || |j                         c}D cg c]  }|| c}      z   }t        |      t        kD  rddj                  |      z   dz   }ndj                  |      }dt        |j                        t        |       |dz  }|j                  r|dt        |j                        z  z  }|j                  }	|	r|dt        |	      z  z  }|j                  }
|
r|d|
z  }t        |j                         D ]*  }|d|j#                  d	d
      d|j                   |   z  }, |j$                  r*dj                  d |j$                  D              }|d|z  z  }|j&                  |dt)        |j&                        z  z  }|dz  }|S c c}w c c}w c c}w c c}w )Nz*[,
]z.%(prefix)screate_table(%(tablename)r,
%(args)s)	tablenamerw   argsz,
schema=%rz,
comment=%rz,
info= _=, c              3  &   K   | ]	  }d |z    yw)rv   N ).0ps     r6   	<genexpr>z_add_table.<locals>.<genexpr>  s     AAVaZA   z,
prefixes=[%s]z,
if_not_exists=%rz
))to_tablecolumns_render_columnrN   constraints_render_constraint_namespace_metadatalenMAX_PYTHON_ARGSrM   _identro   r2   r   ry   infokwreplace	_prefixesif_not_existsrX   )r4   r^   tablecolconsrconsr   args_strrB   ry   r   kprefixess                r6   
_add_tabler      s   KKME
 =BMM
58N30
 	 	 	 "--	  #/2+A+A		
   		
	D& 4y?"%**T**S0::d#<BMM*.?@ D
 
yy		!222mmG&/11::D(4(##BEE] =aiiS12558<<= 99AAA"X--	#%R-=-=(>>>EMDKc
		
s   G0G5G:
:G?
c                    dt        |       t        |j                        dz  }|j                  r|dt        |j                        z  z  }|j                  |dt        |j                        z  z  }|dz  }|S )Nz%(prefix)sdrop_table(%(tname)r)rw   rx   , schema=%rz, if_exists=%r))r2   r   ro   r   	if_existsrX   )r4   r^   rB   s      r6   _drop_tabler   !  sw    +.?&/ D 
yyryy 111	|| 4#555CKDKr8   c           
         |j                   j                         D cg c]  \  }}| dt        ||         c}}S c c}}w )Nr   )dialect_kwargsitems_render_potential_expr)r4   itemkeyvals       r6   _render_dialect_kwargs_itemsr   1  sK    
 ++113C %q'_=>?  s   =c                ^   |j                         }| j                  }|rd}nd}|j                  J t        | |      }|j                  '|j                  dt        |j                        z         |t        |       t        | |j                        t        |j                  j                        dj                  t        ||             |j                  xs d|j                  j                  r"dt        |j                  j                        z  nd|rddj                  |      z   nddz  }|S )	NzL%(prefix)screate_index(%(name)r, [%(columns)s], unique=%(unique)r%(kwargs)s)za%(prefix)screate_index(%(name)r, %(table)r, [%(columns)s], unique=%(unique)r%(schema)s%(kwargs)s)zif_not_exists=%rr   Fr   r<   )rw   r5   r   r   uniquer   kwargs)to_indexr|   r   r   r   rn   rX   r2   r7   r5   r   rM   _get_index_rendered_expressionsr   r   r4   r^   index	has_batchtmplrk   rB   s          r6   
_add_indexr   :  s   KKME**I+ 	5 	
 ;;"""'?D	#&b.>.>)??@.? %**=(()99+E?C
 ,,'% {{!! VEKK$6$677,0$4(b D Kr8   c           	        |j                         }| j                  }|rd}nd}t        | |      }|j                  '|j	                  dt        |j                        z         |t        |       t        | |j                        t        |j                        |j                  rdt        |j                        z  nd|rddj                  |      z   nddz  }|S )Nz(%(prefix)sdrop_index(%(name)r%(kwargs)s)zM%(prefix)sdrop_index(%(name)r, table_name=%(table_name)r%(schema)s%(kwargs)s)zif_exists=%rr   r<   r   )rw   r5   ro   r   r   )r   r|   r   r   rn   rX   r2   r7   
index_namer   ro   r   rM   r   s          r6   _drop_indexr   b  s    KKME**I9= 	 (?D	||NT",,%778.? "--@R]]+:<))MF299$55,0$4(b D Kr8   c                :    t        |j                         | d      gS )NT)_uq_constraintto_constraintrg   s     r6   _add_unique_constraintr   |  s     2++-EFFr8   c                   t        t        | |j                              g}| j                  s-|j	                  t        t        |j                                     |j                  t        t        |j                              t        |j                  D cg c]  }t        |       c}      t        |j                  D cg c]  }t        |       c}      g       g d}| j                  s|j                  dd       |D ]9  }||j                  v s|j                  |   }|$|j	                  |d|       ; dt        |       dj                  |      dz  S c c}w c c}w )N)referent_schemaonupdateondelete	initially
deferrable	use_altermatchr   source_schemar   z&%(prefix)screate_foreign_key(%(args)s)r   rw   r   )reprr7   constraint_namer|   rn   r   source_tablerp   referent_table
local_colsremote_colsinsertr   r2   rM   )r4   r^   r   r   r   r   values          r6   _add_fk_constraintr     s)    !/23E3EFGHD%%D012KK))*+7#&+788#&+89	
F %%a) 2:EE!HE q%01	2 4.?		$7  - 88s   E E#c                    t               r/   NotImplementedError
constraintr4   s     r6   _add_pk_constraintr         

r8   c                    t               r/   r   r   s     r6   _add_check_constraintr     r   r8   c                    t        |       }t        | |j                        }|j                  rt	        |j                        nd }|j
                  rt	        |j
                        nd }g }|j                  t        |             | j                  sC|j                  t        t	        |j                                     ||j                  d|       ||j                  d|       | ddj                  |       dS )Nschema=type_=zdrop_constraint(r   r   )r2   r7   r   r   r   constraint_typern   r   r|   ro   rM   )r4   r^   rw   r5   r   type_params_strss          r6   _drop_constraintr     s     */:FOR-?-?@D"$))VBIIF*,*<*<F2%%&$EKtDz"%%4r}} 567
34VE9-.X%dii&<%=Q??r8   c                    |j                   |j                  |j                  }}}| j                  rd}nd}|r|dz  }|dz  }|t	        |       |t        ||       |dz  }|S )Nz %(prefix)sadd_column(%(column)s)z*%(prefix)sadd_column(%(tname)r, %(column)s, schema=%(schema)rr   )rw   rx   columnr   )r   ro   r   r|   r2   r   )r4   r^   r   rx   r   templaterB   s          r6   _add_columnr     ss    IIr}}bii6EF!!5?--HC.? 9	 D Kr8   c                    |j                   |j                  |j                  }}}| j                  rd}nd}|r|dz  }|dz  }|t	        |       t        |      t        |      t        |      dz  }|S )Nz %(prefix)sdrop_column(%(cname)r)z*%(prefix)sdrop_column(%(tname)r, %(cname)rr   r   )rw   rx   cnamer   )r   ro   column_namer|   r2   r   )r4   r^   r   rx   r   r   rB   s          r6   _drop_columnr     sy    !#BMM2>>;EF!!5?--HC.?$.	 D Kr8   c                "   |j                   }|j                  }|j                  }|j                  }|j                  }|j
                  }|j                  j                  dd       }|j                  }	|j                  }
|j                  }|j                  }|j                  }d}| j                  rd}nd}|t        |       ||dz  }|	|d|dt        |	|       z  }|durt!        ||       }|d|d	|z  }||d|d
t        ||       z  }||d|d|z  }|dur|d|d|z  }||d|d|z  }||
|d|d|
z  }||d|d|z  }|du r|rt!        ||       }|d|d|z  }|r| j                  s|d|d|z  }|dz  }|S )Nautoincrementz           z %(prefix)salter_column(%(cname)rz+%(prefix)salter_column(%(tname)r, %(cname)r)rw   rx   r   r   zexisting_type=Fzserver_default=r   z	nullable=zcomment=zexisting_comment=zexisting_nullable=zautoincrement=zexisting_server_default=r   r   )ro   r   modify_server_defaultmodify_typemodify_nullablemodify_commentr   rl   existing_typeexisting_nullabler~   existing_server_defaultr   r|   r2   
_repr_type_render_server_default)r4   r^   rx   r   server_defaultr   nullablery   r   r   r   r~   r   r   r{   r   rB   rendereds                     r6   _alter_columnr    s    MMENNE--NNNE!!HGEEIIot4M$$M,,** 88YYFF!!5@.? D
  }o6
 	
 U")./JFH==6:e_+MNNfh77eVW55#f6FGG-9v7HII 6=AA#:)#_
 	VXFFo00FF33CKDKr8   c                      e Zd ZddZddZy)r1   c                     || _         || _        y r/   )rw   r5   )selfrw   r5   s      r6   __init__z_f_name.__init__/  s    	r8   c                L    | j                   dt        | j                        dS )Nzf(r   )rw   r   r5   )r  s    r6   __repr__z_f_name.__repr__3  s     KK		):;;r8   N)rw   strr5   r   returnNone)r	  r  )__name__
__module____qualname__r  r  r   r8   r6   r1   r1   .  s    <r8   r1   c                f    | | S t        | t              rt        |       S t        | t              r| S y)zproduce a __repr__() object for a string identifier that may
    use quoted_name() in SQLAlchemy 0.9 and greater.

    The issue worked around here is that quoted_name() doesn't have
    very good repr() behavior by itself when unicode is involved.

    N)r0   r   r  )r5   s    r6   r   r   7  s6     |	D+	&4y	D#	 
r8   TF)wrap_in_textis_server_defaultis_indexc                   t        | t        j                        r>|rd}nd}|t        |      |j                  j
                  j                  | ||      dz  S t        |       S )Nz%(prefix)stext(%(sql)r)z%(sql)r)r  r  )rw   r   )r0   r   ClauseElement_sqlalchemy_autogenerate_prefixmigration_contextimplrender_ddl_sql_exprr   )r   r4   r  r  r  r   s         r6   r   r   G  so     %**+0H H5oF"4499MM):X N 
 
 	
 E{r8   c                    | j                   D cg c]I  }t        |t        j                        rt	        t        t        |dd                   nt        ||d      K c}S c c}w )Nr5   T)r  )expressionsr0   	sa_schemar   r   r   getattrr   )idxr4   exps      r6   r   r   `  sa     ??  #y//0 VT234'_tLM  s   AA c           
     $   g }|j                   }| j                  r&|j                  dt        | j                        f       | j                  r&|j                  dt        | j                        f       |sH|rF| j
                  j                  r0|j                  dt        | j
                  j                        f       |s3| j                  r'|j                  dt        || j                        f       t        ||       }|rt        t        || j                              g}|s,|t        t        | j
                  j                              gz  }|j                  t        | j                  D cg c]  }t        |j                         c}             |j                  |D 	cg c]  \  }}	|d|	 c}	}       |j                  |       dt        |      dj                  |      dz  S | j                  D cg c]   }t        t        |j                              " }}|j                  |D 	cg c]  \  }}	|d|	 c}	}       |j                  |       d	t!        |      dj                  |      dz  S c c}w c c}	}w c c}w c c}	}w )
Nr   r   r   r5   r   z,%(prefix)screate_unique_constraint(%(args)s)r   r   z$%(prefix)sUniqueConstraint(%(args)s))r|   r   rn   r  r   r   r   r   r5   r7   r   r   r   rp   r2   rM   r  )
r   r4   alterrk   r   dialect_optionsr   r   r   vs
             r6   r   r   m  s   
 #%D**I\3z'<'<#=>?[#j&:&:";<=:#3#3#:#:Xvj&6&6&=&=>?@Z__%ozGH	
 3?JOO%ozGHIT&!1!1!6!67899DDj6H6HIs&*IJK$7$!Q1%78O$=2?CIIdOA
 
 	

 3=2D2DE3VCHH%&EE$7$!Q1%78O$55oFIIdO9
 
 	
 J7 F7s   ,I<#J
;%J2J
c                F    | j                   d   }|d|j                  z  S |S )Nuser_module_prefixz%s.)rk   r  )r4   targetrw   s      r6   _user_autogenerate_prefixr%    s.    !!"67F~v((((r8   c                (    | j                   d   xs dS )Nsqlalchemy_module_prefixr<   rk   r4   s    r6   r  r    s     :;ArAr8   c                B    | j                   ry| j                  d   xs dS )Nz	batch_op.alembic_module_prefixr<   )r|   rk   r)  s    r6   r2   r2     s%    !!##$;<BBr8   c                b    d|j                   v r!|j                   d   }|r || ||      }|dur|S y)Nrender_itemFr(  )r   object_r4   renderr   s        r6   _user_defined_renderr0    sC     ,,, %%m4eWo>Hu$r8   c                0   t        d| |      }|dur|S g }g }| j                  rRt        | j                  |      }|r:t        | j                        r|j	                  |       n|j	                  d|f       | j
                  :| j
                  t        j                  k7  r|j	                  d| j
                  f       | j                  |j	                  d| j                  f       | j                  r|j	                  d| j                  f       | j                  }|r|j	                  dd|z  f       d	t        |      t        | j                        t        | j                  |      |r+d
j!                  |D cg c]  }t#        |       c}      d
z   ndd
j!                  |D cg c]  \  }}|d| c}}t        j$                  |       j'                         D 	cg c]  \  }	}|	dt)        ||       c}}	z         dz  S c c}w c c}}w c c}}	w )Nr   Fr   r   r   systemry   ru   z8%(prefix)sColumn(%(name)r, %(type)s, %(args)s%(kwargs)s)r   r<   r   )rw   r5   typer   r   )r0  r   r   *_should_render_server_default_positionallyrn   r   r   AUTOINCREMENT_DEFAULTr   r2  ry   r  r   r5   r   r3  rM   r  _column_kwargsr   r   )
r   r4   r   r   rk   ry   argkwnamer   r   s
             r6   r   r     s    $HfoFHuD"$D)!!?
 9%% H%-x89 	(  K$E$EE_f&:&:;<"Z12}}Xv}}-.nnGYw/0 F1/Bv{{#6;;8@D		t43s845<"II<@A[VSFC(A %0$>$>v$F$L$L$N !S 23HJI   5 Bs   7H$HHc                Z    t        j                  |       xs t        j                  |       S r/   )r   _server_default_is_computed_server_default_is_identity)r   s    r6   r4  r4    s-    22 A		0	0	@Ar8   c                
   t        d| |      }|dur|S t        j                  |       rt        t	        d|       |      S t        j
                  |       rt        t	        d|       |      S t        | t        j                        r?t        | j                  t              r| j                  } nt        | j                  |d      S t        | t              r"|r t        t        j                  dd|             } t	        t        |       S )	Nr   Fr+   r,   T)r  z^'|'$r<   )r0  r   r:  _render_computedr   r;  _render_identityr0   r  DefaultClauser7  r  r   r   r=   r@   )defaultr4   repr_r   s       r6   r   r     s     $$4gOHu..w7Z 9?KK		0	0	9Z 9?KK	GY44	5gkk3'kkG)_  '3ErvvhG45Wr8   c                    t        | j                  |d      }i }| j                  | j                  |d<   dt        |      |dj	                  d |j                         D              dz  S )NFr  	persistedz(%(prefix)sComputed(%(text)s, %(kwargs)s)r   c              3  &   K   | ]	  }d |z    ywz%s=%sNr   r   pairs     r6   r   z#_render_computed.<locals>.<genexpr>       GWt^Gr   )rw   rB   r   )r   sqltextrD  r  rM   r   )computedr4   rB   r   s       r6   r=  r=    ss     "/D F%&00{51/B99GGG9  r8   c                    t        j                  | d      }dt        |      dj                  d |j	                         D              dz  S )NT)r   z%(prefix)sIdentity(%(kwargs)s)r   c              3  &   K   | ]	  }d |z    ywrF  r   rG  s     r6   r   z#_render_identity.<locals>.<genexpr>,  rI  r   )rw   r   )r   _get_identity_options_dictr  rM   r   )identityr4   r   s      r6   r>  r>  #  sM     33F ,1/B99GGG/  r8   c                   t        d| |      }|dur|S t        |j                  d      r'|j                  j                  j	                  | |      }nd }t        |       j                  }|j                  }|s!t        j                  |       rt        | |      S |j                  d      rLt        j                  d|      }|J |j                  d      }||j                  d|z         |r|S |d| S |r|S |j                  d	      rMd
| j                   z  t#               v r#t#               d
| j                   z     }	 |	| |      S t%        |      }
|
| S t'        ||       }
|
| S )Nr3  Fr  sqlalchemy.dialectssqlalchemy\.dialects\.(\w+)   z"from sqlalchemy.dialects import %s.zsqlalchemy.z_render_%s_type)r0  hasattrr  r  render_typer3  r  rF   r   _type_has_variants_render_Variant_type
startswithr=   r   groupadd__visit_name__globalsr  r%  )r   r4   _skip_variantsr   impl_rtmodrF   r   dnamefnrw   s              r6   r   r   0  sj   
 $FE?CHu00&9!3388DD?
 
u+
 
 C%%Gk<<UC#E?;;	-	.7=   AKK<uDEN#U++			&u333wy@,u/C/CCDBe_--4_EF#U++*?EB''r8   c           	     :    t        t        t        | |dd            S )N	item_typez(.+?\())r   r  _render_type_w_subtype)r   r4   s     r6   _render_ARRAY_typerf  ]  s#    ?K	
 r8   c                    t        j                  |       \  }}t        ||d      }||dusJ t        |      D ]  }||   }|dt        ||d      d|dz  }! |S )NT)r^  Fz.with_variant(r   r   )r   _get_variant_mappingr   rN   )r   r4   	base_typevariant_mappingbasedialecttyps          r6   rX  rX  f  s}     "-!A!A%!HIiFDE 111/* 
g&sODA
 	

 Kr8   c                   t        |       }t        | |d       }|yt        |      }t        j                  dd|      }t	        t        | |      |      }t        j                  ||z   d|z  |      }	|r||	S t        |       j                  }
|
j                  d      r2t        j                  d|
      }|J |j                  d      }|d|	S |
j                  d	      rt        |      }||	S y )
NFz([\(\)])z\\\1z\1%srQ  rR  rS  rT  
sqlalchemy)r   r  r=   r@   r   r3  r  rY  r   rZ  r  )r   r4   attrnameregexprw   
outer_repr
inner_type
inner_reprsub_type
outer_typer`  r   ra  s                r6   re  re  u  s     eJ$/Jj!JWj9J'%2ODH+Wx-?LJ,,
u+
 
 C
~~+,7=   A,,		%0A,,r8   c                    	 t         j                  |       } || ||      S # t        $ r  t        j                  d| z         d| z  cY S w xY w)Nz(No renderer is established for object %rz[Unknown Python object %r])_constraint_renderersrc   
ValueErrorr   warn)r   r4   namespace_metadatare   s       r6   r   r     sX    
I(11*=
 
O5GHH	  9		<zIJ+j889s   ! &A
	A
c                   t        d| |      }|dur|S | j                  sy g }| j                  r0|j                  dt	        t        || j                              f       dt        |      dj                  | j                  D cg c]  }t	        |j                         c}|D cg c]  \  }}|d| c}}z         dz  S c c}w c c}}w )Nprimary_keyFr5   z(%(prefix)sPrimaryKeyConstraint(%(args)s)r   r   r   )r0  r   r5   rn   r   r7   r  rM   )r   r4   r{  r   rk   cr8  r   s           r6   _render_primary_keyr    s     $M:OHuDT*?JOOLMN	
 61/B		#-#5#56aT!&&\6:>?;63&#&?@
9   7?s   C&C
c                   | j                         }|j                  d      }|dd \  }}|t        |      dk(  r|d|}ndj                  |dd       }| j                  so| j
                  c| j
                  j                  M||j                  v r?|j                  |   j                  j                  |      }|t        |j                        }|d|}|S )zxImplement a 'safe' version of ForeignKey._get_colspec() that
    won't fail if the remote table can't be resolved.

    rT  Nr   r   )_get_colspecsplitr   rM   link_to_nameparentr   tablesr~  rl   r   r5   )	fkmetadata_schemar{  colspectokensrx   colnametable_fullnamer   s	            r6   _fk_colspecr    s     ooG]]3FBC[NE7"s6{a'7$3U;&2,/ OOII!IIOO' /666$++N;==AA'JC *'1GNr8   c                ^   | j                   r&|j                  dt        | j                         f       | j                  r&|j                  dt        | j                        f       | j                  r&|j                  dt        | j                        f       | j
                  r&|j                  dt        | j
                        f       | j                  r&|j                  dt        | j                        f       | j                  r'|j                  dt        | j                        f       y y )Nr   r   r   r   r   r   )r   rn   r   r   r   r   r   r   )r   rk   s     r6   _populate_render_fk_optsr    s     Zj&9&9!:;<Zj&9&9!:;<[$z';';"<=>\4
(=(=#>?@[$z';';"<=>Wd:#3#3456 r8   c                   t        d| |      }|dur|S g }| j                  r0|j                  dt        t	        || j                              f       t        | |       j                  dt        |      dj                  d | j                  D              dj                  fd| j                  D              dj                  |D cg c]  \  }}|d| c}}      d	z  S c c}}w )
Nforeign_keyFr5   zC%(prefix)sForeignKeyConstraint([%(cols)s], [%(refcols)s], %(args)s)r   c              3  l   K   | ],  }t        t        |j                  j                               . y wr/   )r   r   r  r5   )r   fs     r6   r   z&_render_foreign_key.<locals>.<genexpr>  s'      01VAHHMM*+s   24c              3  J   K   | ]  }t        t        |              y wr/   )r   r  )r   r  apply_metadata_schemar{  s     r6   r   z&_render_foreign_key.<locals>.<genexpr>  s)      ! [$9;MNO!s    #r   )rw   colsrefcolsr   )
r0  r5   rn   r   r7   r  r   r  rM   elements)r   r4   r{  r   rk   r8  r   r  s     `    @r6   _render_foreign_keyr    s     $M:OHuDT*?JOOLMN	
 Z..55	# 6oFII 5?5H5H  yy !#,,!  II<@A[VSFC(A
	
 Bs   C)c                B    t        d| |      }|dur|S t        | |d      S )Nr   F)r0  r   )r   r4   r{  r   s       r6   _render_unique_constraintr    s.     $Hj/JHu*ou==r8   c           	        t        d| |      }|dur|S | j                  rEt        | j                  d      r/t        | j                  j                  t
        j                        ry g }| j                  r0|j                  dt        t        || j                              f       dt        |      |rddj                  d |D              z   ndt        | j                  |d	      d
z  S )NcheckFr$  r5   z.%(prefix)sCheckConstraint(%(sqltext)s%(opts)s)r   c              3  0   K   | ]  \  }}|d |  yw)r   Nr   )r   r   r!  s      r6   r   z+_render_check_constraint.<locals>.<genexpr>K  s     @41aA.@s   r<   rC  )rw   rk   rJ  )r0  _create_rulerU  r0   r$  sqltypesr&   r5   rn   r   r7   r  rM   r   rJ  )r   r4   r{  r   rk   s        r6   _render_check_constraintr  ,  s     $GZIHu 	J++X6##**

 DT*?JOOLMN	
 <1/B  DII@4@@A)e

? 
 
r8   c                j    t        |j                  t              st        d      d|j                  z  S )NznAutogenerate rendering of SQL Expression language constructs not supported here; please use a plain SQL stringzop.execute(%r))r0   rJ  r  r   rg   s     r6   _execute_sqlr  U  s4    bjj#&!@
 	
 bjj((r8   )r4   r'   r5   zsqla_compat._ConstraintNamer	  z*Optional[Union[quoted_name, str, _f_name]])rB   r  r	  r  )r4   r'   rO   r)   rP   zDict[str, Union[str, Config]]r	  r
  )rZ   zops.OpContainerr4   r'   r	  r  )r4   r'   r^   ops.MigrateOperationr	  	List[str])r4   r'   r^   r  r	  r  )r4   r'   r^   r*   r	  r  )r4   r'   r^   zops.CreateTableCommentOpr	  r  )r4   r'   r^   zops.DropTableCommentOpr	  r  )r4   r'   r^   zops.CreateTableOpr	  r  )r4   r'   r^   zops.DropTableOpr	  r  )r4   r'   r   r   r	  z	list[str])r4   r'   r^   zops.CreateIndexOpr	  r  )r4   r'   r^   zops.DropIndexOpr	  r  )r4   r'   r^   zops.CreateUniqueConstraintOpr	  r  )r4   r'   r^   zops.CreateForeignKeyOpr	  r  )r4   r'   r^   zops.DropConstraintOpr	  r  )r4   r'   r^   zops.AddColumnOpr	  r  )r4   r'   r^   zops.DropColumnOpr	  r  )r4   r'   r^   zops.AlterColumnOpr	  r  )r5   z!Optional[Union[quoted_name, str]]r	  Optional[str])r   r   r4   r'   r  rX   r  rX   r  rX   r	  r  )r  r!   r4   r'   r	  r  )r   r$   r4   r'   r  rX   r	  r  )r4   r'   r	  r  )r   r  r.  r   r4   r'   r	  zUnion[str, Literal[False]])r   zColumn[Any]r4   r'   r	  r  )r   r   r	  rX   )T)r@  zBOptional[Union[FetchedValue, str, TextClause, ColumnElement[Any]]]r4   r'   rA  rX   r	  r  )rK  r+   r4   r'   r	  r  )rO  r,   r4   r'   r	  r  )F)r   r&   r4   r'   r^  rX   r	  r  )r   r%   r4   r'   r	  r  )r   r&   r4   r'   r	  r  r/   )r   r&   r4   r'   rp  r  rq  r  rw   r  r	  z$Union[Optional[str], Literal[False]])r   r   r4   r'   r{  Optional[MetaData]r	  r  )r   r#   r4   r'   r{  r  r	  r  )r  r   r  r  r{  r"   r	  r  )r   r    rk   zList[Tuple[str, str]]r	  r
  )r   r    r4   r'   r{  r"   r	  r  )r   r$   r4   r'   r{  r  r	  r  )r   r   r4   r'   r{  r  r	  r  )r4   r'   r^   zops.ExecuteSQLOpr	  r  )
__future__r   ior   r=   typingr   r   r   r   r	   r
   r   r   
mako.pygenr   ro  r   r  r   r   r  sqlalchemy.sql.elementsr   r   r<   r   
operationsr   r   r   sqlalchemy.sql.baser   r   r   sqlalchemy.sql.schemar   r   r   r   r   r    r!   r"   r#   r$   sqlalchemy.sql.sqltypesr%   sqlalchemy.sql.type_apir&   alembic.autogenerate.apir'   alembic.configr(   alembic.operations.opsr)   r*   alembic.util.sqla_compatr+   r,   r   r7   rC   rS   
Dispatcherdefault_renderersrb   rJ   rW   rh   dispatch_forrs   CreateTableCommentOpr   DropTableCommentOpr   CreateTableOpr   DropTableOpr   r   CreateIndexOpr   DropIndexOpr   CreateUniqueConstraintOpr   CreateForeignKeyOpr   CreatePrimaryKeyOpr   CreateCheckConstraintOpr   DropConstraintOpr   AddColumnOpr   DropColumnOpr   AlterColumnOpr  r1   r   r   r   r   r%  r  r2   r0  r   r4  r   r=  r>  r   rf  rX  re  rx  r   r  r  r  r  r  r  ExecuteSQLOpr  branchr   r8   r6   <module>r     s    #  	          $ *  ( ( /   1525,020:+.:6-27%6511 9#9
%9 09:#:%: 1: 
	:& !0 1 1 I!# 	6#)=5#5)=55 **+#)7 ,8 001#)A 2B ../#)? 0< ))*6 +6r ( )#+8 ))*$ +$N ( )2 445G#G)EGG 6G ../###)?## 0#L ../  0  334  5  ,,-@#@)=@@ .@( ( )$ (() *( ))*9#9):99 +9x< <( ## 	
   	2
	
!/

'
 '
#'
 '
 		'
TBC			/=		66*866rA  $	
  :)7"

)7

  !*(*(#*( *( 		*(Z(6( !#  	
  *D () II#I +I 	I ##I$B$BC$# + 	 D4"""" !" 		"J7$7,A7	7" ##I$B$BC"$"#" !" 	" D"J ##I$>$>?	> 	>#	> +	> 			> @	> ##I$=$=>%%#% +% 	% ?%P (()) *) $$&	r8   