
    ZeIi                     	   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 ddlm Z  er~d dlm!Z! d dlm"Z" d dlm#Z# d dlm$Z$ d dlm%Z% d dl&m'Z' 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<dd4Z=dd7Z>dd=Z? ej@                    xZAZBdd@ZCddDZDddEZEeBF                    ej;                  ddG            ZGeBF                    ejH                  ddI            ZIeBF                    ejJ                  ddK            ZKeBF                    ejL                  ddM            ZMeBF                    ejN                  ddO            ZOddSZPeBF                    ejQ                  ddU            ZReBF                    ejS                  ddW            ZTeBF                    ejU                  ddY            ZVeBF                    ejW                  dd[            ZXeBF                    ejY                  d\             ZZeBF                    ej[                  d]             Z\eBF                    ej]                  dd_            Z^eBF                    ej_                  dda            Z`eBF                    eja                  ddc            ZbeBF                    ejc                  dde            Zd G df dg          ZeddjZfdkdldldmddtZgddwZhdd{Zid| Zjdd}Zkdd~ZlddZmddZnddZo	 dddZpddZqddZrddZs	 dddZtddZuddZv	 dddZw ej@                    ZxddZyexF                    ej/                  dd            ZzddZ{ddZ|exF                    ej,                  dd            Z}exF                    ej0                  dd            Z~exF                    ej'                  dd            ZeBF                    ej                  dd            ZeA                                ZBdS )    )annotations)StringION)Any)cast)Dict)List)Optional)Tuple)TYPE_CHECKING)Union)PythonPrinter)schema)sql)types)_DialectArgView)conv)Label)quoted_name   )util)ops)sqla_compat)Literal)Computed)Identity)ColumnElement)
