
    it                    Z   d dl mZ d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ 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)l3m5Z5 d%d*l6m7Z7 d%d+l6m8Z8 d%d,l0m9Z9 d%d-l:m;Z; erld d.lm<Z< d d/lm=Z= d d0lm>Z> d d1l?m@Z@ d d2lAmBZB d d3lCmDZD d d4lEmFZF d d5lEmGZG d d6lmHZH d d7lmIZI d d8lmJZJ d d9lKmLZL d d:lKmMZM d d;lNmOZO dd<l"mPZP d%d=lQmRZR d%d>lSmTZT d%d?lUmVZV  ejW        eX          ZY G d@ dAe.          ZZ G dB dCe%          Z[ e;e+dD          dfdK            Z\ e;e[dD          dgdL            Z] e;e&dD          dhdN            Z^ e;e*dD          didP            Z_ e8j`        dQ           e7j`        dQdR          e4ja        b                    dS           G dT dUe4ja                                                      Zce2jd        e                    ec          djdY            Zfe2jg        e                    e          dkd^            Zhdld_ZidmdbZjdndeZkdS )o    )annotationsN)Any)cast)Dict)List)Optional)Sequence)Tuple)TYPE_CHECKING)Union)Column)literal_column)Numeric)text)types)BIGINT)ExcludeConstraint)INTEGER)CreateIndex)ColumnClause)
TextClause)FunctionElement)NULLTYPE   )alter_column)alter_table)AlterColumn)ColumnComment)format_column_name)format_table_name)format_type)IdentityColumnDefault)RenameTable)ComparisonResult)DefaultImpl   )util)render)ops)	schemaobj)BatchOperations)
Operations)sqla_compat)compiles)Literal)Index)UniqueConstraint)ARRAY)PGDDLCompiler)HSTORE)JSON)JSONB)ClauseElement)ColumnElement)quoted_name)MetaData)Table)
TypeEngine)_ServerDefault)AutogenContext)_f_name)MigrationContextc                  |    e Zd ZdZdZej        ddhfz   ZdQdZd Zd Z		 	 	 	 	 	 	 	 	 	 dRdS fd"Z
d# Zd$ Z ej        d%           ej        d&           ej        d'           ej        d(           ej        d)          fZdTd+ZdUd/ZdVd3ZdWd7ZdXd;ZdYd>Z	 	 dZd[ fdCZd\dHZd]dJZd^dLZd_dNZd`dPZ xZS )aPostgresqlImpl
postgresqlTFLOATzDOUBLE PRECISIONindexr0   kwr   returnNonec                
   |j                             dd           pd}|D ]B}||j        j        vr2|j                            t          |t          j                             C|                     t          |fi |           d S )Npostgresql_include )
kwargsgettablecappend_columnr   sqltypesNullType_execr   )selfrE   rF   rJ   cols        \/var/www/html/crypto-bot/backend/venv/lib/python3.11/site-packages/alembic/ddl/postgresql.pycreate_indexzPostgresqlImpl.create_indexU   s     #\--.BDIIOR% 	 	C%+-''))3 122   	

;u++++,,,,,    c                n    |j         D ],}|j        #|j        |j        v r|                     |           -d S N)constraintsnamenamed_constraintsdrop_constraint)rT   
batch_implrN   
constraints       rV   prep_table_for_batchz#PostgresqlImpl.prep_table_for_batcha   sK    + 	1 	1J+Oz'CCC$$Z000	1 	1rX   c                   |j         r||j        j        u rdS |}||k    }|rdS d |||j        fv r| S |j        j        }t          |t                    rEt          |j        t                    st          j
        dd|          }d| d}t          |          }| j        }|J |                    t          j        t          |          |k                         S )NFz^'|'$ ')primary_keyrN   _autoincrement_columnserver_defaultarg
isinstancestrtyper   resubr   
connectionscalarr-   _select)	rT   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaultconn_col_defaultdefaults_equalmetadata_defaultconns	            rV   compare_server_defaultz%PostgresqlImpl.compare_server_defaulti   s*    '	?#8#NNN55)-FF 	5%*
 
 

 &%%*9=&,, 	@.3W== ;#%6(B8H#I#I #:'7#:#:#: -.>?? ;;/004DD 
 
 
 	
