
    Eht                       S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SK!J"r"  S SK#J$r$  SSK%J&r&  SSK%J'r'  SSK%J(r(  SS K%J)r)  SS!K%J*r*  SS"K%J+r+  SS#K%J,r,  SS$K%J-r-  SS%K%J.r.  SS&K/J0r0  SS'K/J1r1  S(S)K2J3r3  S(S*K4J5r5  S(S+K6J7r7  S(S,K6J8r8  S(S-K9J:r:  S(S.K9J;r;  S(S/K3J<r<  S(S0K=J>r>  \(       al  S S1KJ?r?  S S2KJ@r@  S S3KJArA  S S4KBJCrC  S S5KDJErE  S S6KFJGrG  S S7KHJIrI  S S8KHJJrJ  S S9KJKrK  S S:KJLrL  S S;KJMrM  S S<KNJOrO  S S=KNJPrP  S S>KQJRrR  SS?K%JSrS  S(S@KTJUrU  S(SAKVJWrW  S(SBKXJYrY  \R                  " \[5      r\ " SC SD\15      r] " SE SF\(5      r^\>" \.SG5            SVSH j5       r_\>" \^SG5            SWSI j5       r`\>" \)SG5            SXSJ j5       ra\>" \-SG5          SYSK j5       rb\;R                  " SL5      \:R                  " SLSM5      \7R                  R                  SN5       " SO SP\7R                  5      5       5       5       rf\5R                  R                  \f5            SZSQ j5       ri\5R                  R                  \5              S[SR j5       rkS\SS jrl        S]ST jrm      S^SU jrng)_    )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                  x  ^  \ rS rSrSrSr\R                  SS14-   rS!S jrS r	S r
S	S
S	S	S	S	S	S	S	S	S.
                           S"U 4S jjjrS rS r\R                  " S5      \R                  " S5      \R                  " S5      \R                  " S5      \R                  " S5      4rS#S jr    S$S jr      S%S jr      S&S jr      S'S jrS(S jr  S)         S*U 4S jjjr      S+S jr      S,S jr      S-S jr      S.S jr      S/S jrS rU =r$ )0PostgresqlImplR   
postgresqlTFLOATzDOUBLE PRECISIONc                2   UR                   R                  SS 5      =(       d    SnU HQ  nXAR                  R                  ;  d  M  UR                  R	                  [        U[        R                  5      5        MS     U R                  [        U40 UD65        g )Npostgresql_include )
kwargsgettablecappend_columnr   sqltypesNullType_execr   )selfindexkwrJ   cols        Y/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/alembic/ddl/postgresql.pycreate_indexPostgresqlImpl.create_indexY   ss     #\\--.BDIOR%C++--'))3 1 12 &
 	

;u++,    c                    UR                    H?  nUR                  c  M  UR                  UR                  ;   d  M.  U R                  U5        MA     g N)constraintsnamenamed_constraintsdrop_constraint)rT   
batch_implrN   
constraints       rX   prep_table_for_batch#PostgresqlImpl.prep_table_for_batche   s<    ++J+OOz'C'CC$$Z0 ,r[   c                   UR                   (       a  X"R                  R                  L a  gUnXS:H  nU(       a  gS UUUR                  4;   a  U(       + $ UR                  R                  n[        U[        5      (       aN  [        UR                  [        [        45      (       d  [        R                  " SSU5      nSU S3n[        U5      nU R                  nUc   eUR                  [        [        U5      U:H  5      5      (       + $ )NFz^'|'$ ')primary_keyrN   _autoincrement_columnserver_defaultarg
isinstancestrtyper   r   resubr   
connectionscalarr   )	rT   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaultconn_col_defaultdefaults_equalmetadata_defaultconns	            rX   compare_server_default%PostgresqlImpl.compare_server_defaultm   s    ''#8#8#N#NN5)F%**
 

 &%%*99==&,,.33gu5EFF#%66(B8H#I %&'7&8#: -.>? ;;>"237GGH
 
 	