TextClause)CheckConstraint)Column)
Constraint)FetchedValue)
ForeignKey)ForeignKeyConstraint)Index)MetaData)PrimaryKeyConstraint)UniqueConstraint)ARRAY)
TypeEngine)AutogenContext)Config)MigrationScript)ModifyTableOps   autogen_contextr*   namesqla_compat._ConstraintNamereturn*Optional[Union[quoted_name, str, _f_name]]c                    t          |t                    rt          t          |           |          S t	          j        |          S N)
isinstancer   _f_name_alembic_autogenerate_prefixr   constraint_name_or_none)r/   r0   s     `/var/www/html/MCyber-Diagnostic/venv/lib/python3.11/site-packages/alembic/autogenerate/render.py_render_gen_namer;   ;   s@     $ 93ODDdKKK24888    textstrc                    t          j        dt           j                                      d|                                           } t          j        dt           j                                      d|           } | S )N^    z +$ )recompileMsubstrip)r=   s    r:   _indentrH   E   sY    :dBD!!%%fd3399;;D:fbd##''D11DKr<   migration_scriptr,   template_argsDict[str, Union[str, Config]]Nonec                2   | j         }t          |j        |j                  D ]O\  }}t	          t          ||                     ||j        <   t	          t          ||                     ||j        <   Pd                    t          |                    |d<   d S )N
imports)
rO   zipupgrade_ops_listdowngrade_ops_listrH   _render_cmd_bodyupgrade_tokendowngrade_tokenjoinsorted)r/   rI   rJ   rO   upgrade_opsdowngrade_opss         r:    _render_python_into_templatevarsrZ   K   s    
 %G&))+;+N' ' 
 
"] 4;[/::4
 4
k/0 8?]O<<8
 8
m344  $yy99M)r<   op_containerops.OpContainerc                t   t                      }t          |          }|                    d           d}| j        D ]=}t	          ||          }|pt          |          }|D ]}|                    |           >|s|                    d           |                    d           |                                S )Nz=# ### commands auto generated by Alembic - please adjust! ###Fpassz# ### end Alembic commands ###)r   r   	writeliner   	render_opboolgetvalue)r[   r/   bufprinter	has_linesoplineslines           r:   rS   rS   a   s     **CC  GG   I $ $/2..,e	 	$ 	$Dd####	$  "&!!!6777<<>>r<   rf   ops.MigrateOperation	List[str]c                v    t                               |          }t          j         || |                    }|S r5   )	renderersdispatchr   to_list)r/   rf   rendererrg   s       r:   r`   r`   |   s7     !!"%%HL/26677ELr<   c                H    d                     t          | |                    S )NrN   )rV   r`   r/   rf   s     r:   render_op_textrr      s      99Y33444r<   r-   c                   | j         }|                    dd          }|j        rg }|r|                                 5  |                    d|j        d|j        d           |j        D ]'}t          | |          }|                    |           (|                    d           d d d            n# 1 swxY w Y   n/|j        D ]'}t          | |          }|                    |           (|S g S )Nrender_as_batchFzwith op.batch_alter_table(z	, schema=z) as batch_op:rB   )	optsgetr   _within_batchappend
table_namer   r`   extend)r/   rf   ru   rt   rg   t_opt_liness          r:   _render_modify_tabler}      sW    Dhh0%88O	v  	& ..00 ! !}}}biii1   F * *D'>>GLL))))R   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !  & &#OT::W%%%%	s   A+B44B8;B8ops.CreateTableCommentOpc                    | j         rd}nd}|                    t          |           |j        |j        
d|j        z  nd |j        
d|j        z  nd |j        
d|j        z  n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'rA   )prefixtnamecommentexistingr   indent)
_has_batchformatr8   ry   r   existing_commentr   r/   rf   templs      r:   _render_create_table_commentr      s     ! 
 	 	 <<+O<<m%'Z%;rz!! ". 2&&&%'Y%:v	!!    r<   ops.DropTableCommentOpc                    | j         rd}nd}|                    t          |           |j        |j        
d|j        z  nd |j        
d|j        z  n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}
)r   r   rA   )r   r   r   r   r   )r   r   r8   ry   r   r   r   s      r:   _render_drop_table_commentr      s     ! 
 	 	 <<+O<<m ". 2&&&%'Y%:v	!!  
 
 
r<   ops.CreateTableOpc                z                                     }d  fd|j        D             D             t          d  fd|j        D             D                       z   }t	          |          t
          k    rdd                    |          z   dz   }nd                    |          }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|                    dd          dj        |         z  }-|j        r,d                    d |j        D                       }	|d|	z  z  }j        |dt#          j                  z  z  }|dz  }|S )Nc                    g | ]}||S  r   .0cols     r:   
<listcomp>z_add_table.<locals>.<listcomp>   s0          r<   c                0    g | ]}t          |          S r   )_render_column)r   r   r/   s     r:   r   z_add_table.<locals>.<listcomp>   s0     
 
 
58N300
 
 
r<   c                    g | ]}||S r5   r   )r   rconss     r:   r   z_add_table.<locals>.<listcomp>   s,     		
 		
 		
    !  r<   c                <    g | ]}t          |j                  S r   )_render_constraint_namespace_metadata)r   consr/   rf   s     r:   r   z_add_table.<locals>.<listcomp>   s?         #/2+A   r<   z*[,
]z.%(prefix)screate_table(%(tablename)r,
%(args)s)	tablenamer   argsz,
schema=%rz,
comment=%rz,
info= _=, c              3      K   | ]	}d |z  V  
dS )r   Nr   )r   ps     r:   	<genexpr>z_add_table.<locals>.<genexpr>  s&      AAAVaZAAAAAAr<   z,
prefixes=[%s]z,
if_not_exists=%rz
))to_tablecolumnsrW   constraintslenMAX_PYTHON_ARGSrV   _identry   r8   r   r   infokwreplace	_prefixesif_not_existsra   )
r/   rf   tabler   args_strr=   r   r   kprefixess
   ``        r:   
_add_tabler      sB   KKMME 
 
 
 
<AM
 
 
   			
 		
     "-	  		
 		
 		
	 	D& 4yy?""%**T***S0::d##<BM**.??@ @ D
 
y 3	!2!222mG 2&//11:D $#4###BE]] = =aiiS11112588<< .99AAAAAAA"X--	#%R-=(>(>>>EMDKr<   ops.DropTableOpc                    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)r   r   , schema=%rz, if_exists=%r))r8   r   ry   r   	if_existsra   )r/   rf   r=   s      r:   _drop_tabler   "  s    +.??&&/ / D 
y 2ry 1 111	| 4#5#555CKDKr<   dialect_kwargsr   	list[str]c                D      fd|                                 D             S )Nc                @    g | ]\  }}| d t          |           S r   _render_potential_exprr   keyvalr/   s      r:   r   z0_render_dialect_kwargs_items.<locals>.<listcomp>5  sF       C ??'_==??  r<   )items)r/   r   s   ` r:   _render_dialect_kwargs_itemsr   2  s:       &,,..   r<   ops.CreateIndexOpc                D   |                                 }| j        }|rd}nd}|j        J t          | |j                  }|j        *|                    dt          |j                  z             |t          |           t          | |j
                  t          |j        j
                  d                    t          ||                     |j        pd|j        j        rdt          |j        j                  z  nd|rdd                    |          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   rB   )r   r0   r   r   uniquer   kwargs)to_indexr   r   r   r   r   rx   ra   r8   r;   r0   r   rV   _get_index_rendered_expressionsr   r   r/   rf   index	has_batchtmplru   r=   s          r:   
