o
    h%                     @  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 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&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<dd4d5Z=dd8d9Z>dd?d@Z?e@  ZAZBddCdDZCddHdIZDddJdKZEeBFej;ddMdNZGeBFejHddPdQZIeBFejJddSdTZKeBFejLddVdWZMeBFejNddYdZZOdd^d_ZPeBFejQddadbZReBFejSddddeZTeBFejUddgdhZVeBFejWddjdkZXeBFejYdldm ZZeBFej[dndo Z\eBFej]ddqdrZ^eBFej_ddtduZ`eBFejaddwdxZbeBFejcddzd{ZdG d|d} d}ZedddZfdddddddZgdddZhdddZidd ZjdddZkdddZldddZmdddZndddZo	ddddZpdddZqd dd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j0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)Label)quoted_name   )util)ops)sqla_compat)Literal)Computed)Identity)DialectKWArgs)ColumnElement)
TextClause)CheckConstraint)Column)
Constraint)FetchedValue)
ForeignKey)ForeignKeyConstraint)Index)MetaData)PrimaryKeyConstraint)UniqueConstraint)ARRAY)
TypeEngine)AutogenContext)Config)MigrationScript)ModifyTableOps   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/    r8   o/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/alembic/autogenerate/render.py_render_gen_name;   s   

r:   textstrc                 C  s4   t dt jd|  } t dt jd| } | S )N^    z +$ )recompileMsubstrip)r;   r8   r8   r9   _indentE   s   rE   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)
rK   zipupgrade_ops_listdowngrade_ops_listrE   _render_cmd_bodyupgrade_tokendowngrade_tokenjoinsorted)r.   rF   rG   rK   upgrade_opsdowngrade_opsr8   r8   r9    _render_python_into_templatevarsK   s   
rV   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)rW   r.   bufprinter	has_linesoplinesliner8   r8   r9   rO   a   s    



rO   ra   ops.MigrateOperation	List[str]c                 C  s   t |}t|| |}|S r3   )	renderersdispatchr   to_list)r.   ra   rendererrb   r8   r8   r9   r[   |   s   
r[   c                 C  s   d t| |S )NrJ   )rR   r[   r.   ra   r8   r8   r9   render_op_text   s   rk   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   r[   extend)r.   ra   rm   rl   rb   t_opt_linesr8   r8   r9   _render_modify_table   s0   






ru   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formatr6   rq   r{   existing_commentr   r.   ra   templr8   r8   r9   _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}
)rw   rx   r>   )ry   rz   r|   r   r}   )r~   r   r6   rq   r   r   r   r8   r8   r9   _render_drop_table_comment   s"   

r   ops.CreateTableOpc           
        sV    }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 }jd ur|dtj 7 }|d7 }|S )Nc                 S  s   g | ]}|r|qS r8   r8   .0colr8   r8   r9   
<listcomp>   s    z_add_table.<locals>.<listcomp>c                   s   g | ]}t | qS r8   )_render_columnr   r.   r8   r9   r      s    
c                 S  s   g | ]}|d ur|qS r3   r8   )r   rconsr8   r8   r9   r      s
    c                   s   g | ]	}t | jqS r8   )_render_constraint_namespace_metadata)r   consrj   r8   r9   r      s    z*[z,
]z.%(prefix)screate_table(%(tablename)r,
%(args)s)	tablenamery   argsz,
schema=%rz,
comment=%rz,
info=z,
%s=%r _, c                 s      | ]}d | V  qdS )rx   Nr8   )r   pr8   r8   r9   	<genexpr>      z_add_table.<locals>.<genexpr>z,
prefixes=[%s]z,
if_not_exists=%rz
))to_tablecolumnsrS   constraintslenMAX_PYTHON_ARGSrR   _identrq   r6   r   r{   infokwreplace	_prefixesif_not_existsr\   )
r.   ra   tabler   args_strr;   r{   r   kprefixesr8   rj   r9   
_add_table   sN   

 
r   ops.DropTableOpc                 C  sX   dt | t|jd }|jr|dt|j 7 }|jd ur&|dt|j 7 }|d7 }|S )Nz%(prefix)sdrop_table(%(tname)r)ry   rz   , schema=%rz, if_exists=%r))r6   r   rq   r   	if_existsr\   )r.   ra   r;   r8   r8   r9   _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   r8   r9   r   5  s    z0_render_dialect_kwargs_items.<locals>.<listcomp>)dialect_kwargsitems)r.   r   r8   r   r9   _render_dialect_kwargs_items2  s   
r   ops.CreateIndexOpc                 C  s   |  }| j}|rd}nd}|jd usJ t| |}|jd ur)|dt|j  |t| t| |j	t
|jj	dt|| |jpBd|jjrNdt
|jj nd|rXd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)zif_not_exists=%rr   Fr   r?   )ry   r/   r   r   uniquer   kwargs)to_indexr~   r   r   r   rp   r\   r6   r:   r/   r   rR   _get_index_rendered_expressionsr   r   r.   ra   index	has_batchtmplrm   r;   r8   r8   r9   
_add_index;  s2   



r   ops.DropIndexOpc              	   C  s   |  }| j}|rd}nd}t| |}|jd ur"|dt|j  |t| t| |jt	|j
|jr9dt	|j nd|rCd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)zif_exists=%rr   r?   r   )ry   r/   rq   r   r   )r   r~   r   r   rp   r\   r6   r:   
index_namer   rq   r   rR   r   r8   r8   r9   _drop_indexc  s"   


r   ops.CreateUniqueConstraintOpc                 C  s   t | | dgS )NT)_uq_constraintto_constraintrj   r8   r8   r9   _add_unique_constraint}  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 r8   r   r   r8   r8   r9   r         z&_add_fk_constraint.<locals>.<listcomp>c                 S  r   r8   r   r   r8   r8   r9   r     r   )referent_schemaonupdateondelete	initially
deferrable	use_altermatchr   source_schema%s=%rz&%(prefix)screate_foreign_key(%(args)s)r   ry   r   )reprr:   constraint_namer~   rp   r   source_tablerr   referent_table
local_colsremote_colsinsertr   r6   rR   )r.   ra   r   r   r   valuer8   r8   r9   _add_fk_constraint  s,   	

r   c                 C     t  r3   NotImplementedError
constraintr.   r8   r8   r9   _add_pk_constraint     r   c                 C  r   r3   r   r   r8   r8   r9   _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   )r6   r:   r   r   r   constraint_typerp   r   r~   rq   rR   )r.   ra   ry   r/   r   type_params_strsr8   r8   r9   _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   )ry   rz   columnr   )r   rq   r   r~   r6   r   )r.   ra   r   rz   r   templater;   r8   r8   r9   _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   )ry   rz   cnamer   )r   rq   column_namer~   r6   r   )r.   ra   r   rz   r   r   r;   r8   r8   r9   _drop_column  s   r   ops.AlterColumnOpc                 C  s  |j }|j}|j}|j}|j}|j}|j}|jdd }	|j	}
|j
}|j}|j}|j}d}| jr3d}nd}|t| ||d }|
d urN|d|t|
| f 7 }|dur_t|| }|d||f 7 }|d urk|d	||f 7 }|d urz|d
|t|| f 7 }|d ur|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)ry   rz   r   z,
%sexisting_type=%sFz,
%sserver_default=%sz,
%snew_column_name=%rz,
%stype_=%sz,
%snullable=%rz,
%scomment=%rz,
%sexisting_comment=%rz,
%sexisting_nullable=%rz,
%sautoincrement=%rz,
%sexisting_server_default=%sz,
%sschema=%rr   )rq   r   modify_server_defaultmodify_typemodify_nullablemodify_commentmodify_namer   rn   existing_typeexisting_nullabler   existing_server_defaultr   r~   r6   
_repr_type_render_server_default)r.   ra   rz   r   server_defaultr   nullabler{   newnamer   r   r  r   r  r   r}   r   r;   renderedr8   r8   r9   _alter_column  sj   

r	  c                   @  s    e Zd ZdddZdd	d
ZdS )r5   ry   r<   r/   r   r1   rI   c                 C  s   || _ || _d S r3   )ry   r/   )selfry   r/   r8   r8   r9   __init__3  s   
z_f_name.__init__c                 C  s   d| j t| jf S )Nz%sf(%r))ry   r   r/   )r
  r8   r8   r9   __repr__7  s   z_f_name.__repr__N)ry   r<   r/   r   r1   rI   )r1   r<   )__name__
__module____qualname__r  r  r8   r8   r8   r9   r5   2  s    
r5   !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)r4   r   r<   )r/   r8   r8   r9   r   ;  s   

r   TF)wrap_in_elementis_server_defaultis_indexr   r   r  r\   r  r  c          	      C  s   t | tjrC|jjj| ||d}|r?t|}|rdnd}| | d|d}|r=t | tr=t| j	t
u r=|d| j	d S |S t|S t| S )N)r  r  literal_columnr;   (r   z.label()r4   r   ClauseElementmigration_contextimplrender_ddl_sql_expr_sqlalchemy_autogenerate_prefixr   typer/   r<   r   )	r   r.   r  r  r  sql_textry   element	value_strr8   r8   r9   r   K  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  )r4   	sa_schemar   r   r   getattrr   )r   expr   r8   r9   r   l  s    
z3_get_index_rendered_expressions.<locals>.<listcomp>)expressions)r   r.   r8   r   r9   r   i  s   
r   r   r&   alterc                 C  sL  g }|j }| jr|d| jf | jr|d| jf |s.|r.| jjr.|dt| jjf |s>| jr>|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 r8   )r   r/   r   r8   r8   r9   r         z"_uq_constraint.<locals>.<listcomp>c                 S     g | ]
\}}d ||f qS r   r8   r   r   vr8   r8   r9   r         z,%(prefix)screate_unique_constraint(%(args)s)r   r   c                 S  s   g | ]	}t t|jqS r8   )r   r   r/   r   r8   r8   r9   r     s    c                 S  r(  r)  r8   r*  r8   r8   r9   r     r,  z$%(prefix)sUniqueConstraint(%(args)s))r~   r   rp   r   r   r   r   r/   r:   r   r   r   rr   r6   rR   r  )r   r.   r%  rm   r   dialect_optionsr   r8   r8   r9   r   v  s>   



r   c                 C  s    | j d }|d u rd|j S |S )Nuser_module_prefixz%s.)rm   r  )r.   targetry   r8   r8   r9   _user_autogenerate_prefix  s   

r0  c                 C  s   | j d pdS )Nsqlalchemy_module_prefixr?   rm   r   r8   r8   r9   r    s   r  c                 C  s   | j rdS | jd pdS )Nz	batch_op.alembic_module_prefixr?   )r~   rm   r   r8   r8   r9   r6     s   r6   r   object_Union[str, Literal[False]]c                 C  s4   d|j v r|j d }|r|| ||}|dur|S dS )Nrender_itemFr2  )r   r4  r.   renderr  r8   r8   r9   _user_defined_render  s   

r8  r   Column[Any]c                   s6  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| j D  d S )Nr   Fr  r   r  systemr{   rw   z8%(prefix)sColumn(%(name)r, %(type)s, %(args)s%(kwargs)s)r   c                 S  r   r8   )r<   )r   argr8   r8   r9   r     r   z"_render_column.<locals>.<listcomp>r?   c                 S  r(  %s=%sr8   r   kwnamer   r8   r8   r9   r     r,  c                   s"   g | ]\}}d |t | f qS r<  r   r   r   r8   r9   r     s    )ry   r/   r  r   r   )r8  r  r  *_should_render_server_default_positionallyrp   r   r   AUTOINCREMENT_DEFAULTr  r:  r{   r  r   r/   r  r  rR   r   r   )r   r.   r  r   rm   r{   r8   r   r9   r     sL   



r   r  c                 C  s   t | p	t | S r3   )r   _server_default_is_computed_server_default_is_identity)r  r8   r8   r9   r@    s
   r@  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?   )r8  r   rB  _render_computedr   rC  _render_identityr4   r!  DefaultClauser;  r<   r   r   r@   rC   )rD  r.   rF  r  r8   r8   r9   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   r=  Nr8   r   pairr8   r8   r9   r   (  r   z#_render_computed.<locals>.<genexpr>)ry   r;   r   )r   sqltextrL  r  rR   r   )rJ  r.   r;   r   r8   r8   r9   rG    s   

rG  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   rM  r8   rN  r8   r8   r9   r   5  r   z#_render_identity.<locals>.<genexpr>)ry   r   )r   _get_identity_options_dictr  rR   r   )rQ  r.   r   r8   r8   r9   rH  ,  s   rH  r(   _skip_variantsc                 C  s  t d| |}|dur|S t|jdr|jj| |}nd }t| j}|j}|s1t	| r1t
| |S |dr\td|}|d usBJ |d}|d urR|d|  |rV|S d|| f S |r`|S |d	rd
| j t v rzt d
| j  }	|	| |S t|}
d|
| f S t|| }
d|
| f S )Nr  Fr  sqlalchemy.dialectssqlalchemy\.dialects\.(\w+)   z"from sqlalchemy.dialects import %sz%s.%rzsqlalchemy.z_render_%s_typez%s%r)r8  hasattrr  r  render_typer  r  rK   r   _type_has_variants_render_Variant_type
startswithr@   r   groupadd__visit_name__globalsr  r0  )r   r.   rS  r  impl_rtmodrK   r   dnamefnry   r8   r8   r9   r  9  s>   