rX   NF
table_namerj   column_namenullableOptional[bool]rg   %Union[_ServerDefault, Literal[False]]r\   Optional[str]type_Optional[TypeEngine]schemaautoincrementexisting_typeexisting_server_defaultOptional[_ServerDefault]existing_nullableexisting_autoincrementc                   |                     dd           }||t          j        d          |*|                     t	          ||||||	|
|                      t                      j        ||f||||||	|
||d	| d S )Npostgresql_usingz6postgresql_using must be used with the type_ parameter)r   usingr   r   r   )	r|   rg   r\   r   r   r   r   r   r   )popr'   CommandErrorrS   PostgresqlColumnTypesuperr   )rT   rz   r{   r|   rg   r\   r   r   r   r   r   r   r   rF   r   	__class__s                  rV   r   zPostgresqlImpl.alter_column   s      )400#H   JJ$!"/,C&7	 	 	   		
 )''$;/#9	
 	
 	
 	
 	
 	
 	
rX   c                   |                     d          rt          |d         t          t          f          rt	          j        d|d                   }|rt          j        |t          d          |	                    d                    
                                }|r>|\  }}||d         k    r/t                              d||j        |           |d= d S d S d S d S d S d S )	Ndefaultrk   znextval\('(.+?)'::regclass\)a+  select c.relname, a.attname from pg_class as c join pg_depend d on d.objid=c.oid and d.classid='pg_class'::regclass and d.refclassid='pg_class'::regclass join pg_class t on t.oid=d.refobjid join pg_attribute a on a.attrelid=t.oid and a.attnum=d.refobjsubid where c.relkind='S' and c.relname=:seqnamer   )seqnamer\   z^Detected sequence named '%s' as owned by integer column '%s(%s)', assuming SERIAL and omitting)rM   ri   r   r   rl   matchr-   _exec_on_inspectorr   groupfirstloginfor\   )rT   	inspectorrN   column_info	seq_matchr   r   colnames           rV   autogen_column_reflectz%PostgresqlImpl.autogen_column_reflect   s4   ??9%% #	3*'6!2+
 +
 #	3 /Y1G I  3"5E
 
 &OOA..   %''   3'+$GW+f"555; $!J#   (	222G#	3 #	3 #	3 #	33 3 3 355rX   c                    d |D             }|D ]}|                     |           t          j        s|                     ||           d S d S )Nc                F    h | ]}|j                             d           |S )duplicates_constraint)r   rM   ).0rE   s     rV   	<setcomp>zAPostgresqlImpl.correct_for_autogen_constraints.<locals>.<setcomp>   s=     
 
 
z~~566

 
 
rX   )remover-   sqla_2_skip_functional_indexes)rT   conn_unique_constraintsconn_indexesmetadata_unique_constraintsmetadata_indexesdoubled_constraintsixs          rV   correct_for_autogen_constraintsz.PostgresqlImpl.correct_for_autogen_constraints   s~    
 
%
 
 
 & 	$ 	$B####! 	J))*:LIIIII	J 	JrX   z( asc nulls last)$z(?<! desc)( nulls last)$z( asc)$z( asc) nulls first$z desc( nulls first)$exprc                   |                                                     dd                              dd          }|j        5|                    |j        j                                          dd          }d|v rt	          j        dd|          }|r<|d         dk    r0|d	         d
k    r$|dd	         }|r|d         dk    r|d	         d
k    $| j        D ]H}|                    |          x}r/|                    d          \  }}|d |         ||d          z   } nI|r<|d         dk    r0|d	         d
k    r$|dd	         }|r|d         dk    r|d	         d
k    $t	          j	        d          }|
                    |          r,|                    d|          }t	          j        dd|          }|                    dd          }|S )N"rc   rd   .z::z(::[\w ]+\w)r   ()r   z	cast\s*\(zas\s+[^)]+\) )lowerreplacerN   r\   rl   rm   _default_modifiers_researchspancompiler   )rT   rE   r   rsr   startendcast_res           rV   _cleanup_index_exprz"PostgresqlImpl._cleanup_index_expr  s   zz||##C,,44S"==;"<<5;#3#9#9#;#; > > >CCD4<<6/2t44D 	tAw#~~$r(c//":D  	tAw#~~$r(c//
 , 	 	B		$'u "ZZ]]
