PK APOCALYPSE V1

APOCALYPSE V1

Current Path : /opt/hc_python/lib/python3.12/site-packages/alembic/ddl/__pycache__/
Upload File :
Current File : //opt/hc_python/lib/python3.12/site-packages/alembic/ddl/__pycache__/postgresql.cpython-312.pyc

�

���g�t���ddlmZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	ddlm
Z
dd	lmZdd
lmZddlm
Z
ddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&ddl%m'Z'ddl%m(Z(dd l%m)Z)dd!l%m*Z*dd"l%m+Z+dd#l%m,Z,dd$l%m-Z-dd%l%m.Z.dd&l/m0Z0dd'l/m1Z1d(d)l2m3Z3d(d*l4m5Z5d(d+l6m7Z7d(d,l6m8Z8d(d-l9m:Z:d(d.l9m;Z;d(d/l3m<Z<d(d0l=m>Z>erldd1lm?Z?dd2lm@Z@dd3lmAZAdd4lBmCZCdd5lDmEZEdd6lFmGZGdd7lHmIZIdd8lHmJZJdd9lmKZKdd:lmLZLdd;lmMZMdd<lNmOZOdd=lNmPZPdd>lQmRZRdd?l%mSZSd(d@lTmUZUd(dAlVmWZWd(dBlXmYZYej�e[�Z\GdC�dDe1�Z]GdE�dFe(�Z^e>e.dG�						dVdH��Z_e>e^dG�						dWdI��Z`e>e)dG�						dXdJ��Zae>e-dG�				dYdK��Zbe;j�dL�e:j�dLdM�e7j�j�dN�GdO�dPe7j�����Zfe5j�j�ef�						dZdQ��Zie5j�j�e�								d[dR��Zkd\dS�Zl								d]dT�Zm						d^dU�Zny)_�)�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�J��eZdZdZdZejddhfzZdd�Zd�Zd�Z											d																											d�fd�
Z
d	�Zd
�Ze
jd�e
jd�e
jd
�e
jd�e
jd�fZdd�Z				d d�Z						d!d�Z						d"d�Z						d#d�Zd$d�Z		d%									d&�fd�
Z						d'd�Z						d(d�Z						d)d�Z						d*d�Z						d+d�Z�xZS),�PostgresqlImpl�
postgresqlT�FLOATzDOUBLE PRECISIONc� �|jjdd�xsd}|D]N}||jjvs�|jj	t|tj���P|jt|fi|���y)N�postgresql_include�)
�kwargs�get�table�c�
append_columnr
�sqltypes�NullType�_execr)�self�index�kwrI�cols     �E/opt/hc_python/lib/python3.12/site-packages/alembic/ddl/postgresql.py�create_indexzPostgresqlImpl.create_indexXsu��#�\�\�-�-�.B�D�I�O�R��%�C��%�+�+�-�-�'����)�)��3�� 1� 1�2��&�
	
�
�
�;�u�+��+�,�c��|jD]9}|j��|j|jvs�)|j|��;y�N)�constraints�name�named_constraints�drop_constraint)rS�
batch_implrM�
constraints    rW�prep_table_for_batchz#PostgresqlImpl.prep_table_for_batchds<���+�+�J����+��O�O�z�'C�'C�C��$�$�Z�0�,rYc���|jr||jjury|}||k(}|ryd|||jfvr|S|jj}t|t�rHt|jttf�stjdd|�}d|�d�}t|�}|j}|�J�|jtt|�|k(��S)NFz^'|'$��')�primary_keyrM�_autoincrement_column�server_default�arg�
isinstance�str�typerr�re�subr�
connection�scalarr)	rS�inspector_column�metadata_column�rendered_metadata_default�rendered_inspector_default�conn_col_default�defaults_equal�metadata_default�conns	         rW�compare_server_defaultz%PostgresqlImpl.compare_server_defaultls��
�'�'��?�#8�#8�#N�#N�N��5��)�-F�F������%��*�*�
�
�
&�%�%�*�9�9�=�=���&��,��.�3�3�g�u�5E�F�#%�6�6�(�B�8H�#I� �%&�'7�&8��#:� �-�.>�?�����������;�;��>�"2�3�7G�G�H�
�
�	
rYc