_add_indexr   ;  s7   KKMME*I 	
+ 	5 	
 ;"""'9MNND	#&b.>)?)??@@@.?? %*==())99+E?CC
 
 ,'% {!]VEK$67777,08$4((b  D Kr<   ops.DropIndexOpc           	        |                                 }| 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                    |          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   rB   r   )r   r0   ry   r   r   )r   r   r   r   r   rx   ra   r8   r;   
index_namer   ry   r   rV   r   s          r:   _drop_indexr   c  s    KKMME*I 
9= 	 (9MNND	|NT",%7%77888.?? "-@@R]++:<)KMF29$5$555,08$4((b  D Kr<   ops.CreateUniqueConstraintOpc                J    t          |                                | d          gS )NT)_uq_constraintto_constraintrq   s     r:   _add_unique_constraintr   }  s%     2++--EEFFr<   ops.CreateForeignKeyOpc                $   |                                 }t          t          | |j                            g}| j        s4|                    t          t          |j                                       |                    t          t          |j	                            t          d |j
        D                       t          d |j        D                       g           g d}| j        s|                    dd           |D ]4}||j        v r)|j        |         }||                    |d|           5t          | |j                  }dt!          |           d                    |          |rdd                    |          z   nd	d
z  S )Nc                ,    g | ]}t          |          S r   r   r   s     r:   r   z&_add_fk_constraint.<locals>.<listcomp>  s    777#&++777r<   c                ,    g | ]}t          |          S r   r   r   s     r:   r   z&_add_fk_constraint.<locals>.<listcomp>  s    888#&++888r<   )referent_schemaonupdateondelete	initially
deferrable	use_altermatchr   source_schemar   z8%(prefix)screate_foreign_key(%(args)s%(dialect_kwargs)s)r   rB   )r   r   r   )r   reprr;   constraint_namer   rx   r   source_tablerz   referent_table
local_colsremote_colsinsertr   r   r   r8   rV   )r/   rf   
constraintr   r   r   valuer   s           r:   _add_fk_constraintr     s    !!##J!/23EFFGGHD% 3D0011222KK)**++77777888888899	
    F % *a))) 2 2::E!HE qqq%%011112 N F.??		$0>FD499^,,,,B	I I  r<   c                    t                      r5   NotImplementedErrorr   r/   s     r:   _add_pk_constraintr         


r<   c                    t                      r5   r   r   s     r:   _add_check_constraintr     r   r<   ops.DropConstraintOpc                \   t          |           }t          | |j                  }|j        rt	          |j                  nd }|j        rt	          |j                  nd }|j        }g }|                    t          |                     | j	        sN|                    t          t	          |j
                                       ||                    d|           ||                    d|           ||                    d|            | dd                    |           dS )Nschema=type_=z
if_exists=zdrop_constraint(r   r   )r8   r;   r   r   r   constraint_typer   rx   r   r   ry   rV   )r/   rf   r   r0   r   type_r   params_strss           r:   _drop_constraintr    s>    */::FOR-?@@D"$)5VBIF*,*<FF2%&&&$EIKtDzz"""% 54r} 5 566777333444-E--...3	33444??dii&<&<????r<   ops.AddColumnOpc                    |j         |j        |j        |j        f\  }}}}| j        rd}nd}|r|dz  }||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)rz!, if_not_exists=%(if_not_exists)rr   )r   r   columnr   r   )r   ry   r  r   r   r8   r   )r/   rf   r   r   r  r   templater=   s           r:   _add_columnr    s     		

	
	,(FE6= ! 5? 	.--H$;;HC.?? 99&  D Kr<   ops.DropColumnOpc                    |j         |j        |j        |j        f\  }}}}| j        rd}nd}|r|dz  }||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
  z, if_exists=%(if_exists)rr   )r   r   cnamer   r   )r   ry   column_namer   r   r8   r   )r/   rf   r   r   r  r   r  r=   s           r:   _drop_columnr    s     		


	-)FE;	 ! 5? 	.--H 33HC.??$$..  D Kr<   ops.AlterColumnOpc                   |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)r   r   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   )ry   r  modify_server_defaultmodify_typemodify_nullablemodify_commentmodify_namer   rv   existing_typeexisting_nullabler   existing_server_defaultr   r   r8   
