o
    Df{                     @  s  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<dd3d4Z=dd7d8Z>dd>d?Z?e@  ZAZBddBdCZCddGdHZDddIdJZEeBFej8ddLdMZGeBFejHddOdPZIeBFejJddRdSZKeBFejLddUdVZMeBFejNddXdYZOdd]d^ZPeBFejQdd`daZReBFejSddcddZTeBFejUddfdgZVeBFejWddidjZXeBFejYdkdl ZZeBFej[dmdn Z\eBFej]ddpdqZ^eBFej_ddsdtZ`eBFejaddvdwZbeBFejcddydzZdG d{d| d|ZedddZfdddddddZgdddZhdddZidd ZjdddZkdddZldddZmdddZndddZo	ddddZpdddZqdddZr	d dddZsdddZtdddZu	ddddZve@ ZwdddǄZxewFej,dddʄZydddЄZzd	ddՄZ{ewFej)d
ddׄZ|ewFej-dddلZ}ewFej$ddd܄Z~eBFejddd߄ZeA ZBdS (      )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   autogen_contextr&   namesqla_compat._ConstraintNamereturn*Optional[Union[quoted_name, str, _f_name]]c                 C  s"   t |trtt| |S t|S N)
isinstancer   _f_name_alembic_autogenerate_prefixr   constraint_name_or_none)r-   r.    r7   T/home/ubuntu/webapp/venv/lib/python3.10/site-packages/alembic/autogenerate/render.py_render_gen_name:   s   

r9   textstrc                 C  s4   t dt jd|  } t dt jd| } | S )N^    z +$ )recompileMsubstrip)r:   r7   r7   r8   _indentD   s   rD   migration_scriptr(   template_argsDict[str, Union[str, Config]]Nonec                 C  s\   | j }t|j|jD ]\}}tt|| ||j< tt|| ||j< q
dt	||d< d S )N
imports)
rJ   zipupgrade_ops_listdowngrade_ops_listrD   _render_cmd_bodyupgrade_tokendowngrade_tokenjoinsorted)r-   rE   rF   rJ   upgrade_opsdowngrade_opsr7   r7   r8    _render_python_into_templatevarsJ   s   
rU   op_containerops.OpContainerc                 C  sr   t  }t|}|d d}| jD ]}t||}|pt|}|D ]}|| q q|s0|d |d | S )Nz=# ### commands auto generated by Alembic - please adjust! ###Fpassz# ### end Alembic commands ###)r   r   	writeliner   	render_opboolgetvalue)rV   r-   bufprinter	has_linesoplinesliner7   r7   r8   rN   `   s    



rN   r`   ops.MigrateOperation	List[str]c                 C  s   t |}t|| |}|S r2   )	renderersdispatchr   to_list)r-   r`   rendererra   r7   r7   r8   rZ   {   s   
rZ   c                 C  s   d t| |S )NrI   )rQ   rZ   r-   r`   r7   r7   r8   render_op_text   s   rj   r)   c                 C  s   | j }|dd}|jrYg }|rG|  ) |d|j|jf  |jD ]}t| |}|| q#|d W d    |S 1 s@w   Y  |S |jD ]}t| |}|| qJ|S g S )Nrender_as_batchFz5with op.batch_alter_table(%r, schema=%r) as batch_op:r>   )	optsgetr   _within_batchappend
table_namer   rZ   extend)r-   r`   rl   rk   ra   t_opt_linesr7   r7   r8   _render_modify_table   s0   






rt   ops.CreateTableCommentOpc                 C  sn   | j rd}nd}|jt| |j|jd urd|j nd |jd ur$d|j nd |jd ur2d|j ddS d 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formatr5   rp   rz   existing_commentr   r-   r`   templr7   r7   r8   _render_create_table_comment   s$   

r   ops.DropTableCommentOpc                 C  sX   | j rd}nd}|jt| |j|jd urd|j nd |jd ur'd|j ddS d 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~   r5   rp   r   r   r   r7   r7   r8   _render_drop_table_comment   s"   

r   ops.CreateTableOpc           
        s:    }dd  fdd|jD D tdd  fdd|jD D  }t|tkr5dd| d }nd|}d	tjt	 |d
 }j
rS|dtj
 7 }|j}|r`|dt| 7 }|j}|rl|d|7 }tjD ]}|d|ddj| f 7 }qq|jrddd |jD }	|d|	 7 }|d7 }|S )Nc                 S  s   g | ]}|r|qS r7   r7   .0colr7   r7   r8   
