� J�g���� �ddlmZddlmZddlZddlmZddlmZddlmZddlm Z ddlm Z dd lm Z dd lm Z dd lm Z dd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZe r�ddlmZddlm Z ddlm!Z!ddlm"Z"ddl#m$Z$ddl#m%Z%ddl#m&Z&ddl#m'Z'ddl#m(Z(ddl#m)Z)dd l#m*Z*dd!l#m+Z+dd"l#m,Z,dd#l#m-Z-dd$l.m/Z/dd%l0m1Z1dd&l2m3Z3dd'l4m5Z5dd(l6m7Z7dd)l6m8Z8dd*l9m:Z:dd+l9m;Z;d,Z<d�d3�Z=d�d6�Z>d�d<�Z?ej@��xZAZBd�d?�ZCd�dC�ZDd�dD�ZEeB�Fej8��d�dF���ZGeB�FejH��d�dH���ZIeB�FejJ��d�dJ���ZKeB�FejL��d�dL���ZMeB�FejN��d�dN���ZOd�dR�ZPeB�FejQ��d�dT���ZReB�FejS��d�dV���ZTeB�FejU��d�dX���ZVeB�FejW��d�dZ���ZXeB�FejY��d[���ZZeB�Fej[��d\���Z\eB�Fej]��d�d^���Z^eB�Fej_��d�d`���Z`eB�Feja��d�db���ZbeB�Fejc��d�dd���ZdGde�df��Zed�di�Zfdjdkdkdl�d�ds�Zgd�dv�Zhd�dz�Zid{�Zjd�d|�Zkd�d}�Zld�d��Zmd�d��Znd�d��Zo d�d�d��Zpd�d��Zqd�d��Zr d�d�d��Zsd�d��Ztd�d��Zu d�d�d��Zvej@��Zwd�d��Zxew�Fej,��d�d����Zyd�d��Zzd�d��Z{ew�Fej)��d�d����Z|ew�Fej-��d�d����Z}ew�Fej$��d�d����Z~eB�Fej��d�d����Z�eA����ZBdS)��)� annotations)�StringION)�Any)�cast)�Dict)�List)�Optional)�Tuple)� TYPE_CHECKING)�Union)� PythonPrinter)�schema)�sql)�types)�conv)� quoted_name�)�util)�ops)� sqla_compat)�Literal)� DialectKWArgs)� ColumnElement)� TextClause)�CheckConstraint)�Column)� Constraint)� FetchedValue)� ForeignKey)�ForeignKeyConstraint)�Index)�MetaData)�PrimaryKeyConstraint)�UniqueConstraint)�ARRAY)� TypeEngine)�AutogenContext)�Config)�MigrationScript)�ModifyTableOps)�Computed)�Identity���autogen_contextr'�name�sqla_compat._ConstraintName�return�*Optional[Union[quoted_name, str, _f_name]]c��t|t��rtt|��|��St j|��S�N)� isinstancer�_f_name�_alembic_autogenerate_prefixr�constraint_name_or_none)r.r/s �k/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/alembic/autogenerate/render.py�_render_gen_namer::s@���$����9��3�O�D�D�d�K�K�K��2�4�8�8�8��text�strc���tjdtj���d|�����}tjdtj���d|��}|S)N�^� z +$�)�re�compile�M�sub�strip)r<s r9�_indentrGDsY�� �:�d�B�D� !� !� %� %�f�d� 3� 3� 9� 9� ;� ;�D� �:�f�b�d� #� #� '� '��D� 1� 1�D� �Kr;�migration_scriptr)� template_args�Dict[str, Union[str, Config]]�Nonec�2�|j}t|j|j��D]O\}}t t ||����||j<t t ||����||j<�Pd�t|����|d<dS)N� �imports) rN�zip�upgrade_ops_list�downgrade_ops_listrG�_render_cmd_body� upgrade_token�downgrade_token�join�sorted)r.rHrIrN� upgrade_ops� downgrade_opss r9� _render_python_into_templatevarsrYJs��� �%�G�&)��)�+;�+N�'�'� � �"� �]�4;� �[�/� :� :�4 �4 � �k�/�0�8?� �]�O� <� <�8 �8 � �m�3�4�4� $�y�y�����9�9�M�)���r;� op_container�ops.OpContainerc�t�t��}t|��}|�d��d}|jD]=}t ||��}|pt |��}|D]}|�|����>|s|�d��|�d��|���S)Nz=# ### commands auto generated by Alembic - please adjust! ###F�passz# ### end Alembic commands ###)rr � writeliner� render_op�bool�getvalue)rZr.�buf�printer� has_lines�op�lines�lines r9rRrR`s��� �*�*�C��C� � �G� ���G�����I���$�$���/�2�.�.���,��e��� �� $� $�D� � � �d� #� #� #� #� $� �"����&�!�!�!� ���6�7�7�7� �<�<�>�>�r;re�ops.MigrateOperation� List[str]c�v�t�|��}tj|||����}|Sr4)� renderers�dispatchr�to_list)r.re�rendererrfs r9r_r_{s7���!�!�"�%�%�H� �L���/�2�6�6� 7� 7�E� �Lr;c�H�d�t||����S)NrM)rUr_�r.res r9�render_op_textrq�s �� �9�9�Y���3�3� 4� 4�4r;r*c���|j}|�dd��}|jr�g}|r�|���5|�d|j�d|j�d���|jD]'}t||��}|�|���(|�d��ddd��n #1swxYwYn/|jD]'}t||��}|�|���(|SgS)N�render_as_batchFzwith op.batch_alter_table(z , schema=z) as batch_op:rA) �opts�getr� _within_batch�append� table_namerr_�extend)r.rertrsrf�t_op�t_liness r9�_render_modify_tabler|�sW�� � �D��h�h�0�%�8�8�O� �v���� � &� �.�.�0�0� !� !�� � � ��}�}�}�b�i�i�i�1�����F�*�*�D�'���>�>�G��L�L��)�)�)�)�� � �R� � � � !� !� !� !� !� !� !� !� !� !� !���� !� !� !� !���� &� &��#�O�T�:�:��� � �W�%�%�%�%�� �� s�A+B4�4B8�;B8�ops.CreateTableCommentOpc���|jrd}nd}|�t|��|j|j� d|jznd|j� d|jznd|j� d|jzndd���S)NzV{prefix}create_table_comment( {indent}{comment}, {indent}existing_comment={existing} )z�{prefix}create_table_comment( {indent}'{tname}', {indent}{comment}, {indent}existing_comment={existing}, {indent}schema={schema} )�%r�'%s'r@)�prefix�tname�comment�existingr�indent)� _has_batch�formatr7rxr��existing_commentr�r.re�templs r9�_render_create_table_commentr��s����!� � � �� � � �<�<�+�O�<�<��m�%'�Z�%;��r�z�!�!���"�.� �2�&� &� &��%'�Y�%:�v�� �!�!��� � � � r;�ops.DropTableCommentOpc��|jrd}nd}|�t|��|j|j� d|jznd|j� d|jzndd���S)NzA{prefix}drop_table_comment( {indent}existing_comment={existing} )zm{prefix}drop_table_comment( {indent}'{tname}', {indent}existing_comment={existing}, {indent}schema={schema} )rr�r@)r�r�r�rr�)r�r�r7rxr�rr�s r9�_render_drop_table_commentr��s����!�  � � �� � � �<�<�+�O�<�<��m��"�.� �2�&� &� &��%'�Y�%:�v�� �!�!��� � � � r;�ops.CreateTableOpc�z�������}d��fd�|jD��D��td���fd�|jD��D����z}t |��t krdd�|��zdz}nd�|��}dt�j��t���|d �z}�j r|d t�j ��zz }|j }|r|d t|��zz }|j }|r|d |��z }t�j ��D],}|d|�d d���d�j |��z }�-|jr,d�d�|jD����} |d| zz }�j�|dt#�j��zz }|dz }|S)Nc��g|]}|�|��S�r���.0�cols r9� <listcomp>z_add_table.<locals>.<listcomp>�s0�� � � � � �  � � � � r;c�0��g|]}t|�����Sr�)�_render_column)r�r�r.s �r9r�z_add_table.<locals>.<listcomp>�s0��� � � �58�N�3�� 0� 0� � � r;c��g|]}|�|��Sr4r�)r��rconss r9r�z_add_table.<locals>.<listcomp>�s,�� � � �� � � �!� � r;c�<��g|]}t|��j����Sr�)�_render_constraint�_namespace_metadata)r��consr.res ��r9r�z_add_table.<locals>.<listcomp>�s?�������#��/�2�+A�����r;z*[�, �]z.%(prefix)screate_table(%(tablename)r, %(args)s)� tablenamer��argsz , schema=%rz , comment=%rz, info=� �_�=�, c3� K�|] }d|zV�� dS)r�Nr�)r��ps r9� <genexpr>z_add_table.<locals>.<genexpr>s&����A�A�A�V�a�Z�A�A�A�A�A�Ar;z, prefixes=[%s]z, if_not_exists=%rz ))�to_table�columnsrV� constraints�len�MAX_PYTHON_ARGSrU�_identrxr7rr��info�kw�replace� _prefixes� if_not_existsr`) r.re�tabler��args_strr<r�r��k�prefixess `` r9� _add_tabler��sB���� �K�K�M�M�E� � � � � � �<A�M� � � � � � � � � ������"�-� ��� � � � � �  �D�& �4�y�y�?�"�"��%�*�*�T�*�*�*�S�0����:�:�d�#�#�� <��B�M�*�*�.��?�?��@�@� �D�  �y�3� ���� �!2�!2�2�2���m�G��2� ��&��/�/�1�1�� �:�D� �$� �#�4�#�#�#�� �B�E�]�]�=�=�� ��a�i�i��S�1�1�1�1�2�5��8�8�<�<��� ��.��9�9�A�A���A�A�A�A�A�� �"�X�-�-�� ��#� �%��R�-=�(>�(>�>�>���E�M�D� �Kr;�ops.DropTableOpc���dt|��t|j��d�z}|jr|dt|j��zz }|j�|dt |j��zz }|dz }|S)Nz%(prefix)sdrop_table(%(tname)r)r�r�� , schema=%rz, if_exists=%r�))r7r�rxr� if_existsr`)r.rer<s r9� _drop_tabler�!s��� +�.��?�?��� �&�&�/�/� �D� �y�2� � ��r�y� 1� 1�1�1�� �|�� � �4�� �#5�#5�5�5���C�K�D� �Kr;�itemr� list[str]c�N���fd�|j���D��S)Nc�@��g|]\}}|�dt|�������S�r���_render_potential_expr�r��key�valr.s �r9r�z0_render_dialect_kwargs_items.<locals>.<listcomp>4sF��� � � � �C�� �?�?�'��_�=�=�?�?� � � r;)�dialect_kwargs�items)r.r�s` r9�_render_dialect_kwargs_itemsr�1s=��� � � � ��+�1�1�3�3� � � �r;�ops.CreateIndexOpc �:�|���}|j}|rd}nd}|j�J�t||��}|j�*|�dt |j��z��|t|��t||j ��t|jj ��d� t||����|j pd|jjrdt|jj��znd|rdd� |��zndd�z}|S) NzL%(prefix)screate_index(%(name)r, [%(columns)s], unique=%(unique)r%(kwargs)s)za%(prefix)screate_index(%(name)r, %(table)r, [%(columns)s], unique=%(unique)r%(schema)s%(kwargs)s)zif_not_exists=%rr�Fr�rA)r�r/r�r��uniquer�kwargs)�to_indexr�r�r�r�rwr`r7r:r/r�rU�_get_index_rendered_expressionsr�r�r.re�index� has_batch�tmplrtr<s r9� _add_indexr�:s4�� �K�K�M�M�E��*�I��  � +� ��  5� � �;� "� "� "� '��� ?� ?�D� ��#� � � �&��b�.>�)?�)?�?�@�@�@� �.��?�?� ��%�*�=�=��� �(�)�)��9�9� +�E�?� C� C� � ��,�'�%��{�!� �]�V�E�K�$6�7�7� 7� 7��,0�8�$����4���(�(�b��� �D� �Kr;�ops.DropIndexOpc ��|���}|j}|rd}nd}t||��}|j�*|�dt |j��z��|t |��t||j��t|j ��|j rdt|j ��znd|rdd� |��zndd�z}|S)Nz(%(prefix)sdrop_index(%(name)r%(kwargs)s)zM%(prefix)sdrop_index(%(name)r, table_name=%(table_name)r%(schema)s%(kwargs)s)z if_exists=%rr�rAr�)r�r/rxrr�) r�r�r�r�rwr`r7r:� index_namer�rxrrUr�s r9� _drop_indexr�bs��� �K�K�M�M�E��*�I�� �9��� =� � (��� ?� ?�D� �|�� � � �N�T�"�,�%7�%7�7�8�8�8� �.��?�?� ��"�-�@�@��R�]�+�+�:<�)�K�M�F�2�9�$5�$5�5�5��,0�8�$����4���(�(�b� �� �D� �Kr;�ops.CreateUniqueConstraintOpc�J�t|���|d��gS)NT)�_uq_constraint� to_constraintrps r9�_add_unique_constraintr�|s%�� �2�+�+�-�-��� E� E� F�Fr;�ops.CreateForeignKeyOpc��tt||j����g}|js4|�tt |j������|�tt |j����td�|j D����td�|j D����g��gd�}|js|� dd��|D]4}||j vr)|j |}|�|�|�d|�����5dt|��d�|��d �zS) Nc�,�g|]}t|����Sr��r�r�s r9r�z&_add_fk_constraint.<locals>.<listcomp>�s��7�7�7�#�&��+�+�7�7�7r;c�,�g|]}t|����Sr�r�r�s r9r�z&_add_fk_constraint.<locals>.<listcomp>�s��8�8�8�#�&��+�+�8�8�8r;)�referent_schema�onupdate�ondelete� initially� deferrable� use_alter�matchr� source_schemar�z&%(prefix)screate_foreign_key(%(args)s)r��r�r�)�reprr:�constraint_namer�rwr�� source_tablery�referent_table� local_cols� remote_cols�insertr�r7rU)r.rer�r�r��values r9�_add_fk_constraintr��sd�� �!�/�2�3E�F�F� G� G� H�D� � %�3� � � �D����0�0�1�1�2�2�2��K�K� ���)�*�*� +� +� �7�7���7�7�7� 8� 8� �8�8���8�8�8� 9� 9� �������F� � %�*�� � �a��)�)�)� �2�2�� ���:�:��E�!�H�E�� �� � �q�q�q�%�%�0�1�1�1�� 3�.��?�?�� � �$���7�7� �r;c��t���r4��NotImplementedError�� constraintr.s r9�_add_pk_constraintr����� � � �r;c��t���r4r�r�s r9�_add_check_constraintr�r�r;�ops.DropConstraintOpc��t|��}t||j��}|jrt |j��nd}|jrt |j��nd}g}|�t|����|jsN|�tt |j ������|�|�d|����|�|�d|����|�dd� |���d�S)N�schema=�type_=zdrop_constraint(r�r�) r7r:r�rr��constraint_typerwr�r�rxrU)r.rer�r/r�type_� params_strss r9�_drop_constraintr�s��*�/� :� :�F� �O�R�-?� @� @�D�"$�)� 5�V�B�I� � � ��F�*,�*<� F�F�2�%� &� &� &�$�E��K����t�D�z�z�"�"�"� � %�5����4��r�}� 5� 5�6�6�7�7�7� � � � � �3��3�3� 4� 4� 4� �����-�E�-�-�.�.�.�� ?� ?�d�i�i� �&<�&<� ?� ?� ?�?r;�ops.AddColumnOpc��|j|j|j}}}|jrd}nd}|r|dz }|dz }|t |��|t ||��|d�z}|S)Nz %(prefix)sadd_column(%(column)s)z*%(prefix)sadd_column(%(tname)r, %(column)s�, schema=%(schema)rr�)r�r��columnr)rrxr r�r7r�)r.rerr�r �templater<s r9� _add_columnr�s����I�r�}�b�i�6�E�F��!��5���?�� � .� �-� -�H��C��� �.��?�?�� ���9�9�� �� �D� �Kr;�ops.DropColumnOpc���|j|j|j}}}|jrd}nd}|r|dz }|dz }|t |��t |��t |��t |��d�z}|S)Nz %(prefix)sdrop_column(%(cname)r)z*%(prefix)sdrop_column(%(tname)r, %(cname)rr r�)r�r��cnamer)rrx� column_namer�r7r�)r.rerr�rr r<s r9� _drop_columnr�s���!#��B�M�2�>�;�E�F��!��5���?�� � .� �-� -�H��C��� �.��?�?������ �$�$���.�.� �� �D� �Kr;�ops.AlterColumnOpc���|j}|j}|j}|j}|j}|j}|j�dd��}|j} |j } |j } |j } |j } d}|j rd}nd}|t|��||d�z}| �|d|�dt| |����z }|durt!||��}|d|�d |��z }|�|d|�d t||����z }|� |d|�d |��z }|dur |d|�d |��z }| � |d|�d | ��z }|� | � |d|�d| ��z }|� |d|�d|��z }|dur| rt!| |��}|d|�d|��z }| r|j s |d|�d| ��z }|dz }|S)N� autoincrementz z %(prefix)salter_column(%(cname)rz+%(prefix)salter_column(%(tname)r, %(cname)r)r�r�rr�zexisting_type=Fzserver_default=rz nullable=zcomment=zexisting_comment=zexisting_nullable=zautoincrement=zexisting_server_default=rr�)rxr�modify_server_default� modify_type�modify_nullable�modify_commentr�ru� existing_type�existing_nullabler��existing_server_defaultrr�r7� _repr_type�_render_server_default)r.rer�r�server_defaultr�nullabler�rrrr�rrr�r r<�rendereds r9� _alter_columnr#�sR�� �M�E� �N�E��-�N� �N�E��!�H���G��E�I�I�o�t�4�4�M��$�M��,���*�� �8�� �Y�F� �F��!�A�5���@�� �.��?�?����� �D� � � �� �F�F� �}�o� 6� 6� 6� � ���U�"�"�)�.�/�J�J�� ��F�F�F�H�H�=�=�� �� ��6�6�6�:�e�_�+M�+M�+M�N�N���� ��f�f�f�h�h�7�7���e��� ��V�V�V�W�W�5�5���#� ��f�f�f�6F�6F�G�G����-�9� ��v�v�v�7H�7H�I�I��� � ��6�6�6�=�=�A�A������#:��)� #�_� � �� ��V�V�V�X�X�F�F�� �4�o�0�4� ��F�F�F�F�F�3�3���C�K�D� �Kr;c��eZdZd d�Zd d�Zd S) r6r�r=r/rr1rKc�"�||_||_dSr4)r�r/)�selfr�r/s r9�__init__z_f_name.__init__/s���� ��� � � r;c�@�|j�dt|j���d�S)Nzf(r�)r�r�r/)r&s r9�__repr__z_f_name.__repr__3s#�� �K�K�K��� �):�):�):�):�;�;r;N)r�r=r/rr1rK)r1r=)�__name__� __module__� __qualname__r'r)r�r;r9r6r6.s<����������<�<�<�<�<�<r;r6�!Optional[Union[quoted_name, str]]� Optional[str]c��|�|St|t��rt|��St|t��r|SdS)z�produce a __repr__() object for a string identifier that may use quoted_name() in SQLAlchemy 0.9 and greater. The issue worked around here is that quoted_name() doesn't have very good repr() behavior by itself when unicode is involved. N)r5rr=)r/s r9r�r�7sM�� �|�� � �D�+� &� &���4�y�y�� �D�#� � ��� ��r;TF)� wrap_in_text�is_server_default�is_indexr�rr0r`r1r2c���t|tj��r<|rd}nd}|t|��|jj�|||���d�zSt|��S)Nz%(prefix)stext(%(sql)r)z%(sql)r)r1r2)r�r)r5r� ClauseElement�_sqlalchemy_autogenerate_prefix�migration_context�impl�render_ddl_sql_exprr�)r�r.r0r1r2r s r9r�r�Gs����%��*�+�+�� � !�0�H�H� �H��5�o�F�F�"�4�9�M�M��):�X�N��� � � � ��E�{�{�r;�idxr!c�*���fd�|jD��S)Nc ���g|]Y}t|tj��r+tt t |dd������nt |�d�����ZS)r/NT)r2)r5� sa_schemarr�r��getattrr�)r��expr.s �r9r�z3_get_index_rendered_expressions.<locals>.<listcomp>csq��� � � � ��#�y�/�0�0� M�D����V�T�2�2�3�3� 4� 4� 4�'��_�t�L�L�L�  � � r;)� expressions)r9r.s `r9r�r�`s2��� � � � � �?�  � � �r;r�r$�alterc�l�g}|j}|jr)|�dt|j��f��|jr)|�dt|j��f��|s<|r:|jjr.|�dt|jj��f��|s1|jr*|�dt||j��f��t||��}|r�tt||j����g}|s*|tt|jj����gz }|�td�|j D������|� d�|D����|� |��dt|��d�|��d �zSd �|j D��}|� d �|D����|� |��d t!|��d�|��d �zS) Nr�r�rr/c�6�g|]}t|j����Sr�)r�r/r�s r9r�z"_uq_constraint.<locals>.<listcomp>�s"��I�I�I�s�&���*�*�I�I�Ir;c�"�g|] \}}|�d|���� Sr�r��r�r��vs r9r�z"_uq_constraint.<locals>.<listcomp>��'��7�7�7�$�!�Q����1�1�%�7�7�7r;z,%(prefix)screate_unique_constraint(%(args)s)r�r�c�P�g|]#}tt|j������$Sr�)r�r�r/r�s r9r�z"_uq_constraint.<locals>.<listcomp>�s*��E�E�E�3��V�C�H�%�%�&�&�E�E�Er;c�"�g|] \}}|�d|���� Sr�r�rDs r9r�z"_uq_constraint.<locals>.<listcomp>�rFr;z$%(prefix)sUniqueConstraint(%(args)s))r�r�rwr=r�r�rr�r/r:r�r�r�ryr7rUr5)r�r.r@rtr��dialect_optionsr�s r9r�r�msX�� #%�D��*�I���@� � � �\�3�z�'<�#=�#=�>�?�?�?���>� � � �[�#�j�&:�";�";�<�=�=�=� �A��A�:�#3�#:�A� � � �X�v�j�&6�&=�>�>�?�@�@�@� � �Z�_� � � � � �%�o�z��G�G� H� � � �3�?�J�O�O�O� � ��%�o�z��G�G�H�H�I��� :� �T�&��!1�!6�7�7�8�8�9� 9�D� � � �D�I�I�j�6H�I�I�I�J�J�K�K�K� � � �7�7�$�7�7�7�8�8�8� � � �O�$�$�$�=�2�?�C�C��I�I�d�O�O�A �A � � � F�E�*�2D�E�E�E�� � � �7�7�$�7�7�7�8�8�8� � � �O�$�$�$�5�5�o�F�F��I�I�d�O�O�9 �9 � � r;c�8�|jd}|� d|jzS|S)N�user_module_prefixz%s.)rtr+)r.�targetr�s r9�_user_autogenerate_prefixrM�s(�� � !�"6� 7�F� �~��v�(�(�(�� r;c� �|jdpdS)N�sqlalchemy_module_prefixrA�rt�r.s r9r5r5�s�� � � :� ;� A�r�Ar;c�2�|jrdS|jdpdS)Nz batch_op.�alembic_module_prefixrA)r�rtrQs r9r7r7�s'���!�C��{��#�$;�<�B��Br;r�object_�Union[str, Literal[False]]c�\�d|jvr"|jd}|r||||��}|dur|SdS)N� render_itemFrP)rrTr.�renderr"s r9�_user_defined_renderrY�sO����,�,�,� �%�m�4�� � ��v�e�W�o�>�>�H��u�$�$��� �5r;r � Column[Any]c ���td|���}|dur|Sg}g}|jrXt|j���}|rAt|j��r|�|��n|�d|f��|j�1|jt jkr|�d|jf��|j�|�d|jf��|j r|�d|j f��|j }|r|�dd|zf��d t���t|j ��t|j���|r"d �d �|D����d znd d �d �|D���fd�t j|�����D��z��d�zS)Nr Fr rr!�systemr�rz8%(prefix)sColumn(%(name)r, %(type)s, %(args)s%(kwargs)s)r�c�,�g|]}t|����Sr�)r=)r��args r9r�z"_render_column.<locals>.<listcomp>�s��4�4�4��3�s�8�8�4�4�4r;rAc�"�g|] \}}|�d|���� Sr�r��r��kwnamer�s r9r�z"_render_column.<locals>.<listcomp>��'��A�A�A�[�V�S�F�F�F�C�C�(�A�A�Ar;c�@��g|]\}}|�dt|�������Sr�r�r�s �r9r�z"_render_column.<locals>.<listcomp>�sI������!��S��s�s�2�3��H�H�H�J���r;)r�r/�typer�r�)rYr r�*_should_render_server_default_positionallyrwrr�AUTOINCREMENT_DEFAULTr!r\r�r5r�r/rrdrU�_column_kwargsr�)r r.r"r�rtr�s ` r9r�r��s���$�H�f�o�F�F�H��u������D�"$�D� �� :�)� � !�?� � �� � :�9��%��� :�� � �H�%�%�%�%�� � �-�x�8�9�9�9� ��(� � �K�$E� E� E� � � �_�f�&:�;�<�<�<� ��"� � � �Z���1�2�2�2� �}�/� � � �X�v�}�-�.�.�.��n�G��1� � � �Y��w��/�0�0�0� F�1�/�B�B��v�{�#�#��6�;��8�8�@D�L�� � �4�4�t�4�4�4�5�5��<�<�"� �I�I�A�A�D�A�A�A�����%0�$>�v�$F�$F�$L�$L�$N�$N����� � � I�I� �r;r c�R�tj|��ptj|��Sr4)r�_server_default_is_computed�_server_default_is_identity)r s r9rere�s/�� � 2�� � � A� � 0�� @� @�Ar;�default�BOptional[Union[FetchedValue, str, TextClause, ColumnElement[Any]]]�repr_c�<�td||��}|dur|Stj|��rtt d|��|��Stj|��rt t d|��|��St|tj ��r9t|j t��r|j }nt|j |d���St|t��r%|r#ttjdd|����}t t|��S) Nr Fr+r,T)r1z^'|'$rA)rYrri�_render_computedrrj�_render_identityr5r<� DefaultClauser^r=r�r�rBrE)rkr.rmr"s r9rr�s��$�$4�g��O�O�H��u������.�w�7�7� ���Z�� 9� 9�?�K�K�K� � 0�� 9� 9����Z�� 9� 9�?�K�K�K� �G�Y�4� 5� 5�� �g�k�3� '� '� ��k�G�G�)�� �_����� ��'�3���6�E�6��r�v�h��G�4�4�5�5�� ��W� � �r;�computedr+c���t|j|d���}i}|j� |j|d<dt|��|d�d�|���D����d�zS)NF�r0� persistedz(%(prefix)sComputed(%(text)s, %(kwargs)s)r�c3� K�|] }d|zV�� dS�z%s=%sNr��r��pairs r9r�z#_render_computed.<locals>.<genexpr>�&����G�G��W�t�^�G�G�G�G�G�Gr;)r�r<r�)r��sqltextrur5rUr�)rrr.r<r�s r9roros��� "���/�� � � �D��F���%�&�0��{�� 5�1�/�B�B���9�9�G�G�� � ���G�G�G�G�G�9�9� �r;�identityr,c��tj|d���}dt|��d�d�|���D����d�zS)NT)r�z%(prefix)sIdentity(%(kwargs)s)r�c3� K�|] }d|zV�� dSrwr�rxs r9r�z#_render_identity.<locals>.<genexpr>,rzr;)r�r�)r�_get_identity_options_dictr5rUr�)r|r.r�s r9rprp#sj��� 3������F� ,�1�/�B�B��9�9�G�G�� � ���G�G�G�G�G�/�/� �r;r&�_skip_variantsc���td||��}|dur|St|jd��r!|jj�||��}nd}t |��j}|j}|�d��rStj d|��}|�J�|� d��}|�|� d|z��|r|S|�d|��S|r|S|s$tj|��rt||��S|�d ��rUd |jzt#��vr(t#��d |jz} | ||��St%|��} | �|��St'||��} | �|��S) NrdFr7�sqlalchemy.dialects�sqlalchemy\.dialects\.(\w+)�z"from sqlalchemy.dialects import %s�.z sqlalchemy.z_render_%s_type)rY�hasattrr6r7� render_typerdr+rN� startswithrBr��group�addr�_type_has_variants�_render_Variant_type�__visit_name__�globalsr5rM) rr.r�r"�impl_rt�modrNr��dname�fnr�s r9rr0s��� $�F�E�?�C�C�H��u�������0�&�9�9��!�3�8�D�D� �?� � ����� �u�+�+� �C��%�G� �~�~�+�,�,�(���7��=�=��� � � �� � �A���� � � �K�K�<�u�D� E� E� E� � ,��N�#�e�e�U�U�+� +� � (��� � (� � >�u� E� E� (�#�E�?�;�;�;� ��� � &� &� (� �u�3� 3�w�y�y� @� @����,�u�/C�C�D�B��2�e�_�-�-� -�4�_�E�E�F�#�V�U�U�+� +�*�?�E�B�B������'�'r;r%c �L�ttt||dd����S)N� item_typez(.+?\())rr=�_render_type_w_subtype)rr.s r9�_render_ARRAY_typer�\s-�� � �� �?�K�� � � � �r;c���tj|��\}}t||d���}|�|dusJ�t|��D]&}||}|dt||d����d|�d�z }�'|S)NT)r�Fz.with_variant(r�r�)r�_get_variant_mappingrrV)rr.� base_type�variant_mapping�base�dialect�typs r9r�r�es���"-�!A�%�!H�!H��I�� �i��� F� F� F�D� � ��E� 1� 1� 1� 1��/�*�*� � ���g�&�� �� �s�O�D� A� A� A� A� A� �G�G� � ��� �Kr;�attrname�regexpr��$Union[Optional[str], Literal[False]]c�,�t|��}t||d��}|�dSt|��}tjdd|��}t t||��|��}tj||zd|z|��} |r|�| ��St |��j} | �d��r5tjd| ��} | �J�| � d��} | �d| ��S| �d ��rt|��}|�| ��SdS) NFz([\(\)])z\\\1z\1%sr�r�r�r�� sqlalchemy) r�r=rBrErrdr+r�r�r�r5) rr.r�r�r�� outer_repr� inner_type� inner_repr�sub_type� outer_typer�r�r�s r9r�r�ts.���e���J����$�/�/�J����u��j�!�!�J��� �W�j�9�9�J��'�%��2�2�O�D�D�H�����+�W�x�-?��L�L�J� �-�����,�,� �u�+�+� �C� �~�~�+�,�,� ���7��=�=��� � � �� � �A�����%�%���,�,� ��� � %� %��0��A�A������,�,��tr;r�namespace_metadata�Optional[MetaData]c�� t�|��}||||��S#t$rtjd|z��d|zcYSwxYw)Nz(No renderer is established for object %rz[Unknown Python object %r])�_constraint_renderersrl� ValueErrorr�warn)r�r.r�rns r9r�r��sv�� I�(�1�1�*�=�=�� �x� �O�5G�H�H�H�� �9�9�9� � �<�z�I�J�J�J�+�j�8�8�8�8�9���s�)�&A�Ar#c �J�td||��}|dur|S|jsdSg}|jr7|�dt t ||j����f��dt |��d�d�|jD��d�|D��z��d�zS) N� primary_keyFr/z(%(prefix)sPrimaryKeyConstraint(%(args)s)r�c�6�g|]}t|j����Sr�)r�r/)r��cs r9r�z'_render_primary_key.<locals>.<listcomp>�s �� 6� 6� 6�a�T�!�&�\�\� 6� 6� 6r;c�"�g|] \}}|�d|���� Sr�r�r`s r9r�z'_render_primary_key.<locals>.<listcomp>�s'��?�?�?�;�6�3�&�&�&�#�#�&�?�?�?r;r�)rYr�r/rwr�r:r5rU�r�r.r�r"rts r9�_render_primary_keyr��s��� $�M�:��O�O�H��u����� � ���t� �D��� � � � � �T�*�?�J�O�L�L�M�M� N� � � � 6�1�/�B�B�� � � 6� 6�:�#5� 6� 6� 6�?�?�$�?�?�?� @� � �9�9� �r;�fkr�metadata_schemar"c��|���}|�d��}|dd�\}}|�t|��dkr|�d|��}nd�|dd���}|jsW|j�P|jj�D||jvr;|j|j� |��}|�t|j ��}|�d|��}|S)zxImplement a 'safe' version of ForeignKey._get_colspec() that won't fail if the remote table can't be resolved. r������Nrr�����) � _get_colspec�splitr�rU� link_to_name�parentr��tablesr�rur�r/) r�r�r��colspec�tokensr��colname�table_fullnamer�s r9� _fk_colspecr��s����o�o���G� �]�]�3� � �F��B�C�C�[�N�E�7��"�s�6�{�{�a�'7�'7�$3�O�O�U�U�;������&��2��,�/�/�� �O� +� �I� !� �I�O� '� �/�6� 6� 6�$�+�N�;�=�A�A�'�J�J�C��� ���*�*��'�����1�G� �Nr;r rt�List[Tuple[str, str]]c�J�|jr)|�dt|j��f��|jr)|�dt|j��f��|jr)|�dt|j��f��|jr)|�dt|j��f��|jr)|�dt|j��f��|jr+|�dt|j��f��dSdS)Nr�r�r�r�r�r�)r�rwr�r�r�r�r�r�)r�rts r9�_populate_render_fk_optsr��s#����=� � � �Z��j�&9�!:�!:�;�<�<�<���=� � � �Z��j�&9�!:�!:�;�<�<�<���?� � � �[�$�z�';�"<�"<�=�>�>�>���A� � � �\�4� �(=�#>�#>�?�@�@�@���?� � � �[�$�z�';�"<�"<�=�>�>�>���7� � � �W�d�:�#3�4�4�5�6�6�6�6�6�7�7r;c �����td||��}|dur|Sg}|jr7|�dtt ||j����f��t ||���j�dt|��d�d�|j D����d���fd�|j D����d�d�|D����d �zS) N� foreign_keyFr/zC%(prefix)sForeignKeyConstraint([%(cols)s], [%(refcols)s], %(args)s)r�c3�bK�|]*}tt|jj����V��+dSr4)r�r�r�r/)r��fs r9r�z&_render_foreign_key.<locals>.<genexpr>sG������01��V�A�H�M�*�*�+�+������r;c3�T�K�|]"}tt|������V��#dSr4)r�r�)r�r��apply_metadata_schemar�s ��r9r�z&_render_foreign_key.<locals>.<genexpr>sM�����!�!���[��$9�;M�N�N�O�O�!�!�!�!�!�!r;c�"�g|] \}}|�d|���� Sr�r�r`s r9r�z'_render_foreign_key.<locals>.<listcomp>rbr;)r��cols�refcolsr�) rYr/rwr�r:r�rr5rU�elements)r�r.r�r"rtr�s ` @r9�_render_foreign_keyr��s?���� $�M�:��O�O�H��u����� �D��� � � � � �T�*�?�J�O�L�L�M�M� N� � � ��Z��.�.�.�.�5�� #�6�o�F�F��I�I���5?�5H�������y�y�!�!�!�!�!�#�,�!�!�!����I�I�A�A�D�A�A�A��� � � �r;c�R�td||��}|dur|St||d��S)Nr�F)rYr�)r�r.r�r"s r9�_render_unique_constraintr�s7�� $�H�j�/�J�J�H��u����� �*�o�u� =� =�=r;rc ���td||��}|dur|S|jr;t|jd��r&t|jjt j��rdSg}|jr7|�dtt||j����f��dt|��|r"dd� d�|D����zndt|j|d� ��d �zS) N�checkFrLr/z.%(prefix)sCheckConstraint(%(sqltext)s%(opts)s)r�c3�*K�|]\}}|�d|��V��dS)r�Nr�rDs r9r�z+_render_check_constraint.<locals>.<genexpr>Js1����@�@�4�1�a����A�A�.�@�@�@�@�@�@r;rArt)r�rtr{)rY� _create_ruler�r5rL�sqltypesr&r/rwr�r:r5rUr�r{r�s r9�_render_check_constraintr�+s%�� $�G�Z��I�I�H��u����� ��� �J�+�X� 6� 6�� � � #� *� � � � ���t� �D��� � � � � �T�*�?�J�O�L�L�M�M� N� � � � <�1�/�B�B�� �D�D�I�I�@�@�4�@�@�@�@�@� A� A��)� � ��e� � � � ?� ?� � r;�ops.ExecuteSQLOpc�h�t|jt��std���d|jzS)NznAutogenerate rendering of SQL Expression language constructs not supported here; please use a plain SQL stringzop.execute(%r))r5r{r=r�rps r9� _execute_sqlr�Ts=�� �b�j�#� &� &� �!� @� � � � �b�j� (�(r;)r.r'r/r0r1r2)r<r=r1r=)r.r'rHr)rIrJr1rK)rZr[r.r'r1r=)r.r'rerhr1ri)r.r'rerhr1r=)r.r'rer*r1ri)r.r'rer}r1r=)r.r'rer�r1r=)r.r'rer�r1r=)r.r'rer�r1r=)r.r'r�rr1r�)r.r'rer�r1r=)r.r'rer�r1r=)r.r'rer�r1ri)r.r'rer�r1r=)r.r'rerr1r=)r.r'rer r1r=)r.r'rerr1r=)r.r'rerr1r=)r/r-r1r.) r�rr.r'r0r`r1r`r2r`r1r=)r9r!r.r'r1ri)r�r$r.r'r@r`r1r=)r.r'r1r=)rr=rTrr.r'r1rU)r rZr.r'r1r=)r rr1r`)T)rkrlr.r'rmr`r1r.)rrr+r.r'r1r=)r|r,r.r'r1r=)F)rr&r.r'r�r`r1r=)rr%r.r'r1r=)rr&r.r'r1r=r4) rr&r.r'r�r=r�r=r�r.r1r�)r�rr.r'r�r�r1r.)r�r#r.r'r�r�r1r.)r�rr�r.r�r"r1r=)r�r rtr�r1rK)r�r r.r'r�r"r1r.)r�r$r.r'r�r�r1r=)r�rr.r'r�r�r1r.)r.r'rer�r1r=)�� __future__r�iorrB�typingrrrrr r r r � mako.pygenr r�rr<rrr��sqlalchemy.sql.elementsrrrAr� operationsrrr�sqlalchemy.sql.baserrr�sqlalchemy.sql.schemarrrrrr r!r"r#r$�sqlalchemy.sql.sqltypesr%�sqlalchemy.sql.type_apir&�alembic.autogenerate.apir'�alembic.configr(�alembic.operations.opsr)r*�alembic.util.sqla_compatr+r,r�r:rGrY� Dispatcher�default_renderersrkrRr_rq� dispatch_forr|�CreateTableCommentOpr��DropTableCommentOpr�� CreateTableOpr�� DropTableOpr�r�� CreateIndexOpr�� DropIndexOpr��CreateUniqueConstraintOpr��CreateForeignKeyOpr��CreatePrimaryKeyOpr��CreateCheckConstraintOpr�DropConstraintOpr� AddColumnOpr� DropColumnOpr� AlterColumnOpr#r6r�r�r�r�rMr5r7rYr�rerrorprr�r�r�r�r�r�r�r�r�r�r�� ExecuteSQLOpr��branchr�r;r9�<module>r�s� ��#�"�"�"�"�"������� � � � ������������������������������������� � � � � � �������$�$�$�$�$�$�*�*�*�*�*�*�������(�(�(�(�(�(�(�(�(�(�(�(�/�/�/�/�/�/��������������������2�������1�1�1�1�1�1�5�5�5�5�5�5�2�2�2�2�2�2�5�5�5�5�5�5�,�,�,�,�,�,�0�0�0�0�0�0�2�2�2�2�2�2�0�0�0�0�0�0�:�:�:�:�:�:�+�+�+�+�+�+�.�.�.�.�.�.�:�:�:�:�:�:�6�6�6�6�6�6�-�-�-�-�-�-�2�2�2�2�2�2�7�7�7�7�7�7�%�%�%�%�%�%�6�6�6�6�6�6�5�5�5�5�5�5�1�1�1�1�1�1�1�1�1�1�1�1���9�9�9�9����� :�:�:�:�&!0��� 1� 1�1��I�����6����5�5�5�5�  ����*�+�+����,�+��8 ����0�1�1����2�1��B ����.�/�/����0�/��< ����)�*�*�6�6�6�+�*�6�r �����(�(� � � �)�(� ����� ����)�*�*�$�$�$�+�*�$�N �����(�(����)�(��2 ����4�5�5�G�G�G�6�5�G�  ����.�/�/�#�#�#�0�/�#�L ����.�/�/� � �0�/� � ����3�4�4� � �5�4� � ����,�-�-�@�@�@�.�-�@�( �����(�(����)�(��$ ����(�)�)����*�)��( ����)�*�*�9�9�9�+�*�9�x<�<�<�<�<�<�<�<� � � � �(�#�� ������2 � � � �' �' �' �' �T���B�B�B�B�C�C�C�C� � � � �6�6�6�6�rA�A�A�A�� �����:����" � � � � !�)(�)(�)(�)(�)(�X���� � � � �(!� �����D(���)�)�� I� I� I� I��#�#�I�$B�C�C����D�C��4"�"�"�"�J7�7�7�7�"�#�#�I�$B�C�C�"�"�"�D�C�"�J�#�#�I�$>�?�?� >� >� >�@�?� >��#�#�I�$=�>�>�%�%�%�?�>�%�P ����(�)�)�)�)�)�*�)�)� � $� $� &� &� � � r;
Memory