
    ZeIit                    ~   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%m.Z. dd&l/m0Z0 dd'l/m1Z1 d(d)l2m3Z3 d(d*l4m5Z5 d(d+l6m7Z7 d(d,l6m8Z8 d(d-l9m:Z: d(d.l9m;Z; d(d/l3m<Z< d(d0l=m>Z> erld d1lm?Z? d d2lm@Z@ d d3lmAZA d d4lBmCZC d d5lDmEZE d d6lFmGZG d d7lHmIZI d d8lHmJZJ d d9lmKZK d d:lmLZL d d;lmMZM d d<lNmOZO d d=lNmPZP d d>lQmRZR dd?l%mSZS d(d@lTmUZU d(dAlVmWZW d(dBlXmYZY  ejZ        e[          Z\ G dC dDe1          Z] G dE dFe(          Z^ e>e.dG          didN            Z_ e>e^dG          djdO            Z` e>e)dG          dkdQ            Za e>e-dG          dldS            Zb e;jc        dT           e:jc        dTdU          e7jd        e                    dV           G dW dXe7jd                                                      Zfe5jg        h                    ef          dmd\            Zie5jj        h                    e          dnda            ZkdodbZldpdeZmdqdhZndS )r    )annotationsN)Any)cast)Dict)List)Optional)Sequence)Tuple)TYPE_CHECKING)Union)Column)Float)Identity)literal_column)Numeric)select)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dRdZd Zd Z	ddddddddddd