r[   NF)
nullablerk   r_   type_schemaautoincrementexisting_typeexisting_server_defaultexisting_nullableexisting_autoincrementc       
           > UR                  SS 5      nUb  Uc  [        R                  " S5      eUb  U R                  [	        UUUUUU	U
US95        [
        TU ]  " UU4UUUUUU	U
UUS.	UD6  g )Npostgresql_usingz6postgresql_using must be used with the type_ parameter)r   usingr   r   r   )	r~   rk   r_   r   r   r   r   r   r   )popr*   CommandErrorrS   PostgresqlColumnTypesuperr   )rT   
table_namecolumn_namer~   rk   r_   r   r   r   r   r   r   r   rV   r   	__class__s                  rX   r   PostgresqlImpl.alter_column   s    & )40##H  JJ$!"/,C&7	 		
 )''$;/#9	
 	
r[   c                   UR                  S5      (       a  [        US   [        [        45      (       a  [        R
                  " SUS   5      nU(       aw  [        R                  " U[        S5      UR                  S5      S9R                  5       nU(       a3  Uu  pgXsS   :X  a&  [        R                  SUUR                  U5        US	 g g g g g g )	Ndefaultro   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)rM   rm   r   r   rp   matchr0   _exec_on_inspectorr   groupfirstloginfor_   )rT   	inspectorrN   column_info	seq_matchr   r   colnames           rX   autogen_column_reflect%PostgresqlImpl.autogen_column_reflect   s    ??9%%*'6!2+
 +
 /Y1GI "55	; &OOA. %'   '+$Gf"55; $!JJ# (	2 6 # +
%r[   c                    U Vs1 s H'  nUR                   R                  S5      (       d  M%  UiM)     nnU H  nUR                  U5        M     [        R                  (       d  U R                  XB5        g g s  snf )Nduplicates_constraint)r   rM   remover0   sqla_2_skip_functional_indexes)rT   conn_unique_constraintsconn_indexesmetadata_unique_constraintsmetadata_indexesrU   doubled_constraintsixs           rX   correct_for_autogen_constraints.PostgresqlImpl.correct_for_autogen_constraints   ss     &
%zz~~56 % 	 
 &B# & !!))*:I "
s
   $A7A7z( asc nulls last)$z(?<! desc)( nulls last)$z( asc)$z( asc) nulls first$z desc( nulls first)$c                r   UR                  5       R                  SS5      R                  SS5      nUR                  b7  UR                  UR                  R                  R                  5        S3S5      nSU;   a  [        R
                  " SSU5      nU(       a2  US   S:X  a)  US	   S
:X  a   USS	 nU(       a  US   S:X  a  US	   S
:X  a  M   U R                   H:  nUR                  U5      =n(       d  M  UR                  S5      u  pVUS U X&S  -   n  O   U(       a2  US   S:X  a)  US	   S
:X  a   USS	 nU(       a  US   S:X  a  US	   S
:X  a  M   [        R                  " S5      nUR                  U5      (       a*  UR                  SU5      n[        R
                  " SSU5      nUR                  SS5      nU$ )N"rg   rh   .z::z(::[\w ]+\w)r   ()r   z	cast\s*\(zas\s+[^)]+\) )lowerreplacerN   r_   rp   rq   _default_modifiers_researchspancompiler   )rT   rU   exprrsr   startendcast_res           rX   _cleanup_index_expr"PostgresqlImpl._cleanup_index_expr  s   zz|##C,44S"=;;"<<5;;#3#3#9#9#;"<A >CD4<66/2t4DtAw#~$r(c/":D tAw#~$r(c/
 ,,B		$'u'"ZZ]
FU|d4j0	 - tAw#~$r(c/":D tAw#~$r(c/ **\*==;;r4(D66/2t4D||C$r[   c                F    UR                   R                  S5      (       a  gg)Npostgresql_nulls_not_distinct)nulls_not_distinctrK   )dialect_kwargsrM   )rT   items     rX   _dialect_optionsPostgresqlImpl._dialect_options>  s"    
 ""#BCC*r[   c           
     b   / nU R                  X5      nU(       a  UR                  U5        UR                  nUR                  n[        U5      [        U5      :w  a)  UR                  S[        U5       S[        U5       35        U(       a  [        R
                  " U5      $ / n[        [        XV5      S5       H  u  nu  pU R                  U	5      nU R                  X5      nU R                  U
5      nU R                  X5      nX:X  a  MS  UR                  5       R                  S5      (       aS  SU;   d  SU;   aG  UR                  SU SU< S35        [        R                  " S	U SU< S
UR                  < S35        M  UR                  SU SU< SU< 35        M     U R                  U5      nU R                  U5      nUU:w  a  UR!                  SU SU 35        U(       a  [        R
                  " U5      $ U(       a  [        R"                  " U5      $ [        R$                  " 5       $ )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   metadata_indexreflected_index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                    rX   compare_indexesPostgresqlImpl.compare_indexesG  s   
 //

 JJz" ,,!--w<3w<'JJ+CL>c'l^LM#--c22(W)>BOC#--c2I--nHF--c2I--nHF"++F33y C9$4"3%q 64 4 		"3%qZ&++. /ff 

\#a	}DNO5  C8 )).9	))/:		!JJ)D<=#--c22#((..#))++r[   c                   U R                  U5      nU R                  U5      nUR                  nUR                  nXe:w  a  [        R                  " SU SU 35      $ U R                  UR                  5      nU R                  UR                  5      nXx:w  a  [        R                  " SU SU 35      $ [        R                  " 5       $ )Nzexpression r   )_create_metadata_constraint_sig _create_reflected_constraint_sigunnamedr'   r   r   constr   )	rT   metadata_constraintreflected_constraintmetadata_tupreflected_tupmeta_sigconn_sigmetadata_doconn_dos	            rX   compare_unique_constraint(PostgresqlImpl.compare_unique_constraint  s    
 ;;
 == 
  '' ((#--hZtH:6  ++L,>,>?''(;(;<!#--gYd;-8   %%''r[   c                    UR                  S0 5      R                  5       nUR                  S5      (       d  UR                  SS 5        U$ )Ndialect_optionsrJ   )rM   copyr   )rT   reflected_optionskindoptionss       rX    adjust_reflected_dialect_options/PostgresqlImpl.adjust_reflected_dialect_options  sD     $''(92>CCE{{/00KK,d3r[   c                ~    [        U[        5      (       a  U$ UR                  U R                  SSS.S9R                  $ )NTF)literal_bindsinclude_table)dialectcompile_kwargs)rm   rn   r   r  string)rT   elements     rX   r   PostgresqlImpl._compile_element  s@    gs##NLL-1EJ  
 &	r[   c                   > U(       a%  [        U[        5      (       d  UR                  5       n[        TU ]  " U4X#S.UD6$ )zTRender a SQL expression that is typically a server default,
index expression, etc.

)is_server_defaultis_index)rm   r   
self_groupr   render_ddl_sql_expr)rT   r   r  r  rV   r   s        rX   r  "PostgresqlImpl.render_ddl_sql_expr  sE      Jt\::??$Dw*
$5
LN
 	
r[   c                    [        U5      R                  nUR                  S5      (       d  g[        U SUR                  -  5      (       a!  [        U SUR                  -  5      nU" X5      $ g)Nzsqlalchemy.dialects.postgresqlFz_render_%s_type)ro   
__module__
startswithhasattr__visit_name__getattr)rT   r   autogen_contextmodmeths        rX   render_typePostgresqlImpl.render_type  se     5k$$~~>??4*U-A-AABB4!2U5I5I!IJD//r[   c           	     N    [        [        [        R                  " XSS5      5      $ )N	text_typez(.+?\(.*text_type=)r   rn   r+   _render_type_w_subtyperT   r   r  s      rX   _render_HSTORE_type"PostgresqlImpl._render_HSTORE_type  s*     ))5K
 	
r[   c           	     N    [        [        [        R                  " XSS5      5      $ )N	item_typez(.+?\()r  r  s      rX   _render_ARRAY_type!PostgresqlImpl._render_ARRAY_type  s)     ))Z
 	
r[   c           	     N    [        [        [        R                  " XSS5      5      $ Nastext_typez(.+?\(.*astext_type=)r  r  s      rX   _render_JSON_type PostgresqlImpl._render_JSON_type  *     ))7O
 	
r[   c           	     N    [        [        [        R                  " XSS5      5      $ r'  r  r  s      rX   _render_JSONB_type!PostgresqlImpl._render_JSONB_type  r+  r[   rK   )rU   r3   rV   r   returnNone)r   rn   r   rn   r~   Optional[bool]rk   z/Optional[Union[_ServerDefault, Literal[False]]]r_   Optional[str]r   Optional[TypeEngine]r   r2  r   r1  r   r3  r   zOptional[_ServerDefault]r   r1  r   r1  rV   r   r/  r0  )rU   r3   r   rn   r/  rn   )r   zUnion[Index, UniqueConstraint]r/  zTuple[Any, ...])r   r3   r   r3   r/  r'   )r   r4   r   r4   r/  r'   )r   Dict[str, Any]r   rn   r/  r4  )r  zUnion[ClauseElement, str]r/  rn   )FF)
r   r:   r  boolr  r5  rV   r   r/  rn   )r   r?   r  rA   r/  zUnion[str, Literal[False]])r   r7   r  rA   r/  rn   )r   r5   r  rA   r/  rn   )r   r8   r  rA   r/  rn   )r   r9   r  rA   r/  rn   )__name__r  __qualname____firstlineno____dialect__transactional_ddlr(   type_synonymsrY   rd   r|   r   r   r   rp   r   r   r   r   r   r   r   r   r  r  r   r$  r)  r-  __static_attributes____classcell__r   s   @rX   rE   rE   R   s   K--	$%1 M
-1)
` $( "&* $(,.2<@,015!5
5
 5

 !5

5
 5
 $5
 5
 &5
 ,5
 ":5
 *5
  !/!5
" #5
$ 
%5
 5
n%3NJ> 	

'(


-.


9


()


)* D2	:,:, :, 
	:,x(-( /( 
	(8!/7:	 #(	

  
 	

 
 

 
.2@	#

.<
	


-;
	


,:
	


-;
	
 
r[   rE   c                  <   ^  \ rS rSr        SU 4S jjrSrU =r$ )r   i  c                   > UR                  SS 5      n[        TU ]  " X40 UD6  [        R                  " U5      U l        XPl        g )Nr   )r   r   __init__rQ   to_instancer   r   )rT   r_   r   r   rV   r   r   s         rX   rA  PostgresqlColumnType.__init__  s>     w%1b1))%0

r[   )r   r   )r_   rn   r   rn   r   r?   r/  r0  )r6  r  r7  r8  rA  r<  r=  r>  s   @rX   r   r     s-    &)2<	 r[   r   rG   c                x    [        XR                  U R                  5      < S[        XR                  S 5      < 3$ )Nz RENAME TO )r   r   r   r#   new_table_namer  compilerrV   s      rX   visit_rename_tablerH    s2    
 	H00'..A($:$:DA r[   c           	         [        XR                  U R                  5      < S[        XR                  5      < SS[        XR                  5      -  < SU R                  (       a  SU R                  -  < 3$ S< 3$ )Nr   zTYPE %szUSING %srg   )r   r   r   r   r   r$   r   r   rF  s      rX   visit_column_typerJ    sh    
 	H00'..AX223K--88&-mm
W]]";	  :<;	 r[   c                   SnU R                   b9  UR                  R                  U R                   [        R                  " 5       5      OSnUR                  [        XR                  U R                  5      [        XR                  5      US9$ )Nz9COMMENT ON COLUMN {table_name}.{column_name} IS {comment}NULL)r   r   comment)rM  sql_compilerrender_literal_valuerQ   Stringformatr#   r   r   r"   r   )r  rG  rV   ddlrM  s        rX   visit_column_commentrS    s     FC
 ??& 	22OOX__.	
   ::$(('..
 'x1D1DE   r[   c                F   [        XR                  U R                  5      < S[        XR                  5      < S3nU R
                  c  US-  nU$ U R                  c$  US-  nX1R                  U R
                  5      -  nU$ U R                  R                  U R
                  U R                  5      u  n  nU R
                  n[        U5       HQ  nUS:X  a  USUR                  (       a  SOS-  -  nM&  USUR                  [        S	0 U[        Xg5      0D65      -  -  nMS     U$ )
Nr   zDROP IDENTITYzADD alwayszSET GENERATED %s ALWAYSz
BY DEFAULTzSET %s rK   )r   r   r   r   r   r   r   visit_identity_columnimpl_compare_identity_defaultsortedrU  get_identity_optionsr   r  )r  rG  rV   r   diff_identityattrs           rX   rW  rW  3  s   
 	H00'..AX223D 		(	(	0..w?? \\;;OOW<<

a ??4LDx+ (H\  	H$A$A?gh&=>?%   ! r[   create_exclude_constraintbatch_create_exclude_constraintexclude_constraintc                      \ rS rSrSrSr   S             SS jjr\    SS j5       r S   SS jjr	\            SS j5       r
\          SS	 j5       rS
rg)CreateExcludeConstraintOpiV  z0Represent a create exclude constraint operation.excludeNc                X    Xl         X l        X0l        X@l        XPl        X`l        Xpl        g r]   )constraint_namer   elementswherer   _orig_constraintrV   )rT   rg  r   rh  ri  r   rj  rV   s           rX   rA  "CreateExcludeConstraintOp.__init__`  s)      /$ 
 0r[   c                >   [         R                  " U5      nU " UR                  UR                  UR                   VVVs/ s H	  u  p4oSU4PM     snnn[	        SUR
                  5      UR                  UUR                  UR                  UR                  S9	$ s  snnnf )NzColumnElement[bool] | None)ri  r   rj  
deferrable	initiallyr   )
r0   _table_for_constraintr_   _render_exprsr   ri  r   rm  rn  r   )clsrc   constraint_tabler   r_   ops         rX   from_constraint)CreateExcludeConstraintOp.from_constraintu  s     '<<ZHOO!!1;1I1I1I~t2r
1I 3Z5E5EF#**'!,, **""
 	
s   Bc                   U R                   b  U R                   $ [        R                  " U5      nUR                  U R                  U R
                  S9n[        U R                  U R                  U R                  S.U R                  D6nUR                   H&  u  nnnUR                  [        U[        5      5        M(     UR                  U5        U$ )N)r   )r_   ri  )rj  r-   SchemaObjectsrN   r   r   r   rh  rg  ri  rV   rp  rP   r   r   append_constraint)rT   migration_context
schema_objtexclr   r_   opers           rX   to_constraint'CreateExcludeConstraintOp.to_constraint  s       ,(((,,->?
T__T[[A ]]%%**
 gg	
 	
OOF423  	D!r[   c                8    U " X#U40 UD6nUR                  U5      $ )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)rq  
operationsrg  r   rh  rV   rs  s          rX   r`  3CreateExcludeConstraintOp.create_exclude_constraint  s'    V h="=  $$r[   c                    UR                   R                  US'   U " X!R                   R                  U40 UD6nUR                  U5      $ )a  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   )rX  r   r   r  )rq  r  rg  rh  rV   rs  s         rX   ra  9CreateExcludeConstraintOp.batch_create_exclude_constraint  sC    & "--8//"<"<hM"M  $$r[   )rj  rg  rh  rV   r   r   ri  )NNN)rg  zsqla_compat._ConstraintNamer   zUnion[str, quoted_name]rh  zIUnion[Sequence[Tuple[str, str]], Sequence[Tuple[ColumnClause[Any], str]]]ri  z)Optional[Union[ColumnElement[bool], str]]r   r2  rj  zOptional[ExcludeConstraint]r/  r0  )rc   r   r/  rd  r]   )ry  zOptional[MigrationContext]r/  r   )r  r/   rg  rn   r   rn   rh  r   rV   r   r/  Optional[Table])
r  r.   rg  rn   rh  r   rV   r   r/  r  )r6  r  r7  r8  __doc__constraint_typerA  classmethodrt  r~  r`  ra  r<  rK   r[   rX   rd  rd  V  s3    ;O <@ $8<4 ,
	 9  6 
* 
*
	"
 
& ?C!;	, +%+% +% 	+%
 +% +% 
+% +%Z %#% % 	%
 % 
% %r[   rd  c                4    [        UR                  5       U SS9$ )NT)alter)_exclude_constraintr~  )r  rs  s     rX   _add_exclude_constraintr    s     r//1?$OOr[   c                V    [         R                  " SX5      nUSLa  U$ [        XS5      $ )Nre  F)r+   _user_defined_renderr  )rc   r  namespace_metadatarendereds       rX   !_render_inline_exclude_constraintr    s5     **:H uzEBBr[   c                D    U R                   nUb  UR                  S5        g)Nz*from sqlalchemy.dialects import postgresqlzpostgresql.)importsadd)r  r  s     rX   _postgresql_autogenerate_prefixr    s#    %%G@Ar[   c                  ^ ^^ / mTR                   nT R                  (       a&  TR                  S[        T R                  5      45        T R                  (       a&  TR                  S[        T R                  5      45        T R
                  (       a&  TR                  S[        T R
                  5      45        U(       d]  U(       aV  T R                  R                  (       a;  TR                  S[        R                  " T R                  R                  5      45        U(       dC  T R                  (       a2  TR                  S[        R                  " TT R                  5      45        UU U4S jnU(       a  [        [        R                  " TT R                  5      5      /nU(       d7  U[        [        R                  " T R                  R                  5      5      /-  nUR                  U" 5       5        S[        R                  " T5      SR                  U5      S	.-  $ U" 5       nS
[!        T5      SR                  U5      S	.-  $ )Nrm  rn  r   r   r_   c            
     h  > TR                    V VVs/ s H  u  pnS[        U T5      < SU< S3PM     nnn nTR                  b3  UR                  S[        R
                  " TR                  T5      -  5        UR                  T VVs/ s H  u  pEU< SU< 3PM     snn5        U$ s  snnn f s  snnf )Nr   , r   zwhere=%s=)rp  _render_potential_columnri  r   r+   _render_potential_exprr   )	sqltextr_   opstringargskvr  rc   optss	         rX   do_expr_where_opts/_exclude_constraint.<locals>.do_expr_where_opts  s     ,6+C+C

 ,D'x )#  ,D 	 

 'KK//$$o 	$7$$!1%$78'

$ 8s   "B'B.
z-%(prefix)screate_exclude_constraint(%(args)s)r  )prefixr  z%%(prefix)sExcludeConstraint(%(args)s))
_has_batchrm  r   rn   rn  r   rN   r   r+   _identr_   _render_gen_namereprr   _alembic_autogenerate_prefixjoinr  )rc   r  r  	has_batchr  r  r  s   ``    @rX   r  r    s   
 FHD**I\3z'<'<#=>?[#j&:&:";<=Wc*"2"2345:#3#3#:#:Xv}}Z-=-=-D-DEFGZ__V,,_jooNO	
, ((*//JK
 T&--
(8(8(=(=>?@@D&()>99/JIIdOB
 
 	

 "#65oFIIdO:
 
 	
r[   c           	         [        U [        5      (       a<  U R                  (       a  SnOSnU[        R                  " U5      U R
                  S.-  $ [        R                  " U U[        U [        [        45      S9$ )Nz"%(prefix)sliteral_column(%(name)r)z%(prefix)scolumn(%(name)r))r  r_   )wrap_in_element)	rm   r   
is_literalr+   _sqlalchemy_autogenerate_prefixr_   r  r   r   )valuer  templates      rX   r  r  @  su     %&&;H3H<<_MJJ
 
 	

 ,,&uz?.KL
 	
r[   )r  r&   rG  r6   r/  rn   )r  r   rG  r6   r/  rn   )r  r!   rG  r6   r/  rn   )r  r%   rG  r6   )r  rA   rs  rd  r/  rn   )rc   r   r  rA   r  r=   r/  rn   )r  rA   r/  rn   )rc   r   r  rA   r  r5  r/  rn   )r  zGUnion[ColumnClause[Any], Column[Any], TextClause, FunctionElement[Any]]r  rA   r/  rn   )o
__future__r   loggingrp   typingr   r   r   r   r   r	   r
   r   r   
sqlalchemyr   r   r   r   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&   rX  r'   r(   rg   r*   autogenerater+   r  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   	getLoggerr6  r   rE   r   rH  rJ  rS  rW  register_operationAddConstraintOpregister_add_constraintrd  	renderersdispatch_forr  _constraint_renderersr  r  r  r  rK   r[   rX   <module>r     s   #  	              %    ( 1 < 2 ) 0 . 4 %     $ #  '  "   !  " - (  '  +:A<89553.+2$1-4 !h
[ h
V;  
+|$$1 % 

-!-: . 
-&&3 '* 

.".; /D :;##!B ,,-ABF% 3 3 F% C <
F%R 89P#P)BPP :P **+<=C!C#C !C 		C >C<
!<
#<
 <
 		<
~

 $	

 	
r[   