
    gt                       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'K0J1r1  S&S(K2J3r3  S&S)K4J5r5  S&S*K4J6r6  S&S+K7J8r8  S&S,K7J9r9  S&S-K1J:r:  S&S.K;J<r<  \(       al  S S/KJ=r=  S S0KJ>r>  S S1KJ?r?  S S2K@JArA  S S3KBJCrC  S S4KDJErE  S S5KFJGrG  S S6KFJHrH  S S7KJIrI  S S8KJJrJ  S S9KJKrK  S S:KLJMrM  S S;KLJNrN  S S<KOJPrP  SS=K#JQrQ  S&S>KRJSrS  S&S?KTJUrU  S&S@KVJWrW  \R                  " \Y5      rZ " SA SB\/5      r[ " SC SD\&5      r\\<" \,SE5            STSF j5       r]\<" \\SE5            SUSG j5       r^\<" \'SE5            SVSH j5       r_\<" \+SE5          SWSI j5       r`\9R                  " SJ5      \8R                  " SJSK5      \5R                  R                  SL5       " SM SN\5R                  5      5       5       5       rd\3R                  R                  \d5            SXSO j5       rg\3R                  R                  \5              SYSP j5       riSZSQ jrj        S[SR jrk      S\SS jrlg)]    )annotationsN)Any)cast)Dict)List)Optional)Sequence)Tuple)TYPE_CHECKING)Union)Column)Float)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                  v  ^  \ 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 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$ ).PostgresqlImplO   
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kwrH   cols        ^/Users/Alptekin/Desktop/izin_takip/venv/lib/python3.13/site-packages/alembic/ddl/postgresql.pycreate_indexPostgresqlImpl.create_indexV   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)rR   
batch_implrL   
constraints       rV   prep_table_for_batch#PostgresqlImpl.prep_table_for_batchb   s<    ++J+OOz'C'CC$$Z0 ,rY   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                  [        R                   " [        U5      U:H  5      5      (       + $ )NFz^'|'$ ')primary_keyrL   _autoincrement_columnserver_defaultarg
isinstancestrtyper   r   resubr   
connectionscalarr.   _select)	rR   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaultconn_col_defaultdefaults_equalmetadata_defaultconns	            rV   compare_server_default%PostgresqlImpl.compare_server_defaultj   s    ''#8#8#N#NN5)F%**
 

 &%%*99==&,,.33gu5EFF#%66(B8H#I %&'7&8#: -.>? ;;/04DD
 
 	
rY   c                   > 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)schemausingexisting_typeexisting_server_defaultexisting_nullable)	nullableri   r]   r   autoincrementr   r   r   existing_autoincrement)popr(   CommandErrorrQ   PostgresqlColumnTypesuperr   )rR   
table_namecolumn_namer   ri   r]   type_r   r   r   r   r   r   rT   r   	__class__s                  rV   r   PostgresqlImpl.alter_column   s      )40##H  JJ$!"/,C&7	 		
 )''$;/#9	
 	
rY   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defaultrm   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)rK   rk   r   r   rn   matchr.   _exec_on_inspectorr   groupfirstloginfor]   )rR   	inspectorrL   column_info	seq_matchr   r   colnames           rV   autogen_column_reflect%PostgresqlImpl.autogen_column_reflect   s    ??9%%*'6!2+
 +
 /Y1GI "55	; &OOA. %'   '+$Gf"55; $!JJ# (	2 6 # +
%rY   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   rK   remover.   sqla_2_skip_functional_indexes)rR   conn_unique_constraintsconn_indexesmetadata_unique_constraintsmetadata_indexesrS   doubled_constraintsixs           rV   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"re   rf   .z::z(::[\w ]+\w)r   ()r   z	cast\s*\(zas\s+[^)]+\) )lowerreplacerL   r]   rn   ro   _default_modifiers_researchspancompiler   )rR   rS   exprrsr   startendcast_res           rV   _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$rY   c                F    UR                   R                  S5      (       a  gg)Npostgresql_nulls_not_distinct)nulls_not_distinctrI   )dialect_kwargsrK   )rR   items     rV   _dialect_optionsPostgresqlImpl._dialect_options:  s"    
 ""#BCC*rY   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)rR   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                    rV   compare_indexesPostgresqlImpl.compare_indexesC  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#((..#))++rY   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   )	rR   metadata_constraintreflected_constraintmetadata_tupreflected_tupmeta_sigconn_sigmetadata_doconn_dos	            rV   compare_unique_constraint(PostgresqlImpl.compare_unique_constraint  s    
 ;;
 == 
  '' ((#--hZtH:6  ++L,>,>?''(;(;<!#--gYd;-8   %%''rY   c                    UR                  S0 5      R                  5       nUR                  S5      (       d  UR                  SS 5        U$ )Ndialect_optionsrH   )rK   copyr   )rR   reflected_optionskindoptionss       rV    adjust_reflected_dialect_options/PostgresqlImpl.adjust_reflected_dialect_options  sD     $''(92>CCE{{/00KK,d3rY   c                ~    [        U[        5      (       a  U$ UR                  U R                  SSS.S9R                  $ )NTF)literal_bindsinclude_table)dialectcompile_kwargs)rk   rl   r   r  string)rR   elements     rV   r   PostgresqlImpl._compile_element  s@    gs##NLL-1EJ  
 &	rY   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)rk   r   
self_groupr   render_ddl_sql_expr)rR   r   r
  r  rT   r   s        rV   r  "PostgresqlImpl.render_ddl_sql_expr  sE      Jt\::??$Dw*