r  r'   c                 C  s   t tt| |ddS )N	item_typez(.+?\())r   r<   _render_type_w_subtype)r   r.   r8   r8   r9   _render_ARRAY_typef  s   rf  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)rS  Fz.with_variant(%s, %r))r   _get_variant_mappingr  rS   )r   r.   	base_typevariant_mappingbasedialecttypr8   r8   r9   rZ  o  s   
rZ  attrnameregexpry   $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%srT  rU  rV  %s.%s
sqlalchemy)r   r"  r@   rC   r  r  r  r[  r   r\  r  )r   r.   rm  rn  ry   
outer_repr
inner_type
inner_reprsub_type
outer_typera  r   rb  r8   r8   r9   re  ~  s(   



re  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_renderersrg   
ValueErrorr   warn)r   r.   rw  ri   r8   r8   r9   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&  r8   )r   r/   )r   cr8   r8   r9   r     r'  z'_render_primary_key.<locals>.<listcomp>c                 S  r(  r<  r8   r>  r8   r8   r9   r     r,  r   )r8  r   r/   rp   r   r:   r  rR   r   r.   rw  r  rm   r8   r8   r9   _render_primary_key  s$   r  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   rp  r   )_get_colspecsplitr   rR   link_to_nameparentr   tablesr}  rn   r   r/   )	r  r  rw  colspectokensrz   colnametable_fullnamer   r8   r8   r9   _fk_colspec  s    	