sFUF|d344j0
  	tAw#~~$r(c//":D  	tAw#~~$r(c// *\**== 	5;;r4((D6/2t44D||C$$rX   itemUnion[Index, UniqueConstraint]Tuple[Any, ...]c                >    |j                             d          rdS dS )Npostgresql_nulls_not_distinct)nulls_not_distinctrK   )dialect_kwargsrM   )rT   r   s     rV   _dialect_optionszPostgresqlImpl._dialect_options8  s)    
 ""#BCC 	+**rrX   metadata_indexreflected_indexr$   c           
        g }|                      ||          }|r|                    |           |j        }|j        }t          |          t          |          k    r5|                    dt          |           dt          |                      |rt	          j        |          S g }t          t          ||          d          D ]\  }\  }	}
|                     |	          }| 	                    ||          }|                     |
          }| 	                    ||          }||k    re|
                                                    d          rHd|v sd|v r@|                    d| d|d           t          j        d	| d|d
|j        d           |                    d| d|d|           |                     |          }|                     |          }||k    r|                    d| d|            |rt	          j        |          S |rt	          j        |          S t	          j                    S )Nzexpression number  to r   _opsr   r   zexpression #z' detected as including operator clause.zExpression #z
 in index a   detected to include an operator clause. Expression compare cannot proceed. Please move the operator clause to the ``postgresql_ops`` dict to enable proper compare of the index expressions: https://docs.sqlalchemy.org/en/latest/dialects/postgresql.html#operator-classeszoptions )_compare_index_uniqueappendexpressionslenr$   	Different	enumeratezip_compile_elementr   stripendswithr'   warnr\   r   extendSkipEqual)rT   r   r   msg
unique_msgm_exprsr_exprsskipposm_er_e	m_compilem_text	r_compiler_text	m_options	r_optionss                    rV   compare_indexeszPostgresqlImpl.compare_indexesA  s   
 //O
 

  	#JJz""" ,!-w<<3w<<''JJLCLLLLc'llLLMMM 	3#-c222(Wg)>)>BB 	P 	POC#s--c22I--niHHF--c22I--niHHF""++F33 Py  C9$4$443 4 4 4 4 4   	f3 f f f f&+f f f    

N#NN	NNNNOOOO)).99	))/::		!!JJ<)<<<<=== 	,#-c222 	,#(...#)+++rX   metadata_constraintr1   reflected_constraintc                   |                      |          }|                     |          }|j        }|j        }||k    rt          j        d| d|           S |                     |j                  }|                     |j                  }||k    rt          j        d| d|           S t          j                    S )Nzexpression r   )_create_metadata_constraint_sig _create_reflected_constraint_sigunnamedr$   r   r   constr   )	rT   r   r   metadata_tupreflected_tupmeta_sigconn_sigmetadata_doconn_dos	            rV   compare_unique_constraintz(PostgresqlImpl.compare_unique_constraint}  s    
 ;;
 
 == 
 
  ' (x#-6h66H66   ++L,>??''(;<<'!!#-8g88;88    %'''rX   reflected_optionsDict[str, Any]kindc                    |                     di                                           }|                     d          s|                    dd            |S )Ndialect_optionsrJ   )rM   copyr   )rT   r   r   optionss       rV    adjust_reflected_dialect_optionsz/PostgresqlImpl.adjust_reflected_dialect_options  sU     $''(92>>CCEE{{/00 	4KK,d333rX   elementUnion[ClauseElement, str]c                x    t          |t                    r|S |                    | j        ddd          j        S )NTF)literal_bindsinclude_table)dialectcompile_kwargs)ri   rj   r   r  string)rT   r  s     rV   r   zPostgresqlImpl._compile_element  sI    gs## 	NL-1EJJ  
 
 	rX   r7   is_server_defaultboolis_indexc                    |r)t          |t                    s|                                } t                      j        |f||d|S )zdRender a SQL expression that is typically a server default,
        index expression, etc.

        )r	  r  )ri   r   
