� J�g����ddlmZddlZddlmZddlmZddlmZddlmZddlmZddl m Z dd l m Z dd l m Z dd l m Z d d lmZd dlmZd dlmZd dlmZddlmZddlmZer6ddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddl#m$Z$ddl%m&Z&Gd�de��Z'eed��d'd&���Z(dS)(�)� annotationsN)�Any)�Dict)�Optional)� TYPE_CHECKING)�Union)�cast)�JSON)�schema)�sql�)� alter_table)�format_table_name)� RenameTable)� DefaultImpl�)�util)�compiles)� Inspector)� DDLCompiler)�Cast)� ClauseElement)�Column)� Constraint)�Table)� TypeEngine)�BatchOperationsImplc�l��eZdZdZdZ d(d�Zd)d �Zd)d �Zd*d�Zd+d�Z d,d�Z d-d.�fd � Z d/d&�Z d'�Z �xZS)0� SQLiteImpl�sqliteF�batch_opr�return�boolc�\�|jD]�}|ddkr�|dd}t|jtj��r't|jjt j��rdSt|jtj j ��r|jj rdS��|ddvrdS��dS)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_columnr T)� create_index� drop_indexF) �batch� isinstance�server_defaultr � DefaultClause�argr rr� sqla_compat�Computed� persisted)�selfr!�op�cols �b/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/alembic/ddl/sqlite.py�requires_recreate_in_batchz%SQLiteImpl.requires_recreate_in_batch.s����.� � �B��!�u� �$�$���e�A�h����&��(<��� � ��!3�!7��9J�K�K� � �4�4��s�1�4�3C�3L�M�M� ��*�4� � �4�4���A��<�<�<��t�t�=��5��constrc��|j�td���|�|��rtjd��dSdS)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�r0r6s r3�add_constraintzSQLiteImpl.add_constraintJsk�� � � %�%�D��� � � � �� %� %� � �I�D� � � � � � � r5c�2�|j�td���dS)Nr8)r9r:r<s r3�drop_constraintzSQLiteImpl.drop_constraint[s+�� � � %�%�D��� � &� %r5�inspector_column� Column[Any]�metadata_column�rendered_metadata_default� Optional[str]�rendered_inspector_defaultc���|�,tjdd|��}tjdd|��}|�,tjdd|��}tjdd|��}||kS)Nz ^\((.+)\)$z\1z^\"?'(.+)'\"?$)�re�sub)r0r@rBrCrEs r3�compare_server_defaultz!SQLiteImpl.compare_server_defaultcs��� %� 0�(*���u�&?�)�)� %�)+��!�5�*C�)�)� %� &� 1�)+���u�&@�*�*� &�*,��!�5�*D�*�*� &�*�-F�F�Fr5�exprc��|sdStjd|��rdStjd|��rdStjd|��rdSdS)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)rG�match)r0rJs r3�-_guess_if_default_is_unparenthesized_sql_exprz8SQLiteImpl._guess_if_default_is_unparenthesized_sql_expr~sa��� ��5� �X�l�D� )� )� ��5� �X�i�� &� &� ��5� �X�k�4� (� (� ��5��4r5� inspectorr�tabler� column_info�Dict[str, Any]�Nonec�z�|�|�dd����rd|d�d�|d<dSdS)N�default�(�))rM�get)r0rNrOrPs r3�autogen_column_reflectz!SQLiteImpl.autogen_column_reflect�s`�� � =� =� �O�O�I�t� ,� ,� � � H� H�0;�9�/E�/E�/E�%G�K� � "� "� "� H� Hr5r�is_server_default�strc �z��t��j|fd|i|��}|r|�|��rd|�d�}|S)NrYrUrV)�super�render_ddl_sql_exprrM)r0rJrY�kw�str_expr� __class__s �r3r]zSQLiteImpl.render_ddl_sql_expr�sm��� /�5�7�7�.� � � �$5� �9;� � �� � ,��B�B�8�L�L� ,� ,�"*���+�H��r5�existing�existing_transfer�"Dict[str, Union[TypeEngine, Cast]]�new_typerc��|jj|jur0t|t��st |d|��|d<dSdSdS)NrJ)�type�_type_affinityr)r r )r0rarbrds r3�cast_for_batch_migratez!SQLiteImpl.cast_for_batch_migrate�s`�� �M� (��0G� G� G��x��.�.� H�)-�!�&�)�8�)�)� �f� %� %� %� H� G� G� Gr5c�2�|�||��dS)N)�_skip_functional_indexes)r0�conn_unique_constraints� conn_indexes�metadata_unique_constraints�metadata_indexess r3�correct_for_autogen_constraintsz*SQLiteImpl.correct_for_autogen_constraints�s!�� �%�%�&6� �E�E�E�E�Er5)r!rr"r#)r6r) r@rArBrArCrDrErDr"r#)rJrDr"r#)rNrrOrrPrQr"rR)F)rJrrYr#r"rZ)rarArbrcrdrr"rR)�__name__� __module__� __qualname__� __dialect__�transactional_ddlr4r=r?rIrMrXr]rhro� __classcell__)r`s@r3rr&s��������K��������8����"����G�G�G�G�6����* H� H� H� H�>C�������� � � � �F�F�F�F�F�F�Fr5rr �elementr�compilerrr"rZc �j�t||j|j���dt||jd����S)Nz RENAME TO )r� table_namer r�new_table_name)rvrwr^s r3�visit_rename_tabler{�s=�� �H�g�0�'�.�A�A�A�A��(�G�$:�D�A�A�A� �r5)rvrrwrr"rZ))� __future__rrG�typingrrrrr� sqlalchemyr r r r �baserrr�implr�r�util.sqla_compatr�sqlalchemy.engine.reflectionr�sqlalchemy.sql.compilerr�sqlalchemy.sql.elementsrr�sqlalchemy.sql.schemarrr�sqlalchemy.sql.type_apir�operations.batchrrr{�r5r3�<module>r�sL��#�"�"�"�"�"� � � � ������������������� � � � � � �������������������������������������#�#�#�#�#�#�������������������'�'�'�'�'�'�� 7�6�6�6�6�6�6�3�3�3�3�3�3�,�,�,�,�,�,�5�5�5�5�5�5�,�,�,�,�,�,�0�0�0�0�0�0�+�+�+�+�+�+�2�2�2�2�2�2�6�6�6�6�6�6�_F�_F�_F�_F�_F��_F�_F�_F�D ��+�x� � ����!� ���r5
Memory