
    i{                    	   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<dd3Z=dd6Z>dd<Z? ej@                    xZAZBdd?ZCddCZDddDZEeBF                    ej8                  ddF            ZGeBF                    ejH                  ddH            ZIeBF                    ejJ                  ddJ            ZKeBF                    ejL                  ddL            ZMeBF                    ejN                  ddN            ZOddRZPeBF                    ejQ                  ddT            ZReBF                    ejS                  ddV            ZTeBF                    ejU                  ddX            ZVeBF                    ejW                  ddZ            ZXeBF                    ejY                  d[             ZZeBF                    ej[                  d\             Z\eBF                    ej]                  dd^            Z^eBF                    ej_                  dd`            Z`eBF                    eja                  ddb            ZbeBF                    ejc                  ddd            Zd G de df          ZeddiZfdjdkdkdlddsZgddvZhddzZid{ Zjdd|Zkdd}ZlddZmddZnddZo	 dddZpddZqddZr	 dddZsddZtddZu	 dddZv ej@                    ZwddZxewF                    ej,                  dd            ZyddZzddZ{ewF                    ej)                  dd            Z|ewF                    ej-                  dd            Z}ewF                    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)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                    t          |t                    rt          t          |           |          S t	          j        |          S N)
isinstancer   _f_name_alembic_autogenerate_prefixr   constraint_name_or_none)r.   r/   s     a/var/www/html/crypto-bot/backend/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    r9   _indentrG   D   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)
rN   zipupgrade_ops_listdowngrade_ops_listrG   _render_cmd_bodyupgrade_tokendowngrade_tokenjoinsorted)r.   rH   rI   rN   upgrade_opsdowngrade_opss         r9    _render_python_into_templatevarsrY   J   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)rZ   r.   bufprinter	has_linesoplineslines           r9   rR   rR   `   s     **CC  GG   I $ $/2..,e	 	$ 	$Dd####	$  "&!!!6777<<>>r;   re   ops.MigrateOperation	List[str]c                v    t                               |          }t          j         || |                    }|S r4   )	renderersdispatchr   to_list)r.   re   rendererrf   s       r9   r_   r_   {   s7     !!"%%HL/26677ELr;   c                H    d                     t          | |                    S )NrM   )rU   r_   r.   re   s     r9   render_op_textrq      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:rA   )	optsgetr   _within_batchappend
table_namer   r_   extend)r.   re   rt   rs   rf   t_opt_liness          r9   _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'r@   )prefixtnamecommentexistingr   indent)
_has_batchformatr7   rx   r   existing_commentr   r.   re   templs      r9   _render_create_table_commentr      s     ! 
 	 	 <<+O<<m%'Z%;rz!!* +++%'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   r@   )r   r   r   r   r   )r   r   r7   rx   r   r   r   s      r9   _render_drop_table_commentr      s     ! 
 	 	 <<+O<<m* +++%'Y%:v	!!    r;   ops.CreateTableOpc                8                                     }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  }|dz  }|S )Nc                    g | ]}||S  r   .0cols     r9   
<listcomp>z_add_table.<locals>.<listcomp>   s0          r;   c                0    g | ]}t          |          S r   )_render_column)r   r   r.   s     r9   r   z_add_table.<locals>.<listcomp>   s0     
 
 
58N300
 
 
r;   c                    g | ]}||S r4   r   )r   rconss     r9   r   z_add_table.<locals>.<listcomp>   s,     		
 		
 		
    !  r;   c                <    g | ]}t          |j                  S r   )_render_constraint_namespace_metadata)r   consr.   re   s     r9   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     r9   	<genexpr>z_add_table.<locals>.<genexpr>  s&      AAAVaZAAAAAAr;   z,
prefixes=[%s]z
))to_tablecolumnsrV   constraintslenMAX_PYTHON_ARGSrU   _identrx   r7   r   r   infokwreplace	_prefixes)
r.   re   tabler   args_strr<   r   r   kprefixess
   ``        r9   
_add_tabler      s   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--EMDKr;   ops.DropTableOpc                    dt          |           t          |j                  dz  }|j        r|dt          |j                  z  z  }|dz  }|S )Nz%(prefix)sdrop_table(%(tname)r)r   r   , schema=%r))r7   r   rx   r   )r.   re   r<   s      r9   _drop_tabler     sa    +.??&&/ / D 
y 2ry 1 111CKDKr;   itemr   	list[str]c                N      fd|j                                         D             S )Nc                @    g | ]\  }}| d t          |           S r   _render_potential_exprr   keyvalr.   s      r9   r   z0_render_dialect_kwargs_items.<locals>.<listcomp>)  sF       C ??'_==??  r;   )dialect_kwargsitems)r.   r   s   ` r9   _render_dialect_kwargs_itemsr   &  s=       +1133   r;   ops.CreateIndexOpc                   |                                 }| j        }|rd}nd}|j        J t          | |          }|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)r   Fr   rA   )r   r/   r   r   uniquer   kwargs)to_indexr   r   r   r7   r:   r/   r   rU   _get_index_rendered_expressionsr   r   r.   re   index	has_batchtmplrt   r<   s          r9   
_add_indexr   /  s   KKMME*I 	
+ 	5 	
 ;"""'??D.?? %*==())99+E?CC
 
 ,'%;=6%+*<#=#===,08$4((b  D Kr;   ops.DropIndexOpc           	     T   |                                 }| j        }|rd}nd}t          | |          }|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)r   rA   r   )r   r/   rx   r   r   )
r   r   r   r7   r:   
index_namer   rx   r   rU   r   s          r9   _drop_indexr   S  s    KKMME*I 
9= 	 (??D.?? "-@@R]++:<)KMF29$5$555,08$4((b  D Kr;   ops.CreateUniqueConstraintOpc                J    t          |                                | d          gS )NT)_uq_constraintto_constraintrp   s     r9   _add_unique_constraintr   k  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|           5dt          |           d                    |          d	z  S )
Nc                ,    g | ]}t          |          S r   r   r   s     r9   r   z&_add_fk_constraint.<locals>.<listcomp>}  s    777#&++777r;   c                ,    g | ]}t          |          S r   r   r   s     r9   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   z&%(prefix)screate_foreign_key(%(args)s)r   r   r   )reprr:   constraint_namer   rw   r   source_tablery   referent_table
local_colsremote_colsinsertr   r7   rU   )r.   re   r   r   r   values         r9   _add_fk_constraintr   r  sd    !/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3.??		$7 7  r;   c                    t                      r4   NotImplementedError
constraintr.   s     r9   _add_pk_constraintr         


r;   c                    t                      r4   r   r   s     r9   _add_check_constraintr     r   r;   ops.DropConstraintOpc                   t          |           }t          | |j                  }|j        rt	          |j                  nd }|j        rt	          |j                  nd }g }|                    t          |                     | j        sN|                    t          t	          |j	                                       ||                    d|           ||                    d|           | dd
                    |           dS )Nschema=type_=zdrop_constraint(r   r   )r7   r:   r   r   r   constraint_typerw   r   r   rx   rU   )r.   re   r   r/   r   type_params_strss          r9   _drop_constraintr    s    */::FOR-?@@D"$)5VBIF*,*<FF2%&&&$EKtDzz"""% 54r} 5 566777333444-E--...??dii&<&<????r;   ops.AddColumnOpc                    |j         |j        |j        }}}| j        rd}nd}|r|dz  }|dz  }|t	          |           |t          ||           |dz  }|S )Nz %(prefix)sadd_column(%(column)s)z*%(prefix)sadd_column(%(tname)r, %(column)s, schema=%(schema)rr   )r   r   columnr   )r   rx   r
  r   r7   r   )r.   re   r   r   r
  templater<   s          r9   _add_columnr    s    Ir}bi6EF! 5? 	.--HC.?? 99	  D Kr;   ops.DropColumnOpc                    |j         |j        |j        }}}| j        rd}nd}|r|dz  }|dz  }|t	          |           t          |          t          |          t          |          dz  }|S )Nz %(prefix)sdrop_column(%(cname)r)z*%(prefix)sdrop_column(%(tname)r, %(cname)rr	  r   )r   r   cnamer   )r   rx   column_namer   r7   r   )r.   re   r   r   r  r  r<   s          r9   _drop_columnr    s    !#BM2>;EF! 5? 	.--HC.??$$..	  D Kr;   ops.AlterColumnOpc                   |j         }|j        }|j        }|j        }|j        }|j        }|j                            dd           }|j        }	|j	        }
