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

�

���g;����ddlmZddlZddlmZddlmZddlmZddlmZddlmZddl	m
Z
dd	l	mZdd
l	mZddl	m
Z
ddl	mZd
dlmZd
dlmZd
dlmZd
dlmZd
dlmZd
dlmZddlmZddlmZer6ddlmZddlmZddlm Z ddlm!Z!ddl"m#Z#ddl"m$Z$ddl"m%Z%ddl&m'Z'ddl(m)Z)Gd �d!e�Z*eed"�						d%d#��Z+eed"�d&d$��Z,y)'�)�annotationsN)�Any)�Dict)�Optional)�
TYPE_CHECKING)�Union)�cast)�Computed)�JSON)�schema)�sql�)�alter_table)�
ColumnName)�format_column_name)�format_table_name)�RenameTable)�DefaultImpl�)�util)�compiles)�	Inspector)�DDLCompiler)�Cast)�
ClauseElement)�Column)�
Constraint)�Table)�
TypeEngine)�BatchOperationsImplc���eZdZdZdZ					dd�Zd
d�Zd
d�Z										dd�Z				dd�Z									dd�Z
	d					d�fd	�
Z								dd
�Zd�Z
�xZS)�
SQLiteImpl�sqliteFc�h�|jD]�}|ddk(r�|dd}t|jtj�r0t|jj
tj�ryt|jt�s��|jjs��y|ddvs��yy)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.

        r�
add_columnrT)�create_index�
drop_indexF)
�batch�
isinstance�server_defaultr�
DefaultClause�argr
rr
�	persisted)�self�batch_op�op�cols    �A/opt/hc_python/lib/python3.12/site-packages/alembic/ddl/sqlite.py�requires_recreate_in_batchz%SQLiteImpl.requires_recreate_in_batch1s����.�.�B��!�u��$���e�A�h����&�&��(<�(<�� ��!3�!3�!7�!7��9J�9J�K���s�1�1�8�<��*�*�4�4���A��<�<��!��c��|j�td��|j|�rtjd�yy)N��No support for ALTER of constraints in SQLite dialect. Please refer to the batch mode feature which allows for SQLite migrations using a copy-and-move strategy.z�Skipping unsupported ALTER for creation of implicit constraint. Please refer to the batch mode feature which allows for SQLite migrations using a copy-and-move strategy.)�_create_rule�NotImplementedErrorr�warn�r.�consts  r2�add_constraintzSQLiteImpl.add_constraintMsJ�����%�%�D��
�
�
�
��
%��I�I�D�
�&r4c�2�|j�td��y)Nr6)r7r8r:s  r2�drop_constraintzSQLiteImpl.drop_constraint^s&�����%�%�D��
�&r4c���|�.tjdd|�}tjdd|�}|�.tjdd|�}tjdd|�}||k7S)Nz
^\((.+)\)$z\1z^\"?'(.+)'\"?$)�re�sub)r.�inspector_column�metadata_column�rendered_metadata_default�rendered_inspector_defaults     r2�compare_server_defaultz!SQLiteImpl.compare_server_defaultfs���%�0�(*����u�&?�)�%�)+���!�5�*C�)�%�&�1�)+����u�&@�*�&�*,���!�5�*D�*�&�*�-F�F�Fr4c��|sytjd|�rytjd|�rytjd|�ryy)aDetermine if a server default is a SQL expression or a constant.

        There are too many assertions that expect server defaults to round-trip
        identically without parenthesis added so we will add parens only in
        very specific cases.

        Fz	^[0-9\.]$z^'.+'$z^\(.+\)$T)r@�match)r.�exprs  r2�-_guess_if_default_is_unparenthesized_sql_exprz8SQLiteImpl._guess_if_default_is_unparenthesized_sql_expr�s@����
�X�X�l�D�
)��
�X�X�i��
&��
�X�X�k�4�
(��r4c�`�|j|jdd��r
d|d�d�|d<yy)N�default�(�))rJ�get)r.�	inspector�table�column_infos    r2�autogen_column_reflectz!SQLiteImpl.autogen_column_reflect�s9���=�=��O�O�I�t�,�
�0;�9�/E�%G�K�	�"�
r4c�^��t�|�|fd|i|��}|r|j|�rd|�d�}|S)N�is_server_defaultrMrN)�super�render_ddl_sql_exprrJ)r.rIrU�kw�str_expr�	__class__s     �r2rWzSQLiteImpl.render_ddl_sql_expr�sG���
�7�.��
�$5�
�9;�
��

��B�B�8�L�!)�+�H��r4c��|jj|jur$t|t�st	|d|�|d<yyy)NrI)�type�_type_affinityr)rr	)r.�existing�existing_transfer�new_types    r2�cast_for_batch_migratez!SQLiteImpl.cast_for_batch_migrate�sK��
�M�M�(�(��0G�0G�G��x��.�(,�!�&�)�8�)��f�%�/�
Hr4c�(�|j||�y)N)�_skip_functional_indexes)r.�conn_unique_constraints�conn_indexes�metadata_unique_constraints�metadata_indexess     r2�correct_for_autogen_constraintsz*SQLiteImpl.correct_for_autogen_constraints�s��	
�%�%�&6��Er4)r/r �return�bool)r;r)
rB�Column[Any]rCrkrD�
Optional[str]rErlrirj)rIrlrirj)rPrrQrrRzDict[str, Any]ri�None)F)rIrrUrjri�str)r^rkr_z"Dict[str, Union[TypeEngine, Cast]]r`rrirm)�__name__�
__module__�__qualname__�__dialect__�transactional_ddlr3r<r>rFrJrSrWrarh�
__classcell__)rZs@r2r"r")s����K�����+��	
��8�"�G�%�G�%�G�$1�	G�
%2�G�
�
G�6�!��	
��*H��H��H�$�	H�

�H�>C��!��6:��	�� ���>���	�

��Fr4r"r#c�x�t||j|j��dt||jd���S)Nz RENAME TO )r�
table_namerr�new_table_name��element�compilerrXs   r2�visit_rename_tabler{�s6��
	�H�g�0�0�'�.�.�A��(�G�$:�$:�D�A��r4c��t||j|j��dt||j��dt||j
���S)Nz RENAME COLUMN z TO )rrvrr�column_name�newnamerxs   r2�visit_column_namer�sB��	�H�g�0�0�'�.�.�A��8�W�%8�%8�9��8�W�_�_�5��r4)ryrrzrrirn)ryrrzrrirn)-�
__future__rr@�typingrrrrr�
sqlalchemyr	r
rrr
�baserrrrr�implr�r�util.sqla_compatr�sqlalchemy.engine.reflectionr�sqlalchemy.sql.compilerr�sqlalchemy.sql.elementsrr�sqlalchemy.sql.schemarrr�sqlalchemy.sql.type_apir�operations.batchr r"r{r�r4r2�<module>r�s���#�	���� ���������$�#����'��6�3�,�5�,�0�+�2�6�_F��_F�D
�+�x� ��
��$/����!��
�*�h��� �r4

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