_repr_type_render_server_default)r/   rf   r   r  server_defaultr  nullabler   newnamer  r  r  r   r  r   r   r  r=   rendereds                      r:   _alter_columnr$    sv    MENE-NNE!HGnGEIIot44M$M,* 8YFF! A5@.??  D
  FF}o666
 	
 U"")./JJFFFHH==VVVWW==666:e_+M+M+MNNfffhh77eVVVWW55#fff6F6FGG-9vvv7H7HII 666==AA#:)#_
 
 	VVVXXFF 4o0 4FFFFF33CKDKr<   c                      e Zd Zd
dZddZd	S )r7   r   r>   r0   r   r2   rL   c                "    || _         || _        d S r5   )r   r0   )selfr   r0   s      r:   __init__z_f_name.__init__M  s    			r<   c                @    | j         dt          | j                  dS )Nzf(r   )r   r   r0   )r'  s    r:   __repr__z_f_name.__repr__Q  s#     KKK	):):):):;;r<   N)r   r>   r0   r   r2   rL   )r2   r>   )__name__
__module____qualname__r(  r*  r   r<   r:   r7   r7   L  s<           < < < < < <r<   r7   !Optional[Union[quoted_name, str]]Optional[str]c                    | | S t          | t                    rt          |           S t          | t                    r| S dS )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)r6   r   r>   )r0   s    r:   r   r   U  sM     |	D+	&	& 4yy	D#		  r<   TF)wrap_in_elementis_server_defaultis_indexr   r   r1  ra   r2  r3  c               |   t          | t          j                  r|j        j                            | ||          }|rat          |          }|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)r2  r3  literal_columnr=   (r   z.label()r6   r   ClauseElementmigration_contextimplrender_ddl_sql_expr_sqlalchemy_autogenerate_prefixr   typer0   r>   r   )	r   r/   r1  r2  r3  sql_textr   element	value_strs	            r:   r   r   e  s     %*++ "49MM%6 N 
 
  	"4_EEF*2>&&G!:7::X:::I!ue,,! $$++ #<UZ#<#<#<<<  >>!E{{r<   idxr$   c                *    fd| j         D             S )Nc                    g | ]Y}t          |t          j                  r+t          t	          t          |d d                              nt          |d          ZS )r0   NT)r3  )r6   	sa_schemar   r   r   getattrr   )r   expr/   s     r:   r   z3_get_index_rendered_expressions.<locals>.<listcomp>  sq         #y/00MDVT2233444'_tLLL	  r<   )expressions)r@  r/   s    `r:   r   r     s2        ?   r<   r   r'   alterc                B   g }|j         }| j        r|                    d| j        f           | j        r|                    d| j        f           |s<|r:| j        j        r.|                    dt          | j        j                  f           |s1| j        r*|                    dt          || j                  f           t          || j
                  }|rt          t          || j                            g}|s*|t          t          | j        j                            gz  }|                    t          d | j        D                                  |                    d |D                        |                    |           dt          |          d                    |          d	z  S d
 | j        D             }|                    d |D                        |                    |           dt!          |          d                    |          d	z  S )Nr   r   r   r0   c                6    g | ]}t          |j                  S r   )r   r0   r   s     r:   r   z"_uq_constraint.<locals>.<listcomp>  s"    IIIs&**IIIr<   c                "    g | ]\  }}|d |S r   r   r   r   vs      r:   r   z"_uq_constraint.<locals>.<listcomp>  '    777$!Q11%777r<   z,%(prefix)screate_unique_constraint(%(args)s)r   r   r   c                P    g | ]#}t          t          |j                            $S r   )r   r   r0   r   s     r:   r   z"_uq_constraint.<locals>.<listcomp>  s*    EEE3VCH%%&&EEEr<   c                "    g | ]\  }}|d |S r   r   rK  s      r:   r   z"_uq_constraint.<locals>.<listcomp>  rM  r<   z$%(prefix)sUniqueConstraint(%(args)s))r   r   rx   r   r   r   r   r0   r;   r   r   r   r   rz   r8   rV   r;  )r   r/   rG  ru   r   dialect_optionsr   s          r:   r   r     sQ   
 #%D*I ;\:#89::: 9[*"67888 A A:#3#: AXvj&6&=>>?@@@ 