����|
jdd�}|�|�tjd��|�"|jt	||||||	|
|���t�|�||f||||||	|
||d�	|
��y)N�postgresql_usingz6postgresql_using must be used with the type_ parameter)�schema�using�
existing_type�existing_server_default�existing_nullable)	�nullablerhr]r|�
autoincrementr~rr��existing_autoincrement)�popr*�CommandErrorrR�PostgresqlColumnType�superr)rS�
table_name�column_namer�rhr]�type_r|r�r~rr�r�rUr}�	__class__s               �rWrzPostgresqlImpl.alter_column�s���� ���)�4�0�������#�#�H��
����J�J�$����!��"/�,C�&7�	�
�	�����
	
��)���'�'�$;�/�#9�
	
��
	
rYc�|�|jd�r�t|dttf�r�t	j
d|d�}|rut
j|td�|jd���j�}|r4|\}}||dk(r&tjd||j|�|d=yyyyyy)	N�defaultrlznextval\('(.+?)'::regclass\)a9select 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)rLrjrrrm�matchr0�_exec_on_inspectorr�group�first�log�infor])rS�	inspectorrM�column_info�	seq_matchr�r��colnames        rW�autogen_column_reflectz%PostgresqlImpl.autogen_column_reflect�s����?�?�9�%�*����'�6�!2�+
����/��Y�1G��I��"�5�5���	;��&�O�O�A�.���%�'�� �'+�$�G�W��+�f�"5�5����;�$�!�J�J�#�
�(�	�2�6��#�
+
�%rYc���|D�chc]}|jjd�r|��!}}|D]}|j|��tjs|j||�yycc}w)N�duplicates_constraint)r�rL�remover0�sqla_2�_skip_functional_indexes)rS�conn_unique_constraints�conn_indexes�metadata_unique_constraints�metadata_indexesrT�doubled_constraints�ixs        rW�correct_for_autogen_constraintsz.PostgresqlImpl.correct_for_autogen_constraints�su��&�
�%���z�z�~�~�5�6�
�%�	�
�&�B�����#�&��!�!��)�)�*:�L�I�"��
s�$A'z( asc nulls last)$z(?<! desc)( nulls last)$z( asc)$z( asc) nulls first$z desc( nulls first)$c��|j�jdd�jdd�}|j�7|j|jjj��d�d�}d|vrt	j
dd|�}|r(|ddk(r |d	d
k(r|dd	}|r|ddk(r	|d	d
k(r�|jD]6}|j|�x}s�|jd�\}}|d|||dz}n|r(|ddk(r |d	d
k(r|dd	}|r|ddk(r	|d	d
k(r�t	jd�}|j|�r)|jd|�}t	j
d
d|�}|jdd�}|S)N�"rdre�.z::z(::[\w ]+\w)r�(����)rz	cast\s*\(zas\s+[^)]+\)� )�lower�replacerMr]rmrn�_default_modifiers_re�search�span�compiler�)rSrT�expr�rsr��start�end�cast_res        rW�_cleanup_index_exprz"PostgresqlImpl._cleanup_index_exprs����z�z�|�#�#�C��,�4�4�S�"�=���;�;�"��<�<�5�;�;�#3�#3�#9�#9�#;�"<�A� >��C�D��4�<��6�6�/�2�t�4�D��t�A�w�#�~�$�r�(�c�/���"�:�D��t�A�w�#�~�$�r�(�c�/�
�,�,�B��	�	�$��'�u�'�"�Z�Z��]�
��s��F�U�|�d�3�4�j�0���	-��t�A�w�#�~�$�r�(�c�/���"�:�D��t�A�w�#�~�$�r�(�c�/��*�*�\�*���=�=����;�;�r�4�(�D��6�6�/�2�t�4�D��|�|�C��$���rYc�<�|jjd�ryy)N�postgresql_nulls_not_distinct)�nulls_not_distinctrJ)�dialect_kwargsrL)rS�items  rW�_dialect_optionszPostgresqlImpl._dialect_options:s��
���"�"�#B�C�*�rYc
��g}|j||�}|r|j|�|j}|j}t|�t|�k7r)|jdt|��dt|����|rt	j
|�Sg}t
t||�d�D]�\}\}	}
|j|	�}|j||�}|j|
�}
|j||
�}||k(r�U|j�jd�rJd|vsd|vrB|jd|�d|�d��tjd	|�d|�d
|j�d����|jd|�d|
�d|�����|j|�}|j|�}||k7r|j!d|�d|���|rt	j
|�S|rt	j"|�St	j$�S)
Nzexpression 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-classeszoptions )�_compare_index_unique�append�expressions�lenr'�	Different�	enumerate�zip�_compile_elementr��strip�endswithr*�warnr]r��extend�Skip�Equal)rS�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                 rW�compare_indexeszPostgresqlImpl.compare_indexesCs��
���/�/��O�
�
���J�J�z�"� �,�,��!�-�-���w�<�3�w�<�'��J�J�+�C��L�>��c�'�l�^�L�M��#�-�-�c�2�2���(��W�g�)>��B�O�C��#�s��-�-�c�2�I��-�-�n�i�H�F��-�-�c�2�I��-�-�n�i�H�F��������"�+�+�F�3��y� �C�9�$4����"�3�%�q��
�64�4���	�	�"�3�%�q��
�Z�&�+�+�.�/f�f���
�
�\�#��a�	�}�D��
�N�O�5 C�8�)�)�.�9�	��)�)�/�:�	��	�!��J�J��)��D���<�=��#�-�-�c�2�2�
�#�(�(��.�.�#�)�)�+�+rYc��|j|�}|j|�}|j}|j}||k7rtjd|�d|���S|j|j�}|j|j�}||k7rtjd|�d|���Stj�S)Nzexpression r�)�_create_metadata_constraint_sig� _create_reflected_constraint_sig�unnamedr'r�r��constr�)	rS�metadata_constraint�reflected_constraint�metadata_tup�
reflected_tup�meta_sig�conn_sig�metadata_do�conn_dos	         rW�compare_unique_constraintz(PostgresqlImpl.compare_unique_constraints���
�;�;��
���=�=� �
�
� �'�'�� �(�(���x��#�-�-��h�Z�t�H�:�6��
��+�+�L�,>�,>�?���'�'�
�(;�(;�<���'�!�#�-�-��g�Y�d�;�-�8��
� �%�%�'�'rYc��|jdi�j�}|jd�s|jdd�|S)N�dialect_optionsrI)rL�copyr�)rS�reflected_options�kind�optionss    rW� adjust_reflected_dialect_optionsz/PostgresqlImpl.adjust_reflected_dialect_options�sA��$�'�'�(9�2�>�C�C�E���{�{�/�0��K�K�,�d�3��rYc�z�t|t�r|S|j|jddd���jS)NTF)�
literal_binds�
include_table)�dialect�compile_kwargs)rjrkr�r��string)rS�elements  rWr�zPostgresqlImpl._compile_element�s=���g�s�#��N�����L�L�-1�E�J��
��&�	rYc�n��|r t|t�s|j�}t�|�|f||d�|��S)zdRender a SQL expression that is typically a server default,
        index expression, etc.

        )�is_server_default�is_index)rjr�
self_groupr��render_ddl_sql_expr)rSr�r�r�rUr�s     �rWrz"PostgresqlImpl.render_ddl_sql_expr�sD��� �J�t�\�:��?�?�$�D��w�*��
�$5��
�LN�
�	
rYc���t|�j}|jd�syt|d|jz�r"t|d|jz�}|||�Sy)Nzsqlalchemy.dialects.postgresqlFz_render_%s_type)rl�
__module__�
startswith�hasattr�__visit_name__�getattr)rSr��autogen_context�mod�meths     rW�render_typezPostgresqlImpl.render_type�sa���5�k�$�$���~�~�>�?���4�*�U�-A�-A�A�B��4�!2�U�5I�5I�!I�J�D����/�/�rYc	�N�tttj||dd��S)N�	text_typez(.+?\(.*text_type=)�rrkr+�_render_type_w_subtype�rSr�rs   rW�_render_HSTORE_typez"PostgresqlImpl._render_HSTORE_type�s,�����)�)����5K�
�
�	
rYc	�N�tttj||dd��S)N�	item_typez(.+?\()rrs   rW�_render_ARRAY_typez!PostgresqlImpl._render_ARRAY_type�s+�����)�)����Z�
�
�	
rYc	�N�tttj||dd��S�N�astext_typez(.+?\(.*astext_type=)rrs   rW�_render_JSON_typez PostgresqlImpl._render_JSON_type��,�����)�)���
�7O�
�
�	
rYc	�N�tttj||dd��Srrrs   rW�_render_JSONB_typez!PostgresqlImpl._render_JSONB_type�rrY)rTr3rUr�return�None)
NFNNNNNNNN)r�rkr�rkr��Optional[bool]rhz%Union[_ServerDefault, Literal[False]]r]�
Optional[str]r��Optional[TypeEngine]r|rr�rr~r rzOptional[_ServerDefault]r�rr�rrUrrr)rTr3r�rkrrk)r�zUnion[Index, UniqueConstraint]rzTuple[Any, ...])r�r3r�r3rr')r�r4r�r4rr')r��Dict[str, Any]r�rkrr!)r�zUnion[ClauseElement, str]rrk)FF)
r�r:r��boolr�r"rUrrrk)r�r?rrArzUnion[str, Literal[False]])r�r7rrArrk)r�r5rrArrk)r�r8rrArrk)r�r9rrArrk)�__name__r�__qualname__�__dialect__�transactional_ddlr(�
type_synonymsrXrbryrr�r�rmr�r�r�r�r�r�r�r�rrrrrr�
__classcell__�r�s@rWrErEQs�����K����-�-�	�$�%�1��M�
-�1�)
�^$(�@E�"�&*� $�(,�.2�<@�,0�15�2
��2
��2
�!�	2
�
>�2
��
2
�$�2
��2
�&�2
�,�2
�":�2
�*�2
�!/�2
��2
�
�2
�h%3�NJ�>	��
�
�'�(���
�
�-�.���
�
�9����
�
�(�)���
�
�)�*��� �D�2��	��:,��:,��:,�
�	:,�x(�-�(�/�(�
�	(�8�!/��7:��	���#(��	
��
� �
��	
�
�
�

�

�.���2@��	#��
��
�.<�
�	�
�
��
�-;�
�	�
�
��
�,:�
�	�
�
��
�-;�
�	�
rYrEc�0��eZdZ								d�fd�Z�xZS)r�c���|jdd�}t�|�||fi|��tj|�|_||_y)Nr})r�r��__init__rP�to_instancer�r})rSr]r�r�rUr}r�s      �rWr,zPostgresqlColumnType.__init__�sB������w��%��
����{�1�b�1��)�)�%�0��
���
rY)r]rkr�rkr�r?rr)r#rr$r,r(r)s@rWr�r��s-������&)��2<��	
��rYr�rFc�x�t||j|j��dt||jd���S)Nz RENAME TO )rr�r|r#�new_table_name�r��compilerrUs   rW�visit_rename_tabler2s6��
	�H�g�0�0�'�.�.�A��(�G�$:�$:�D�A��rYc	���t||j|j��dt||j��ddt||j�z�d|jrd|jz��Sd��S)Nr�zTYPE %szUSING %srd)rr�r|rr�r$r�r}r0s   rW�visit_column_typer4