r  r"   rm   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   rp   r   r   r   r   r   r   )r   rm   r8   r8   r9   _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 r3   )r   r   r  r/   r   fr8   r8   r9   r     s    
z&_render_foreign_key.<locals>.<genexpr>c                 3  s     | ]}t t| V  qd S r3   )r   r  r  apply_metadata_schemarw  r8   r9   r     s
    
c                 S  r(  r<  r8   r>  r8   r8   r9   r   "  r,  z'_render_foreign_key.<locals>.<listcomp>)ry   colsrefcolsr   )
r8  r/   rp   r   r:   r  r   r  rR   elementsr~  r8   r  r9   _render_foreign_key  s0   

r  c                 C  s$   t d| |}|dur|S t| |dS )Nr   F)r8  r   )r   r.   rw  r  r8   r8   r9   _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 rM  r8   r*  r8   r8   r9   r   T  s    z+_render_check_constraint.<locals>.<genexpr>r?   rK  )ry   rm   rP  )r8  _create_rulerW  r4   r/  sqltypesr(   r/   rp   r   r:   r  rR   r   rP  r~  r8   r8   r9   _render_check_constraint5  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))r4   rP  r<   r   rj   r8   r8   r9   _execute_sql^  s
   
r  )r.   r)   r/   r0   r1   r2   )r;   r<   r1   r<   )r.   r)   rF   r+   rG   rH   r1   rI   )rW   rX   r.   r)   r1   r<   )r.   r)   ra   rd   r1   re   )r.   r)   ra   rd   r1   r<   )r.   r)   ra   r,   r1   re   )r.   r)   ra   rv   r1   r<   )r.   r)   ra   r   r1   r<   )r.   r)   ra   r   r1   r<   )r.   r)   ra   r   r1   r<   )r.   r)   r   r   r1   r   )r.   r)   ra   r   r1   r<   )r.   r)   ra   r   r1   r<   )r.   r)   ra   r   r1   re   )r.   r)   ra   r   r1   r<   )r.   r)   ra   r   r1   r<   )r.   r)   ra   r   r1   r<   )r.   r)   ra   r   r1   r<   )r.   r)   ra   r   r1   r<   )r/   r  r1   r  )r   r   r.   r)   r  r\   r  r\   r  r\   r1   r<   )r   r#   r.   r)   r1   re   )r   r&   r.   r)   r%  r\   r1   r<   )r.   r)   r1   r<   )r   r<   r4  r   r.   r)   r1   r5  )r   r9  r.   r)   r1   r<   )r  r   r1   r\   )T)rD  rE  r.   r)   rF  r\   r1   r  )rJ  r   r.   r)   r1   r<   )rQ  r   r.   r)   r1   r<   )F)r   r(   r.   r)   rS  r\   r1   r<   )r   r'   r.   r)   r1   r<   )r   r(   r.   r)   r1   r<   r3   )r   r(   r.   r)   rm  r<   rn  r<   ry   r  r1   ro  )r   r   r.   r)   rw  rx  r1   r  )r   r%   r.   r)   rw  rx  r1   r  )r  r!   r  r  rw  r$   r1   r<   )r   r"   rm   r  r1   rI   )r   r"   r.   r)   rw  r$   r1   r  )r   r&   r.   r)   rw  rx  r1   r<   )r   r   r.   r)   rw  rx  r1   r  )r.   r)   ra   r  r1   r<   )
__future__r   ior   r@   typingr   r   r   r   r   r	   r
   r   