dS 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dUd0ZdVd4ZdWd8ZdXd<ZdYd?Z	 	 dZd[ fdDZd\dIZd]dKZd^dMZd_dOZd`dQZ xZS )aPostgresqlImpl
postgresqlTFLOATzDOUBLE PRECISIONindexr3   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   )selfrH   rI   rM   cols        [/var/www/html/MCyber-Diagnostic/venv/lib/python3.11/site-packages/alembic/ddl/postgresql.pycreate_indexzPostgresqlImpl.create_indexY   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)rW   
batch_implrQ   
constraints       rY   prep_table_for_batchz#PostgresqlImpl.prep_table_for_batche   sK    + 	1 	1J+Oz'CCC$$Z000	1 	1r[   c                   |j         r||j        j        u rdS |}||k    }|rdS d |||j        fv r| S |j        j        }t          |t                    rLt          |j        t          t          f          st          j        dd|          }d| d}t          |          }| j        }|J |                    t          t          |          |k                         S )NFz^'|'$ ')primary_keyrQ   _autoincrement_columnserver_defaultarg
isinstancestrtyper   r   resubr   
connectionscalarr   )	rW   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaultconn_col_defaultdefaults_equalmetadata_defaultconns	            rY   compare_server_defaultz%PostgresqlImpl.compare_server_defaultm   s'    '	?#8#NNN55)-FF 	5%*
 
 

 &%%*9=&,, 	@.3gu5EFF ;#%6(B8H#I#I #:'7#:#:#: -.>?? ;;>"2337GGHH
 
 
 	
r[   NF)
nullablerj   r_   type_schemaautoincrementexisting_typeexisting_server_defaultexisting_nullableexisting_autoincrement
table_namerm   column_namer|   Optional[bool]rj   /Optional[Union[_ServerDefault, Literal[False]]]r_   Optional[str]r}   Optional[TypeEngine]r~   r   r   r   Optional[_ServerDefault]r   r   c       
           |                     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|   rj   r_   r~   r   r   r   r   r   )popr*   CommandErrorrV   PostgresqlColumnTypesuperr   )rW   r   r   r|   rj   r_   r}   r~   r   r   r   r   r   rI   r   	__class__s                  rY   r   zPostgresqlImpl.alter_column   s    & )400#H   JJ$!"/,C&7	 	 	   		
 )''$;/#9	
 	
 	
 	
 	
 	
 	
r[   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defaultrn   znextval\('(.+?)'::regclass\)a9  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.oid=cast(:seqname as regclass)r   )seqnamer_   z^Detected sequence named '%s' as owned by integer column '%s(%s)', assuming SERIAL and omitting)rP   rl   r   r   ro   matchr0   _exec_on_inspectorr   groupfirstloginfor_   )rW   	inspectorrQ   column_info	seq_matchr   r   colnames           rY   autogen_column_reflectz%PostgresqlImpl.autogen_column_reflect   s3   ??9%% $	3*'6!2+
 +
 $	3 /Y1G I  3"5	;  &OOA..   %''    3'+$GW+f"555; $!J#   (	222I$	3 $	3 $	3 $	33 3"3 355r[   c                    d |D             }|D ]}|                     |           t          j        s|                     ||           d S d S )Nc                F    h | ]}|j                             d           |S )duplicates_constraint)r   rP   ).0rH   s     rY   	<setcomp>zAPostgresqlImpl.correct_for_autogen_constraints.<locals>.<setcomp>   s=     
 
 
z~~566

 
 
r[   )remover0   sqla_2_skip_functional_indexes)rW   conn_unique_constraintsconn_indexesmetadata_unique_constraintsmetadata_indexesdoubled_constraintsixs          rY   correct_for_autogen_constraintsz.PostgresqlImpl.correct_for_autogen_constraints   s~    
 
%
 
 
 & 	$ 	$B####! 	J))*:LIIIII	J 	Jr[   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"rf   rg   .z::z(::[\w ]+\w)r   ()r   z	cast\s*\(zas\s+[^)]+\) )lowerreplacerQ   r_   ro   rp   _default_modifiers_researchspancompiler   )rW   rH   r   rsr   startendcast_res           rY   _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$$r[   itemUnion[Index, UniqueConstraint]Tuple[Any, ...]c                >    |j                             d          rdS dS )Npostgresql_nulls_not_distinct)nulls_not_distinctrN   )dialect_kwargsrP   )rW   r   s     rY   _dialect_optionszPostgresqlImpl._dialect_options>  s)    
 ""#BCC 	+**rr[   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)rW   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                    rY   compare_indexeszPostgresqlImpl.compare_indexesG  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 	,#(...#)+++r[   metadata_constraintr4   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   )	rW   r   r   metadata_tupreflected_tupmeta_sigconn_sigmetadata_doconn_dos	            rY   compare_unique_constraintz(PostgresqlImpl.compare_unique_constraint  s    
 ;;
 
 == 
 
  ' (x#-6h66H66   ++L,>??''(;<<'!!#-8g88;88    %'''r[   reflected_optionsDict[str, Any]kindc                    |                     di                                           }|                     d          s|                    dd            |S )Ndialect_optionsrM   )rP   copyr   )rW   r   r   optionss       rY    adjust_reflected_dialect_optionsz/PostgresqlImpl.adjust_reflected_dialect_options  sU     $''(92>>CCEE{{/00 	4KK,d333r[   elementUnion[ClauseElement, str]c                x    t          |t                    r|S |                    | j        ddd          j        S )NTF)literal_bindsinclude_table)dialectcompile_kwargs)rl   rm   r   r  string)rW   r  s     rY   r   zPostgresqlImpl._compile_element  sI    gs## 	NL-1EJJ  
 
 	r[   r:   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  )rl   r   
self_groupr   render_ddl_sql_expr)rW   r   r  r  rI   r   s        rY   r  z"PostgresqlImpl.render_ddl_sql_expr  sb       	%Jt\:: 	%??$$D*uww*
$5
 
LN
 
 	
r[   r?   autogen_contextrA   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)rn   
__module__
startswithhasattr__visit_name__getattr)rW   r}   r  modmeths        rY   render_typezPostgresqlImpl.render_type  sv     5kk$~~>?? 	54*U-AABB 	04!2U5I!IJJD4///ur[   r7   c           	     V    t          t          t          j        ||dd                    S )N	text_typez(.+?\(.*text_type=)r   rm   r+   _render_type_w_subtyperW   r}   r  s      rY   _render_HSTORE_typez"PostgresqlImpl._render_HSTORE_type  s3     )5K 
 
 	
r[   r5   c           	     V    t          t          t          j        ||dd                    S )N	item_typez(.+?\()r  r   s      rY   _render_ARRAY_typez!PostgresqlImpl._render_ARRAY_type  s2     )Z 
 
 	
r[   r8   c           	     V    t          t          t          j        ||dd                    S Nastext_typez(.+?\(.*astext_type=)r  r   s      rY   _render_JSON_typez PostgresqlImpl._render_JSON_type  3     )7O 
 
 	
r[   r9   c           	     V    t          t          t          j        ||dd                    S r&  r  r   s      rY   _render_JSONB_typez!PostgresqlImpl._render_JSONB_type  r)  r[   )rH   r3   rI   r   rJ   rK   )r   rm   r   rm   r|   r   rj   r   r_   r   r}   r   r~   r   r   r   r   r   r   r   r   r   r   r   rI   r   rJ   rK   )rH   r3   r   rm   rJ   rm   )r   r   rJ   r   )r   r3   r   r3   rJ   r'   )r   r4   r   r4   rJ   r'   )r   r   r   rm   rJ   r   )r  r  rJ   rm   )FF)
r   r:   r  r  r  r  rI   r   rJ   rm   )r}   r?   r  rA   rJ   r  )r}   r7   r  rA   rJ   rm   )r}   r5   r  rA   rJ   rm   )r}   r8   r  rA   rJ   rm   )r}   r9   r  rA   rJ   rm   )__name__r  __qualname____dialect__transactional_ddlr(   type_synonymsrZ   rd   r{   r   r   r   ro   r   r   r   r   r   r   r  r   r  r  r!  r$  r(  r+  __classcell__r   s   @rY   rE   rE   R   sG       K-	$%1 M
- 
- 
- 
-1 1 1)
 )
 )
` $( "&* $(,.2<@,015!5
 5
 5
 5
 5
 5
 5
 5
n%3 %3 %3NJ J J> 	
'((
-..
9
())
)**       D   :, :, :, :,x( ( ( (8       #(	
 
 
 
 
 
 
.   
 
 
 

 
 
 

 
 
 

 
 
 
 
 
 
 
r[   rE   c                        e Zd Zd	 fdZ xZS )
r   r_   rm   r   r}   r?   rJ   rK   c                    |                     dd           } t                      j        ||fi | t          j        |          | _        || _        d S )Nr   )r   r   __init__rT   to_instancer}   r   )rW   r_   r   r}   rI   r   r   s         rY   r5  zPostgresqlColumnType.__init__  sV     w%%{11b111)%00