$5
LN
 	
rY   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)rm   
__module__
startswithhasattr__visit_name__getattr)rR   r   autogen_contextmodmeths        rV   render_typePostgresqlImpl.render_type  se     5k$$~~>??4*U-A-AABB4!2U5I5I!IJD//rY   c           	     N    [        [        [        R                  " XSS5      5      $ )N	text_typez(.+?\(.*text_type=)r   rl   r)   _render_type_w_subtyperR   r   r  s      rV   _render_HSTORE_type"PostgresqlImpl._render_HSTORE_type  s*     ))5K
 	
rY   c           	     N    [        [        [        R                  " XSS5      5      $ )N	item_typez(.+?\()r  r  s      rV   _render_ARRAY_type!PostgresqlImpl._render_ARRAY_type  s)     ))Z
 	
rY   c           	     N    [        [        [        R                  " XSS5      5      $ Nastext_typez(.+?\(.*astext_type=)r  r  s      rV   _render_JSON_type PostgresqlImpl._render_JSON_type  *     ))7O
 	
rY   c           	     N    [        [        [        R                  " XSS5      5      $ r&  r  r  s      rV   _render_JSONB_type!PostgresqlImpl._render_JSONB_type  r*  rY   rI   )rS   r1   rT   r   returnNone)
NFNNNNNNNN)r   rl   r   rl   r   Optional[bool]ri   z%Union[_ServerDefault, Literal[False]]r]   Optional[str]r   Optional[TypeEngine]r   r1  r   r0  r   r2  r   zOptional[_ServerDefault]r   r0  r   r0  rT   r   r.  r/  )rS   r1   r   rl   r.  rl   )r   zUnion[Index, UniqueConstraint]r.  zTuple[Any, ...])r   r1   r   r1   r.  r%   )r   r2   r   r2   r.  r%   )r   Dict[str, Any]r   rl   r.  r3  )r  zUnion[ClauseElement, str]r.  rl   )FF)
r   r8   r
  boolr  r4  rT   r   r.  rl   )r   r=   r  r?   r.  zUnion[str, Literal[False]])r   r5   r  r?   r.  rl   )r   r3   r  r?   r.  rl   )r   r6   r  r?   r.  rl   )r   r7   r  r?   r.  rl   )__name__r  __qualname____firstlineno____dialect__transactional_ddlr&   type_synonymsrW   rb   r{   r   r   r   rn   r   r   r   r   r   r   r   r   r  r  r  r#  r(  r,  __static_attributes____classcell__r   s   @rV   rC   rC   O   s   K--	$%1 M
-1+
b $(@E"&* $(,.2<@,0152
2
 2
 !	2

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

'(


-.


9


()


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

 
 

 
.2@	#

.<
	


-;
	


,:
	


-;
	
 
rY   rC   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__rO   to_instancer   r   )rR   r]   r   r   rT   r   r   s         rV   r@  PostgresqlColumnType.__init__  s>     w%1b1))%0

rY   )r   r   )r]   rl   r   rl   r   r=   r.  r/  )r5  r  r6  r7  r@  r;  r<  r=  s   @rV   r   r     s-    &)2<	 rY   r   rE   c                x    [        XR                  U R                  5      < S[        XR                  S 5      < 3$ )Nz RENAME TO )r   r   r   r!   new_table_namer  compilerrT   s      rV   visit_rename_tablerG    s2    
 	H00'..A($:$:DA rY   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 %sre   )r   r   r   r   r   r"   r   r   rE  s      rV   visit_column_typerI    sh    
 	H00'..AX223K--88&-mm
W]]";	  :<;	 rY   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)rL  sql_compilerrender_literal_valuerO   Stringformatr!   r   r   r    r   )r  rF  rT   ddlrL  s        rV   visit_column_commentrR    s     FC
 ??& 	22OOX__.	
   ::$(('..
 'x1D1DE   rY   c                \   [        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       H\  nUS:X  a  USUR                  (       a  SOS-  -  nM&  USUR                  [        R                  " S	0 U[        Xg5      0D65      -  -  nM^     U$ )
Nr   zDROP IDENTITYzADD alwayszSET GENERATED %s ALWAYSz
BY DEFAULTzSET %s rI   )r   r   r   r   r   r   r   visit_identity_columnimpl_compare_identity_defaultsortedrT  get_identity_optionsr.   Identityr  )r  rF  rT   r   diff_identityattrs           rV   rV  rV  /  s$   
 	H00'..AX223D 		(	(	0..w?? \\;;OOW<<