|j
        }|j        }|j        }d}| j        rd}nd}|t          |           ||dz  }|	|d|dt          |	|           z  }|durt!          ||           }|d|d	|z  }||d|d
t          ||           z  }||d|d|z  }|dur|d|d|z  }||d|d|z  }||
|d|d|
z  }||d|d|z  }|du r|rt!          ||           }|d|d|z  }|r| j        s|d|d|z  }|dz  }|S )Nautoincrementz           z %(prefix)salter_column(%(cname)rz+%(prefix)salter_column(%(tname)r, %(cname)r)r   r   r  r   zexisting_type=Fzserver_default=r  z	nullable=zcomment=zexisting_comment=zexisting_nullable=zautoincrement=zexisting_server_default=r  r   )rx   r  modify_server_defaultmodify_typemodify_nullablemodify_commentr   ru   existing_typeexisting_nullabler   existing_server_defaultr   r   r7   
_repr_type_render_server_default)r.   re   r   r  server_defaultr  nullabler   r  r  r  r   r  r   r   r  r<   rendereds                     r9   _alter_columnr!    sR    MENE-NNE!HGEIIot44M$M,* 8YFF! A5@.??  D
  FF}o666
 	
 U"")./JJFFFHH==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 )r6   r   r=   r/   r   r1   rK   c                "    || _         || _        d S r4   )r   r/   )selfr   r/   s      r9   __init__z_f_name.__init__  s    			r;   c                @    | j         dt          | j                  dS )Nzf(r   )r   r   r/   )r$  s    r9   __repr__z_f_name.__repr__"  s#     KKK	):):):):;;r;   N)r   r=   r/   r   r1   rK   )r1   r=   )__name__
