
    h{                    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     f/var/www/html/retail-simulation-api/retail/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 FFD'>GLL) # R  1 	 #OT:W%  	! 1 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!* +++%'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* +++%'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  }|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     AAVaZ   z,
prefixes=[%s]z
))to_tablecolumns_render_columnrN   constraints_render_constraint_namespace_metadatalenMAX_PYTHON_ARGSrM   _identro   r2   r   ry   infokwreplace	_prefixes)r4   r^   tablecolconsrconsr   args_strrB   ry   r   kprefixess                r6   
_add_tabler      s   KKME
 =BMM
<ISN30M

C 	 	
 	 "--	 .D #/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--EMDK]
		
s   G	GG
:G
c                    dt        |       t        |j                        dz  }|j                  r|dt        |j                        z  z  }|dz  }|S )Nz%(prefix)sdrop_table(%(tname)r)rw   rx   , schema=%r))r2   r   ro   r   )r4   r^   rB   s      r6   _drop_tabler     sT    +.?&/ D 
yyryy 111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   &  sP    
 ++1133HC %q'_=>?3  s   =c                   |j                         }| j                  }|rd}nd}|j                  J t        | |      }|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)r   Fr   r<   )rw   r5   r   r   uniquer   kwargs)to_indexr|   r   r   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.? %**=(()99+E?C
 ,,'%;; !6%++*<*<#==,0$4(b D Kr8   c           	     N   |j                         }| j                  }|rd}nd}t        | |      }|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)r   r<   r   )rw   r5   ro   r   r   )
r   r|   r   r2   r7   
index_namer   ro   r   rM   r   s          r6   _drop_indexr   S  s    KKME**I9= 	 (?D.? "--@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   k  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   r  s,    !/23E3EFGHD%%D012KK))*+7#&+788#&+89	
F %%a):EE!HE q%01	  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__"  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   &  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   6  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   O  sh     ??	 #C c9++, 	VGC./0#C4H	I #	  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   Z  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I6Hs&*6HIJK$7$$!Q1%$78O$=2?CIIdOA
 
 	

 3=2D2DE2D3VCHH%&2D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_renderr.    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   )r.  r   r   *_should_render_server_default_positionallyrn   r   r   AUTOINCREMENT_DEFAULTr   r0  ry   r  r   r5   r   r1  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4t3s8t45<"II<@AD[VSFC(DA %0$>$>v$F$L$L$N %OS 23HJ$N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   r2  r2    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<   )r.  r   r8  _render_computedr   r9  _render_identityr0   r  DefaultClauser5  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^r   )rw   rB   r   )r   sqltextrB  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rD  r   rE  s     r6   r   z#_render_identity.<locals>.<genexpr>  rG  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                  }|j                  d      rLt        j                  d|      }|J |j                  d      }||j                  d|z         |r|S |d| S |r|S |s!t        j                  |       rt        | |      S |j                  d	      rMd
| j                   z  t#               v r#t#               d
| j                   z     }	 |	| |      S t%        |      }
|
| S t'        ||       }
|
| S )Nr1  Fr  sqlalchemy.dialectssqlalchemy\.dialects\.(\w+)   z"from sqlalchemy.dialects import %s.zsqlalchemy.z_render_%s_type)r.  hasattrr  r  render_typer1  r
  rF   
startswithr=   r   groupaddr   _type_has_variants_render_Variant_type__visit_name__globalsr  r#  )r   r4   _skip_variantsr   impl_rtmodrF   r   dnamefnrw   s              r6   r   r     sj   
 $FE?CHu00&9!3388DD?
 
u+
 
 C%%G
~~+,7=   AKK<uDEN#U++	 > >u E#E?;;		&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_typerd  I  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   rY  rY  R  sx     "-!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%srO  rP  rQ  rR  
sqlalchemy)r   r  r=   r@   r   r1  r
  rU  r   rV  r  )r   r4   attrnameregexprw   
outer_repr
inner_type
inner_reprsub_type
outer_typer^  r   r_  s                r6   rc  rc  a  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   )r.  r   r5   rn   r   r7   r  rM   )r   r4   ry  r   rk   cr6  r   s           r6   _render_primary_keyr}    s     $M:OHuDT*?JOOLMN	
 61/B		#-#5#56#5aT!&&\#5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.

    rR  Nr   r   )_get_colspecsplitr   rM   link_to_nameparentr   tablesr|  rl   r   r5   )	fkmetadata_schemary  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'      5HVAHHMM*+5Hs   24c              3  J   K   | ]  }t        t        |              y wr/   )r   r  )r   r  apply_metadata_schemary  s     r6   r   z&_render_foreign_key.<locals>.<genexpr>   s)      !,A [$9;MNO,s    #r   )rw   colsrefcolsr   )
r.  r5   rn   r   r7   r  r   r  rM   elements)r   r4   ry  r   rk   r6  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<@AD[VSFC(DA
	
 Bs   C)c                B    t        d| |      }|dur|S t        | |d      S )Nr   F)r.  r   )r   r4   ry  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>6  s     !Dttq!Q"2ts   r<   rA  )rw   rk   rH  )r.  _create_rulerS  r0   r"  sqltypesr&   r5   rn   r   r7   r  rM   r   rH  )r   r4   ry  r   rk   s        r6   _render_check_constraintr    s     $GZIHu 	J++X6##**

 DT*?JOOLMN	
 <1/B 		!Dt!DDE)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   rH  r  r   rg   s     r6   _execute_sqlr  ?  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'   r?  rX   r  r  )rI  r+   r4   r'   r  r  )rM  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'   rn  r  ro  r  rw   r  r  z$Union[Optional[str], Literal[False]])r   r   r4   r'   ry  Optional[MetaData]r  r  )r   r#   r4   r'   ry  r  r  r  )r  r   r  r  ry  r"   r  r  )r   r    rk   zList[Tuple[str, str]]r  r  )r   r    r4   r'   ry  r"   r  r  )r   r$   r4   r'   ry  r  r  r  )r   r   r4   r'   ry  r  r  r  )r4   r'   r^   zops.ExecuteSQLOpr  r  )
__future__r   ior   r=   typingr   r   r   r   r	   r
   r   r   
mako.pygenr   rm  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   r.  r   r2  r   r;  r<  r   rd  rY  rc  rv  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> ../#)? 08 ))*3 +3l ( )#+8 ))*  + F ( ). 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

  !)()(#)( )( 		)(X(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$=$=>#### +# 	# ?#L (()) *) $$&	r8   