a ??4LDx+ (H\  	H$A$A((KD'(2I+JK%   ! rY   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)CreateExcludeConstraintOpiR  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_constraintrT   )rR   rg  r   rh  ri  r   rj  rT   s           rV   r@  "CreateExcludeConstraintOp.__init__\  s)      /$ 
 0rY   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   )
r.   _table_for_constraintr]   _render_exprsr   ri  r   rm  rn  r   )clsra   constraint_tabler   r]   ops         rV   from_constraint)CreateExcludeConstraintOp.from_constraintq  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+   SchemaObjectsrL   r   r   r   rh  rg  ri  rT   rp  rN   r   r   append_constraint)rR   migration_context
schema_objtexclr   r]   opers           rV   to_constraint'CreateExcludeConstraintOp.to_constraint  s       ,(((,,->?
T__T[[A ]]%%**
 gg	
 	
OOF423  	D!rY   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  rT   rs  s          rV   r`  3CreateExcludeConstraintOp.create_exclude_constraint  s'    V h="=  $$rY   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   )rW  r   r   r  )rq  r  rg  rh  rT   rs  s         rV   ra  9CreateExcludeConstraintOp.batch_create_exclude_constraint  sC    & "--8//"<"<hM"M  $$rY   )rj  rg  rh  rT   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   r1  rj  zOptional[ExcludeConstraint]r.  r/  )ra   r   r.  rd  r[   )ry  zOptional[MigrationContext]r.  r   )r  r-   rg  rl   r   rl   rh  r   rT   r   r.  Optional[Table])
r  r,   rg  rl   rh  r   rT   r   r.  r  )r5  r  r6  r7  __doc__constraint_typer@  classmethodrt  r~  r`  ra  r;  rI   rY   rV   rd  rd  R  s3    ;O <@ $8<4 ,
	 9  6 
* 
*
	"
 
& ?C!;	, +%+% +% 	+%
 +% +% 
+% +%Z %#% % 	%
 % 
% %rY   rd  c                4    [        UR                  5       U SS9$ )NT)alter)_exclude_constraintr~  )r  rs  s     rV   _add_exclude_constraintr    s     r//1?$OOrY   c                V    [         R                  " SX5      nUSLa  U$ [        XS5      $ )Nre  F)r)   _user_defined_renderr  )ra   r  namespace_metadatarendereds       rV   !_render_inline_exclude_constraintr    s5     **:H uzEBBrY   c                D    U R                   nUb  UR                  S5        g)Nz*from sqlalchemy.dialects import postgresqlzpostgresql.)importsadd)r  r  s     rV   _postgresql_autogenerate_prefixr    s#    %%G@ArY   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  ra   optss	         rV   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   rl   rn  r   rL   r   r)   _identr]   _render_gen_namereprr   _alembic_autogenerate_prefixjoinr  )ra   r  r  	has_batchr  r  r  s   ``    @rV   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:
 
 	
rY   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_text)	rk   r   
is_literalr)   _sqlalchemy_autogenerate_prefixr]   r  r   r   )valuer  templates      rV   r  r  <  su     %&&;H3H<<_MJJ
 
 	

 ,,#EJ+HI
 	
rY   )r  r$   rF  r4   r.  rl   )r  r   rF  r4   r.  rl   )r  r   rF  r4   r.  rl   )r  r#   rF  r4   )r  r?   rs  rd  r.  rl   )ra   r   r  r?   r  r;   r.  rl   )r  r?   r.  rl   )ra   r   r  r?   r  r4  r.  rl   )r  zGUnion[ColumnClause[Any], Column[Any], TextClause, FunctionElement[Any]]r  r?   r.  rl   )m
__future__r   loggingrn   typingr   r   r   r   r   r	   r
   r   r   
sqlalchemyr   r   r   r   r   r   rO   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$   rW  r%   r&   re   r(   autogenerater)   r  r*   r+   operations.baser,   r-   r.   util.sqla_compatr/   r0   r1   r2   $sqlalchemy.dialects.postgresql.arrayr3   #sqlalchemy.dialects.postgresql.baser4   %sqlalchemy.dialects.postgresql.hstorer5   #sqlalchemy.dialects.postgresql.jsonr6   r7   r8   r9   r:   sqlalchemy.sql.schemar;   r<   sqlalchemy.sql.type_apir=   r>   autogenerate.apir?   autogenerate.renderr@   runtime.migrationrA   	getLoggerr5  r   rC   r   rG  rI  rR  rV  register_operationAddConstraintOpregister_add_constraintrd  	renderersdispatch_forr  _constraint_renderersr  r  r  r  rI   rY   rV   <module>r     s   #  	             %   ( 1 < 2 ) 0 . 4 %     $ #  '  "   !  " - (  ' +:A<89553.+2$1-4 !g
[ g
T;  
+|$$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<
!<
#<
 <
 		<
~

 $	

 	
rY   