__module____qualname__r%  r'  r   r;   r9   r6   r6     s<           < < < < < <r;   r6   !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)r5   r   r=   )r/   s    r9   r   r   &  sM     |	D+	&	& 4yy	D#		  r;   TF)wrap_in_textis_server_defaultis_indexr   r   r.  r`   r/  r0  c                   t          | t          j                  r<|rd}nd}|t          |          |j        j                            | ||          dz  S t          |           S )Nz%(prefix)stext(%(sql)r)z%(sql)r)r/  r0  )r   r   )r5   r   ClauseElement_sqlalchemy_autogenerate_prefixmigration_contextimplrender_ddl_sql_exprr   )r   r.   r.  r/  r0  r  s         r9   r   r   6  s     %*++  	!0HH H5oFF"49MM):X N  
 
 
 	
 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 )r/   NT)r0  )r5   	sa_schemar   r   r   getattrr   )r   expr.   s     r9   r   z3_get_index_rendered_expressions.<locals>.<listcomp>R  sq         c9+,,	IVGC..//000#C4HHH  r;   )expressions)r7  r.   s    `r9   r   r   O  s2        ?	   r;   r   r$   alterc                l   g }|j         }| j        r)|                    dt          | j                  f           | j        r)|                    dt          | j                  f           |s<|r:| j        j        r.|                    dt          | j        j                  f           |s1| j        r*|                    dt          || j                  f           t          ||           }|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   r/   c                6    g | ]}t          |j                  S r   )r   r/   r   s     r9   r   z"_uq_constraint.<locals>.<listcomp>s  s"    IIIs&**IIIr;   c                "    g | ]\  }}|d |S r   r   r   r   vs      r9   r   z"_uq_constraint.<locals>.<listcomp>t  '    777$!Q11%777r;   z,%(prefix)screate_unique_constraint(%(args)s)r   r   c                P    g | ]#}t          t          |j                            $S r   )r   r   r/   r   s     r9   r   z"_uq_constraint.<locals>.<listcomp>{  s*    EEE3VCH%%&&EEEr;   c                "    g | ]\  }}|d |S r   r   rB  s      r9   r   z"_uq_constraint.<locals>.<listcomp>|  rD  r;   z$%(prefix)sUniqueConstraint(%(args)s))r   r   rw   r=   r   r   r   r   r/   r:   r   r   r   ry   r7   rU   r3  )r   r.   r>  rt   r   dialect_optionsr   s          r9   r   r   Z  sX   
 #%D*I @\3z'<#=#=>??? >[#j&:";";<=== A A:#3#: AXvj&6&=>>?@@@ 