<listcomp>   s    z_add_table.<locals>.<listcomp>c                   s   g | ]}t | qS r7   )_render_columnr   r-   r7   r8   r      s    
c                 S  s   g | ]}|d ur|qS r2   r7   )r   rconsr7   r7   r8   r      s
    c                   s   g | ]	}t | jqS r7   )_render_constraint_namespace_metadata)r   consri   r7   r8   r      s    z*[z,
]z.%(prefix)screate_table(%(tablename)r,
%(args)s)	tablenamerx   argsz,
schema=%rz,
comment=%rz,
info=z,
%s=%r _, c                 s      | ]}d | V  qdS )rw   Nr7   )r   pr7   r7   r8   	<genexpr>      z_add_table.<locals>.<genexpr>z,
prefixes=[%s]z
))to_tablecolumnsrR   constraintslenMAX_PYTHON_ARGSrQ   _identrp   r5   r   rz   infokwreplace	_prefixes)
r-   r`   tabler   args_strr:   rz   r   kprefixesr7   ri   r8   
_add_table   sJ   

 r   ops.DropTableOpc                 C  s<   dt | t|jd }|jr|dt|j 7 }|d7 }|S )Nz%(prefix)sdrop_table(%(tname)r)rx   ry   , schema=%r))r5   r   rp   r   )r-   r`   r:   r7   r7   r8   _drop_table  s   r   itemr   	list[str]c                   s    fdd|j  D S )Nc                   s$   g | ]\}}| d t |  qS )=_render_potential_exprr   keyvalr   r7   r8   r   )  s    z0_render_dialect_kwargs_items.<locals>.<listcomp>)dialect_kwargsitems)r-   r   r7   r   r8   _render_dialect_kwargs_items&  s   
r   ops.CreateIndexOpc                 C  s   |  }| j}|rd}nd}|jd usJ t| |}|t| t| |jt|jjdt	|| |j
p3d|jjr?dt|jj nd|rIdd| ndd }|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>   )rx   r.   r   r   uniquer   kwargs)to_indexr}   r   r   r5   r9   r.   r   rQ   _get_index_rendered_expressionsr   r   r-   r`   index	has_batchtmplrl   r:   r7   r7   r8   
_add_index/  s.   


r   ops.DropIndexOpc              	   C  sv   |  }| j}|rd}nd}t| |}|t| t| |jt|j|jr*dt|j nd|r4dd	| ndd }|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   )rx   r.   rp   r   r   )
r   r}   r   r5   r9   
index_namer   rp   r   rQ   r   r7   r7   r8   _drop_indexS  s   

r   ops.CreateUniqueConstraintOpc                 C  s   t | | dgS )NT)_uq_constraintto_constraintri   r7   r7   r8   _add_unique_constraintk  s   r   ops.CreateForeignKeyOpc                 C  s   t t| |jg}| js|t t|j |t t|jt dd |j	D t dd |j
D g g d}| js@|dd |D ]}||jv r[|j| }|d ur[|d||f  qBdt| d	|d
 S )Nc                 S     g | ]}t |qS r7   r   r   r7   r7   r8   r   }      z&_add_fk_constraint.<locals>.<listcomp>c                 S  r   r7   r   r   r7   r7   r8   r   ~  r   )referent_schemaonupdateondelete	initially
deferrable	use_altermatchr   source_schema%s=%rz&%(prefix)screate_foreign_key(%(args)s)r   rx   r   )reprr9   constraint_namer}   ro   r   source_tablerq   referent_table
local_colsremote_colsinsertr   r5   rQ   )r-   r`   r   r   r   valuer7   r7   r8   _add_fk_constraintr  s,   	

