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__/impl.cpython-312.pyc

�

���g�u����UddlmZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	ddlm
Z
dd	lmZdd
lmZddlm
Z
ddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!dd l!m"Z"erxdd!lm#Z#dd"lm$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/m1Z1dd+l2m3Z3dd,l2m4Z4dd-l2m5Z5dd.l2m6Z6dd/l7m8Z8dd0l9m:Z:dd1lm;Z;dd2l<m=Z=dd3l>m?Z?dd4l>m@Z@ej�eB�ZCGd5�d6eD�ZEiZFd7eGd8<Gd9�d:eE�;�ZHGd<�d=e�ZI								d?d>�ZJy)@�)�annotationsN)�Any)�Callable)�Dict)�Iterable)�List)�Mapping)�
NamedTuple)�Optional)�Sequence)�Set)�Tuple)�Type)�
TYPE_CHECKING)�Union)�cast)�Column)�MetaData)�PrimaryKeyConstraint��schema)�String)�Table)�text�)�_autogen)�base)�_constraint_sig)�ComparisonResult�)�util)�sqla_compat)�Literal)�TextIO)�
Connection)�Dialect)�CursorResult)�	Inspector)�
ClauseElement)�
Executable)�
ColumnElement)�quoted_name)�
Constraint)�ForeignKeyConstraint)�Index)�UniqueConstraint)�TableClause)�
TypeEngine)�_ServerDefault)�AutogenContext)�ApplyBatchImpl)�BatchOperationsImplc� �eZdZ						dd�Zy)�ImplMetac�V�tj||||�}d|vr|t|d<|S)N�__dialect__)�type�__init__�_impls)�cls�	classname�bases�dict_�newtypes     �?/opt/hc_python/lib/python3.12/site-packages/alembic/ddl/impl.pyr<zImplMeta.__init__Cs4���-�-��Y��u�=���E�!�+.�F�5��'�(���N)r?�strr@zTuple[Type[DefaultImpl]]rA�Dict[str, Any])�__name__�
__module__�__qualname__r<�rDrCr8r8Bs#��	��	�(�	��		rDr8zDict[str, Type[DefaultImpl]]r=c��eZdZUdZdZdZdZddhfZded<d	Z	d
ed<dZ
d
ed<														d>d�Zed?d��Z
d@d�Z										dAd�Z				dBd�Z						dCd�ZedDd��Zddej*�f									dEd�Z	dF					dGd�Z												dH																															dId�Z	dF							dJd�Z	dF							dKd�ZdLd�ZdMd�Z	dF							dNd�ZdOd�ZdOd �ZdPd!�Z dQd"�Z!dQd#�Z"dRd$�Z#dPd%�Z$	dS							dTd&�Z%dUd'�Z&						dVd(�Z'						dWd)�Z(						dXd*�Z)d+�Z*										dYd,�Z+d-�Z,	dZ							d[d.�Z-d\d/�Z.						d]d0�Z/d1�Z0d^d2�Z1d^d3�Z2d^d4�Z3						d_d5�Z4d6�Z5						d`d7�Z6						dad8�Z7						dad9�Z8						dbd:�Z9						dcd;�Z:d<�Z;						ddd=�Z<y)e�DefaultImpla�Provide the entrypoint for major migration operations,
    including database-specific behavioral variances.

    While individual SQL/DDL constructs already provide
    for database-specific implementations, variances here
    allow for entirely different sequences of operations
    to take place for a particular migration, such as
    SQL Server's special 'IDENTITY INSERT' step for
    bulk inserts.

    �defaultF�;�NUMERIC�DECIMALzTuple[Set[str], ...]�
type_synonymsrJz
Sequence[str]�type_arg_extract)�order�on_nullzTuple[str, ...]�identity_attrs_ignorec���||_||_||_|jdd�|_||_i|_||_|�||_|jr"|jstjd��yy)N�
literal_bindsFz3Can't use literal_binds setting without as_sql mode)�dialect�
connection�as_sql�getrW�
output_buffer�memo�context_opts�transactional_ddlr!�CommandError)�selfrXrYrZr_r\r^s       rCr<zDefaultImpl.__init__ks������$������)�-�-�o�u�E���*�����	�(����(�%6�D�"�����;�;��'�'�I����rDc�(�t|jS�N)r=�name)r>rXs  rC�get_by_dialectzDefaultImpl.get_by_dialect�s���g�l�l�#�#rDc��|j�J�|jj|dz�|jj�y)Nz

)r\�write�flush)rars  rC�
static_outputzDefaultImpl.static_output�s>���!�!�-�-�-���� � ����/���� � �"rDc
��t|t�tdtd�d��|��}|r|j	td|�d����|S)a�Generate a :class:`.Table` object which will be used as the
        structure for the Alembic version table.

        Third party dialects may override this hook to provide an alternate
        structure for this :class:`.Table`; requirements are only that it
        be named based on the ``version_table`` parameter and contains
        at least a single string-holding column named ``version_num``.

        .. versionadded:: 1.14

        �version_num� F)�nullabler�_pkc)rd)rrrr�append_constraintr)ra�
version_table�version_table_schema�version_table_pk�kw�vts      rC�version_table_implzDefaultImpl.version_table_impl�sW��&���J��=�&��*�u�=�'�	
���� � �$�!�=�/��(>��
��	rDc��y)z�Return True if the given :class:`.BatchOperationsImpl`
        would need the table to be recreated and copied in order to
        proceed.

        Normally, only returns True on SQLite when operations other
        than add_column are present.

        FrJ)ra�batch_ops  rC�requires_recreate_in_batchz&DefaultImpl.requires_recreate_in_batch�s��rDc��y)z�perform any operations needed on a table before a new
        one is created to replace it in batch mode.

        the PG dialect uses this to drop constraints on the table
        before the new one uses those same names.

        NrJ)ra�
batch_impl�tables   rC�prep_table_for_batchz DefaultImpl.prep_table_for_batch���rDc��|jSrc)rY�ras rC�bindzDefaultImpl.bind�s�����rDNc��t|t�rt|�}|jr�|�|rt	d��|j
r)t|tj�stddi��}ni}trt|t�sJ�|jd	d|ji|��}|jt|�jdd�j�|j z�y|j"}|�J�|r|j$d	i|��}|r
|�t	d��|r|j'||�S|j'||�S)
Nz&SQL parameters not allowed with as_sqlrWT)�compile_kwargsrX�	z    z2Can't send params and multiparams at the same timerJ)�
isinstancerErrZ�	TypeErrorrWr�
DDLElement�dictrr)�compilerXri�replace�strip�command_terminatorrY�execution_options�execute)ra�	constructr��multiparams�params�
compile_kw�compiled�conns        rC�_execzDefaultImpl._exec�sA���i��%��Y��I��;�;��&�&�� H�I�I��!�!�*��6�,�,�+�"�/�4�1H�I�
��
��!�)�]�;�;�;�(�y�(�(�L����L��L�H�����H�
�%�%�d�F�3�9�9�;��)�)�*�
���?�?�D��#�#�#� �-�t�-�-�B�0A�B���+�1��H�����|�|�I�{�;�;��|�|�I�v�6�6rDc�(�|j||�yrc)r�)ra�sqlr�s   rCr�zDefaultImpl.execute�s��
	
�
�
�3�)�*rDc��|�|�tjdd��|�,|jtj|||||||
|
���|dur�i}tj||�rtj}n<tj||�rtj}||d<ntj}|j||||f||||
|
d�|���|�,|jtj|||||||
|
���|	dur,|jtj|||	||||
|
���|�,|jtj|||||||
���yy)NzBautoincrement and existing_autoincrement only make sense for MySQL�)�
stacklevel)r�
existing_type�existing_server_default�existing_nullable�existing_commentF�impl)rr�r�r�)r!�warnr�r�ColumnNullabler"�_server_default_is_computed�ComputedColumnDefault�_server_default_is_identity�IdentityColumnDefault�
ColumnDefault�
ColumnType�
ColumnComment�
ColumnName)ra�
table_name�column_namerm�server_defaultrd�type_r�
autoincrement�commentr�r�r�r��existing_autoincrementrs�cls_s                 rC�alter_columnzDefaultImpl.alter_columns���$�$�(>�(J��I�I�,��
�
���J�J��#�#����!�"/�,C�&7�%5�	�
���&��B��6�6�� 7���1�1���8�8�� 7���1�1��!��6�
��)�)���J�J����"�
�"�"/�,C�&7�%5�
��
�
����J�J�������!�"/�,C�&7�%5�	�
��%���J�J��"�"����!�"/�,C�&7�%5�	�
����J�J�������!�"/�,C�&7��

�rDc�R�|jtj|||���y�Nr)r�r�	AddColumn)rar��columnrs    rC�
add_columnzDefaultImpl.add_columnps��	
�
�
�4�>�>�*�f�V�D�ErDc�R�|jtj|||���yr�)r�r�
DropColumn)rar�r�rrss     rC�drop_columnzDefaultImpl.drop_columnxs��	
�
�
�4�?�?�:�v�f�E�FrDc��|j�|j|�r%|jtj|��yyrc)�_create_ruler�r�
AddConstraint�ra�consts  rC�add_constraintzDefaultImpl.add_constraint�s8�����%��);�);�D�)A��J�J�v�+�+�E�2�3�*BrDc�L�|jtj|��yrc)r�r�DropConstraintr�s  rC�drop_constraintzDefaultImpl.drop_constraint�s���
�
�6�(�(��/�0rDc�R�|jtj|||���yr�)r�r�RenameTable)ra�old_table_name�new_table_namers    rC�rename_tablezDefaultImpl.rename_table�s"��	
�
�
����^�^�F�K�	
rDc�d�|jj||jd|��|jt	j
|fi|���|jj
||jd|��|jD]&}|jt	j|���(|jjxr|jj}|j}|r|r|j|�|jD]%}|j}|s�|s�|j|��'y�NF)�
checkfirst�_ddl_runner)�dispatch�
before_createrYr�r�CreateTable�after_create�indexes�CreateIndexrX�supports_comments�inline_commentsr��create_table_comment�columns�create_column_comment)rar{rs�index�with_commentr�r�s       rC�create_tablezDefaultImpl.create_table�s���
���$�$��4�?�?�u�$�	%�	
�	
�
�
�6�%�%�e�2�r�2�3�
���#�#��4�?�?�u�$�	$�	
��]�]�E��J�J�v�)�)�%�0�1�#�
�L�L�*�*�O�4�<�<�3O�3O�/O�	��-�-���|��%�%�e�,��m�m�F��n�n�G��<��*�*�6�2�$rDc���|jj||jd|��|jt	j
|fi|���|jj
||jd|��yr�)r��before_droprYr�r�	DropTable�
after_drop)rar{rss   rC�
drop_tablezDefaultImpl.drop_table�sh��
���"�"��4�?�?�u�$�	#�	
�	
�
�
�6�#�#�E�0�R�0�1�
���!�!��4�?�?�u�$�	"�	
rDc�N�|jtj|fi|���yrc)r�rr��rar�rss   rC�create_indexzDefaultImpl.create_index�s���
�
�6�%�%�e�2�r�2�3rDc�L�|jtj|��yrc)r�r�SetTableComment�rar{s  rCr�z DefaultImpl.create_table_comment�s���
�
�6�)�)�%�0�1rDc�L�|jtj|��yrc)r�r�DropTableCommentr�s  rC�drop_table_commentzDefaultImpl.drop_table_comment�s���
�
�6�*�*�5�1�2rDc�L�|jtj|��yrc)r�r�SetColumnComment)rar�s  rCr�z!DefaultImpl.create_column_comment�s���
�
�6�*�*�6�2�3rDc�N�|jtj|fi|���yrc)r�r�	DropIndexr�s   rC�
drop_indexzDefaultImpl.drop_index�s���
�
�6�#�#�E�0�R�0�1rDc���t|t�std��|rt|dt�std��|jr�|D]�}|j|j
�j�jdi|j�D��cic]Q\}}|t|tj�s/tj|||j|j��n|��Sc}}�����y|rw|r0|j|j
�j�|��y|D]?}|j|j
�j�jdi|����Ayycc}}w)Nz
List expectedrzList of dictionaries expected)r�)r�rJ)r��listr�r�rZr��insert�inline�values�itemsr"�_literal_bindparam�cr;)rar{�rows�multiinsert�row�k�vs       rC�bulk_insertzDefaultImpl.bulk_insert�sI���$��%��O�,�,�
�*�T�!�W�d�3��;�<�<��;�;����
�
��E�L�L�N��V�X��V��),�	�	���)4���1��(2�$%�{�'E�'E�("�!,� >� >�$%�q�����
���!"�&'�'�)4�����(���J�J�u�|�|�~�4�4�6�D�J�I�#���
�
�#A�5�<�<�>�#8�#8�#:�#A�#A�#H�C�#H�I� $�	��s�AE2c�R�|jjj|j�j	�}tjd|�}g}d}|D],}tjd|�r|}�|j|��.t|d|ddgi�}|r�tjd|�D]o}d|vr@|jd�\}	}
|
j�|j|	j�<�G|jj|j���q|S)Nz[\w\-_]+|\(.+?\)z^\(.*\)$rrz[^(),]+�=)rX�
type_compiler�processr;�lower�re�findall�match�append�Params�splitr��kwargs�args)rar��
definition�tokens�term_tokens�
paren_term�tokenr��term�key�vals           rC�_tokenize_column_typez!DefaultImpl._tokenize_column_type�s����\�\�/�/�7�7����D�J�J�L�
��J�J�':�J�G��!#���
��E��x�x��U�+�"�
��"�"�5�)�	���A���A�B���R�@����
�
�9�j�9���$�;�#�z�z�#��H�C��14����F�M�M�#�)�)�+�.��K�K�&�&�t�z�z�|�4�:��
rDc	���|j|jk(ry|jD��cgc] }|D�chc]}|j���c}��"}}}dj|jg|jz�}dj|jg|jz�}|D]>}||hj|�s(|j|jhj|�s�>yycc}wcc}}w)NT� F)�token0rQr��joinr	�issubset)ra�inspector_params�metadata_params�batch�t�synonyms�inspector_all_terms�metadata_all_termss        rC�_column_types_matchzDefaultImpl._column_types_matchs����"�"�o�&<�&<�<��<@�<N�<N�O�<N�5��.��1�Q�W�W�Y��.�<N��O�!�h�h�
�
$�
$�%�(8�(?�(?�?�
��!�X�X�
�
#�
#�$��'=�'=�=�
���E�#�%7�8�A�A�%�H� �'�'��&�&�M��h�u�o�M�����/��Os�	C-�C(�
C-�(C-c��t|j�t|j�k(r|j|jk7ryt|j�t|j�k(r|j|jk7rydj|j�j	�}dj|j�j	�}|j
D]Y}t
j||�}t
j||�}|s�2|s�5|jd�|jd�k7s�Yyy)aWe want to compare column parameters. However, we only want
        to compare parameters that are set. If they both have `collation`,
        we want to make sure they are the same. However, if only one
        specifies it, dont flag it for being less specific
        FrrT)	�lenr	rrr�rRr�search�group)ra�inspected_params�meta_params�insp�meta�reg�mi�mms        rC�_column_args_matchzDefaultImpl._column_args_match%s��
��"�"�#�s�+;�+B�+B�'C�C��"�"�&6�&=�&=�=��
�� � �!�S�)9�)>�)>�%?�?�� � �$4�$9�$9�9���x�x�(�/�/�0�6�6�8���x�x��*�*�+�1�1�3���(�(�C����3��%�B����3��%�B��b�R�X�X�a�[�B�H�H�Q�K�7��)�rDc��|j|�}|j|�}|j||�sy|j||�syy)z�Returns True if there ARE differences between the types of the two
        columns. Takes impl.type_synonyms into account between retrospected
        and metadata types
        TF)rrr))ra�inspector_column�metadata_columnrrs     rC�compare_typezDefaultImpl.compare_typeFsQ�� �5�5�6F�G���4�4�_�E���'�'�(8�/�J���&�&�'7��I��rDc��||k7SrcrJ)rar+r,�rendered_metadata_default�rendered_inspector_defaults     rC�compare_server_defaultz"DefaultImpl.compare_server_defaultVs��*�-F�F�FrDc��yrcrJ)ra�conn_uniques�conn_indexes�metadata_unique_constraints�metadata_indexess     rC�correct_for_autogen_constraintsz+DefaultImpl.correct_for_autogen_constraints_s��	
rDc�n�|jj|jurt|d|�|d<yy)N�expr)r;�_type_affinityr)ra�existing�existing_transfer�new_types    rC�cast_for_batch_migratez"DefaultImpl.cast_for_batch_migratehs:���=�=�'�'�x�/F�/F�F�(,�!�&�)�8�)��f�%�GrDc�X�ddd�}t|j|j|���S)zdRender a SQL expression that is typically a server default,
        index expression, etc.

        TF)rW�
include_table)rXr�)rEr�rX)rar9�is_server_defaultrsr�s     rC�render_ddl_sql_exprzDefaultImpl.render_ddl_sql_exprns/��(,�e�D�
���L�L����j�L�I�
�	
rDc��|jSrc)�autogen_column_reflect)ra�	inspectors  rC�_compat_autogen_column_reflectz*DefaultImpl._compat_autogen_column_reflect|s���*�*�*rDc��yrcrJ)ra�conn_fks�metadata_fkss   rC�correct_for_autogen_foreignkeysz+DefaultImpl.correct_for_autogen_foreignkeyss��
	
rDc��y)z�A hook that is attached to the 'column_reflect' event for when
        a Table is reflected from the database during the autogenerate
        process.

        Dialects can elect to modify the information gathered here.

        NrJ)rarEr{�column_infos    rCrDz"DefaultImpl.autogen_column_reflect�r}rDc��y)z�A hook called when :meth:`.EnvironmentContext.run_migrations`
        is called.

        Implementations can set up per-migration-run state here.

        NrJrs rC�start_migrationszDefaultImpl.start_migrations�r}rDc�@�|jd|jz�y)z�Emit the string ``BEGIN``, or the backend-specific
        equivalent, on the current connection context.

        This is used in offline mode and typically
        via :meth:`.EnvironmentContext.begin_transaction`.

        �BEGINN�rir�rs rC�
emit_beginzDefaultImpl.emit_begin�s��	
���7�T�%<�%<�<�=rDc�@�|jd|jz�y)z�Emit the string ``COMMIT``, or the backend-specific
        equivalent, on the current connection context.

        This is used in offline mode and typically
        via :meth:`.EnvironmentContext.begin_transaction`.

        �COMMITNrQrs rC�emit_commitzDefaultImpl.emit_commit�s��	
���8�d�&=�&=�=�>rDc��y�NFrJ)ra�type_obj�autogen_contexts   rC�render_typezDefaultImpl.render_type�s��rDc�T�t||tj�dh��\}}t|dd�}t|dd�}t	|�t	|�k7r|jd�|j
|j�||t	|�xst	|�t	|�k7fS)N�always)�skip)�_compare_identity_optionsr�Identity�getattr�bool�add�difference_updaterU)ra�metadata_identity�inspector_identity�diff�ignored�meta_always�inspector_alwayss       rC�_compare_identity_defaultz%DefaultImpl._compare_identity_default�s���2����O�O����	
�
��g��/��4�@��"�#5�x��F������%5� 6�6��H�H�X�����t�9�9�:�

����J�M�$�0�1�T�:L�5M�M�

�	
rDc�r�t|j�}t|j�}||k7rd|�d|��Sy)Nzunique=z to unique=)ra�unique)ra�metadata_index�reflected_index�conn_unique�meta_uniques     rC�_compare_index_uniquez!DefaultImpl._compare_index_unique�sB���?�1�1�2���>�0�0�1���+�%��[�M��[�M�B�B�rDc�2�tjd||fi|��S)NT�r�from_constraint�ra�
constraint�optss   rC�_create_metadata_constraint_sigz+DefaultImpl._create_metadata_constraint_sig�s���.�.�t�T�:�N��N�NrDc�2�tjd||fi|��SrWrsrus   rC� _create_reflected_constraint_sigz,DefaultImpl._create_reflected_constraint_sig�s���.�.�u�d�J�O�$�O�OrDc�:�g}|j||�}|r|j|�|j|�}|j|�}t	j
|�sJ�t	j
|�sJ�||fD]/}|js�tjd|j��1|j|jk7r+|jd|j�d|j���|rtj|�Stj�S)z�Compare two indexes by comparing the signature generated by
        ``create_index_sig``.

        This method returns a ``ComparisonResult``.
        z�Generating approximate signature for index %s. The dialect implementation should either skip expression indexes or provide a custom implementation.�expression � to )rqrrxrzr�is_index_sig�has_expressions�log�warningr��column_namesr�	Different�Equal)rarmrn�msg�
unique_msg�m_sig�r_sig�sigs        rC�compare_indexeszDefaultImpl.compare_indexes�s�����/�/��O�
�
���J�J�z�"��4�4�^�D���5�5�o�F���$�$�U�+�+�+��$�$�U�+�+�+��%�<�C��"�"����:��I�I�� �����!3�!3�3��J�J��e�0�0�1��e�6H�6H�5I�J�
��#�-�-�c�2�2�#�)�)�+�+rDc���|j|�}|j|�}|j}|j}||k7rtjd|�d|���Stj
�S)aCompare two unique constraints by comparing the two signatures.

        The arguments are two tuples that contain the unique constraint and
        the signatures generated by ``create_unique_constraint_sig``.

        This method returns a ``ComparisonResult``.
        r|r})rxrz�unnamedrr�r�)ra�metadata_constraint�reflected_constraint�metadata_tup�
reflected_tup�meta_sig�conn_sigs       rC�compare_unique_constraintz%DefaultImpl.compare_unique_constraints����;�;��
���=�=� �
�
� �'�'�� �(�(���x��#�-�-��h�Z�t�H�:�6��
�$�)�)�+�+rDc
�T�|D�cic]}|j|��}}t|�D]{}|j|vr�tj|�}|s�*t	j
d|j�d|j�dtj�d��|j|��}ycc}w)Nz@autogenerate skipping metadata-specified expression-based index z
; dialect z under SQLAlchemy z6 can't reflect these indexes so they can't be compared)	rdr�r"�is_expression_indexr!r�r:�sqlalchemy_version�discard)rar6r4r��conn_indexes_by_name�idx�iexs       rC�_skip_functional_indexesz$DefaultImpl._skip_functional_indexes's���3?�@�<�a�����	�<��@��(�)�C��x�x�/�/���1�1�#�6�C���	�	�.��x�x�l�*�T�-=�-=�,@�A"�"-�"@�"@�!A�BF�F��!�(�(��-�*�� As�B%c�&�|jdi�S)N�dialect_options)r[)ra�reflected_object�kinds   rC� adjust_reflected_dialect_optionsz,DefaultImpl.adjust_reflected_dialect_options8s�� �#�#�$5�r�:�:rD)rXr&rY�Optional[Connection]rZrar_�Optional[bool]r\zOptional[TextIO]r^rF�return�None)rXr&r�zType[DefaultImpl])rrEr�r�)
rprErq�
Optional[str]rrrarsrr�r)rwr6r�ra)rzr5r{rr�r�)r�r�)
r��Union[Executable, str]r�zOptional[Mapping[str, Any]]r�z%Optional[Sequence[Mapping[str, Any]]]r��Mapping[str, Any]r�zOptional[CursorResult]rc)r�r�r�zOptional[dict[str, Any]]r�r�)NFNNNNFNNNNN) r�rEr�rErmr�r�z%Union[_ServerDefault, Literal[False]]rdr�r��Optional[TypeEngine]rr�r�r�r�z$Optional[Union[str, Literal[False]]]r�r�r�r�r�zOptional[_ServerDefault]r�r�r�r�rsrr�r�)r�rEr��Column[Any]r�!Optional[Union[str, quoted_name]]r�r�)r�rEr�r�rr�r�r�)r�rr�r�)r�r-r�r�)r�rEr�zUnion[str, quoted_name]rr�r�r�)r{rrsrr�r�)r�r/rsrr�r�)r{rr�r�)r�zColumnElement[Any]r�r�)T)r{zUnion[TableClause, Table]r�z
List[dict]r�rar�r�)r�rr�r)rrrrr�ra)r"rr#rr�ra)r+r�r,rr�ra)
r3�Set[UniqueConstraint]r4�
Set[Index]r5r�r6r�r�r�)F)r9r)rArarsrr�rE)rEr(r�r)rH�Set[ForeignKeyConstraint]rIr�r�r�)r�r�)rXr2rYr4r�zUnion[str, Literal[False]])rmr/rnr/r�r�)rvz_autogen._Crwrr�z_constraint_sig[_autogen._C])rmr/rnr/r�r)r�r0r�r0r�r)r�rFr�rEr�rF)=rGrHrI�__doc__r:r_r�rQ�__annotations__rRrUr<�classmethodrerirurxr|�propertyr�r!�
immutabledictr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr)r-r1r7r>rBrFrJrDrNrRrUrZrjrqrxrzr�r�r�r�rJrDrCrLrLRsY��
��K�����,5�y�+A�*C�M�'�C�&(��m�(�
.B��?�A����)���	�
*��(�
�%��
��4�$��$�#�
 �� �,�	 �
� ��
 �
� �D�+��	
��	�(�	�16�	�	
�	�����:>�=A�$6�D�$6�$6�$8�+7�)�+7�7�+7�;�	+7�
"�+7�
 �
+7�`7;�+�
#�+�4�+�
�	+�$(�@E�"�&*� $�(,�8=�*.�.2�<@�,0�15�n��n��n�!�	n�
>�n��
n�$�n��n�&�n�6�n�(�n�,�n�":�n�*�n�!/�n� �!n�"
�#n�h59�	F��F��F�2�	F�

�F�!%�	G��G��G��	G�
�
G�4�1�59�	
��
�0�
�2�	
�

�
�3�.
�4�2�3�4�2�!�	$J�(�$J��$J��	$J�

�$J�L&�P� &��9?��	
��,� &��5;��	
��B� +��>D��	
�� G�
�+�
�!�
�&;�	
�
%�
�
�

��>C�
�!�
�6:�
�JM�
�	�
�+�
�+�
�0�
�
�	
���>�?��"��5C��	#��

�8�#��6;��	��O�%�O�/2�O�	%�O�
P�%�P�/2�P�	%�P�
),��),��),�
�	),�V,�-�,�/�,�
�	,�8.�";� .�;�69�;�	�;rDrL)�	metaclassc�6�eZdZUded<ded<ded<ded<y)	rrErz	List[str]r	rzDict[str, str]rN)rGrHrIr�rJrDrCrr>s���K���
�O��rDrc
�����tj|�}tj|�}t��t��								d���fd�}|||tj|�t|�j|��tjrDt|d�sJ�|t
|di�t
|di�|jt
|di����fS)Nc���t|�j�
�D]c}|j|�}|j|�}||k7s�+|j|�}||k(r�	j|��S�j|��eyrc)�set�
differencer[rb)�	meta_dict�	insp_dict�default_dict�attrs�attr�
meta_value�
insp_value�
default_valuerf�ignored_attrr]s        ���rC�check_dictsz._compare_identity_options.<locals>.check_dictsTss�����J�)�)�$�/�D�"���t�,�J�"���t�,�J��Z�'� ,� 0� 0�� 6�
���.� �$�$�T�*��H�H�T�N�0rD�dialect_kwargs)r�r�r�r�r�r�r�z
Iterable[str])r"�_get_identity_options_dictr��union�identity_has_dialect_kwargs�hasattrr`r�)	�metadata_io�inspector_io�
default_ior]�meta_d�insp_dr�rfr�s	   `   @@rCr^r^Es�����
3�
3�K�
@�F�
�
3�
3�L�
A�F��5�D��5�L�#�$�#�$�#�(�#��	#� ����.�.�z�:��F����&�!�	��.�.��z�#3�4�4�4�	��K�!1�2�6��L�"2�B�7��%�%��L�"2�B�7�		
����rD)r��-Union[schema.Identity, schema.Sequence, None]r�r�r�z'Union[schema.Identity, schema.Sequence]r]zSet[str])K�
__future__r�loggingr�typingrrrrrr	r
rrr
rrrr�
sqlalchemyrrrrrrrr�rrrrr!r"r#r$�sqlalchemy.enginer%r&�sqlalchemy.engine.cursorr'�sqlalchemy.engine.reflectionr(�sqlalchemy.sqlr)r*�sqlalchemy.sql.elementsr+r,�sqlalchemy.sql.schemar-r.r/r0�sqlalchemy.sql.selectabler1�sqlalchemy.sql.type_apir2r3�autogenerate.apir4�operations.batchr5r6�	getLoggerrGr�r;r8r=r�rLrr^rJrDrC�<module>r�s��#��	������������� �����+�������8�:������,�)�5�6�,�)�5�3�0�:�+�6�5�2�$�1�1�6��g����!��
�t�
�(*��$�)�i;�H�i;�X�Z��0�>�0�?�0�8�0��	0rD

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