
    +h%                    r
   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 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&l&m0Z0 d d'l1m2Z2 d d(l3m4Z4 d d)l5m6Z6 d d*l7m8Z8 d d+l9m:Z: d d,l9m;Z; d-Z<	 	 	 	 	 	 dbd.Z=dcd/Z>	 	 	 	 	 	 	 	 ddd0Z? ej                         xZAZB	 	 	 	 	 	 ded1ZC	 	 	 	 	 	 dfd2ZD	 	 	 	 	 	 dgd3ZEeBj                  ejv                        	 	 	 	 	 	 dhd4       ZGeBj                  ej                        	 	 	 	 	 	 did5       ZIeBj                  ej                        	 	 	 	 	 	 djd6       ZKeBj                  ej                        dkd7       ZMeBj                  ej                        dld8       ZO	 	 	 	 	 	 dmd9ZPeBj                  ej                        dnd:       ZReBj                  ej                        dod;       ZTeBj                  ej                        	 	 	 	 	 	 dpd<       ZVeBj                  ej                        	 	 	 	 	 	 dqd=       ZXeBj                  ej                        d>        ZZeBj                  ej                        d?        Z\eBj                  ej                        	 	 	 	 	 	 drd@       Z^eBj                  ej                        dsdA       Z`eBj                  ej                        dtdB       ZbeBj                  ej                        	 	 	 	 	 	 dudC       Zd G dD dE      ZedvdFZfdGdHdHdI	 	 	 	 	 	 	 	 	 	 	 dwdJZg	 	 	 	 	 	 dxdKZh	 	 	 	 	 	 	 	 dydLZidM ZjdzdNZkdzdOZl	 	 	 	 	 	 	 	 d{dPZm	 	 	 	 	 	 d|dQZnd}dRZo	 d~	 	 	 	 	 	 	 ddSZp	 	 	 	 	 	 ddTZq	 	 	 	 	 	 ddUZr	 d	 	 	 	 	 	 	 ddVZsddWZt	 	 	 	 	 	 ddXZu	 d	 	 	 	 	 	 	 	 	 	 	 ddYZv ej                         Zw	 	 	 	 	 	 	 	 ddZZxewj                  ej^                        	 	 	 	 	 	 	 	 dd[       Zy	 	 	 	 	 	 	 	 dd\Zz	 	 	 	 	 	 dd]Z{ewj                  ejX                        	 	 	 	 	 	 	 	 dd^       Z|ewj                  ej`                        	 	 	 	 	 	 	 	 dd_       Z}ewj                  ejN                        	 	 	 	 	 	 	 	 dd`       Z~eBj                  ej                        dda       ZeAj                         ZBy)    )annotations)StringION)Any)cast)Dict)List)Optional)Tuple)TYPE_CHECKING)Union)PythonPrinter)schema)sql)types)conv)Label)quoted_name   )util)ops)sqla_compat)Literal)Computed)Identity)DialectKWArgs)ColumnElement)
TextClause)CheckConstraint)Column)
Constraint)FetchedValue)
ForeignKey)ForeignKeyConstraint)Index)MetaData)PrimaryKeyConstraint)UniqueConstraint)ARRAY)
TypeEngine)AutogenContext)Config)MigrationScript)ModifyTableOps   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     N/var/www/html/venv/lib/python3.12/site-packages/alembic/autogenerate/render.py_render_gen_namer8   ;   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    r7   _indentrD   E   sR    ::dBDD!%%fd399;D::fbdd#''D1DKr9   c                .   | j                   }t        |j                  |j                        D ]I  \  }}t	        t        ||             ||j                  <   t	        t        ||             ||j                  <   K dj                  t        |            |d<   y )N
imports)
rG   zipupgrade_ops_listdowngrade_ops_listrD   _render_cmd_bodyupgrade_tokendowngrade_tokenjoinsorted)r5   migration_scripttemplate_argsrG   upgrade_opsdowngrade_opss         r7    _render_python_into_templatevarsrT   K   s    
 %%G&)))+;+N+N' 