r[   )r_   rm   r   rm   r}   r?   rJ   rK   )r,  r  r-  r5  r1  r2  s   @rY   r   r     s=                 r[   r   rF   r  r&   compilerr6   rJ   rm   c                j    t          || j        | j                  dt          || j        d           S )Nz RENAME TO )r   r   r~   r#   new_table_namer  r7  rI   s      rY   visit_rename_tabler;    s=    
 	Hg0'.AAAA(G$:DAAA r[   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 %srf   )r   r   r~   r   r   r$   r}   r   r:  s      rY   visit_column_typer=    sq    
 	Hg0'.AAAAXw23333K'-88888&-m;
W]"";	 r[   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)r   r   comment)r@  sql_compilerrender_literal_valuerT   Stringformatr#   r   r~   r"   r   )r  r7  rI   ddlr@  s        rY   visit_column_commentrF    s     FC
 ?& 	22OX_..	
 	
 	
   ::$g('.
 
 'x1DEE    r[   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 ]O}|dk    r|d|j        rdndz  z  }|d|                    t          d	i |t          ||          i          z  z  }P|S )
Nr   zDROP IDENTITYzADD alwayszSET GENERATED %s ALWAYSz
BY DEFAULTzSET %s rN   )r   r   r~   r   r   r   r   visit_identity_columnimpl_compare_identity_defaultsortedrH  get_identity_optionsr   r  )r  r7  rI   r   diff_identityattrs           rY   rJ  rJ  3  sG   
 	Hg0'.AAAAXw23333D 		(	0..w??? \;;OW<
 

a ?4LL 	 	Dx+ (AHH\  	H$A$A??gh&=&=>??% %   r[   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._ConstraintNamer   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]rJ   rK   c                h    || _         || _        || _        || _        || _        || _        || _        d S r]   )rY  r   r\  r^  r~   r`  rI   )rW   rY  r   r\  r^  r~   r`  rI   s           rY   r5  z"CreateExcludeConstraintOp.__init__`  s;      /$ 
 0r[   rc   r   c                    t          j        |          } | |j        |j        d |j        D             t	          d|j                  |j        ||j        |j        |j	        	  	        S )Nc                    g | ]