mako.pygenr   rq  r   r!  r   r   r  sqlalchemy.sql.elementsr   r   r   r?   r   
operationsr   r   r   r   r   sqlalchemy.sql.baser   r   r   sqlalchemy.sql.schemar   r   r   r    r!   r"   r#   r$   r%   r&   sqlalchemy.sql.sqltypesr'   sqlalchemy.sql.type_apir(   alembic.autogenerate.apir)   alembic.configr*   alembic.operations.opsr+   r,   r   r:   rE   rV   
Dispatcherdefault_renderersrf   rO   r[   rk   dispatch_forru   CreateTableCommentOpr   DropTableCommentOpr   CreateTableOpr   DropTableOpr   r   CreateIndexOpr   DropIndexOpr   CreateUniqueConstraintOpr   CreateForeignKeyOpr   CreatePrimaryKeyOpr   CreateCheckConstraintOpr   DropConstraintOpr   AddColumnOpr   DropColumnOpr   AlterColumnOpr	  r5   r   r   r   r   r0  r  r6   r8  r   r@  r  rG  rH  r  rf  rZ  re  ry  r   r  r  r  r  r  r  ExecuteSQLOpr  branchr8   r8   r8   r9   <module>   s   









!

9

	
'


&






?
	

*




9
-	"
%

%

(	