sn��
	�H�g�0�0�'�.�.�A��X�w�2�2�3��K��'�-�-�8�8�&-�m�m�
�W�]�]�"�;�	��:<�;�	�rYc� �d}|j�8|jj|jtj��nd}|jt
||j|j�t||j�|��S)Nz9COMMENT ON COLUMN {table_name}.{column_name} IS {comment}�NULL)r�r��comment)r7�sql_compiler�render_literal_valuerP�String�formatr#r�r|r"r�)r�r1rU�ddlr7s     rW�visit_column_commentr=s���F�C�
�?�?�&�	���2�2��O�O�X�_�_�.�	
����:�:�$��g�(�(�'�.�.�
�'�x��1D�1D�E����rYc�4�t||j|j��dt||j��d�}|j
�|dz
}|S|j�%|dz
}||j|j
�z
}|S|jj|j
|j�\}}}|j
}t|�D]J}|dk(r|d|jrdndzz
}�|d|jtd	i|t||�i���zz
}�L|S)
Nr�z
DROP IDENTITYzADD �alwayszSET GENERATED %s �ALWAYSz
BY DEFAULTzSET %s rJ)rr�r|rr�r�r�visit_identity_column�impl�_compare_identity_default�sortedr?�get_identity_optionsrr)r�r1rUr�diff�_�identity�attrs        rWrArA/s&��
	�H�g�0�0�'�.�.�A��X�w�2�2�3��D�����������	�	(�	(�	0�������.�.�w���?�?�����\�\�;�;��O�O�W�<�<�
�
��a���?�?���4�L�D��x���+� (���H�\�����	�H�$A�$A��?��g�h��&=�>�?�%����
!��rY�create_exclude_constraint�batch_create_exclude_constraint�exclude_constraintc��eZdZdZdZ			d														d
d�Ze				dd��Z	d			d
d�Ze												dd��Z	e										dd��Z
y)�CreateExcludeConstraintOpz0Represent a create exclude constraint operation.�excludeNc�f�||_||_||_||_||_||_||_yr[)�constraint_namer��elements�wherer|�_orig_constraintrU)rSrQr�rRrSr|rTrUs        rWr,z"CreateExcludeConstraintOp.__init__\s7�� /���$��� ��
���
���� 0�����rYc�@�tj|�}||j|j|jD���cgc]
\}}}||f��c}}}t	d|j
�|j||j|j|j��	Scc}}}w)NzColumnElement[bool] | None)rSr|rT�
deferrable�	initiallyr})
r0�_table_for_constraintr]�
_render_exprsrrSr|rVrWr})�clsra�constraint_tabler�r]�ops      rW�from_constraintz)CreateExcludeConstraintOp.from_constraintqs���'�<�<�Z�H����O�O��!�!�1;�1I�1I�
�1I�~�t�T�2��r�
�1I�
��3�Z�5E�5E�F�#�*�*�'�!�,�,� �*�*��"�"�
�	
��
s�Bc��|j�|jStj|�}|j|j|j
��}t
|j|j|jd�|j��}|jD]%\}}}|jt|t���'|j|�|S)N)r|)r]rS)rTr-�
SchemaObjectsrMr�r|rrRrQrSrUrYrOr
r�append_constraint)rS�migration_context�
schema_obj�t�exclr�r]�opers        rW�
to_constraintz'CreateExcludeConstraintOp.to_constraint�s���� � �,��(�(�(��,�,�->�?�
����T�_�_�T�[�[��A�� �
�]�]��%�%��*�*�
��g�g�	
���
�
�	
����
�O�O�F�4��2�3� �	���D�!��rYc�:�||||fi|��}|j|�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)rZ�
operationsrQr�rRrUr\s       rWrJz3CreateExcludeConstraintOp.create_exclude_constraint�s)��V��*�h�
=�"�
=��� � ��$�$rYc��|jj|d<|||jj|fi|��}|j|�S)a3Issue 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|)rBr|r�rh)rZrirQrRrUr\s      rWrKz9CreateExcludeConstraintOp.batch_create_exclude_constraint�sE��&"���-�-��8��
��*�/�/�"<�"<�h�
M�"�
M��� � ��$�$rY)NNN)rQzsqla_compat._ConstraintNamer�zUnion[str, quoted_name]rRzIUnion[Sequence[Tuple[str, str]], Sequence[Tuple[ColumnClause[Any], str]]]rSz)Optional[Union[ColumnElement[bool], str]]r|rrTzOptional[ExcludeConstraint]rr)rarrrNr[)razOptional[MigrationContext]rr)rir/rQrkr�rkrRrrUrr�Optional[Table])
rir.rQrkrRrrUrrrk)r#rr$�__doc__�constraint_typer,�classmethodr]rfrJrKrJrYrWrNrNRs3��;��O�<@� $�8<��4��,��
�	�9����6��
��*�
�*�
�	"�
��
�&?C��!;��	��,�+%��+%��+%��	+%�
�+%��
+%�
�+%��+%�Z�%�#�%��%��	%�
�%�
�
%��%rYrNc�:�t|j�|d��S)NT)�alter)�_exclude_constraintrf)rr\s  rW�_add_exclude_constraintrr�s���r�/�/�1�?�$�O�OrYc�V�tjd||�}|dur|St||d�S)NrOF)r+�_user_defined_renderrq)rar�namespace_metadata�rendereds    rW�!_render_inline_exclude_constraintrw�s9���*�*��:���H��u�����z�?�E�B�BrYc�B�|j}|�|jd�y)Nz*from sqlalchemy.dialects import postgresqlzpostgresql.)�imports�add)rrys  rW�_postgresql_autogenerate_prefixr{�s#���%�%�G������@�A�rYc�����g��j}�jr&�jdt�j�f��jr&�jdt�j�f��j
r&�jdt�j
�f�|sR|rP�jjr:�jdtj�jj�f�|s=�jr1�jdtj��j�f����fd�}|r�ttj��j��g}|s6|ttj�jj��gz
}|j|��dtj��dj|�d	�zS|�}d
t!��dj|�d	�zS)NrVrWr}r|r]c
�T���jD���cgc]\}}}dt|���d|�d���}}}}�j�2|jdt	j
�j��z�|j
�D��cgc]\}}|�d|����c}}�|Scc}}}wcc}}w)Nr��, r�zwhere=%s�=)rY�_render_potential_columnrSr�r+�_render_potential_exprr�)	�sqltextr]�opstring�args�k�vrra�optss	      ���rW�do_expr_where_optsz/_exclude_constraint.<locals>.do_expr_where_optss����,6�+C�+C�

�,D�'���x�
)��#���

�,D�	
�

����'��K�K���/�/��$�$�o���
�	
���$�7�$�$�!�Q��1�%�$�7�8����'

��$8s�B�B$
z-%(prefix)screate_exclude_constraint(%(args)s)r~)�prefixr�z%%(prefix)sExcludeConstraint(%(args)s))�
_has_batchrVr�rkrWr}rMr|r+�_identr]�_render_gen_name�reprr��_alembic_autogenerate_prefix�joinr{)rarrp�	has_batchr�r�r�s``    @rWrqrq�s����
FH�D��*�*�I�������\�3�z�'<�'<�#=�>�?�������[�#�j�&:�&:�";�<�=�������W�c�*�"2�"2�3�4�5���:�#3�#3�#:�#:����X�v�}�}�Z�-=�-=�-D�-D�E�F�G��Z�_�_����
�V�,�,�_�j�o�o�N�O�	
��,
���(�(��*�/�/�J�K�
����T�&�-�-�
�(8�(8�(=�(=�>�?�@�@�D����&�(�)�>��9�9�/�J��I�I�d�O�B
�
�	
�
"�#��6�5�o�F��I�I�d�O�:
�
�	
rYc	���t|t�r6|jrd}nd}|tj|�|j
d�zStj||t|ttf���S)Nz"%(prefix)sliteral_column(%(name)r)z%(prefix)scolumn(%(name)r))r�r])�wrap_in_element)	rjr�
is_literalr+�_sqlalchemy_autogenerate_prefixr]r�rr)�valuer�templates   rWr�r�<sr���%��&����;�H�3�H���<�<�_�M��J�J�
�
�	
�
�,�,���&�u�z�?�.K�L�
�	
rY)r�r&r1r6rrk)r�r�r1r6rrk)r�r!r1r6rrk)r�r%r1r6)rrAr\rNrrk)rarrrArur=rrk)rrArrk)rarrrArpr"rrk)r�zGUnion[ColumnClause[Any], Column[Any], TextClause, FunctionElement[Any]]rrArrk)o�
__future__r�loggingrm�typingrrrrrr	r
rr�
sqlalchemyr
rrrrrrrrP�sqlalchemy.dialects.postgresqlrrr�sqlalchemy.schemar�sqlalchemy.sql.elementsrr�sqlalchemy.sql.functionsr�sqlalchemy.typesr�baserrr r!r"r#r$r%r&rBr'r(rdr*�autogenerater+rir,r-�operations.baser.r/r0�util.sqla_compatr1r2r3r4�$sqlalchemy.dialects.postgresql.arrayr5�#sqlalchemy.dialects.postgresql.baser6�%sqlalchemy.dialects.postgresql.hstorer7�#sqlalchemy.dialects.postgresql.jsonr8r9r:r;r<�sqlalchemy.sql.schemar=r>�sqlalchemy.sql.type_apir?r@�autogenerate.apirA�autogenerate.renderrB�runtime.migrationrC�	getLoggerr#r�rEr�r2r4r=rA�register_operation�AddConstraintOp�register_add_constraintrN�	renderers�dispatch_forrr�_constraint_renderersrwr{rqr�rJrYrW�<module>r�s��#��	�������� �����%����(�1�<�2�)�0�.�4�%�����$�#��'��"���!��"�-�(��'��� �+�:�A�<�8�9�5�5�3�.�+�2�$�1�-�4��g����!��e
�[�e
�P
�;��
�+�|�$��
��$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

if you don't want to be vaporized in a nuclear explosion, i simply have to become nuclear myself… i am atomic