\  }}}||fS rN   rN   )r   r   r_   ops       rY   
<listcomp>z=CreateExcludeConstraintOp.from_constraint.<locals>.<listcomp>}  s/       -tT2r
  r[   zColumnElement[bool] | None)r^  r~   r`  
deferrable	initiallyr   )
r0   _table_for_constraintr_   _render_exprsr   r^  r~   rg  rh  r   )clsrc   constraint_tables      rY   from_constraintz)CreateExcludeConstraintOp.from_constraintu  s     '<ZHHsO! 1;1I   3Z5EFF#*'!, *"
 
 
 	
r[   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-   SchemaObjectsrQ   r   r~   r   r\  rY  r^  rI   rj  rS   r   r   append_constraint)rW   rn  
schema_objtexclr   r_   opers           rY   to_constraintz'CreateExcludeConstraintOp.to_constraint  s      ,((,->??
T_T[AA ]%*
 
 g	
 
 		4 	4 
OOF4223333	D!!!r[   
operationsr/   rm   r   rI   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)rk  rx  rY  r   r\  rI   re  s          rY   rS  z3CreateExcludeConstraintOp.create_exclude_constraint  s4    V S*h=="==  $$$r[   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~   )rK  r~   r   r{  )rk  rx  rY  r\  rI   re  s         rY   rT  z9CreateExcludeConstraintOp.batch_create_exclude_constraint  sF    & "-8S*/"<hMM"MM  $$$r[   )NNN)rY  rZ  r   r[  r\  r]  r^  r_  r~   r   r`  ra  rJ   rK   )rc   r   rJ   rW  r]   )rn  ro  rJ   r   )rx  r/   rY  rm   r   rm   r\  r   rI   r   rJ   ry  )
rx  r.   rY  rm   r\  r   rI   r   rJ   ry  )r,  r  r-  __doc__constraint_typer5  classmethodrm  rw  rS  rT  rN   r[   rY   rW  rW  V  s         ;:O <@ $8<    * 
 
 
 [
& ?C    , +% +% +% [+%Z % % % [% % %r[   rW  r  rA   re  c                J    t          |                                | d          S )NT)alter)_exclude_constraintrw  )r  re  s     rY   _add_exclude_constraintr    s%     r//11?$OOOOr[   rc   r   namespace_metadatar=   c                \    t          j        d| |          }|dur|S t          | |d          S )NrX  F)r+   _user_defined_renderr  )rc   r  r  rendereds       rY   !_render_inline_exclude_constraintr    sA     *: H uz?EBBBr[   c                B    | j         }||                    d           dS )Nz*from sqlalchemy.dialects import postgresqlzpostgresql.)importsadd)r  r  s     rY   _postgresql_autogenerate_prefixr    s(    %G@AAA=r[   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 )Nrg  rh  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       rY   rf  zC_exclude_constraint.<locals>.do_expr_where_opts.<locals>.<listcomp>  s[     

 

 

 (xx )#    

 

 

r[   zwhere=%sc                "    g | ]\  }}|d |S )=rN   )r   kvs      rY   rf  zC_exclude_constraint.<locals>.do_expr_where_opts.<locals>.<listcomp>*  s'    777$!Q11%777r[   )rj  r^  r   r+   _render_potential_exprr   )argsr  rc   optss    rY   do_expr_where_optsz/_exclude_constraint.<locals>.do_expr_where_opts  s    

 

 

 

 ,6+C

 

 

 'KK/$o    	77$777888r[   z-%(prefix)screate_exclude_constraint(%(args)s)r  )prefixr  z%%(prefix)sExcludeConstraint(%(args)s))
_has_batchrg  r   rm   rh  r   rQ   r~   r+   _identr_   _render_gen_namereprr   _alembic_autogenerate_prefixjoinr  )rc   r  r  	has_batchr  r  r  s   ``    @rY   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:
 :
 
 	
r[   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_element)	rl   r   
is_literalr+   _sqlalchemy_autogenerate_prefixr_   r  r   r   )r  r  templates      rY   r  r  @  s     %&& 
 	4;HH3H<_MMJ
 
 
 	

 ,&uz?.KLL
 
 
 	
r[   )r  r&   r7  r6   rJ   rm   )r  r   r7  r6   rJ   rm   )r  r!   r7  r6   rJ   rm   )r  r%   r7  r6   )r  rA   re  rW  rJ   rm   )rc   r   r  rA   r  r=   rJ   rm   )r  rA   rJ   rm   )rc   r   r  rA   r  r  rJ   rm   )r  r  r  rA   rJ   rm   )o
__future__r   loggingro   typingr   r   r   r   r   r	   r
   r   r   
sqlalchemyr   r   r   r   r   r   r   r   rT   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&   rK  r'   r(   rf   r*   autogenerater+   rx  r,   r-   operations.baser.   r/   r0   util.sqla_compatr1   r2   r3   r4   $sqlalchemy.dialects.postgresql.arrayr5   #sqlalchemy.dialects.postgresql.baser6   %sqlalchemy.dialects.postgresql.hstorer7   #sqlalchemy.dialects.postgresql.jsonr8   r9   r:   r;   r<   sqlalchemy.sql.schemar=   r>   sqlalchemy.sql.type_apir?   r@   autogenerate.apirA   autogenerate.renderrB   runtime.migrationrC   	getLoggerr,  r   rE   r   r;  r=  rF  rJ  register_operationAddConstraintOpregister_add_constraintrW  	renderersdispatch_forr  _constraint_renderersr  r  r  r  rN   r[   rY   <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!!h
 h
 h
 h
 h
[ h
 h
 h
V    ;    
+|$$   %$ 

--   .- 
-&&   '&* 

..   /.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   <
 <
 <
 <
~
 
 
 
 
 
r[   