"] 4;[/:4
k//0 8?]O<8
m334
  $yy9M)r9   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_containerr5   bufprinter	has_linesoplineslines           r7   rK   rK   a   s     *CC GG I $/2.,e	 	$Dd#	$	$ &!67<<>r9   c                h    t         j                  |      }t        j                   || |            }|S r0   )	renderersdispatchr   to_list)r5   r_   rendererr`   s       r7   rX   rX   |   s.     !!"%HLL/267ELr9   c                8    dj                  t        | |            S )NrF   )rN   rX   r5   r_   s     r7   render_op_textri      s     99Y344r9   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   rX   extend)r5   r_   rl   rk   r`   t_opt_liness          r7   _render_modify_tablert      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formatr3   rp   rz   existing_commentr   r5   r_   templs      r7   _render_create_table_commentr      s     !! 	 	 <<+O<mm%'ZZ%;rzz! "". 2&&&%'YY%:v		!    AE   r9   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}
)rv   rw   r<   )rx   ry   r{   r   r|   )r}   r~   r3   rp   r   r   r   s      r7   _render_drop_table_commentr      s     !! 	 	 <<+O<mm "". 2&&&%'YY%:v		!  
 
 AE  
 
r9   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)	tablenamerx   argsz,
schema=%rz,
comment=%rz,
info= _=, c              3  &   K   | ]	  }d |z    yw)rw   N ).0ps     r7   	<genexpr>z_add_table.<locals>.<genexpr>  s     AAVaZA   z,
prefixes=[%s]z,
if_not_exists=%rz
))to_tablecolumns_render_columnrO   constraints_render_constraint_namespace_metadatalenMAX_PYTHON_ARGSrN   _identrp   r3   r   rz   infokwreplace	_prefixesif_not_existsrY   )r5   r_   tablecolconsrconsr   args_strrC   rz   r   kprefixess                r7   
_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)rx   ry   , schema=%rz, if_exists=%r))r3   r   rp   r   	if_existsrY   )r5   r_   rC   s      r7   _drop_tabler   "  sw    +.?&/ D 
yyryy 111	|| 4#555CKDKr9   c           
         |j                   j                         D cg c]  \  }}| dt        ||         c}}S c c}}w )Nr   )dialect_kwargsitems_render_potential_expr)r5   itemkeyvals       r7   _render_dialect_kwargs_itemsr   2  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=   )rx   r6   r   r   uniquer   kwargs)to_indexr}   r   r   r   ro   rY   r3   r8   r6   r   rN   _get_index_rendered_expressionsr   r   r5   r_   index	has_batchtmplrl   rC   s          r7   
