� J�g�C��J�ddlmZddlZddlmZddlmZddlmZddlmZddlm Z ddlm Z d d l m Z d d l mZd d l mZd d l mZd dl mZd dl mZd dl mZd dl mZd dlmZddlmZddlmZddlmZddlmZddlmZer$ddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&d dl m'Z'Gd�d e��Z(Gd!�d"e(��Z)Gd#�d$e��Z*Gd%�d&e��Z+Gd'�d(e+��Z,eed)d*��eed)d*��eed)d*��eed)d*��d+���������Z-ee*d)d*��d@d1���Z.ee,d)d*��dAd2���Z/ee+d)d*��dBd3���Z0dCd=�Z1ee j"d)d*��dDd?���Z2dS)E�)� annotationsN)�Any)�Optional)� TYPE_CHECKING)�Union��schema)�types�)� alter_table)� AlterColumn)� ColumnDefault)� ColumnName)�ColumnNullable)� ColumnType)�format_column_name)�format_server_default)� DefaultImpl�)�util)� sqla_compat)� _is_mariadb)�_is_type_bound)�compiles)�Literal)�MySQLDDLCompiler)�DropConstraint)� Constraint)� TypeEngine)�_ServerDefaultc���eZdZdZdZejddhddhfzZddgZ d,d-�fd#� Zd.�fd&� Z d/d(�Z d)�Z d*�Z d+�Z �xZS)0� MySQLImpl�mysqlF�BOOL�TINYINT�JSON�LONGTEXTzcharacter set ([\w\-_]+)zcollate ([\w\-_]+)N� table_name�str� column_name�nullable�Optional[bool]�server_default�%Union[_ServerDefault, Literal[False]]�name� Optional[str]�type_�Optional[TypeEngine]r � existing_type�existing_server_default�Optional[_ServerDefault]�existing_nullable� autoincrement�existing_autoincrement�comment�$Optional[Union[str, Literal[False]]]�existing_comment�kwr�return�Nonec �z��tj|| ��stj|| ��r#t��j||f||||| || d�|��|�|�|�|n||��rM|�t||||�|n||�|n| �| nd|�|n||dur|n| | �| n| | dur| n|�� � ��dS|�|�| �| durM|�t||||�|n||�|n| �| nd|�|n||dur|n| | �| n| | dur| n|�� � ��dS|dur(|�t||||�����dSdS)N)r+r1r r3r6r-r4TF)r �newnamer+r1�defaultr7r9r) r�_server_default_is_identity�_server_default_is_computed�super� alter_column�$_is_mysql_allowed_functional_default�_exec�MySQLChangeColumn�MySQLModifyColumn�MySQLAlterDefault)�selfr(r*r+r-r/r1r r3r4r6r7r8r9r;r<� __class__s ��a/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/alembic/ddl/mysql.pyrEzMySQLImpl.alter_column3s����$ � 2� �3� � � � � 4� �3� � � � !�E�G�G� ��� �"���+�"3�-�(?� � �� � � � � �t�H�H��&�E�E�M�>� � � � �J�J�!���!�$(�$4�D�D�+�$�/�!�� 1�<�.�-�!%�$)�#4�%�%�-�*��6�6�'��4�)�4�&� �3�$+�%�#7�#7���=M�5��� � � � � �@ � �� ��(��e�#�#� �J�J�!���!�$(�$4�D�D�+�$�/�!�� 1�<�.�-�!%�$)�#4�%�%�-�*��6�6�'��4�)�4�&� �3�$+�%�#7�#7���=M�5��� � � � � �>�5� (� (� �J�J�!�� �^�F���� � � � � �)� (��constrc���t|tj��rt|��rdSt ���|��dS�N)� isinstancer �CheckConstraintrrD�drop_constraint)rKrOrLs �rMrTzMySQLImpl.drop_constraint�sL��� �e�V�3� 4� 4� ���9N�9N� � �F� ������&�&�&�&�&rN�boolc�8�|duo|jtjuo|duSrQ)�_type_affinity�sqltypes�DateTime)rKr1r-s rMrFz.MySQLImpl._is_mysql_allowed_functional_default�s1�� �� � +��$��(9�9� +��d�*� rNc�\�|jjtjur|jr|js |s|dkrdS|r8|jjtjur |�t jdd|��nd}||kS|r8|jjtjur t jdd|��}|d|�d�kS|�r|r�t j d|� ����}t j d|� ����}|r\|sdS|� d��|� d��krdS|� d ��}|� d ��}t jd d |� ����t jd d |� ����kS||kS) Nz'0'Fz^'|'$��'z(.*) (on update.*?)(?:\(\))?$Trr z(.*?)(?:\(\))?$z\1) �typerWrX�Integer� primary_keyr7�re�sub�String�match�lower�group)rK�inspector_column�metadata_column�rendered_metadata_default�rendered_inspector_default�metadata_default� onupdate_ins� onupdate_mets rM�compare_server_defaultz MySQLImpl.compare_server_default�s�� � � /�8�3C� C� C� �,� D�$�2� D�.� D�+�e�3�3��5� &�. K� �%�4��8H�H�H�.�9���x��%?�@�@�@�� '� .�1J�J� J� %�$ K��$�3�x��F�F�!�v�h��4M�N�N� �-�1H�5E�1H�1H�1H�H� H� '� K�,E� K� �8�0�*�0�0�2�2���L��8�0�)�/�/�1�1���L� � B�#� ��4�!�'�'��*�*�l�.@�.@��.C�.C�C�C��4�-9�-?�-?��-B�-B�*�,8�,>�,>�q�,A�,A�)��6�"�E�+E�+K�+K�+M�+M�����"�E�+D�+J�+J�+L�+L���� � .�1J�J� JrNc���t��}t|��D]�}|jr� |jD]�}|j|jkr1|�|��|�|j��nW|jD]C}|j|jkr1|�|��|�|j��n�D|j|vrn����t|��D] }|j|vr|�|���!dSrQ)�set�list�unique�columnsr/�remove�add� foreign_keys) rK�conn_unique_constraints� conn_indexes�metadata_unique_constraints�metadata_indexes�removed�idx�col�fks rM�correct_for_autogen_constraintsz)MySQLImpl.correct_for_autogen_constraints�s3���%�%��� �%�%� � �C��z� �� �{� � ���8�s�x�'�'� �'�'��,�,�,��K�K���)�)�)��E��*���B��w�#�(�*�*�$�+�+�C�0�0�0�� � �C�H�-�-�-���+��8�w�&�&��E�'�� �(�)�)� -� -�C��x�7�"�"� �'�'��,�,�,�� -� -rNc�r���fd�|D��}�fd�|D��}t|���|��D]v}||}||}|j�+|j���dkr|j�d|_|j�+|j���dkr|j�d|_�wdS)Nc�F��i|]}��|��j|��S�)� _create_reflected_constraint_sig�unnamed_no_options��.0r}rKs �rM� <dictcomp>z=MySQLImpl.correct_for_autogen_foreignkeys.<locals>.<dictcomp>#s<��� � � �� � 1� 1�"� 5� 5� H�"� � � rNc�F��i|]}��|��j|��Sr�)�_create_metadata_constraint_sigr�r�s �rMr�z=MySQLImpl.correct_for_autogen_foreignkeys.<locals>.<dictcomp>'s<��� � � �� � 0� 0�� 4� 4� G�� � � rN�restrict�RESTRICT)ro� intersection�ondeleterd�onupdate)rK�conn_fks� metadata_fks�conn_fk_by_sig�metadata_fk_by_sig�sig�mdfk�cnfks` rM�correct_for_autogen_foreignkeysz)MySQLImpl.correct_for_autogen_foreignkeys"s���� � � � �� � � �� � � � �"� � � �� �~�&�&�3�3�4F�G�G� +� +�C�%�c�*�D�!�#�&�D� � �)��M�'�'�)�)�Z�7�7��M�)� *�� �� �)��M�'�'�)�)�Z�7�7��M�)� *�� ��# +� +rN) NFNNNNNNNNFN) r(r)r*r)r+r,r-r.r/r0r1r2r r0r3r2r4r5r6r,r7r,r8r,r9r:r;r0r<rr=r>)rOrr=r>)r1r2r-r.r=rU)�__name__� __module__� __qualname__� __dialect__�transactional_ddlr� type_synonyms�type_arg_extractrErTrFrmr~r�� __classcell__�rLs@rMr"r")s��������K����-� ��� ���1��M�4�5J�K�� $(�@E�"�&*� $�.2�<@�,0�(,�15�8=�*.�q�q�q�q�q�q�q�f'�'�'�'�'�'�  �  �  �  �AK�AK�AK�F#-�#-�#-�J+�+�+�+�+�+�+rNr"c��eZdZdZdS)� MariaDBImpl�mariadbN)r�r�r�r�r�rNrMr�r�@s�������K�K�KrNr�c�$��eZdZ d d �fd � Z�xZS)rJNr/r)r*rAr r r0r=r>c�x��tt|���||���||_||_dS)Nr)rDr �__init__r*rA)rKr/r*rAr rLs �rMr�zMySQLAlterDefault.__init__Es;��� �k�4� � �)�)�$�v�)�>�>�>�&����� � � rNrQ) r/r)r*r)rAr r r0r=r>�r�r�r�r�r�r�s@rMrJrJDsG������� !%� � � � � � � � � � � rNrJc�0��eZdZ dd�fd� Z�xZS)rHNFr/r)r*r r0r@r1r2r+r,rA�/Optional[Union[_ServerDefault, Literal[False]]]r7r9r:r=r>c ���tt|���||���||_||_||_||_||_| |_|�tj d���tj |��|_ dS)NrzDAll MySQL CHANGE/MODIFY COLUMN operations require the existing type.)rDr r�r*r+r@rAr7r9r� CommandErrorrX� to_instancer1) rKr/r*r r@r1r+rAr7r9rLs �rMr�zMySQLChangeColumn.__init__Rs���� �k�4� � �)�)�$�v�)�>�>�>�&��� �� ��� ��� �*����� � �=��#�-��� � �)�%�0�0�� � � rN)NNNNFNF)r/r)r*r)r r0r@r0r1r2r+r,rAr�r7r,r9r:r=r>r�r�s@rMrHrHQsY������� !%�!%�&*�#'�CH�(,�8=�1�1�1�1�1�1�1�1�1�1�1rNrHc��eZdZdS)rIN)r�r�r�r�rNrMrIrIns�������DrNrIr#r�c � �td���)Nz9Individual alter column constructs not supported by MySQL)�NotImplementedError��element�compilerr<s rM� _mysql_doesnt_support_individualr�rs�� �C� � �rNr�r�rr=r)c ��t||j|j���dt||j���d|j�dt ||j��znd��S)Nz ALTER COLUMN � zSET DEFAULT %sz DROP DEFAULT)r r(r rr*rArr�s rM�_mysql_alter_defaultr�|sj�� �H�g�0�'�.�A�A�A�A��8�W�%8�9�9�9�9���*� �4�X�w��O�O� O� O�� �  �rNc ���t||j|j���dt||j���dt ||j|j|j|j |j �����S)Nz MODIFY r��r+r-r1r7r9) r r(r rr*�_mysql_colspecr+rAr1r7r9r�s rM�_mysql_modify_columnr��ss�� �H�g�0�'�.�A�A�A�A��8�W�%8�9�9�9�9�� ��%�"�?��-�!�/��O�  � � � � � rNc ���t||j|j���dt||j���dt||j���dt ||j|j|j |j |j �����S)Nz CHANGE r�r�) r r(r rr*r@r�r+rAr1r7r9r�s rM�_mysql_change_columnr��s��� �H�g�0�'�.�A�A�A�A��8�W�%8�9�9�9�9��8�W�_�5�5�5�5�� ��%�"�?��-�!�/��O�  � � � � � rNr+r,r-r�r1rr7r9r:c��|jj�|���d|rdnd��}|r|dz }|dur|�|dt||��zz }|r2|d|j�|t j����zz }|S)Nr��NULLzNOT NULLz AUTO_INCREMENTFz DEFAULT %sz COMMENT %s)�dialect� type_compiler�processr� sql_compiler�render_literal_valuerXrb)r�r+r-r1r7r9�specs rMr�r��s��� ��&�.�.�u�5�5�5�5��*��� �*� �D��"� �!�!���U�"�"�~�'A� � � 5�h�� O� O�O�O��� � � �� 5� J� J� �X�_�&�&�! �! � � �� �KrNrc ��|j}t|tjtjtjf��r|rJ�|�|��St|tj��r�t|j ��r=d|j � |j ���d|j � |����Sd|j � |j ���d|j � |����Std���)zVRedefine SQLAlchemy's drop constraint to raise errors for invalid constraint type.z ALTER TABLE z DROP CONSTRAINT z DROP CHECK zFNo generic 'DROP CONSTRAINT' in MySQL - please specify constraint type)r�rRr �ForeignKeyConstraint�PrimaryKeyConstraint�UniqueConstraint�visit_drop_constraintrSrr��preparer� format_table�table�format_constraintr�)r�r�r<� constraints rM�_mysql_drop_constraintr��s!����J��� � '� � '� � #� ��� �� � �v��-�-�g�6�6�6� �J�� 6� 7� 7� � �x�'� (� (� � ��!�.�.�z�/?�@�@�@�@��!�3�3�J�?�?�?�� � ��!�.�.�z�/?�@�@�@�@��!�3�3�J�?�?�?�� � "� -� � � rN)r�rJr�rr=r))r�rIr�rr=r))r�rHr�rr=r))r�rr+r,r-r�r1rr7r,r9r:r=r))r�rr�rr=r))3� __future__rr`�typingrrrr� sqlalchemyr r rX�baser r rrrrrr�implrr[rr�util.sqla_compatrrrr�sqlalchemy.dialects.mysql.baser�sqlalchemy.sql.ddlr�sqlalchemy.sql.schemar�sqlalchemy.sql.type_apirr r"r�rJrHrIr�r�r�r�r�r�r�rNrM�<module>r�s/��#�"�"�"�"�"� � � � ������������� � � � � � �������������(�(�(�(�(�(������������������������� � � � � � �������$�$�$�$�$�$�'�'�'�'�'�'�������������������*�*�*�*�*�*�-�-�-�-�-�-�'�'�'�'�'�'��%�������?�?�?�?�?�?�1�1�1�1�1�1�0�0�0�0�0�0�2�2�2�2�2�2�$�$�$�$�$�$�T+�T+�T+�T+�T+� �T+�T+�T+�n�����)���� � � � � � � � � �1�1�1�1�1� �1�1�1�: � � � � �)� � � � ��.�'�9�-�-� ��*�g�y�)�)� ��-��)�,�,� ��*�g�y�)�)���*�)�-�,�*�)�.�-��  �� �W�i�0�0� � � �1�0� � �� �W�i�0�0����1�0��" �� �W�i�0�0����1�0��$����0 ��&� ��)�4�4�# �# �# �5�4�# �# �# rN
Memory