r   c                 C     t  r2   NotImplementedError
constraintr-   r7   r7   r8   _add_pk_constraint     r   c                 C  r   r2   r   r   r7   r7   r8   _add_check_constraint  r   r   ops.DropConstraintOpc                 C  s   t | }t| |j}|jrt|jnd }|jrt|jnd }g }|t| | js@|tt|j	 |d ur@|d| |d urL|d| | dd
| dS )Nzschema=ztype_=zdrop_constraint(r   r   )r5   r9   r   r   r   constraint_typero   r   r}   rp   rQ   )r-   r`   rx   r.   r   type_params_strsr7   r7   r8   _drop_constraint  s   r   ops.AddColumnOpc                 C  sZ   |j |j|j}}}| jrd}nd}|r|d7 }|d7 }|t| |t|| |d }|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}   r5   r   )r-   r`   r   ry   r   templater:   r7   r7   r8   _add_column  s   r   ops.DropColumnOpc                 C  s`   |j |j|j}}}| jrd}nd}|r|d7 }|d7 }|t| t|t|t|d }|S )Nz %(prefix)sdrop_column(%(cname)r)z*%(prefix)sdrop_column(%(tname)r, %(cname)rr   r   )rx   ry   cnamer   )r   rp   column_namer}   r5   r   )r-   r`   r   ry   r   r   r:   r7   r7   r8   _drop_column  s   r   ops.AlterColumnOpc                 C  s  |j }|j}|j}|j}|j}|j}|jdd }|j}	|j	}
|j
}|j}|j}d}| jr0d}nd}|t| ||d }|	d urK|d|t|	| f 7 }|dur\t|| }|d||f 7 }|d urk|d	|t|| f 7 }|d urw|d
||f 7 }|dur|d||f 7 }|d ur|d||f 7 }|d u r|
d ur|d||
f 7 }|d ur|d||f 7 }|du r|rt|| }|d||f 7 }|r| js|d||f 7 }|d7 }|S )Nautoincrementz           z %(prefix)salter_column(%(cname)rz+%(prefix)salter_column(%(tname)r, %(cname)r)rx   ry   r   z,
%sexisting_type=%sFz,
%sserver_default=%sz,
%stype_=%sz,
%snullable=%rz,
%scomment=%rz,
%sexisting_comment=%rz,
%sexisting_nullable=%rz,
%sautoincrement=%rz,
%sexisting_server_default=%sz,
%sschema=%rr   )rp   r   modify_server_defaultmodify_typemodify_nullablemodify_commentr   rm   existing_typeexisting_nullabler   existing_server_defaultr   r}   r5   
_repr_type_render_server_default)r-   r`   ry   r   server_defaultr   nullablerz   r   r   r   r   r   r   r|   r   r:   renderedr7   r7   r8   _alter_column  sd   

r  c                   @  s    e Zd ZdddZdd	d
ZdS )r4   rx   r;   r.   r   r0   rH   c                 C  s   || _ || _d S r2   )rx   r.   )selfrx   r.   r7   r7   r8   __init__  s   
z_f_name.__init__c                 C  s   d| j t| jf S )Nz%sf(%r))rx   r   r.   )r  r7   r7   r8   __repr__"  s   z_f_name.__repr__N)rx   r;   r.   r   r0   rH   )r0   r;   )__name__
__module____qualname__r  r  r7   r7   r7   r8   r4     s    
r4   !Optional[Union[quoted_name, str]]Optional[str]c                 C  s0   | du r| 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)r3   r   r;   )r.   r7   r7   r8   r   &  s   

r   TF)wrap_in_textis_server_defaultis_indexr   r   r  r[   r  r  c                C  sD   t | tjr|rd}nd}|t||jjj| ||dd S t| S )Nz%(prefix)stext(%(sql)r)z%(sql)r)r  r  )rx   r   )r3   r   ClauseElement_sqlalchemy_autogenerate_prefixmigration_contextimplrender_ddl_sql_exprr   )r   r-   r  r  r  r   r7   r7   r8   r   6  s   r   idxr    c                   s    fdd| j D S )Nc                   s:   g | ]}t |tjrttt|d dnt| ddqS )r.   NT)r  )r3   	sa_schemar   r   r   getattrr   )r   expr   r7   r8   r   R  s    
z3_get_index_rendered_expressions.<locals>.<listcomp>)expressions)r  r-   r7   r   r8   r   O  s   
r   r   r#   alterc                 C  sT  g }|j }| jr|dt| jf | jr|dt| jf |s2|r2| jjr2|dt| jjf |sB| jrB|dt	|| jf t
|| }|rtt	|| jg}|s_|tt| jjg7 }|tdd | jD  |dd |D  || dt|d	|d
 S dd | jD }|dd |D  || dt|d	|d
 S )Nr   r   r   r.   c                 S     g | ]}t |jqS r7   )r   r.   r   r7   r7   r8   r   s      z"_uq_constraint.<locals>.<listcomp>c                 S     g | ]
\}}d ||f qS r   r7   r   r   vr7   r7   r8   r   t      z,%(prefix)screate_unique_constraint(%(args)s)r   r   c                 S  s   g | ]	}t t|jqS r7   )r   r   r.   r   r7   r7   r8   r   {  s    c                 S  r  r  r7   r  r7   r7   r8   r   |  r!  z$%(prefix)sUniqueConstraint(%(args)s))r}   r   ro   r;   r   r   r   r   r.   r9   r   r   r   rq   r5   rQ   r  )r   r-   r  rl   r   dialect_optionsr   r7   r7   r8   r   Z  s>   



r   c                 C  s    | j d }|d u rd|j S |S )Nuser_module_prefixz%s.)rl   r	  )r-   targetrx   r7   r7   r8   _user_autogenerate_prefix  s   

r%  c                 C  s   | j d pdS )Nsqlalchemy_module_prefixr>   rl   r   r7   r7   r8   r    s   r  c                 C  s   | j rdS | jd pdS )Nz	batch_op.alembic_module_prefixr>   )r}   rl   r   r7   r7   r8   r5     s   r5   r   object_Union[str, Literal[False]]c                 C  s4   d|j v r|j d }|r|| ||}|dur|S dS )Nrender_itemFr'  )r   r)  r-   renderr  r7   r7   r8   _user_defined_render  s   

r-  r   Column[Any]c                   s:  t d|  }|dur|S g }g }| jr-t| j }|r-t| jr&|| n|d|f | jd ur@| jtjkr@|d| jf | jd urM|d| jf | j	rX|d| j	f | j
}|rf|dd| f d	t t| jt| j |rd
dd |D d
 ndd
dd |D  fddt|  D  d S )Nr   Fr  r   r  systemrz   rv   z8%(prefix)sColumn(%(name)r, %(type)s, %(args)s%(kwargs)s)r   c                 S  r   r7   )r;   )r   argr7   r7   r8   r     r   z"_render_column.<locals>.<listcomp>r>   c                 S  r  %s=%sr7   r   kwnamer   r7   r7   r8   r     r!  c                   s"   g | ]\}}d |t | f qS r1  r   r   r   r7   r8   r     s    )rx   r.   typer   r   )r-  r  r   *_should_render_server_default_positionallyro   r   r   AUTOINCREMENT_DEFAULTr  r/  rz   r  r   r.   r   r5  rQ   _column_kwargsr   )r   r-   r  r   rl   rz   r7   r   r8   r     sL   



r   r  c                 C  s   t | p	t | S r2   )r   _server_default_is_computed_server_default_is_identity)r  r7   r7   r8   r6    s
   r6  defaultBOptional[Union[FetchedValue, str, TextClause, ColumnElement[Any]]]repr_c                 C  s   t d| |}|dur|S t| rttd| |S t| r&ttd| |S t| tj	r>t| j
tr6| j
} nt| j
|ddS t| trN|rNttdd| } tt| S )	Nr  Fr*   r+   T)r  z^'|'$r>   )r-  r   r9  _render_computedr   r:  _render_identityr3   r  DefaultClauser0  r;   r   r   r?   rB   )r;  r-   r=  r  r7   r7   r8   r     s    


r   computedr*   c                 C  sP   t | j|dd}i }| jd ur| j|d< dt||ddd | D d S )	NFr  	persistedz(%(prefix)sComputed(%(text)s, %(kwargs)s)r   c                 s  r   r2  Nr7   r   pairr7   r7   r8   r     r   z#_render_computed.<locals>.<genexpr>)rx   r:   r   )r   sqltextrC  r  rQ   r   )rA  r-   r:   r   r7   r7   r8   r>    s   

r>  identityr+   c                 C  s4   t j| dd}dt|ddd | D d S )NT)r   z%(prefix)sIdentity(%(kwargs)s)r   c                 s  r   rD  r7   rE  r7   r7   r8   r     r   z#_render_identity.<locals>.<genexpr>)rx   r   )r   _get_identity_options_dictr  rQ   r   )rH  r-   r   r7   r7   r8   r?    s   r?  r%   _skip_variantsc                 C  s  t d| |}|dur|S t|jdr|jj| |}nd }t| j}|j}|drPt	
d|}|d us6J |d}|d urF|d|  |rJ|S d|| f S |rT|S |s`t| r`t| |S |d	rd
| j t v rzt d
| j  }	|	| |S t|}
d|
| f S t|| }
d|
| f S )Nr5  Fr  sqlalchemy.dialectssqlalchemy\.dialects\.(\w+)   z"from sqlalchemy.dialects import %sz%s.%rzsqlalchemy.z_render_%s_typez%s%r)r-  hasattrr  r  render_typer5  r	  rJ   
startswithr?   r   groupaddr   _type_has_variants_render_Variant_type__visit_name__globalsr  r%  )r   r-   rJ  r  impl_rtmodrJ   r   dnamefnrx   r7   r7   r8   r     s>   






r   r$   c                 C  s   t tt| |ddS )N	item_typez(.+?\())r   r;   _render_type_w_subtype)r   r-   r7   r7   r8   _render_ARRAY_typeI  s   r]  c                 C  sd   t | \}}t||dd}|d ur|dusJ t|D ]}|| }|dt||dd|f 7 }q|S )NT)rJ  Fz.with_variant(%s, %r))r   _get_variant_mappingr   rR   )r   r-   	base_typevariant_mappingbasedialecttypr7   r7   r8   rT  R  s   
rT  attrnameregexprx   $Union[Optional[str], Literal[False]]c                 C  s   t | }t| |d }|d u rdS t |}tdd|}tt| ||}t|| d| |}	|r6d||	f S t| j}
|
drWtd|
}|d usLJ |	d}d	||	f S |
d
rft
|}d||	f S d S )NFz([\(\)])z\\\1z\1%sz%s%srK  rL  rM  %s.%s
sqlalchemy)r   r  r?   rB   r   r5  r	  rP  r   rQ  r  )r   r-   rd  re  rx   
outer_repr
inner_type
inner_reprsub_type
outer_typerX  r   rY  r7   r7   r8   r\  a  s(   



r\  r   namespace_metadataOptional[MetaData]c                 C  sD   zt | }W n ty   td|   d|   Y S w || ||S )Nz(No renderer is established for object %rz[Unknown Python object %r])_constraint_renderersrf   
ValueErrorr   warn)r   r-   rn  rh   r7   r7   r8   r     s   r   r"   c                 C  sx   t d| |}|dur|S | jsd S g }| jr#|dtt|| jf dt|ddd | jD dd |D  d	 S )
Nprimary_keyFr.   z(%(prefix)sPrimaryKeyConstraint(%(args)s)r   c                 S  r  r7   )r   r.   )r   cr7   r7   r8   r     r  z'_render_primary_key.<locals>.<listcomp>c                 S  r  r1  r7   r3  r7   r7   r8   r     r!  r   )r-  r   r.   ro   r   r9   r  rQ   r   r-   rn  r  rl   r7   r7   r8   _render_primary_key  s$   rv  fkr   metadata_schemar!   c           	      C  s   |   }|d}|dd \}}|dur"t|dkr"d||f }n	d|dd }| jsP| jdurP| jjdurP||jv rP|j| j	|}|durPt
|j}d||f }|S )zxImplement a 'safe' version of ForeignKey._get_colspec() that
    won't fail if the remote table can't be resolved.

    .Nr   rg  r   )_get_colspecsplitr   rQ   link_to_nameparentr   tablesrt  rm   r   r.   )	rw  rx  rn  colspectokensry   colnametable_fullnamer   r7   r7   r8   _fk_colspec  s    	



r  r   rl   List[Tuple[str, str]]c                 C  s   | j r|dt| j f | jr|dt| jf | jr'|dt| jf | jr4|dt| jf | jrA|dt| jf | jrP|dt| jf d S d S )Nr   r   r   r   r   r   )r   ro   r   r   r   r   r   r   )r   rl   r7   r7   r8   _populate_render_fk_opts  s   r  c                   s   t d| |}|dur|S g }| jr|dtt|| jf t| | j dt|ddd | j	D d fdd| j	D dd	d
 |D d S )Nforeign_keyFr.   zC%(prefix)sForeignKeyConstraint([%(cols)s], [%(refcols)s], %(args)s)r   c                 s  s     | ]}t t|jjV  qd S r2   )r   r   r  r.   r   fr7   r7   r8   r     s    
z&_render_foreign_key.<locals>.<genexpr>c                 3  s     | ]}t t| V  qd S r2   )r   r  r  apply_metadata_schemarn  r7   r8   r      s
    
c                 S  r  r1  r7   r3  r7   r7   r8   r     r!  z'_render_foreign_key.<locals>.<listcomp>)rx   colsrefcolsr   )
r-  r.   ro   r   r9   r  r   r  rQ   elementsru  r7   r  r8   _render_foreign_key  s0   

r  c                 C  s$   t d| |}|dur|S t| |dS )Nr   F)r-  r   )r   r-   rn  r  r7   r7   r8   _render_unique_constraint  s   r  r   c                 C  s   t d| |}|dur|S | jrt| jdrt| jjtjrd S g }| jr1|dt	t
|| jf dt||rCdddd |D  nd	t| j|dd
d S )NcheckFr$  r.   z.%(prefix)sCheckConstraint(%(sqltext)s%(opts)s)r   c                 s  s     | ]\}}d ||f V  qdS rD  r7   r  r7   r7   r8   r   6  s    z+_render_check_constraint.<locals>.<genexpr>r>   rB  )rx   rl   rG  )r-  _create_rulerN  r3   r$  sqltypesr%   r.   ro   r   r9   r  rQ   r   rG  ru  r7   r7   r8   _render_check_constraint  s6   
r  ops.ExecuteSQLOpc                 C  s   t |jts
tdd|j S )NznAutogenerate rendering of SQL Expression language constructs not supported here; please use a plain SQL stringzop.execute(%r))r3   rG  r;   r   ri   r7   r7   r8   _execute_sql?  s
   
r  )r-   r&   r.   r/   r0   r1   )r:   r;   r0   r;   )r-   r&   rE   r(   rF   rG   r0   rH   )rV   rW   r-   r&   r0   r;   )r-   r&   r`   rc   r0   rd   )r-   r&   r`   rc   r0   r;   )r-   r&   r`   r)   r0   rd   )r-   r&   r`   ru   r0   r;   )r-   r&   r`   r   r0   r;   )r-   r&   r`   r   r0   r;   )r-   r&   r`   r   r0   r;   )r-   r&   r   r   r0   r   )r-   r&   r`   r   r0   r;   )r-   r&   r`   r   r0   r;   )r-   r&   r`   r   r0   rd   )r-   r&   r`   r   r0   r;   )r-   r&   r`   r   r0   r;   )r-   r&   r`   r   r0   r;   )r-   r&   r`   r   r0   r;   )r-   r&   r`   r   r0   r;   )r.   r  r0   r  )r   r   r-   r&   r  r[   r  r[   r  r[   r0   r;   )r  r    r-   r&   r0   rd   )r   r#   r-   r&   r  r[   r0   r;   )r-   r&   r0   r;   )r   r;   r)  r   r-   r&   r0   r*  )r   r.  r-   r&   r0   r;   )r  r   r0   r[   )T)r;  r<  r-   r&   r=  r[   r0   r  )rA  r*   r-   r&   r0   r;   )rH  r+   r-   r&   r0   r;   )F)r   r%   r-   r&   rJ  r[   r0   r;   )r   r$   r-   r&   r0   r;   )r   r%   r-   r&   r0   r;   r2   )r   r%   r-   r&   rd  r;   re  r;   rx   r  r0   rf  )r   r   r-   r&   rn  ro  r0   r  )r   r"   r-   r&   rn  ro  r0   r  )rw  r   rx  r  rn  r!   r0   r;   )r   r   rl   r  r0   rH   )r   r   r-   r&   rn  r!   r0   r  )r   r#   r-   r&   rn  ro  r0   r;   )r   r   r-   r&   rn  ro  r0   r  )r-   r&   r`   r  r0   r;   )
__future__r   ior   r?   typingr   r   r   r   r   r	   r
   r   
mako.pygenr   rh  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   r9   rD   rU   
Dispatcherdefault_renderersre   rN   rZ   rj   dispatch_forrt   CreateTableCommentOpr   DropTableCommentOpr   CreateTableOpr   DropTableOpr   r   CreateIndexOpr   DropIndexOpr   CreateUniqueConstraintOpr   CreateForeignKeyOpr   CreatePrimaryKeyOpr   CreateCheckConstraintOpr   DropConstraintOpr   AddColumnOpr   DropColumnOpr   AlterColumnOpr  r4   r   r   r   r   r%  r  r5   r-  r   r6  r   r>  r?  r   r]  rT  r\  rp  r   rv  r  r  r  r  r  ExecuteSQLOpr  branchr7   r7   r7   r8   <module>   s   











6

	
#


&






<
	

*




9

,	"
%

%

&	