Z_ 
%ozGGH	
 	
 	
 32 O  
%ozGGHHI 	:T&!1!6778899DDIIj6HIIIJJKKK77$777888O$$$=2?CCIIdOOA
 A
 
 	

 FE*2DEEE77$777888O$$$55oFFIIdOO9
 9
 
 	
r<   c                8    | j         d         }|
d|j        z  S |S )Nuser_module_prefixz%s.)ru   r,  )r/   targetr   s      r:   _user_autogenerate_prefixrU    s(    !"67F~v(((r<   c                     | j         d         pdS )Nsqlalchemy_module_prefixrB   ru   r/   s    r:   r;  r;    s     :;ArAr<   c                2    | j         rdS | j        d         pdS )Nz	batch_op.alembic_module_prefixrB   )r   ru   rY  s    r:   r8   r8     s'    ! C{#$;<BBr<   r  object_Union[str, Literal[False]]c                \    d|j         v r"|j         d         }|r || ||          }|dur|S dS )Nrender_itemFrX  )r  r\  r/   renderr#  s        r:   _user_defined_renderra    sO     ,,, %m4 	 veWo>>Hu$$5r<   r  Column[Any]c                   t          d|           }|dur|S g }g }| j        rXt          | j                  }|rAt          | j                  r|                    |           n|                    d|f           | j        1| j        t          j        k    r|                    d| j        f           | j        |                    d| j        f           | j	        r|                    d| j	        f           | j
        }|r|                    dd|z  f           d	t                    t          | j                  t          | j                  |r"d
                    d |D                       d
z   ndd
                    d |D             fd| j                                        D             z             dz  S )Nr  Fr   r  r!  systemr   r   z8%(prefix)sColumn(%(name)r, %(type)s, %(args)s%(kwargs)s)r   c                ,    g | ]}t          |          S r   )r>   )r   args     r:   r   z"_render_column.<locals>.<listcomp>  s    4443s88444r<   rB   c                "    g | ]\  }}|d |S r   r   r   kwnamer   s      r:   r   z"_render_column.<locals>.<listcomp>	  '    AAA[VSFFFCC(AAAr<   c                @    g | ]\  }}|d t          |          S r   r   r   s      r:   r   z"_render_column.<locals>.<listcomp>
  sI        !S ss23HHHJ  r<   )r   r0   r<  r   r   )ra  r   r  *_should_render_server_default_positionallyrx   r  r   AUTOINCREMENT_DEFAULTr!  rd  r   r;  r   r0   r  r<  rV   r   r   )r  r/   r#  r   ru   r   s    `    r:   r   r     s    $HfoFFHuD"$D 
:)!?
 
  	:9%  : H%%%%-x8999 	( K$EEE_f&:;<<<"Z1222} /Xv}-...nG 1Yw/000 F1/BBv{##6;88@DL		44t44455<<"IIAADAAA    %+M$7$7$9$9   I I  r<   r   c                R    t          j        |           pt          j        |           S r5   )r   _server_default_is_computed_server_default_is_identity)r   s    r:   rl  rl    s/    2  A		0	@	@Ar<   defaultBOptional[Union[FetchedValue, str, TextClause, ColumnElement[Any]]]repr_c                   t          d| |          }|dur|S t          j        |           rt          t	          d|           |          S t          j        |           rt          t	          d|           |          S t          | t          j	                  r9t          | j
        t                    r| j
        } n@t          | j
        |d          S t          | t          j                  rt          |          S t          | t                    r%|r#t          t!          j        dd|                     } t	          t          |           S )	Nr   Fr   r   T)r2  z^'|'$rB   )ra  r   ro  _render_computedr   rp  _render_identityr6   rC  DefaultClauserf  r>   r   r!   _render_fetched_valuer   rC   rF   )rq  r/   rs  r#  s       r:   r  r    s;    $$4gOOHu.w77 6Z 9 9?KKK		0	9	9 