self_groupr   render_ddl_sql_expr)rT   r   r	  r  rF   r   s        rV   r  z"PostgresqlImpl.render_ddl_sql_expr  sb       	%Jt\:: 	%??$$D*uww*
$5
 
LN
 
 	
rX   r<   autogen_contextr>   Union[str, Literal[False]]c                    t          |          j        }|                    d          sdS t          | d|j        z            r$t          | d|j        z            } |||          S dS )Nzsqlalchemy.dialects.postgresqlFz_render_%s_type)rk   
__module__
startswithhasattr__visit_name__getattr)rT   r   r  modmeths        rV   render_typezPostgresqlImpl.render_type  sv     5kk$~~>?? 	54*U-AABB 	04!2U5I!IJJD4///urX   r4   c           	     V    t          t          t          j        ||dd                    S )N	text_typez(.+?\(.*text_type=)r   rj   r(   _render_type_w_subtyperT   r   r  s      rV   _render_HSTORE_typez"PostgresqlImpl._render_HSTORE_type  s3     )5K 
 
 	
rX   r2   c           	     V    t          t          t          j        ||dd                    S )N	item_typez(.+?\()r  r  s      rV   _render_ARRAY_typez!PostgresqlImpl._render_ARRAY_type  s2     )Z 
 
 	
rX   r5   c           	     V    t          t          t          j        ||dd                    S Nastext_typez(.+?\(.*astext_type=)r  r  s      rV   _render_JSON_typez PostgresqlImpl._render_JSON_type  3     )7O 
 
 	
rX   r6   c           	     V    t          t          t          j        ||dd                    S r$  r  r  s      rV   _render_JSONB_typez!PostgresqlImpl._render_JSONB_type  r'  rX   )rE   r0   rF   r   rG   rH   )
NFNNNNNNNN)rz   rj   r{   rj   r|   r}   rg   r~   r\   r   r   r   r   r   r   r}   r   r   r   r   r   r}   r   r}   rF   r   rG   rH   )rE   r0   r   rj   rG   rj   )r   r   rG   r   )r   r0   r   r0   rG   r$   )r   r1   r   r1   rG   r$   )r   r   r   rj   rG   r   )r  r  rG   rj   )FF)
r   r7   r	  r
  r  r
  rF   r   rG   rj   )r   r<   r  r>   rG   r  )r   r4   r  r>   rG   rj   )r   r2   r  r>   rG   rj   )r   r5   r  r>   rG   rj   )r   r6   r  r>   rG   rj   )__name__r  __qualname____dialect__transactional_ddlr%   type_synonymsrW   ra   ry   r   r   r   rl   r   r   r   r   r   r   r   r   r  r  r  r"  r&  r)  __classcell__r   s   @rV   rB   rB   N   s@       K-	$%1 M
- 
- 
- 
-1 1 1+
 +
 +
b $(@E"&* $(,.2<@,0152
 2
 2
 2
 2
 2
 2
h$3 $3 $3LJ J J> 	
'((
-..
9
())
)**       D   :, :, :, :,x( ( ( (8       #(	
 
 
 
 
 
 
.   
 
 
 

 
 
 

 
 
 

 
 
 
 
 
 
 
rX   rB   c                        e Zd Zd	 fdZ xZS )
r   r\   rj   r{   r   r<   rG   rH   c                    |                     dd           } t                      j        ||fi | t          j        |          | _        || _        d S )Nr   )r   r   __init__rQ   to_instancer   r   )rT   r\   r{   r   rF   r   r   s         rV   r3  zPostgresqlColumnType.__init__  sV     w%%{11b111)%00



rX   )r\   rj   r{   rj   r   r<   rG   rH   )r*  r  r+  r3  r/  r0  s   @rV   r   r     s=                 rX   r   rC   r  r#   compilerr3   rG   rj   c                j    t          || j        | j                  dt          || j        d           S )Nz RENAME TO )r   rz   r   r    new_table_namer  r5  rF   s      rV   visit_rename_tabler9    s=    
 	Hg0'.AAAA(G$:DAAA rX   c           	         t          || j        | j                  dt          || j                  ddt          || j                  z  d| j        r