_add_indexr   ;  s   KKME**I+ 	5 	
 ;;"""'?D	#&b.>.>)??@.? %**=(()99+E?C
 ,,'% {{!! VEKK$6$677,0$4(b D Kr9   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   )rx   r6   rp   r   r   )r   r}   r   r   ro   rY   r3   r8   
index_namer   rp   r   rN   r   s          r7   _drop_indexr   c  s    KKME**I9= 	 (?D	||NT",,%778.? "--@R]]+:<))MF299$55,0$4(b D Kr9   c                :    t        |j                         | d      gS )NT)_uq_constraintto_constraintrh   s     r7   _add_unique_constraintr   }  s     2++-EFFr9   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   rx   r   )reprr8   constraint_namer}   ro   r   source_tablerq   referent_table
local_colsremote_colsinsertr   r3   rN   )r5   r_   r   r   r   r   values          r7   _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               r0   NotImplementedError
constraintr5   s     r7   _add_pk_constraintr         

r9   c                    t               r0   r   r   s     r7   _add_check_constraintr     r   r9   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   )r3   r8   r   r   r   constraint_typero   r   r}   rp   rN   )r5   r_   rx   r6   r   type_params_strss          r7   _drop_constraintr     s     */:FOR-?-?@D"$))VBIIF*,*<*<F2%%&$EKtDz"%%4r}} 567
34VE9-.X%dii&<%=Q??r9   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   )rx   ry   columnr   )r   rp   r   r}   r3   r   )r5   r_   r   ry   r   templaterC   s          r7   _add_columnr     ss    IIr}}bii6EF!!5?--HC.? 9	 D Kr9   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   )rx   ry   cnamer   )r   rp   column_namer}   r3   r   )r5   r_   r   ry   r   r   rC   s          r7   _drop_columnr     sy    !#BMM2>>;EF!!5?--HC.?$.	 D Kr9   c                T   |j                   }|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
|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)rx   ry   r   r   zexisting_type=Fzserver_default=znew_column_name=r   z	nullable=zcomment=zexisting_comment=zexisting_nullable=zautoincrement=zexisting_server_default=r   r   )rp   r   modify_server_defaultmodify_typemodify_nullablemodify_commentmodify_namer   rm   existing_typeexisting_nullabler   existing_server_defaultr   r}   r3   
_repr_type_render_server_default)r5   r_   ry   r   server_defaultr   nullablerz   newnamer   r   r   r   r   r   r|   r   rC   rendereds                      r7   _alter_columnr    s
    MMENNE--NNNE!!HGnnGEEIIot4M$$M,,** 88YYFF!!5@.? D
  }o6
 	
 U")./JFH==VW==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Kr9   c                      e Zd ZddZddZy)r2   c                     || _         || _        y r0   )rx   r6   )selfrx   r6   s      r7   __init__z_f_name.__init__3  s    	r9   c                L    | j                   dt        | j                        dS )Nzf(r   )rx   r   r6   )r  s    r7   __repr__z_f_name.__repr__7  s     KK		):;;r9   N)rx   strr6   r   returnNone)r  r  )__name__
__module____qualname__r  r
  r   r9   r7   r2   r2   2  s    <r9   r2   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)r1   r   r  )r6   s    r7   r   r   ;  s6     |	D+	&4y	D#	 
r9   TF)wrap_in_elementis_server_defaultis_indexc               p   t        | t        j                        r|j                  j                  j                  | ||      }|r]t        |      }|rdnd}| | d|d}|r>t        | t              r.t        | j                        t        u r|d| j                  dz   S |S t        |      S t        |       S )N)r  r  literal_columnrC   (r   z.label()r1   r   ClauseElementmigration_contextimplrender_ddl_sql_expr_sqlalchemy_autogenerate_prefixr   typer6   r  r   )	r   r5   r  r  r  sql_textrx   element	value_strs	            r7   r   r   K  s     %**+"4499MM%6 N 
 4_EF*2&G!(7)1XL:Iue,$+ WUZZN!#<<<  >!E{r9   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 )Nr6   T)r  )expressionsr1   	sa_schemar   r   r   getattrr   )idxr5   exps      r7   r   r   i  sa     ??  #y//0 VT234'_tLM  s   AA c           
         g }|j                   }| j                  r|j                  d| j                  f       | j                  r|j                  d| 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   r6   r   z,%(prefix)screate_unique_constraint(%(args)s)r   r   z$%(prefix)sUniqueConstraint(%(args)s))r}   r   ro   r   r   r   r   r6   r8   r   r   r   rq   r3   rN   r  )
r   r5   alterrl   r   dialect_optionsr   r   r   vs
             r7   r   r   v  s   
 #%D**I\:#8#89:[*"6"678:#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*I/
)%I5 I:
c                F    | j                   d   }|d|j                  z  S |S )Nuser_module_prefixz%s.)rl   r  )r5   targetrx   s      r7   _user_autogenerate_prefixr.    s.    !!"67F~v((((r9   c                (    | j                   d   xs dS )Nsqlalchemy_module_prefixr=   rl   r5   s    r7   r  r    s     :;ArAr9   c                B    | j                   ry| j                  d   xs dS )Nz	batch_op.alembic_module_prefixr=   )r}   rl   r2  s    r7   r3   r3     s%    !!##$;<BBr9   c                b    d|j                   v r!|j                   d   }|r || ||      }|dur|S y)Nrender_itemFr1  )r   object_r5   renderr  s        r7   _user_defined_renderr9    sC     ,,, %%m4eWo>Hu$r9   c                   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}}| 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  systemrz   rv   z8%(prefix)sColumn(%(name)r, %(type)s, %(args)s%(kwargs)s)r   r=   r   )rx   r6   r  r   r   )r9  r   r   *_should_render_server_default_positionallyro   r   r   AUTOINCREMENT_DEFAULTr  r;  rz   r  r   r6   r   r  rN   r  r   r   r   )
r   r5   r  r   rl   rz   argkwnamer   r   s
             r7   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 %+MM$7$7$9 !S 23HJI   5 Bs   7G>$HH	c                Z    t        j                  |       xs t        j                  |       S r0   )r   _server_default_is_computed_server_default_is_identity)r   s    r7   r<  r<    s-    22 A		0	0	@Ar9   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=   )r9  r   rA  _render_computedr   rB  _render_identityr1   r#  DefaultClauser>  r  r   r   r>   rA   )defaultr5   repr_r  s       r7   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r9   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     r7   r   z#_render_computed.<locals>.<genexpr>(       GWt^Gr   )rx   rC   r   )r   sqltextrK  r  rN   r   )computedr5   rC   r   s       r7   rD  rD    ss     "/5D F%&00{51/B99GGG9  r9   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rM  r   rN  s     r7   r   z#_render_identity.<locals>.<genexpr>5  rP  r   )rx   r   )r   _get_identity_options_dictr  rN   r   )identityr5   r   s      r7   rE  rE  ,  sM     33F ,1/B99GGG/  r9   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 )Nr  Fr  sqlalchemy.dialectssqlalchemy\.dialects\.(\w+)   z"from sqlalchemy.dialects import %s.zsqlalchemy.z_render_%s_type)r9  hasattrr  r  render_typer  r  rG   r   _type_has_variants_render_Variant_type
startswithr>   r   groupadd__visit_name__globalsr  r.  )r   r5   _skip_variantsr  impl_rtmodrG   r   dnamefnrx   s              r7   r   r   9  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''r9   c           	     :    t        t        t        | |dd            S )N	item_typez(.+?\())r   r  _render_type_w_subtype)r   r5   s     r7   _render_ARRAY_typerm  f  s#    ?K	
 r9   c                    t        j                  |       \  }}t        ||d      }||dusJ t        |      D ]  }||   }|dt        ||d      d|dz  }! |S )NT)re  Fz.with_variant(r   r   )r   _get_variant_mappingr   rO   )r   r5   	base_typevariant_mappingbasedialecttyps          r7   r_  r_  o  s}     "-!A!A%!HIiFDE 111/* 
g&sODA
 	

 Kr9   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%srX  rY  rZ  r[  
sqlalchemy)r   r$  r>   rA   r   r  r  r`  r   ra  r  )r   r5   attrnameregexprx   
outer_repr
inner_type
inner_reprsub_type
outer_typerg  r   rh  s                r7   rl  rl  ~  s     eJ$/Jj!JWj9J'%2ODH+Wx-?LJ,,
u+
 
 C
~~+,7=   A,,		%0A,,r9   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_renderersrd   
ValueErrorr   warn)r   r5   namespace_metadatarf   s       r7   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_keyFr6   z(%(prefix)sPrimaryKeyConstraint(%(args)s)r   r   r   )r9  r   r6   ro   r   r8   r  rN   )r   r5   r  r  rl   cr?  r   s           r7   _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.

    r[  Nr   r   )_get_colspecsplitr   rN   link_to_nameparentr   tablesr  rm   r   r6   )	fkmetadata_schemar  colspectokensry   colnametable_fullnamer   s	            r7   _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Nr9   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   ro   r   r   r   r   r   r   )r   rl   s     r7   _populate_render_fk_optsr    s     Zj&9&9!:;<Zj&9&9!:;<[$z';';"<=>\4
(=(=#>?@[$z';';"<=>Wd:#3#3456 r9   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_keyFr6   zC%(prefix)sForeignKeyConstraint([%(cols)s], [%(refcols)s], %(args)s)r   c              3  l   K   | ],  }t        t        |j                  j                               . y wr0   )r   r   r  r6   )r   fs     r7   r   z&_render_foreign_key.<locals>.<genexpr>  s'      01VAHHMM*+s   24c              3  J   K   | ]  }t        t        |              y wr0   )r   r  )r   r  apply_metadata_schemar  s     r7   r   z&_render_foreign_key.<locals>.<genexpr>  s)      ! [$9;MNO!s    #r   )rx   colsrefcolsr   )
r9  r6   ro   r   r8   r  r   r  rN   elements)r   r5   r  r  rl   r?  r   r  s     `    @r7   _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)r9  r   )r   r5   r  r  s       r7   _render_unique_constraintr  (  s.     $Hj/JHu*ou==r9   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-  r6   z.%(prefix)sCheckConstraint(%(sqltext)s%(opts)s)r   c              3  0   K   | ]  \  }}|d |  yw)r   Nr   )r   r   r*  s      r7   r   z+_render_check_constraint.<locals>.<genexpr>T  s     @41aA.@s   r=   rJ  )rx   rl   rQ  )r9  _create_ruler\  r1   r-  sqltypesr)   r6   ro   r   r8   r  rN   r   rQ  )r   r5   r  r  rl   s        r7   _render_check_constraintr  5  s     $GZIHu 	J++X6##**

 DT*?JOOLMN	
 <1/B  DII@4@@A)

? 
 
r9   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))r1   rQ  r  r   rh   s     r7   _execute_sqlr  ^  s4    bjj#&!@
 	
 bjj((r9   )r5   r*   r6   zsqla_compat._ConstraintNamer  z*Optional[Union[quoted_name, str, _f_name]])rC   r  r  r  )r5   r*   rP   r,   rQ   zDict[str, Union[str, Config]]r  r  )r[   zops.OpContainerr5   r*   r  r  )r5   r*   r_   ops.MigrateOperationr  	List[str])r5   r*   r_   r  r  r  )r5   r*   r_   r-   r  r  )r5   r*   r_   zops.CreateTableCommentOpr  r  )r5   r*   r_   zops.DropTableCommentOpr  r  )r5   r*   r_   zops.CreateTableOpr  r  )r5   r*   r_   zops.DropTableOpr  r  )r5   r*   r   r   r  z	list[str])r5   r*   r_   zops.CreateIndexOpr  r  )r5   r*   r_   zops.DropIndexOpr  r  )r5   r*   r_   zops.CreateUniqueConstraintOpr  r  )r5   r*   r_   zops.CreateForeignKeyOpr  r  )r5   r*   r_   zops.DropConstraintOpr  r  )r5   r*   r_   zops.AddColumnOpr  r  )r5   r*   r_   zops.DropColumnOpr  r  )r5   r*   r_   zops.AlterColumnOpr  r  )r6   z!Optional[Union[quoted_name, str]]r  Optional[str])r   r   r5   r*   r  rY   r  rY   r  rY   r  r  )r%  r$   r5   r*   r  r  )r   r'   r5   r*   r(  rY   r  r  )r5   r*   r  r  )r   r  r7  r   r5   r*   r  zUnion[str, Literal[False]])r   zColumn[Any]r5   r*   r  r  )r   r   r  rY   )T)rG  zBOptional[Union[FetchedValue, str, TextClause, ColumnElement[Any]]]r5   r*   rH  rY   r  r  )rR  r   r5   r*   r  r  )rV  r   r5   r*   r  r  )F)r   r)   r5   r*   re  rY   r  r  )r   r(   r5   r*   r  r  )r   r)   r5   r*   r  r  r0   )r   r)   r5   r*   rw  r  rx  r  rx   r  r  z$Union[Optional[str], Literal[False]])r   r    r5   r*   r  Optional[MetaData]r  r  )r   r&   r5   r*   r  r  r  r  )r  r"   r  r  r  r%   r  r  )r   r#   rl   zList[Tuple[str, str]]r  r  )r   r#   r5   r*   r  r%   r  r  )r   r'   r5   r*   r  r  r  r  )r   r   r5   r*   r  r  r  r  )r5   r*   r_   zops.ExecuteSQLOpr  r  )
__future__r   ior   r>   typingr   r   r   r   r	   r
   r   r   
mako.pygenr   rv  r   r#  r   r   r  sqlalchemy.sql.elementsr   r   r   r=   r   
operationsr   r   r   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-   r   r8   rD   rT   
Dispatcherdefault_renderersrc   rK   rX   ri   dispatch_forrt   CreateTableCommentOpr   DropTableCommentOpr   CreateTableOpr   DropTableOpr   r   CreateIndexOpr   DropIndexOpr   CreateUniqueConstraintOpr   CreateForeignKeyOpr   CreatePrimaryKeyOpr   CreateCheckConstraintOpr   DropConstraintOpr   AddColumnOpr   DropColumnOpr   AlterColumnOpr  r2   r   r   r   r   r.  r  r3   r9  r   r<  r   rD  rE  r   rm  r_  rl  r  r   r  r  r  r  r  r  ExecuteSQLOpr  branchr   r9   r7   <module>r     s#   #  	          $ *  ( ( ) /   ##1525,020:+.:6-27%65 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  ,,-@#@)=@@ .@( ( )$ (() *( ))*<#<):<< +<~< <( !## 	
   	<
	
!/

'
 '
#'
 '
 		'
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 (()) *) $$&	r9   