6Z 9 9?KKK	GY4	5	5 6gk3'' 	kGG)_    
GY3	4	4 6$_555'3 6E 6rvhG4455Wr<   computedr   c                    t          | j        |d          }i }| j        
| j        |d<   dt          |          |d                    d |                                D                       dz  S )NFr1  	persistedz(%(prefix)sComputed(%(text)s, %(kwargs)s)r   c              3      K   | ]	}d |z  V  
dS z%s=%sNr   r   pairs     r:   r   z#_render_computed.<locals>.<genexpr>F  &      GGWt^GGGGGGr<   )r   r=   r   )r   sqltextr|  r;  rV   r   )ry  r/   r=   r   s       r:   ru  ru  9  s     "/5  D F%&0{51/BB99GGGGGGG9 9  r<   identityr   c                    t          j        | d          }dt          |          d                    d |                                D                       dz  S )NT)r   z%(prefix)sIdentity(%(kwargs)s)r   c              3      K   | ]	}d |z  V  
dS r~  r   r  s     r:   r   z#_render_identity.<locals>.<genexpr>S  r  r<   )r   r   )r   _get_identity_options_dictr;  rV   r   )r  r/   r   s      r:   rv  rv  J  sj     3  F ,1/BB99GGGGGGG/ /  r<   c                *    ddt          |           iz  S )Nz%(prefix)sFetchedValue()r   )r;  rY  s    r:   rx  rx  W  s"    %1/BB)  r<   r)   _skip_variantsc                   t          d| |          }|dur|S t          |j        d          r!|j        j                            | |          }nd }t          |           j        }|j        }|s$t          j	        |           rt          | |          S |                    d          rSt          j        d|          }|J |                    d          }||                    d|z             |r|S |d| S |r|S |                    d	          rUd
| j        z  t#                      v r(t#                      d
| j        z           }	 |	| |          S t%          |          }
|
| S t'          ||           }
|
| S )Nr<  Fr9  sqlalchemy.dialectssqlalchemy\.dialects\.(\w+)   z"from sqlalchemy.dialects import %s.zsqlalchemy.z_render_%s_type)ra  hasattrr8  r9  render_typer<  r,  rO   r   _type_has_variants_render_Variant_type
startswithrC   r   groupadd__visit_name__globalsr;  rU  )r  r/   r  r#  impl_rtmodrO   r   dnamefnr   s              r:   r  r  ]  s   
 $FE?CCHu0&99 !38DD?
 
 
u++
 C%G (k<UCC (#E?;;;	-	.	. (7==   AKK<uDEEE 	,N#eeUU++	 (		&	& 	(u33wyy@@,u/CCDB2e_---4_EEF#VUU++*?EBB''r<   r(   c           	     L    t          t          t          | |dd                    S )N	item_typez(.+?\())r   r>   _render_type_w_subtype)r  r/   s     r:   _render_ARRAY_typer    s-    ?K	
 	
  r<   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  rW   )r  r/   	base_typevariant_mappingbasedialecttyps          r:   r  r    s     "-!A%!H!HIiFFFDE 1 1 1 1/** 
 
g&sODAAAAAGG
 	
 Kr<   attrnameregexpr   $Union[Optional[str], Literal[False]]c                ,   t          |           }t          | |d           }|dS t          |          }t          j        dd|          }t	          t          | |          |          }t          j        ||z   d|z  |          }	|r||	S t          |           j        }
|
                    d          r5t          j        d|
          }|J |	                    d          }|d|	S |
                    d	          rt          |          }||	S d S )
NFz([\(\)])z\\\1z\1%sr  r  r  r  
sqlalchemy)r   rD  rC   rF   r  r<  r,  r  r   r  r;  )r  r/   r  r  r   
outer_repr
inner_type
inner_reprsub_type
outer_typer  r   r  s                r:   r  r    s.    eJ$//Juj!!JWj99J'%22ODDH+Wx-?LLJ -,,
u++
 C
~~+,, 	7==   A%%,,		%	% 0AA,,tr<   r    namespace_metadataOptional[MetaData]c                    	 t                               |           } || ||          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_renderersrm   
ValueErrorr   warn)r   r/   r  ro   s       r:   r   r     sv    
I(11*==
 x
O5GHHH	  9 9 9	<zIJJJ+j88889s   ) &AAr&   c           	     J   t          d| |          }|dur|S | j        sd S g }| j        r7|                    dt	          t          || j                            f           dt          |          d                    d | j        D             d |D             z             dz  S )	Nprimary_keyFr0   z(%(prefix)sPrimaryKeyConstraint(%(args)s)r   c                6    g | ]}t          |j                  S r   )r   r0   )r   cs     r:   r   z'_render_primary_key.<locals>.<listcomp>  s     666aT!&\\666r<   c                "    g | ]\  }}|d |S r   r   rh  s      r:   r   z'_render_primary_key.<locals>.<listcomp>  s'    ???;63&&&##&???r<   rN  )ra  r   r0   rx   r   r;   r;  rV   r   r/   r  r#  ru   s        r:   _render_primary_keyr    s     $M:OOHu tD 
T*?JOLLMMN	
 	
 	
 61/BB		66:#5666??$???@
 