d| j        z  ndS )Nr   zTYPE %szUSING %src   )r   rz   r   r   r{   r!   r   r   r8  s      rV   visit_column_typer;    sq    
 	Hg0'.AAAAXw23333K'-88888&-m;
W]"";	 rX   r   c                   d}| j         1|j                            | j         t          j                              nd}|                    t          || j        | j                  t          || j
                  |          S )Nz9COMMENT ON COLUMN {table_name}.{column_name} IS {comment}NULL)rz   r{   comment)r>  sql_compilerrender_literal_valuerQ   Stringformatr    rz   r   r   r{   )r  r5  rF   ddlr>  s        rV   visit_column_commentrD    s     FC
 ?& 	22OX_..	
 	
 	
   ::$g('.
 
 'x1DEE    rX   r"   c                   t          || j        | j                  dt          || j                  d}| j        |dz  }|S | j        $|dz  }||                    | j                  z  }|S | j        	                    | j        | j                  \  }}}| j        }t          |          D ]T}|dk    r|d|j        rdndz  z  }|d|                    t          j        d	i |t          ||          i          z  z  }U|S )
Nr   zDROP IDENTITYzADD alwayszSET GENERATED %s ALWAYSz
BY DEFAULTzSET %s rK   )r   rz   r   r   r{   r   r   visit_identity_columnimpl_compare_identity_defaultsortedrF  get_identity_optionsr-   Identityr  )r  r5  rF   r   diff_identityattrs           rV   rH  rH  -  sJ   
 	Hg0'.AAAAXw23333D 		(	0..w??? \;;OW<
 

a ?4LL 	 	Dx+ (AHH\  	H$A$A(KKD'(D2I2I+JKK% %   rX   create_exclude_constraintbatch_create_exclude_constraintexclude_constraintc                  z    e Zd ZdZdZ	 	 	 d"d#dZed$d            Z	 d%d&dZed'd            Z	ed(d!            Z
dS ))CreateExcludeConstraintOpz0Represent a create exclude constraint operation.excludeNconstraint_namesqla_compat._ConstraintNamerz   Union[str, quoted_name]elementsIUnion[Sequence[Tuple[str, str]], Sequence[Tuple[ColumnClause[Any], str]]]where)Optional[Union[ColumnElement[bool], str]]r   r   _orig_constraintOptional[ExcludeConstraint]rG   rH   c                h    || _         || _        || _        || _        || _        || _        || _        d S rZ   )rX  rz   r[  r]  r   r_  rF   )rT   rX  rz   r[  r]  r   r_  rF   s           rV   r3  z"CreateExcludeConstraintOp.__init__Z  s;      /$ 
 0rX   r`   r   c                    t          j        |          } | |j        |j        d |j        D             t	          d|j                  |j        ||j        |j        |j	        	  	        S )Nc                    g | ]
\  }}}||fS rK   rK   )r   r   r\   ops       rV   
<listcomp>z=CreateExcludeConstraintOp.from_constraint.<locals>.<listcomp>w  s/       -tT2r
  rX   zColumnElement[bool] | None)r]  r   r_  
deferrable	initiallyr   )
r-   _table_for_constraintr\   _render_exprsr   r]  r   rf  rg  r   )clsr`   constraint_tables      rV   from_constraintz)CreateExcludeConstraintOp.from_constrainto  s     '<ZHHsO! 1;1I   3Z5EFF#*'!, *"
 
 
 	
rX   migration_contextOptional[MigrationContext]c                h   | j         | j         S t          j        |          }|                    | j        | j                  }t          | j        | j        | j	        d| j
        }|j        D ].\  }}}|                    t          |t                               /|                    |           |S )N)r   )r\   r]  )r_  r*   SchemaObjectsrN   rz   r   r   r[  rX  r]  rF   ri  rP   r   r   append_constraint)rT   rm  
schema_objtexclr   r\   opers           rV   to_constraintz'CreateExcludeConstraintOp.to_constraint  s      ,((,->??
T_T[AA ]%*
 
 g	
 
 		4 	4 
