� J�g��� ��UddlmZddlZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z ddlm Z dd lm Z dd lm Z dd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl#m%Z%ddl&m'Z'ddl"m(Z(erNddlm)Z)ddl*m+Z+dd l,m-Z-dd!l,m.Z.dd"lm/Z/dd#lm0Z0dd$l1m2Z2dd%l3m4Z4dd&l5m6Z6dd'l5m7Z7dd(l5m8Z8dd)l5m9Z9dd*l#m:Z:ej;e<��Z=dyd1�Z>e"j?d2�3��Z@dzd6�ZAe@�Bd7��d{d:���ZCd|d@�ZDe"jEejFejGejHejIejHejIdA���ZJdBeKdC<d}dK�ZLd~dM�ZMddO�ZNejOd�dW���ZPedXeeeef�Y��ZQe@�BdZ��d�d]���ZRd^�ZSe@�Bd_��d�df���ZTe@�Bd_��d�dh���ZUe@�Bd_��d�di���ZVd�dl�ZWd�do�ZXd�dp�ZYd�dq�ZZdr�Z[e@�Bd_��d�dt���Z\e@�Bd_��d�dv���Z]e@�BdZ��d�dw���Z^e@�BdZ��d�dx���Z_dS)��)� annotationsN)�Any)�cast)�Dict)�Iterator)�Mapping)�Optional)�Set)�Tuple)� TYPE_CHECKING)�TypeVar)�Union)�event)�inspect��schema)�text)�types)� expression)�ForeignKeyConstraint)�Index)�UniqueConstraint)� OrderedSet�)�util)� is_index_sig)� is_uq_sig)�ops)� sqla_compat)�Literal)� Inspector)� quoted_name)� TextClause)�Column)�Table)�AutogenContext)� DefaultImpl)� AlterColumnOp)�MigrationScript)�ModifyTableOps)� UpgradeOps)�_constraint_sig�autogen_contextr&�migration_scriptr)�return�Nonec��|jd}|jd}t||��|�|��dS)N�����)�upgrade_ops_list�downgrade_ops_list�_produce_net_changes� reverse_into)r-r.� upgrade_ops� downgrade_opss �l/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/alembic/autogenerate/compare.py�_populate_migration_scriptr:;sH��#�3�B�7�K�$�7��;�M���+�6�6�6����]�+�+�+�+�+�T)�uselistr7r+c�����j}|�J��j�dd��}t|��}|jj}|rat |�����}|�d��|�|��|� d��ndh}�fd�|D��}�j�J�t� d�jj ���||��dS)N�include_schemasF�information_schemac�B��h|]}��|di���|��Sr��run_name_filters)�.0�sr-s �r9� <setcomp>z'_produce_net_changes.<locals>.<setcomp>]s@�������o�>�>�q�(�B�O�O�� ���r;r) � connection�opts�getr�dialect�default_schema_name�set�get_schema_names�discard�add� comparators�dispatch�name)r-r7rFr>� inspector�default_schema�schemass` r9r5r5Hs���!�+�J� � !� !� !�%�*�.�.�/@�%�H�H�O�"�:�.�.�I��'�;�N����i�0�0�2�2�3�3�����,�-�-�-�����'�'�'�� � �D������&����������G� � "� .� .� .�����?�#:�#?�@�@���g�����r;rrT�$Union[Set[None], Set[Optional[str]]]c���� ��j}t��}�jj}�jj}|D]m� t|�� �����}� |kr |��jjg��}|��� fd�|D�����ntd��j D�����||fg��}t||||���dS)Nrc3�R�K�|]!}��|dd�i����|fV��"dS)�table� schema_nameNrA)rC�tnamer-rYs ��r9� <genexpr>z&_autogen_for_tables.<locals>.<genexpr>}s^����� � ���/�/��w�� � <��� � �%� � � � � � � r;c�*�g|]}|j|jf��S�)rrQ)rCrXs r9� <listcomp>z'_autogen_for_tables.<locals>.<listcomp>�s!��O�O�O��%�,�� � #�O�O�Or;) rRrK�migration_context�version_table_schema� version_table�get_table_names� difference�updater� sorted_tables�_compare_tables) r-r7rTrR�conn_table_namesr`ra�tables�metadata_table_namesrYs ` @r9�_autogen_for_tablesrjgsD����  �)�I�7:�u�u�� �)�>��$�5�C�M��  �  � ��Y�.�.�k�.�B�B�C�C�� �.� .� .��&�&� �2�@�A���F� ��� � � � � �� � � � � � � �&�O�O��1N�O�O�O����j�'��7�8�9�9�������� ����r;rgrKrirRr!c � ���|jjj�t�fd�|D����}�fd�t ||��D��}|}|�|��D]�\}}|r|�d|��n|} |||f} ��| |ddd��r�|j�tj � | ����t� d| ��tj |g|���} t�d���| ||d| ��| ���s|j�| ����t#j��} |�|��D�]\\}}t#j||��} | | jv} t#j|| |���}| sHt-j|d�jj�|����t7j||����||dd d��r�tj |g|���} t�d���| |||d��| ���s|j�| ��|j�tj� |����t� d | ����^|�|��}t#j��}i}|D]�\}}t#j||��} | |jv} t#j|||���}| sHt-j|d�jj�|����t7j||��||||f<��t?|d �� ��D]�\}}|pd}|r|�d|��n|} |||f} |j| }��| |dd|��r�tj |g|���} tA|||| | �|��5t�d���| |||| ��ddd��n #1swxYwY| ���s|j�| ����dS) Nc�.��g|]\}}|�kr|nd|f��S�Nr])rCrrZrSs �r9r^z#_compare_tables.<locals>.<listcomp>�s@��� � � ������/�/�V�V�T�5� A� � � r;c�^��i|])\}\}}|�jtj||����*Sr])�table_key_to_table� sa_schema�_get_table_key)rC�no_dflt_schemarrZr-s �r9� <dictcomp>z#_compare_tables.<locals>.<dictcomp>�sM������ ,�N�O�V�U� ��:� � $�U�F� 3� 3� ���r;�.rXFzDetected added table %rr�column_reflectTzDetected removed table %rc�&�|dpd|dfS)Nr��r])�xs r9�<lambda>z!_compare_tables.<locals>.<lambda>�s��1�Q�4�:�2�q��t�:L�r;)�key)!�bindrIrJr�ziprc�run_object_filtersr�append� CreateTableOp� from_table�log�infor*rOrP�is_emptyrp�MetaDatarqrhr%r�listenr_�impl�_compat_autogen_column_reflectr�_reflect_table� DropTableOp� intersection�sorted�_compare_columns)rgrirRr7r-�#metadata_table_names_no_dflt_schema�tname_to_tablerDrZrQ�metadata_table�modify_table_ops�removal_metadata�exists�t�existing_tables�existing_metadata�conn_column_info� conn_tablerSs ` @r9rfrf�s������^�+�?�N�+5� � � � �!5� � � �+�+�'�����03� /�1E�0 �0 � ���N�?��(�3�3�4D�E�E�9�9���5�'(�3�!�!�!�U�U�#�#�e��'��E� �3�� � -� -� �E�7�E�4� � � 9� �O� "� "��!�,�,�^�<�<� � � � �H�H�.�� 5� 5� 5�"�1�%��A�F�F�F� � � � �� )� )�� �����  � � �$�,�,�.�.� 9���&�&�'7�8�8�8�� �)�+�+��$�/�/�0D�E�E�8�8���5��'��q�1�1���)�0�0�� �O�E�#3�A� >� >� >��� 5� �L�� ��1�6�.�.����  � � � � &�y�!� 4� 4� 4� � -� -�a����t� L� L� 8�"�1�%��A�F�F�F� � � � �� )� )��!1�1�e�Q�� � � �$�,�,�.�.� 9���&�&�'7�8�8�8� �O� "� "�3�?�#=�#=�a�#@�#@� A� A� A� �H�H�0�$� 7� 7� 7��&�3�3�4H�I�I�O�!�*�,�,����#�)�)���5��'��q�1�1���*�1�1�� �O�E�#4�Q� ?� ?� ?��� 5� �L�� ��1�6�.�.�y�9�9�  � � � � &�y�!� 4� 4� 4�'(��!�U��$�$��?�0L�0L�M�M�M�9�9���5� �I���'(�3�!�!�!�U�U�#�#�e��'��E� �3��&�-�d�3� � � -� -� �E�7�E�:� � � 9� #�1�%��A�F�F�F� �!����� ����� � ��$�$�W�-�-�#�$����"� ��� � � � � � � � � � � ���� � � � �$$�,�,�.�.� 9���&�&�'7�8�8�8��;9�9s�(Q�Q �Q )�asc�desc� nulls_first� nulls_last� nullsfirst� nullslastzMapping[str, Any]�_IndexColumnSortingOpsr�r'�params�Dict[str, Any]r�r%�Optional[Index]c���g}|�d��}t|d��D]~\}}|�$d|vsJ�|d|}t|��}n|}|j|}|r-||vr)||D] } | tvrt | |��}�!|�|���t j|dg|�R|d|d�|�|d����} d|vr|d| j d<| S) N�column_sorting� column_names� expressionsrQ�unique)r��_table�index�duplicates_constraint) rH� enumerater�cr�rrpr� adjust_reflected_dialect_optionsr�) r�r�r��exprs�sorting�num�col_namerQ�item�operator�ixs r9� _make_indexr�(sT��35�E��j�j�)�*�*�G�"�6�.�#9�:�:� � � ��X� � � �F�*�*�*�*��-�(��-�D���:�:�D�D��D��<��)�D� � B�t�w���#�D�M� B� B���5�5�5�1�(�;�D�A�A�D�� � � �T����� ���v�� � � � ��h���  � � � /� /��� @� @�  � �B��&�(�(�+1�2I�+J���'�(� �Ir;rc���tj�fd�|dD��d|di|�|d����}d|vr|d|jd<|S)Nc�*��g|]}�j|��Sr]�r��rC�cnamer�s �r9r^z+_make_unique_constraint.<locals>.<listcomp>Ls ��� B� B� B�%�*�,�u� � B� B� Br;r�rQ�unique_constraint�duplicates_index)rprr�r�)r�r�r��uqs ` r9�_make_unique_constraintr�Hs��� � #� B� B� B� B�6�.�+A� B� B� B� � �F�^� � � /� /��8K� L� L� � �B� �V�#�#�&,�-?�&@���"�#� �Ir;rc ����|d�|dr |d�d����|�di��}tj�fd�|dD���fd�|dD��|�d ��|�d ��|�d ��|�d ��|d ���}��|��|S)N�referred_table�referred_schemart�optionsc�*��g|]}�j|��Sr]r�r�s �r9r^z%_make_foreign_key.<locals>.<listcomp>`s ���H�H�H����e� �H�H�Hr;�constrained_columnsc���g|] }��d|���� S)rtr])rC�nrZs �r9r^z%_make_foreign_key.<locals>.<listcomp>as$���B�B�B�!�E�E�E�1�1� �B�B�Br;�referred_columns�onupdate�ondelete� deferrable� initiallyrQ)r�r�r�r�rQ)rHrpr�append_constraint)r�r�r��constrZs ` @r9�_make_foreign_keyr�Vs����� �#� $�E� �� �=�!�"3�4�4�4�e�e�<���j�j��B�'�'�G� � *�H�H�H�H�&�1F�*G�H�H�H�B�B�B�B�v�.@�'A�B�B�B����Z�(�(����Z�(�(��;�;�|�,�,��+�+�k�*�*� �F�^� � � �E�� � ��'�'�'� �Lr;� Optional[str]rZ�Union[quoted_name, str]r�r�r*�Iterator[None]c #����K��r��d���n�}td�|jD����}d�|jD��} ���fd�|jD��} |�| ��D]|} ��| | | ddd��r[|j�tj���| | ����t� d|| ���}|� | ��D]�} | | } |j| }��| | dd|��s�1t j �| ����}t� d���|��| || ��|���r|j�|����dV�t| ���|��D]�} ��|j| | dd d��r`|j�tj���|j| ����t� d || ����dS) Nrtc3�2K�|]}|j� |jV��dSrm��systemrQ�rCr�s r9r[z#_compare_columns.<locals>.<genexpr>xs?����$�$����$� ��$�$�$�$�$�$r;c�,�i|]}|j� |j|��Sr]r�r�s r9rsz$_compare_columns.<locals>.<dictcomp>{s3������1�8�� �����r;c �^��i|])}��|jd��d����!|j|��*S)�column�� table_namerY)rBrQ)rCr�r-rrZs ���r9rsz$_compare_columns.<locals>.<dictcomp>sT������ � � +� +� �F�H�U�6�J�J� � �� �����r;r�FzDetected added column '%s.%s'rTzDetected removed column '%s.%s')rr�rcr~rr� AddColumnOp�from_column_and_tablenamer�r�r�r(rOrP� has_changesrK� DropColumnOp)rrZr�r�r�r-rRrQ�metadata_col_names�metadata_cols_by_name�conn_col_namesr��colname� metadata_col�conn_col�alter_column_ops`` ` r9r�r�ms��������)/� 9�f�f�f�e�e� $� $�E�D�#�$�$�&�(�$�$�$������)�+����������������N�$�.�.�~�>�>� C� C�� � -� -� !�%� (�%��5�$� � � C� � � '� '���9�9��E�#8��#?��� � � � �H�H�4�d�E� B� B� B��%�2�2�>�B�B�9�9��,�W�5� ��<��(���1�1� �'�8�U�H� � � � ��+�E�7�6�J�J�J�����X�&�&� � � � � � � � � � � � &� &� (� (� 9� � � '� '�� 8� 8� 8�� �E�E�E��^�$�$�/�/�0B�C�C� E� E�� � -� -� �L�� ���$�� � � E� � � '� '�� �:�:��E�:�<��#6��� � � � �H�H�6��e� D� D� D�� E� Er;�_C)�boundrX� modify_ops�Optional[Table]c�V ������$�%�&�'�(�)�*��j}�du�(|du�)�jj�'|�&d�|jD��}t |j��}nt ��}t ��}t ��x} } d�*d} ��� |������} d�*���fd�| D��} | D]} | �d��rd} �n#t$rYnt$rYnwxYw |� �����} ���fd�| D��} n#t$rYnwxYw�)rt ��} n��'fd�| D��} d ���'fd �| D��D��} | rt| | ||�j �'���'�| | ||���'fd �|D��} �'fd �|D��}�'fd �| D��}�'fd�| D��}�fd�| �|��D��}d�|D���&d�|D���%d�|�|��D��}�%�&fd�t �&����%��D��}d�|D��}d�| D��}�fd�| D��}d$��(�)��*fd� }d$��(�)��*�fd� }d%���fd� }t#t |���|����D]x}||}t'|��r |j|vr�#||vrF||\}�$t+�$fd �|D����r|j|vr||��|�$���m||���yt#t |���|����D]�}||}||vr ||\}�$t-|��r�$}n |}n||}t/|��t/|��kr||��||���m|�|��}|jr||||j����|jr;t-|��rd!nd"} t8�d#| |j|j����|jsJ���t#t |���|����D]}!||!}"||"���|D]}#|#|vr|||#���dS)&Nc�F�h|]}t|tj���|��Sr])� isinstancerpr�rCr�s r9rEz/_compare_indexes_and_uniques.<locals>.<setcomp>�s;��' �' �' ���"�i�8�9�9�' � �' �' �' r;FrTc �T��g|]$}��|dd��d����"|��%S)rQr�r�rA)rCr�r-rrZs ���r9r^z0_compare_indexes_and_uniques.<locals>.<listcomp>�sT�������"�3�3��v�J�'�#(��@�@�������r;r�c �T��g|]$}��|dd��d����"|��%S)rQr�r�rA)rCr�r-rrZs ���r9r^z0_compare_indexes_and_uniques.<locals>.<listcomp>�sT�������"�3�3��v�J��#(��@�@�������r;c�2��h|]}t�|�����Sr])r�)rC�uq_defr�r�s ��r9rEz/_compare_indexes_and_uniques.<locals>.<setcomp> s5�������(��f�j�A�A���r;c��h|]}|�|��Srmr])rCr�s r9rEz/_compare_indexes_and_uniques.<locals>.<setcomp>s,�� � � ��� � �!� � r;c3�:�K�|]}t�|���V��dSrm)r�)rCr�r�r�s ��r9r[z/_compare_indexes_and_uniques.<locals>.<genexpr>s@�������68� �D�"�j�1�1������r;c�:��h|]}��|����Sr]��_create_metadata_constraint_sig�rCr�r�s �r9rEz/_compare_indexes_and_uniques.<locals>.<setcomp>3s7���'�'�'� � �,�,�R�0�0�'�'�'r;c�:��h|]}��|����Sr]r��rCr�r�s �r9rEz/_compare_indexes_and_uniques.<locals>.<setcomp>8s4������57��,�,�R�0�0���r;c�:��h|]}��|����Sr]�� _create_reflected_constraint_sigr�s �r9rEz/_compare_indexes_and_uniques.<locals>.<setcomp><s4������68��-�-�b�1�1���r;c�:��h|]}��|����Sr]r�r�s �r9rEz/_compare_indexes_and_uniques.<locals>.<setcomp>@s4������68��-�-�b�1�1���r;c�p��i|]2}|j� tt|������|��3Sr])�is_namedr�str�md_name_to_sql_name)rCr�r-s �r9rsz0_compare_indexes_and_uniques.<locals>.<dictcomp>EsK������ � �:�� �S�!�'�'��8�8�9�9�1���r;c��i|] }|j|�� Sr]�rQr�s r9rsz0_compare_indexes_and_uniques.<locals>.<dictcomp>Ns��G�G�G�!�A�F�A�G�G�Gr;c��i|] }|j|�� Sr]rr�s r9rsz0_compare_indexes_and_uniques.<locals>.<dictcomp>Os��@�@�@�!�A�F�A�@�@�@r;c�P�i|]#}tj|j���|j|��$Sr])r�constraint_name_stringrQr�s r9rsz0_compare_indexes_and_uniques.<locals>.<dictcomp>Ps?����� � � -�a�f� 5� 5�� �����r;c�2��i|]}|�|�|f��Sr]r])rCrQ�conn_indexes_by_name�conn_uniques_by_names ��r9rsz0_compare_indexes_and_uniques.<locals>.<dictcomp>Vs<������ � �#�D�)�+?��+E�F���r;c��i|] }|j|�� Sr]��unnamedr�s r9rsz0_compare_indexes_and_uniques.<locals>.<dictcomp>_s��L�L�L�b�2�:�r�L�L�Lr;c��i|] }|j|�� Sr]r r�s r9rsz0_compare_indexes_and_uniques.<locals>.<dictcomp>`s)������� �B���r;c�^��i|])}tj|j�j���!|j|��*Sr])r�_constraint_is_namedr�rIr )rCr�r-s �r9rsz0_compare_indexes_and_uniques.<locals>.<dictcomp>csJ��� � � � ��/� �H�o�-� � � � � �B� � � r;�objr,c�|��t|��r���|j|jddd��rd�j�tj�|j����t� d|j|j ��dSdSt|��r��sdS�s�rdS��|j|jddd��rd�j�tj � |j����t� d|j|j ��dSdSJ�)Nr�Fz!Detected added index '%r' on '%s'r�z+Detected added unique constraint %r on '%s')rr~r�rQrr� CreateIndexOp� from_indexr�r�r�r�AddConstraintOp�from_constraint)rr-�is_create_table� is_drop_tabler��supports_unique_constraintss �����r9� obj_addedz/_compare_indexes_and_uniques.<locals>.obj_addedssk��� �� � � ��1�1�� �3�8�W�e�T��� ���%�%�c�&7�&B�&B�3�9�&M�&M�N�N�N����7��H��$������  � ��s�^�^� �.� ���� �-� ����1�1�� �3�8�%8�%���� ���%�%��'�7�7�� �B�B�������A��H��$������ � � �5r;c�v��t|��r�|jr�sdS��|j|jddd��r_�j�t j�|j����t� d|j���dSdSt|��r��s�rdS��|j|jddd��r_�j�t j � |j����t� d|j���dSdSJ�)Nr�TzDetected removed index %r on %rr�z+Detected removed unique constraint %r on %r)r� is_uniquer~r�rQrr� DropIndexOprr�r�r�DropConstraintOpr)rr-rrr�rrZs ������r9� obj_removedz1_compare_indexes_and_uniques.<locals>.obj_removed�sg��� �� � � ��}� �%@� ����1�1�� �3�8�W�d�D��� M���%�%�c�o�&@�&@���&K�&K�L�L�L����:�C�H�e�L�L�L�L�L�  M� M� �s�^�^� �� �-� ����1�1�� �3�8�%8�$���� ���%�%��(�8�8���C�C�������A��H������� � � �5r;�old�new�msgrc���t|��r�t|��sJ���|j|jdd|j��r�t�d|j�|���j�t j� |j�����j�t j � |j����dSdSt|��r�t|��sJ���|j|jdd|j��r�t�d|j�|���j�t j � |j�����j�t j� |j����dSdSJ�)Nr�Fz#Detected changed index %r on %r: %sr�z/Detected changed unique constraint %r on %r: %s)rr~r�rQr�r�rrrrrrrrr)r r!r"r-r�rZs ���r9� obj_changedz1_compare_indexes_and_uniques.<locals>.obj_changed�s���� �� � � ���$�$� $� $�$��1�1�� �3�8�W�e�S�Y��� O����9�3�8�U�C������%�%�c�o�&@�&@���&K�&K�L�L�L���%�%�c�&7�&B�&B�3�9�&M�&M�N�N�N�N�N� O� O��s�^�^� ��S�>�>� !� !�>��1�1�� �3�8�%8�%����� ����E��H��� ��� ��%�%��(�8�8���C�C������%�%��'�7�7�� �B�B������ � � �5r;c3�8�K�|]}�j|jkV��dSrmr )rC�meta_idx�conn_idxs �r9r[z/_compare_indexes_and_uniques.<locals>.<genexpr>�sB������� ��$��(8�8������r;r�zunique constraintz5Cannot compare %s %r, assuming equal and skipping. %s)rr,)r r,r!r,r"r) rRr_r�� constraintsrK�indexes� frozenset�get_unique_constraintsrH�NotImplementedError� TypeError� get_indexes�_correct_for_uq_duplicates_uixrI�correct_for_autogen_constraints�unionr�r�rcrr �allr�type�compare_to_reflected� is_different�message�is_skipr�r�rQ�is_equal)+r-r�rrZr�r�rR�metadata_unique_constraints�metadata_indexes� conn_uniques� conn_indexes�+unique_constraints_duplicate_unique_indexesr��metadata_unique_constraints_sig�metadata_indexes_sig�conn_unique_constraints�conn_indexes_sig�metadata_names� conn_names�doubled_constraints�conn_uniques_by_sig�metadata_uniques_by_sig�unnamed_metadata_uniquesrrr$� removed_name�conn_obj�conn_uq� existing_name� metadata_obj� comparison�thing� added_namer�uq_sigr'r r r�rrrs+````` @@@@@@@r9�_compare_indexes_and_uniquesrQ�s�������������� �)�I� �D�(�O�"�d�*�M� � ,� 1�D��!�' �' �$�0�' �' �' �#� �~�5�6�6���&)�e�e�#��5�5��"+�+�+�-�L�<�"'��27�/��� G�$�;�;��f�<���L�+/� '�������&����L�#� G� G���6�6�,�-�-�G�BF�?�� G��##� � � � �D�� � � � �D�  ����$ �$�0�0��f�1���L� ������&����L�L��#� � � � �D� ���� � ��5�5�L�L������*����L�  � ������<H���� � � � �3� �&� � � '� � � #� �  � � � �(�(���#�� ���'�'�'�'�-�'�'�'�#� ����;K���������<H���������<H����� ����0�6�6�7K�L�L����N�H�G�/F�G�G�G��@�@�/?�@�@�@����(�.�.�/?�@�@����J� ������,�-�-�:�:� � � �����M�L�4K�L�L�L����!@����� � � � �1� � � �� ����������B�����������@#�#�#�#�#�#�#�#�J�s�:���9�9�.�I�I�J�J�"�"� ��l�+�� �h� � � "�� �$<�<�<� � �0� 0� 0� 3�L� A� �G�X������$8������ &� �O�+B�B�B�� �G�$�$�$�� �H�%�%�%�� �K�� !� !� !� !���N� 3� 3� @� @�� L� L�M�M�"+�"+� �%�m�4� � �/� /� /� 3�M� B� �G�X��L�)�)� #�#���"���!�-�0�H� ��>�>�T�,�/�/� /� /� �K�� !� !� !� �I�l� #� #� #� #�%�:�:�8�D�D�J��&� +�� �H�l�J�4F�G�G�G�G��#� +� ,�H�5�5�N�G�G�;N�����K���M��&� ����"�*�*�*�*�*��S��0�0�;�;�J�G�G�H�H��� ��Z�(��� �#�����*�8�8�� �,� ,� ,� �I�.�v�6� 7� 7� 7��8�8s*�C � C!� C!� C!�%D � D�Dc�r����fd�|D��}d�|D��}�fd�|D��}�fd�|D��} d�|D��} d�|D��} | D]c} | |vr>��| | ��j|vr|�| | ���D| | vr|�| | ���ddS)Nc�>��g|]}tj|���|f��Sr])r�_get_constraint_final_name�rC�consrIs �r9r^z2_correct_for_uq_duplicates_uix.<locals>.<listcomp>.s;������ � � /��g� >� >��E���r;c��h|] \}}|�|�� Srmr])rCrQrVs r9rEz1_correct_for_uq_duplicates_uix.<locals>.<setcomp>3s(�������t�d�6F��6F�6F�6Fr;c�N��h|]!\}}|���|��j��"Srm)r�r )rCrQrVr�s �r9rEz1_correct_for_uq_duplicates_uix.<locals>.<setcomp>7s;������ �D�$� �<� �,�,�T�2�2�:� �<�<r;c�H��h|]}|j� tj|�����Sr])r�rrTrUs �r9rEz1_correct_for_uq_duplicates_uix.<locals>.<setcomp>=s>������ � �;���.�t�W�=�=���r;c�,�i|]}|j� |j|��Sr])r�rQ�rCrVs r9rsz2_correct_for_uq_duplicates_uix.<locals>.<dictcomp>Es#��M�M�M����M�T�Y��M�M�Mr;c�8�i|]}|jd�|j|��S)r�)r�rQr[s r9rsz2_correct_for_uq_duplicates_uix.<locals>.<dictcomp>Gs:����� � �9�'� (�� � �4���r;)r�r rM) r@r<r9r:rIr��metadata_cons_names�metadata_uq_names�unnamed_metadata_uqs�metadata_ix_names� conn_ix_names�uqs_dupe_indexes�overlaps `` r9r/r/sh����&����/����� ��2���������-����� ����$�����N�M��M�M�M�M���+����� $� 9� 9�� �+� +� +��5�5�$�W�-����+�,�,� (�/�/�0@��0I�J�J�J�� �-� -� -� � � ��w�!7� 8� 8� 8�� 9� 9r;r�r�r(r�r�� Column[Any]r�c�l�|j}|j}||_||ur�tj|j|j��rtj|��stj|j|j��rt�d||��dS||_ t�d|rdnd||��dSdS)Nz3Ignoring nullable change on identity column '%s.%s'zDetected %s on column '%s.%s'�NULLzNOT NULL) �nullable�existing_nullabler�_server_default_is_computed�server_default�_nullability_might_be_unset�_server_default_is_identityr�r��modify_nullable) r-r�rrZr�r�r��metadata_col_nullable�conn_col_nullables r9�_compare_nullablerpZs���)�1�� �)��(9�O�%�� 5�5�5� � 3��+�X�-D� � � ��7� �E�E�  � �7� �/��1H���  � �H�H�E��� � � � � � /D�O� +� �H�H�/�/�?���Z���  � � � � �'6�5r;r"c��|jj|ur d|jd<dS|jdur d|jd<dS|jdur d|jd<dSdS)NT� autoincrementF)rX�_autoincrement_column�kwrr)r-r�rrZr�r�r�s r9�_setup_autoincrementru�sr����/�<�?�?�.2���?�+�+�+� � #�t� +� +�.2���?�+�+�+� � #�u� ,� ,�.3���?�+�+�+� -� ,r;c�|�|j}||_|j}|jtjurt �d||��dS|jtjurt �d||��dS|j�||��} | r'||_ t �d||||��dSdS)Nz3Couldn't determine database type for column '%s.%s'z:Column '%s.%s' has no type within the model; can't comparez-Detected type change from %r to %r on '%s.%s') r3� existing_type�_type_affinity�sqltypes�NullTyper�r�r_� _compare_type� modify_type) r-r�rrZr�r�r�� conn_type� metadata_type�isdiffs r9r{r{�s���� �I�$-�O�!� �%�M���8�#4�4�4� ��� D� � � � � � ���#�x�'8�8�8� ��� K� � � � � � �� � .� <� <��,���F�� �&3��#� ��� ;� � � � �  � � � � � � r;�metadata_default� Optional[Any]c� �t|tj��rRt|jt��r|j}n0t |j�|jddi�����}t|t��r|SdS)N� literal_bindsT�rI�compile_kwargs)r�rp� DefaultClause�argr�compilerI)r�r-s r9�"_render_server_default_for_comparer��s����"�I�$;�<�<� � �&�*�C� 0� 0� �/�3� � �"� �$�,�,�+�3�$3�T�#:�-��� � � � �"�C�(�(�����tr;�sqltextrc�R�tjdd|�����S)z�we want to warn if a computed sql expression has changed. however we don't want false positives and the warning is not that critical. so filter out most forms of variability from the SQL text. z[ \(\)'\"`\[\]\t\r\n]rw)�re�sub�lower)r�s r9�_normalize_computed_defaultr��s%�� �6�*�B�� 8� 8� >� >� @� @�@r;c���tttj|j��j�|jddi�����}t|��}t|jtj��rJt|jj�|jddi�����}|�d}nt|��}nd}||krt||��dSdS)Nr�Tr�rw) rrrp�Computedrjr�r�rIr�r��_warn_computed_not_supported) r-r�rrZr�r�r��rendered_metadata_default�rendered_conn_defaults r9�_compare_computed_defaultr��s��!$� �Y� ��!<�=�=�E�M�M�#�+�+�T�2� N� � �!�!��!<�!�!�!���(�)�9�+=�>�>�#� #� � #� +� 3� 3�'�/� /��6� 4� � �! �! �� !� (�$&� !� !�$?�%�%�%� !� !�!#�� �$9�9�9�$�U�E�2�2�2�2�2�:�9r;c�<�tjd|�d|�d���dS)NzComputed default on rtz cannot be modified)r�warn)rZr�s r9r�r� s'���I�I����u�u�u�M�N�N�N�N�Nr;c�j�|jj}|�|j|j��\}} } || fSrm)r_r��_compare_identity_defaultrj) r-r�rrZr�r�r�r��diff� ignored_attr�is_alters r9r�r� sB�� � ,� 1�D�#'�#A�#A��#�X�%<�$�$� �D�,�� ��>�r;�Optional[bool]c ��|j}|j}|�|�dStj|��r#tjsdSt |||||||��Stj|��rt ||��dStj||��rU||_t|||||||��\} } | r3||_ | r*t� d||t| ����n|t||��} |rtt|��jjnd} ||_|j�||| | ��} | r#||_ t� d||��dS)NFzIDetected server default on column '%s.%s': identity options attributes %sz)Detected server default on column '%s.%s')rjrri�has_computed_reflectionr�r�rl�existing_server_defaultr��modify_server_defaultr�r�r�r�rrr�rr_�_compare_server_default)r-r�rrZr�r�r�r��conn_col_defaultr�r�r�r��is_diffs r9r�r�s���$�2���.����$4�$<��u��.�/?�@�@���2� ��5�*�#�#����� ��� ��.�/?�@�@��$�U�E�2�2�2��u��.��*���*P�3C��/�2� � � � � � � � � ���h� � �4D�O� 1�� ����5����4�L�L� ����%G� �o�% �% �!� 5E� N�D��&� '� '� +� 0� 0�$� �3C��/�!�3�K�K� � � %� !�  � �� � P�4D�O� 1� �H�H�@�%�� O� O� O� �4r;�Optional[Literal[False]]c��|j�J�|jjsdS|j}|j}|�|�dS||_||kr#||_t �d||��dS)NFzDetected column comment '%s.%s')rI�supports_comments�comment�existing_comment�modify_commentr�r�) r-r�rrZr�r�r��metadata_comment�conn_col_comments r9�_compare_column_commentr�vs��� � "� .� .� .� � "� 4���t�#�+���'����$4�$<��u�'7�O�$��+�+�+�)9��&� ���2�E�5�A�A�A� �4r;c�r����������|�dS�j}d�|jD��}���fd�|������D��}�fd�|D��} �jj��jj�| |���fd�|D��} �fd�| D��} |r#d|dvrd �| D��} d �| D��} nd �| D��} d �| D��} d �| D��}d�| D��}���fd�}��fd�}t | ���| ��D]7}| |�|| vr)�j|vr|�jj nd}|�|���8t | ���| ��D]7}| |�|| vr)�j|vr|�jj nd}|�|���8dS)Nc�F�h|]}t|tj���|��Sr])r�rpr)rC�fks r9rEz(_compare_foreign_keys.<locals>.<setcomp>�s;����� � �b�)�8� 9� 9�� ���r;c �T��g|]$}��|dd��d����"|��%S)rQ�foreign_key_constraintr�rA)rCr�r-rrZs ���r9r^z)_compare_foreign_keys.<locals>.<listcomp>�sT������ � � +� +� �v�J� $� �� 8� 8� � �� ���r;rc�0��h|]}t|�����Sr])r�)rCr�r�s �r9rEz(_compare_foreign_keys.<locals>.<setcomp>�s3������ � �%��,�,���r;c�:��h|]}��|����Sr]r��rCr�r�s �r9rEz(_compare_foreign_keys.<locals>.<setcomp>�s4������57��,�,�R�0�0���r;c�:��h|]}��|����Sr]r�r�s �r9rEz(_compare_foreign_keys.<locals>.<setcomp>�s4������68��-�-�b�1�1���r;r�rc��i|] }|j|�� Sr]r r�s r9rsz)_compare_foreign_keys.<locals>.<dictcomp>�s��>�>�>�A�1�9�a�>�>�>r;c��i|] }|j|�� Sr]r r�s r9rsz)_compare_foreign_keys.<locals>.<dictcomp>�s��F�F�F��q�y�!�F�F�Fr;c��i|] }|j|�� Sr]��unnamed_no_optionsr�s r9rsz)_compare_foreign_keys.<locals>.<dictcomp>�s��I�I�I�q�1�/��I�I�Ir;c��i|] }|j|�� Sr]r�r�s r9rsz)_compare_foreign_keys.<locals>.<dictcomp>�s*�� � � �()�A� �!� � � r;c�,�i|]}|j� |j|��Srmrr�s r9rsz)_compare_foreign_keys.<locals>.<dictcomp>�s*������q�v�/A����/A�/A�/Ar;c�,�i|]}|j� |j|��Srmrr�s r9rsz)_compare_foreign_keys.<locals>.<dictcomp>�s#��N�N�N�a�1�6�;M����;M�;M�;Mr;c�����|j|jdd|��r��j�tj��j����t�dd� |j ��d� |j ��|j r d|j znd|j ��dSdS)Nr�Fz1Detected added foreign key (%s)(%s) on table %s%s�, �%s.rw)r~r�rQrr�CreateForeignKeyOprr�r��join�source_columns�target_columns� source_schema� source_table)r� compare_tor-r�r�s ���r9�_add_fkz&_compare_foreign_keys.<locals>._add_fk�s���� � -� -� �I�s�x�!9�5�*� � � � � � '� '��&�6�6�u�{�C�C� � � � �H�H�C�� � �#�,�-�-�� � �#�,�-�-�-0�->�F���)�)�)�B�� �  � � � � � � r;c�����|j|jdd|��r��j�tj�|j����t�dd� |j ��d� |j ��|j r d|j znd|j ��dSdS)Nr�Tz3Detected removed foreign key (%s)(%s) on table %s%sr�r�rw)r~r�rQrrrrr�r�r�r�r�r�r�)rr�r-r�s ��r9� _remove_fkz)_compare_foreign_keys.<locals>._remove_fk�s���� � -� -� �I�s�x�!9�4�� � � � � � '� '��$�4�4�S�Y�?�?� � � � �H�H�E�� � �#�,�-�-�� � �#�,�-�-�-0�->�F���)�)�)�B�� �  � � � � � � r;) rRr(�get_foreign_keysr_r��correct_for_autogen_foreignkeysrKrcrQr�)r-r�rrZr�r�rR� metadata_fks� conn_fks_list�conn_fks�metadata_fks_sig� conn_fks_sig�conn_fks_by_sig�metadata_fks_by_sig�metadata_fks_by_name�conn_fks_by_namer�r�� removed_sigr�� added_sigr�r�s````` @@r9�_compare_foreign_keysr��s%�����������^�3����)�I��� �,����L� �������,�,�U�6�,�B�B����M�����"����H� � ,� 1�D��%�*�J�J��,��������;G���������<D����L� � ��m�A�&6�6�6�>�>��>�>�>��F�F�5E�F�F�F���J�I�L�I�I�I�� � �-=� � � ����+�����O�N�<�N�N�N��������� � � � � � �$�?�+�+�6�6�7J�K�K�*�*� �� �,�� �1� 1� 1��:�!5�5�5�%�U�Z�0�6�6�� � �J�u�j� )� )� )���,�-�-�8�8��I�I�'�'� �#�I�.�� �O� +� +��:�!1�1�1�!���,�2�2�� � �G�E�:� &� &� &��'�'r;c��|j�J�|jjsdS|�|�dS|j� |j�dS|j�=|j�6|j�tj||j|�����dS|j|jkr<|j�tj||j|j|�����dSdS)N)r�r)rIr�r�rr�DropTableCommentOp�CreateTableCommentOp)r-r�rrZr�r�s r9�_compare_table_commentr�s �� � "� .� .� .� � "� 4������^�3�����!�n�&<�&D�����%�*�*<�*H���#�#� � "�� �(:�6� � � � � � � � � � �:�#5� 5� 5���#�#� � $���&�!+�!3��  � � � � � � � � 6� 5r;)r-r&r.r)r/r0)r-r&r7r+r/r0)r-r&r7r+rTrUr/r0) rgrKrirKrRr!r7r+r-r&r/r0)r�r'r�r�r�r%r/r�)r�r'r�r�r�r%r/r)r�r�r�r%r/r)rr�rZr�r�r%r�r%r�r*r-r&rRr!r/r�)r-r&r�r*rr�rZr�r�r�r�r�r/r0)r-r&r�r(rr�rZr�r�r�r�rdr�rdr/r0)r-r&r�r(rr�rZr�r�r"r�rdr�rdr/r0)r�r�r-r&r/r�)r�rr/r)r-r&r�r(rr�rZrr�rr�rdr�rdr/r0)rZrr�rr/r0)r-r&r�r(rr�rZr�r�r�r�rdr�rdr/r�)r-r&r�r(rr�rZr�r�r"r�rdr�rdr/r�)r-r&r�r*rr�rZr�r�r%r�r%r/r0)r-r&r�r*rr�rZr�r�r�r�r�r/r0)`� __future__r� contextlib�loggingr��typingrrrrrr r r r r r� sqlalchemyrrrrprrry�sqlalchemy.sqlr�sqlalchemy.sql.schemarrr�sqlalchemy.utilrrwr� ddl._autogenrr� operationsrrr �sqlalchemy.engine.reflectionr!�sqlalchemy.sql.elementsr"r#r$r%�alembic.autogenerate.apir&�alembic.ddl.implr'�alembic.operations.opsr(r)r*r+r,� getLogger�__name__r�r:� DispatcherrOr5� dispatch_forrjrf� immutabledictr�r�r�r�r��__annotations__r�r�r��contextmanagerr�r�rQr/rprur{r�r�r�r�r�r�r�r�r�r]r;r9�<module>r�s���#�"�"�"�"�"�"��������� � � � ������������������������������������������������� � � � � � �������������������������*�*�*�*�*�*�������(�(�(�(�(�(�%�%�%�%�%�%�6�6�6�6�6�6�'�'�'�'�'�'�2�2�2�2�2�2�&�&�&�&�&�&�������'�'�'�'�'�'�$�$�$�$�$�$��������������/�������6�6�6�6�6�6�3�3�3�3�3�3�2�2�2�2�2�2�,�,�,�,�,�,�+�+�+�+�+�+�7�7�7�7�7�7�,�,�,�,�,�,�4�4�4�4�4�4�6�6�6�6�6�6�5�5�5�5�5�5�1�1�1�1�1�1�.�.�.�.�.�.��g���!�!��,�,�,�,��d�o�d�+�+�+� �����> ���(�#�#�'�'�'�$�#�'�TG9�G9�G9�G9�T-?�D�,>��~���!�,� �*� �+��)� �� -� -�� � � � �����@ � � � �����. ��EE�EE�EE���EE�P �W�T��/�1E�u�L�M�N�N�N�� ���'�"�"�^8�^8�^8�#�"�^8�B <9�<9�<9�~ ���(�#�#�%�%�%�$�#�%�P ���(�#�#�4�4�4�$�#�4�" ���(�#�#�' �' �' �$�#�' �T����&A�A�A�A�)3�)3�)3�)3�XO�O�O�O����" ���(�#�#�T�T�T�$�#�T�n ���(�#�#����$�#��6 ���'�"�"�x'�x'�x'�#�"�x'�v ���'�"�"�" �" �" �#�"�" �" �" r;
Memory