9 9  r<   fkr"   metadata_schemac                   |                                  }|                    d          }|dd         \  }}|t          |          dk    r|d|}nd                    |dd                   }| j        sY| j        R| j        j        F|D||j        v r;|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   rV   link_to_nameparentr   tablesr  rv   r   r0   )	r  r  r  colspectokensr   colnametable_fullnamer   s	            r:   _fk_colspecr    s     ooG]]3FBCC[NE7"s6{{a'7'7$3OOUU;&2,// O+I!IO' *"4";;;$+N;=AA'JJC **'1GNr<   r#   ru   List[Tuple[str, str]]c                J   | j         r)|                    dt          | j                   f           | j        r)|                    dt          | j                  f           | j        r)|                    dt          | j                  f           | j        r)|                    dt          | j                  f           | j        r)|                    dt          | j                  f           | j        r+|                    dt          | j                  f           d S d S )Nr   r   r   r   r   r   )r   rx   r   r   r   r   r   r   )r   ru   s     r:   _populate_render_fk_optsr    s#     =Zj&9!:!:;<<< =Zj&9!:!:;<<< ?[$z';"<"<=>>> A\4
(=#>#>?@@@ ?[$z';"<"<=>>> 7Wd:#3445666667 7r<   c           	        t          d| |          }|dur|S g }| j        r7|                    dt          t	          || j                            f           t          | |           j        nd dt          |          d                    d | j	        D                       d                    fd| j	        D                       d                    d |D                       d	z  S )
Nforeign_keyFr0   zC%(prefix)sForeignKeyConstraint([%(cols)s], [%(refcols)s], %(args)s)r   c              3  b   K   | ]*}t          t          |j        j                            V  +d S r5   )r   r   r  r0   )r   fs     r:   r   z&_render_foreign_key.<locals>.<genexpr>C  sG        01VAHM**++     r<   c              3  T   K   | ]"}t          t          |                    V  #d S r5   )r   r  )r   r  apply_metadata_schemar  s     r:   r   z&_render_foreign_key.<locals>.<genexpr>F  sM       ! ! [$9;MNNOO! ! ! ! ! !r<   c                "    g | ]\  }}|d |S r   r   rh  s      r:   r   z'_render_foreign_key.<locals>.<listcomp>K  rj  r<   )r   colsrefcolsr   )
ra  r0   rx   r   r;   r  r   r;  rV   elements)r   r/   r  r#  ru   r  s     `  @r:   _render_foreign_keyr  )  sN    $M:OOHuD 
T*?JOLLMMN	
 	
 	
 Z... &8%C!! 	# 6oFFII  5?5H     yy ! ! ! ! !#,! ! !   IIAADAAA 
 
	
r<   c                R    t          d| |          }|dur|S t          | |d          S )Nr   F)ra  r   )r   r/   r  r#  s       r:   _render_unique_constraintr  Q  s7     $Hj/JJHu*ou===r<   r   c           	        t          d| |          }|dur|S | j        r;t          | j        d          r&t          | j        j        t
          j                  rd S g }| j        r7|                    dt          t          || j                            f           dt          |          |r"dd                    d |D                       z   ndt          | j        |d	          d
z  S )NcheckFrT  r0   z.%(prefix)sCheckConstraint(%(sqltext)s%(opts)s)r   c              3  *   K   | ]\  }}|d |V  dS )r   Nr   rK  s      r:   r   z+_render_check_constraint.<locals>.<genexpr>}  s1      @@41aAA.@@@@@@r<   rB   r{  )r   ru   r  )ra  _create_ruler  r6   rT  sqltypesr)   r0   rx   r   r;   r;  rV   r   r  r  s        r:   _render_check_constraintr  ^  s%    $GZIIHu 	J+X66 #*
 
 tD 
T*?JOLLMMN	
 	
 	
 <1/BB DDII@@4@@@@@AA)
 
 

? 
? 
 