OOF4223333	D!!!rX   
operationsr,   rj   r   rF   Optional[Table]c                B     | |||fi |}|                     |          S )a  Issue an alter to create an EXCLUDE constraint using the
        current migration context.

        .. note::  This method is Postgresql specific, and additionally
           requires at least SQLAlchemy 1.0.

        e.g.::

            from alembic import op

            op.create_exclude_constraint(
                "user_excl",
                "user",
                ("period", "&&"),
                ("group", "="),
                where=("group != 'some group'"),
            )

        Note that the expressions work the same way as that of
        the ``ExcludeConstraint`` object itself; if plain strings are
        passed, quoting rules must be applied manually.

        :param name: Name of the constraint.
        :param table_name: String name of the source table.
        :param elements: exclude conditions.
        :param where: SQL expression or SQL string with optional WHERE
         clause.
        :param deferrable: optional bool. If set, emit DEFERRABLE or
         NOT DEFERRABLE when issuing DDL for this constraint.
        :param initially: optional string. If set, emit INITIALLY <value>
         when issuing DDL for this constraint.
        :param schema: Optional schema name to operate within.

        )invoke)rj  rw  rX  rz   r[  rF   rd  s          rV   rR  z3CreateExcludeConstraintOp.create_exclude_constraint  s4    V S*h=="==  $$$rX   r+   c                t    |j         j        |d<    | ||j         j        |fi |}|                    |          S )a3  Issue a "create exclude constraint" instruction using the
        current batch migration context.

        .. note::  This method is Postgresql specific, and additionally
           requires at least SQLAlchemy 1.0.

        .. seealso::

            :meth:`.Operations.create_exclude_constraint`

        r   )rI  r   rz   rz  )rj  rw  rX  r[  rF   rd  s         rV   rS  z9CreateExcludeConstraintOp.batch_create_exclude_constraint  sF    & "-8S*/"<hMM"MM  $$$rX   )NNN)rX  rY  rz   rZ  r[  r\  r]  r^  r   r   r_  r`  rG   rH   )r`   r   rG   rV  rZ   )rm  rn  rG   r   )rw  r,   rX  rj   rz   rj   r[  r   rF   r   rG   rx  )
rw  r+   rX  rj   r[  r   rF   r   rG   rx  )r*  r  r+  __doc__constraint_typer3  classmethodrl  rv  rR  rS  rK   rX   rV   rV  rV  P  s         ;:O <@ $8<    * 
 
 
 [
& ?C    , +% +% +% [+%Z % % % [% % %rX   rV  r  r>   rd  c                J    t          |                                | d          S )NT)alter)_exclude_constraintrv  )r  rd  s     rV   _add_exclude_constraintr    s%     r//11?$OOOOrX   r`   r   namespace_metadatar:   c                \    t          j        d| |          }|dur|S t          | |d          S )NrW  F)r(   _user_defined_renderr  )r`   r  r  rendereds       rV   !_render_inline_exclude_constraintr    sA     *: H uz?EBBBrX   c                B    | j         }||                    d           dS )Nz*from sqlalchemy.dialects import postgresqlzpostgresql.)importsadd)r  r  s     rV   _postgresql_autogenerate_prefixr    s(    %G@AAA=rX   r  r
  c                    g j         } j        r)                    dt           j                  f            j        r)                    dt           j                  f            j        r)                    dt           j                  f           |sA|r? j        j        r3                    dt          j	         j        j                  f           |s6 j
        r/                    dt          j         j
                  f            fd}|rt          t          j         j
                            g}|s/|t          t          j	         j        j
                            gz  }|                     |                       dt          j                  d                    |          d	z  S  |            }d