Z_ 
%ozGGH	
 	
 	
 3?JOOO 
%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.)rt   r)  )r.   targetr   s      r9   _user_autogenerate_prefixrK    s(    !"67F~v(((r;   c                     | j         d         pdS )Nsqlalchemy_module_prefixrA   rt   r.   s    r9   r3  r3    s     :;ArAr;   c                2    | j         rdS | j        d         pdS )Nz	batch_op.alembic_module_prefixrA   )r   rt   rO  s    r9   r7   r7     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_itemFrN  )r  rR  r.   renderr   s        r9   _user_defined_renderrW    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t          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     r9   r   z"_render_column.<locals>.<listcomp>  s    4443s88444r;   rA   c                "    g | ]\  }}|d |S r   r   r   kwnamer   s      r9   r   z"_render_column.<locals>.<listcomp>  '    AAA[VSFFFCC(AAAr;   c                @    g | ]\  }}|d t          |          S r   r   r   s      r9   r   z"_render_column.<locals>.<listcomp>  sI        !S ss23HHHJ  r;   )r   r/   typer   r   )rW  r  r  *_should_render_server_default_positionallyrw   r  r   AUTOINCREMENT_DEFAULTr  rZ  r   r3  r   r/   r  rb  rU   _column_kwargsr   )r
  r.   r   r   rt   r   s    `    r9   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    %0$>v$F$F$L$L$N$N   I I  r;   r  c                R    t          j        |           pt          j        |           S r4   )r   _server_default_is_computed_server_default_is_identity)r  s    r9   rc  rc    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                    r%|r#t          t          j        dd|                     } t	          t          |           S )	Nr  Fr+   r,   T)r/  z^'|'$rA   )rW  r   rg  _render_computedr   rh  _render_identityr5   r:  DefaultClauser\  r=   r   r   rB   rE   )ri  r.   rk  r   s       r9   r  r    s    $$4gOOHu.w77 
Z 9 9?KKK		0	9	9 Z 9 9?KKK	GY4	5	5 gk3'' 	kGG)_    '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r.  	persistedz(%(prefix)sComputed(%(text)s, %(kwargs)s)r   c              3      K   | ]	}d |z  V  
dS z%s=%sNr   r   pairs     r9   r   z#_render_computed.<locals>.<genexpr>  &      GGWt^GGGGGGr;   )r   r<   r   )r   sqltextrs  r3  rU   r   )rp  r.   r<   r   s       r9   rm  rm    s     "/  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 ru  r   rv  s     r9   r   z#_render_identity.<locals>.<genexpr>  rx  r;   )r   r   )r   _get_identity_options_dictr3  rU   r   )rz  r.   r   s      r9   rn  rn    sj     3  F ,1/BB99GGGGGGG/ /  r;   r&   _skip_variantsc                   t          d| |          }|dur|S t          |j        d          r!|j        j                            | |          }nd }t          |           j        }|j        }|                    d          rSt          j
        d|          }|J |                    d          }||                    d|z             |r|S |d| S |r|S |s$t          j        |           rt          | |          S |                    d	          rUd
| j        z  t#                      v r(t#                      d
| j        z           }	 |	| |          S t%          |          }
|
| S t'          ||           }
|
| S )Nrb  Fr5  sqlalchemy.dialectssqlalchemy\.dialects\.(\w+)   z"from sqlalchemy.dialects import %s.zsqlalchemy.z_render_%s_type)rW  hasattrr4  r5  render_typerb  r)  rN   
startswithrB   r   groupaddr   _type_has_variants_render_Variant_type__visit_name__globalsr3  rK  )r  r.   r~  r   impl_rtmodrN   r   dnamefnr   s              r9   r  r    s   
 $FE?CCHu0&99 !38DD?
 
 
u++
 C%G
~~+,, (7==   AKK<uDEEE 	,N#eeUU++	 ( ( >u E E (#E?;;;		&	& 	(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     r9   _render_ARRAY_typer  I  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  rV   )r  r.   	base_typevariant_mappingbasedialecttyps          r9   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   r;  rB   rE   r  rb  r)  r  r   r  r3  )r  r.   r  r  r   
outer_repr
inner_type
inner_reprsub_type
outer_typer  r   r  s                r9   r  r  a  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_renderersrl   
ValueErrorr   warn)r   r.   r  rn   s       r9   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_keyFr/   z(%(prefix)sPrimaryKeyConstraint(%(args)s)r   c                6    g | ]}t          |j                  S r   )r   r/   )r   cs     r9   r   z'_render_primary_key.<locals>.<listcomp>  s     666aT!&\\666r;   c                "    g | ]\  }}|d |S r   r   r^  s      r9   r   z'_render_primary_key.<locals>.<listcomp>  s'    ???;63&&&##&???r;   r   )rW  r   r/   rw   r   r:   r3  rU   r   r.   r  r   rt   s        r9   _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_schemar"   c                   |                                  }|                    d          }|dd         \  }}|t          |          dk    r|d|}nd                    |dd                   }| j        sW| j        P| j        j        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   rU   link_to_nameparentr   tablesr  ru   r   r/   )	r  r  r  colspectokensr   colnametable_fullnamer   s	            r9   _fk_colspecr    s     ooG]]3FBCC[NE7"s6{{a'7'7$3OOUU;&2,// O+I!IO' /666$+N;=AA'JJC **'1GNr;   r    rt   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   rw   r   r   r   r   r   r   )r   rt   s     r9   _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        dt          |          d                    d | j	        D                       d                    fd| j	        D                       d                    d |D                       d	z  S )
Nforeign_keyFr/   zC%(prefix)sForeignKeyConstraint([%(cols)s], [%(refcols)s], %(args)s)r   c              3  b   K   | ]*}t          t          |j        j                            V  +d S r4   )r   r   r  r/   )r   fs     r9   r   z&_render_foreign_key.<locals>.<genexpr>  sG        01VAHM**++     r;   c              3  T   K   | ]"}t          t          |                    V  #d S r4   )r   r  )r   r  apply_metadata_schemar  s     r9   r   z&_render_foreign_key.<locals>.<genexpr>   sM       ! ! [$9;MNNOO! ! ! ! ! !r;   c                "    g | ]\  }}|d |S r   r   r^  s      r9   r   z'_render_foreign_key.<locals>.<listcomp>  r`  r;   )r   colsrefcolsr   )
rW  r/   rw   r   r:   r  r   r3  rU   elements)r   r.   r  r   rt   r  s     `  @r9   _render_foreign_keyr    s?    $M:OOHuD 
T*?JOLLMMN	
 	
 	
 Z....5	# 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)rW  r   )r   r.   r  r   s       r9   _render_unique_constraintr    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checkFrJ  r/   z.%(prefix)sCheckConstraint(%(sqltext)s%(opts)s)r   c              3  *   K   | ]\  }}|d |V  dS )r   Nr   rB  s      r9   r   z+_render_check_constraint.<locals>.<genexpr>6  s1      !D!Dtq!QQQ"2!D!D!D!D!D!Dr;   rA   rr  )r   rt   ry  )rW  _create_ruler  r5   rJ  sqltypesr&   r/   rw   r   r:   r3  rU   r   ry  r  s        r9   _render_check_constraintr    s#    $GZIIHu 	J+X66 #*
 
 tD 
T*?JOLLMMN	
 	
 	
 <1/BB		!D!Dt!D!D!DDDEE)e
 
 
? ?  r;   ops.ExecuteSQLOpc                h    t          |j        t                    st          d          d|j        z  S )NznAutogenerate rendering of SQL Expression language constructs not supported here; please use a plain SQL stringzop.execute(%r))r5   ry  r=   r   rp   s     r9   _execute_sqlr  ?  s=    bj#&& 
!@
 
 	
 bj((r;   )r.   r'   r/   r0   r1   r2   )r<   r=   r1   r=   )r.   r'   rH   r)   rI   rJ   r1   rK   )rZ   r[   r.   r'   r1   r=   )r.   r'   re   rh   r1   ri   )r.   r'   re   rh   r1   r=   )r.   r'   re   r*   r1   ri   )r.   r'   re   r}   r1   r=   )r.   r'   re   r   r1   r=   )r.   r'   re   r   r1   r=   )r.   r'   re   r   r1   r=   )r.   r'   r   r   r1   r   )r.   r'   re   r   r1   r=   )r.   r'   re   r   r1   r=   )r.   r'   re   r   r1   ri   )r.   r'   re   r   r1   r=   )r.   r'   re   r   r1   r=   )r.   r'   re   r  r1   r=   )r.   r'   re   r  r1   r=   )r.   r'   re   r  r1   r=   )r/   r+  r1   r,  )r   r   r.   r'   r.  r`   r/  r`   r0  r`   r1   r=   )r7  r!   r.   r'   r1   ri   )r   r$   r.   r'   r>  r`   r1   r=   )r.   r'   r1   r=   )r  r=   rR  r   r.   r'   r1   rS  )r
  rX  r.   r'   r1   r=   )r  r   r1   r`   )T)ri  rj  r.   r'   rk  r`   r1   r,  )rp  r+   r.   r'   r1   r=   )rz  r,   r.   r'   r1   r=   )F)r  r&   r.   r'   r~  r`   r1   r=   )r  r%   r.   r'   r1   r=   )r  r&   r.   r'   r1   r=   r4   )r  r&   r.   r'   r  r=   r  r=   r   r,  r1   r  )r   r   r.   r'   r  r  r1   r,  )r   r#   r.   r'   r  r  r1   r,  )r  r   r  r,  r  r"   r1   r=   )r   r    rt   r  r1   rK   )r   r    r.   r'   r  r"   r1   r,  )r   r$   r.   r'   r  r  r1   r=   )r   r   r.   r'   r  r  r1   r,  )r.   r'   re   r  r1   r=   )
__future__r   ior   rB   typingr   r   r   r   r	   r
   r   r   
mako.pygenr   r  r   r:  r   r   r  sqlalchemy.sql.elementsr   r   rA   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   r:   rG   rY   
Dispatcherdefault_renderersrk   rR   r_   rq   dispatch_forr|   CreateTableCommentOpr   DropTableCommentOpr   CreateTableOpr   DropTableOpr   r   CreateIndexOpr   DropIndexOpr   CreateUniqueConstraintOpr   CreateForeignKeyOpr   CreatePrimaryKeyOpr   CreateCheckConstraintOpr   DropConstraintOpr  AddColumnOpr  DropColumnOpr  AlterColumnOpr!  r6   r   r   r   r   rK  r3  r7   rW  r   rc  r  rm  rn  r  r  r  r  r  r   r  r  r  r  r  r  ExecuteSQLOpr  branchr   r;   r9   <module>r     s	   # " " " " "       				                                                       $ $ $ $ $ $ * * * * * *       ( ( ( ( ( ( ( ( ( ( ( ( / / / / / /                   2111111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111111111111 9 9 9 9   : : : :& !0 1 1 1 I   6   5 5 5 5 *++   ,+8 011   21> .//   0/8 )**3 3 3 +*3l ((   )(    )**      +* F ((   )(. 455G G G 65G .//# # # 0/#L .//    0/  344    54  ,--@ @ @ .-@( ((   )($ ())   *)( )**9 9 9 +*9x< < < < < < < <   ( #     2   '
 '
 '
 '
T  B B B BC C C C	 	 	 	6 6 6 6rA A A A     :   "
 
 
 
  !)( )( )( )( )(X      ( !    D ()) I I I I ##I$BCC   DC4" " " "J7 7 7 7" ##I$BCC" " " DC"J ##I$>??	> 	> 	> @?	> ##I$=>># # # ?>#L ())) ) ) *)) $$&&			r;   