r<   ops.ExecuteSQLOpc                    t          |j        t                    st          d          d                    t          |           |j                  S )NznAutogenerate rendering of SQL Expression language constructs not supported here; please use a plain SQL stringz{prefix}execute({sqltext!r}))r   r  )r6   r  r>   r   r   r8   rq   s     r:   _execute_sqlr    s]    bj#&& 
!@
 
 	
 *00+O<<
 1   r<   )r/   r*   r0   r1   r2   r3   )r=   r>   r2   r>   )r/   r*   rI   r,   rJ   rK   r2   rL   )r[   r\   r/   r*   r2   r>   )r/   r*   rf   ri   r2   rj   )r/   r*   rf   ri   r2   r>   )r/   r*   rf   r-   r2   rj   )r/   r*   rf   r~   r2   r>   )r/   r*   rf   r   r2   r>   )r/   r*   rf   r   r2   r>   )r/   r*   rf   r   r2   r>   )r/   r*   r   r   r2   r   )r/   r*   rf   r   r2   r>   )r/   r*   rf   r   r2   r>   )r/   r*   rf   r   r2   rj   )r/   r*   rf   r   r2   r>   )r/   r*   rf   r   r2   r>   )r/   r*   rf   r  r2   r>   )r/   r*   rf   r  r2   r>   )r/   r*   rf   r  r2   r>   )r0   r.  r2   r/  )r   r   r/   r*   r1  ra   r2  ra   r3  ra   r2   r>   )r@  r$   r/   r*   r2   rj   )r   r'   r/   r*   rG  ra   r2   r>   )r/   r*   r2   r>   )r  r>   r\  r   r/   r*   r2   r]  )r  rb  r/   r*   r2   r>   )r   r   r2   ra   )T)rq  rr  r/   r*   rs  ra   r2   r/  )ry  r   r/   r*   r2   r>   )r  r   r/   r*   r2   r>   )F)r  r)   r/   r*   r  ra   r2   r>   )r  r(   r/   r*   r2   r>   )r  r)   r/   r*   r2   r>   r5   )r  r)   r/   r*   r  r>   r  r>   r   r/  r2   r  )r   r    r/   r*   r  r  r2   r/  )r   r&   r/   r*   r  r  r2   r/  )r  r"   r  r/  r  r  r2   r>   )r   r#   ru   r  r2   rL   )r   r#   r/   r*   r  r  r2   r/  )r   r'   r/   r*   r  r  r2   r>   )r   r   r/   r*   r  r  r2   r/  )r/   r*   rf   r  r2   r>   )
__future__r   ior   rC   typingr   r   r   r   r	   r
   r   r   
mako.pygenr   r  r   rC  r   r   r  sqlalchemy.sql.baser   sqlalchemy.sql.elementsr   r   r   rB   r   
operationsr   r   r   r   r   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   r;   rH   rZ   
Dispatcherdefault_renderersrl   rS   r`   rr   dispatch_forr}   CreateTableCommentOpr   DropTableCommentOpr   CreateTableOpr   DropTableOpr   r   CreateIndexOpr   DropIndexOpr   CreateUniqueConstraintOpr   CreateForeignKeyOpr   CreatePrimaryKeyOpr   CreateCheckConstraintOpr   DropConstraintOpr  AddColumnOpr  DropColumnOpr  AlterColumnOpr$  r7   r   r   r   r   rU  r;  r8   ra  r   rl  r  ru  rv  rx  r  r  r  r  r  r   r  r  r  r  r  r  ExecuteSQLOpr  branchr   r<   r:   <module>r     s	   # " " " " "       				                                                       $ $ $ $ $ $ * * * * * *       ( ( ( ( ( ( / / / / / / ( ( ( ( ( ( ) ) ) ) ) ) / / / / / /                   6############555555222222555555,,,,,,000000222222000000::::::++++++......::::::666666------222222777777%%%%%%666666555555 9 9 9 9   : : : :& !0 1 1 1 I   6   5 5 5 5 *++   ,+8 011   21B .//   0/< )**6 6 6 +*6r ((   )(    )**$ $ $ +*$N ((   )(2 455G G G 65G .//+ + + 0/+\ .//    0/  344    54  ,--@ @ @ .-@, ((   )(4 ())   *)8 )**< < < +*<~< < < < < < < <   ( !#     <
 
 
 
)
 )
 )
 )
X  B B B BC C C C	 	 	 	6 6 6 6rA A A A     >   "
 
 
 
    !*( *( *( *( *(Z      ( !    D ()) I I I I ##I$BCC   DC4% % % %P7 7 7 7" ##I$BCC$ $ $ DC$N ##I$>??	> 	> 	> @?	> ##I$=>>% % % ?>%P ())	 	 	 *)	 $$&&			r<   