t!                    d                    |          d	z  S )Nrf  rg  r   r   r\   c                     fdj         D             } j        0|                     dt          j        j                  z             |                     d D                        | S )Nc                F    g | ]\  }}}d t          |          d|dS )r   , r   )_render_potential_column)r   sqltextr\   opstringr  s       rV   re  zC_exclude_constraint.<locals>.do_expr_where_opts.<locals>.<listcomp>  s[     

 

 

 (xx )#    

 

 

rX   zwhere=%sc                "    g | ]\  }}|d |S )=rK   )r   kvs      rV   re  zC_exclude_constraint.<locals>.do_expr_where_opts.<locals>.<listcomp>$  s'    777$!Q11%777rX   )ri  r]  r   r(   _render_potential_exprr   )argsr  r`   optss    rV   do_expr_where_optsz/_exclude_constraint.<locals>.do_expr_where_opts  s    

 

 

 

 ,6+C

 

 

 'KK/$o    	77$777888rX   z-%(prefix)screate_exclude_constraint(%(args)s)r  )prefixr  z%%(prefix)sExcludeConstraint(%(args)s))
_has_batchrf  r   rj   rg  r   rN   r   r(   _identr\   _render_gen_namereprr   _alembic_autogenerate_prefixjoinr  )r`   r  r  	has_batchr  r  r  s   ``    @rV   r  r    s/   
 FHD*I @\3z'<#=#=>??? >[#j&:";";<=== 6Wc*"2334555 H H:#3#: HXv}Z-=-DEEFGGG 
Z_ 
V,_joNNO	
 	
 	
      ,  
(*/JJKK
  	AT&-
(8(=>>??@@D&&(()))>9/JJIIdOOB
 B
 
 	

 "!##65oFFIIdOO:
 :
 
 	
rX   valueGUnion[ColumnClause[Any], Column[Any], TextClause, FunctionElement[Any]]c           	         t          | t                    r+| j        rd}nd}|t          j        |          | j        dz  S t          j        | |t          | t          t          f                    S )Nz"%(prefix)sliteral_column(%(name)r)z%(prefix)scolumn(%(name)r))r  r\   )wrap_in_text)	ri   r   
is_literalr(   _sqlalchemy_autogenerate_prefixr\   r  r   r   )r  r  templates      rV   r  r  :  s     %&& 
 	4;HH3H<_MMJ
 
 
 	

 ,#EJ+HII
 
 
 	
rX   )r  r#   r5  r3   rG   rj   )r  r   r5  r3   rG   rj   )r  r   r5  r3   rG   rj   )r  r"   r5  r3   )r  r>   rd  rV  rG   rj   )r`   r   r  r>   r  r:   rG   rj   )r  r>   rG   rj   )r`   r   r  r>   r  r
  rG   rj   )r  r  r  r>   rG   rj   )l
__future__r   loggingrl   typingr   r   r   r   r   r	   r
   r   r   
sqlalchemyr   r   r   r   r   rQ   sqlalchemy.dialects.postgresqlr   r   r   sqlalchemy.schemar   sqlalchemy.sql.elementsr   r   sqlalchemy.sql.functionsr   sqlalchemy.typesr   baser   r   r   r   r   r    r!   r"   r#   rI  r$   r%   rc   r'   autogenerater(   rw  r)   r*   operations.baser+   r,   r-   util.sqla_compatr.   r/   r0   r1   $sqlalchemy.dialects.postgresql.arrayr2   #sqlalchemy.dialects.postgresql.baser3   %sqlalchemy.dialects.postgresql.hstorer4   #sqlalchemy.dialects.postgresql.jsonr5   r6   r7   r8   r9   sqlalchemy.sql.schemar:   r;   sqlalchemy.sql.type_apir<   r=   autogenerate.apir>   autogenerate.renderr?   runtime.migrationr@   	getLoggerr*  r   rB   r   r9  r;  rD  rH  register_operationAddConstraintOpregister_add_constraintrV  	renderersdispatch_forr  _constraint_renderersr  r  r  r  rK   rX   rV   <module>r     s   # " " " " "  				                                                                   % % % % % %             ( ( ( ( ( ( 1 1 1 1 1 1 < < < < < < 2 2 2 2 2 2 ) ) ) ) ) ) 0 0 0 0 0 0 . . . . . . 4 4 4 4 4 4 % % % % % %                         $ $ $ $ $ $ # # # # # #       ' ' ' ' ' '       " " " " " "             ! ! ! ! ! !       " " " " " " - - - - - - ( ( ( ( ( (       ' ' ' ' ' ' 5      ++++++::::::AAAAAA<<<<<<888888999999555555555555333333......++++++222222$$$$$$111111------444444 g!!f
 f
 f
 f
 f
[ f
 f
 f
R    ;    
+|$$   %$ 

--   .- 
-&&   '&* 

..   /.D :;;##!B  ,,-ABBF% F% F% F% F% 3 F% F% CB  <;
F%R 899P P P :9P **+<==C C C >=C   <
 <
 <
 <
~
 
 
 
 
 
rX   