Viewing File: /opt/hc_python/lib/python3.12/site-packages/alembic/util/__pycache__/sqla_compat.cpython-312.pyc

�

f��g�9���ddlmZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	ddlm
Z
dd	lmZdd
lmZddlm
Z
ddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddl$m%Z%ddl&m'Z'	ddl(m)Z)erHddlm*Z*dd lm+Z+dd!lm,Z,dd"lm-Z-dd#l.m/Z/dd$l.m0Z0dd%l.m1Z1dd&lm2Z2dd'l3m4Z4dd(lm5Z5dd)l6m7Z7dd*l6m8Z8ed+ed,�-�Z9Gd.�d/e�Z:dcd0�Z;e<ejzd1e�D�cgc]
}e;|���c}�Z>e>d2k\Z?e>d3k\Z@e>d4k\ZAeZBer						ddd5�ZCndd6lDmCZCeEejVe�ZF	de					dfd7�ZGeArdd8lmHZHndd9lImJZHedeKeHfZLeeKeHfZM				dgd:�ZNdhd;�ZOdid<�ZPd=ZQej�				djd>��ZS				dkd?�ZT				dld@�ZU				dldA�ZVdmdB�ZWdndC�ZXdodD�ZY								dpdE�ZZdF�Z[dG�Z\dqdH�Z]dqdI�Z^drdJ�Z_dK�Z`dL�Zaebej�dM�rdN�ZddO�ZendP�ZddQ�ZedsdR�ZfdtdS�ZgdudT�ZhdU�Zi						dvdV�Zj						dwdW�ZkdxdX�ZlGdY�dZejj�ZmeCem�						dyd[��ZnGd\�d]e �ZoeCeo�						dzd^��Zp						d{d_�Zq						d|d`�Zrd}da�Zsd~db�Ztycc}w)�)�annotationsN)�Any)�Callable)�Dict)�Iterable)�Iterator)�Optional)�Protocol)�Set)�Type)�
TYPE_CHECKING)�TypeVar)�Union)�__version__��schema)�sql)�types)�CheckConstraint)�Column)�ForeignKeyConstraint)�visitors)�
DialectKWArgs)�
BindParameter)�ColumnClause)�
TextClause)�UnaryExpression)�traverse)�	TypeGuard)�
_NONE_NAME)�
ClauseElement)�Identity)�Index)�Table)�
Connection)�Dialect)�Transaction)�ColumnCollection)�SQLCompiler)�
ColumnElement)�
Constraint)�
SchemaItem�_CE)zColumnElement[Any]r,)�boundc��eZdZdd�Zy)�_CompilerProtocolc��y�N�)�self�element�compiler�kws    �G/opt/hc_python/lib/python3.12/site-packages/alembic/util/sqla_compat.py�__call__z_CompilerProtocol.__call__:s��s�N)r5rr6rr7r�return�str)�__name__�
__module__�__qualname__r9r3r:r8r0r09s��Jr:r0c�,�	t|�S#|cYSxYwr2)�int)�values r8�	_safe_intrC=s����5�z������s�

�z
(\d+|[abc]\d))���)rDrE�)�c��yr2r3)r5�dialectss  r8�compilesrKOs��;>r:)rKc���|�iStrOt|d�sJ�|j�}|r-t|t�sJ�|j|j�|Si}t|tj�r*|j|d<|j�|j|d<d}|j|D�cic]}t||d��|t||d���c}�|Scc}w)N�_as_dict�always�on_null)	�start�	increment�minvalue�maxvalue�
nominvalue�
nomaxvalue�cycle�cache�order)�identity_has_dialect_kwargs�hasattrrM�
isinstancer�update�dialect_kwargsrr"rNrO�getattr)�identityr]�as_dict�attrs�keys     r8�_get_identity_options_dictrcZs������	�	$��x��,�,�,��#�#�%����h�
�6�6�6��N�N�8�2�2�3�6�N�3���h����0� (���G�H�����+�%-�%5�%5��	�"�

��	���!�
� �C��8�S�$�/�;��W�X�s�D�1�1� �
�	
��N��

s�1"C)�	_NoneName)�symbolc�B�|tuxst|ttf�Sr2)r r[r<rd��names r8�constraint_name_definedri�s ���:��C��D�3�	�2B�!C�Cr:c�"�t|t�Sr2)r[r<rgs r8�constraint_name_stringrk�s���d�C� � r:c� �t|�r|SdSr2)rkrgs r8�constraint_name_or_nonerm�s��)�$�/�4�9�T�9r:�autoc#��K�	|j}|�d��y|�s"|�J�|j�5d��ddd�yd��y#t$rd}Y�BwxYw#1swYyxYw�wr2)�in_transaction�AttributeError�begin��
connectionrps  r8�_ensure_scope_for_ddlru�sp����
�#�2�2����
����)�)�)��!�!�#��$�#�
���
����
��$�#�s=�A"�A�"A"�A�A"�A�A"�A�A"�A�A"c�J�|j�}|r|S|j�Sr2)�get_transactionrr�rt�transactions  r8�"_safe_begin_connection_transactionrz�s*���,�,�.�K�������!�!r:c�J�|j�}|r|j�yyr2)rw�commitrxs  r8�#_safe_commit_connection_transactionr}�s&���,�,�.�K������r:c�J�|j�}|r|j�yyr2)rw�rollbackrxs  r8�%_safe_rollback_connection_transactionr��s&���,�,�.�K������r:c�H�	|j}|�S#t$rYywxYw)NF)rprqrss  r8�_get_connection_in_transactionr��s1�� �#�2�2��
����	����s��	!�!c��|jSr2)�expressions)�idxs r8�_idx_table_bound_expressionsr��s���?�?�r:c�b�t|d�r|jdi|��S|jdi|��S)N�_copyr3)rZr��copy)�schema_itemr7s  r8r�r��s8���{�G�$� �{� � �&�2�&�&��{���%�"�%�%r:c�<�|jj|||�Sr2)�dialect�	has_table)�connectable�	tablename�
schemanames   r8�_connectable_has_tabler��s�����(�(��i��L�Lr:c�r�|j�5}|j||�cddd�S#1swYyxYwr2)�_operation_context�execute)�	inspector�	statement�params�conns    r8�_exec_on_inspectorr��s*��	�	%�	%�	'�4��|�|�I�v�.�
(�	'�	'�s�-�6c�>�ddlm}|j|juS)Nrr)�sqlalchemy.sqlr�_user_defined_nullable�NULL_UNSPECIFIED)�metadata_columnrs  r8�_nullability_might_be_unsetr��s��%��1�1�V�5L�5L�L�Lr:c�&�td�|D��S)Nc3�PK�|]}t|tj���� y�wr2)r[r�Computed��.0�sds  r8�	<genexpr>z._server_default_is_computed.<locals>.<genexpr>������H��2�z�"�f�o�o�.����$&��any��server_defaults r8�_server_default_is_computedr������H��H�H�Hr:c�&�td�|D��S)Nc3�PK�|]}t|tj���� y�wr2)r[rr"r�s  r8r�z._server_default_is_identity.<locals>.<genexpr>�r�r�r�r�s r8�_server_default_is_identityr��r�r:c�^�t|t�r|j}|�J�|S|jSr2)r[r�parent�table)�
constraintr�s  r8�_table_for_constraintr��s5���*�2�3��!�!��� � � ������r:c���t|t�r$|jD�cgc]}|j��c}St|t�rt|j�St|j�Scc}wr2)	r[r�elementsr�r�
_find_columns�sqltext�list�columns)r��fks  r8�_columns_for_constraintr�s_���*�2�3�$.�$7�$7�8�$7�b��	�	�$7�8�8�	�J��	0��Z�/�/�0�0��J�&�&�'�'��	9s�A/c�p�t|�r*t|�\}}|j|j|�S|Sr2)�_type_has_variants�_get_variant_mapping�getrh)�type_r��	base_type�mappings    r8�_resolve_for_variantr�s3���%� �1�%�8��	�7��{�{�7�<�<��3�3��r:�_variant_mappingc�,�t|j�Sr2)�boolr��r�s r8r�r�s���E�*�*�+�+r:c��||jfSr2)r�r�s r8r�r�s���e�,�,�,�,r:c�8�t|�tjuSr2)�type�sqltypes�Variantr�s r8r�r�!s���E�{�h�.�.�.�.r:c�2�|j|jfSr2)�implr�r�s r8r�r�$s���z�z�5�=�=�(�(r:c
���tr8|j�J�|j�J�t|jt
�sJ�|jD�cgc]}|j|j��}}|jj}|jj}|jdjjj}|jdjjj}|jD�cgc]}|jj��}}|j}	|j}
|j}|j}|||||||
|	||f
Scc}wcc}w)Nr)r
r�r�r[r�r$�column_keysrhr�columnr��ondelete�onupdate�
deferrable�	initially)
r�rb�source_columns�source_table�
source_schema�
target_schema�target_tabler5�target_columnsr�r�r�r�s
             r8�_fk_specr�(sb����!�!�-�-�-��"�"�.�.�.��*�+�+�U�3�3�3�1;�0F�0F��0F��
���3��$�$�0F����$�$�)�)�L��%�%�,�,�M��'�'��*�1�1�7�7�>�>�M��&�&�q�)�0�0�6�6�;�;�L�9C�9L�9L�M�9L�g�g�n�n�)�)�9L�N�M��"�"�H��"�"�H��&�&�J��$�$�I����������������Ns�
 E�E#c���|jdj�}|jd�}|jd�dj	|�}|j
�J�||j
jk(S)Nr�.���)r��_get_colspec�split�pop�joinr�rb)r��spec�tokens�tablekeys    r8�_fk_is_self_referentialr�Isj�����q�!�.�.�0�D�
�Z�Z��_�F�
�J�J�r�N��x�x���H����(�(�(��z�(�(�,�,�,�,r:c��|jSr2)�_type_bound)r�s r8�_is_type_boundr�Rs���!�!�!r:c�L�t�}t|id|ji�|S)z2locate Column objects within the given expression.r�)�setr�add)�clause�colss  r8r�r�Ys%��%(�E�D��V�R�(�D�H�H�-�.��Kr:c���|j�J�||j}t|d�st|d�r|jj|�y|j|�y)z(remove a column from a ColumnCollection.N�
_immutable�	_readonly)rbrZ�_parent�remove)�
collectionr��	to_removes   r8�_remove_column_from_collectionr�asY���:�:�!�!�!��6�:�:�&�I��z�<�(�G�J��,L����!�!�)�,����)�$r:c�b�t|t�r-t|tj�}|j|�|St|t�rt||�St|t�rt||j�St|tj�rt||�Std��)zAa workaround for the Index construct's severe lack of flexibilityz#String or text() construct expected)r[r<rr��NULLTYPE�
append_columnr�_textual_index_element�_textual_index_column�textrr*�_copy_expression�
ValueError)r��text_�cs   r8r�r�ss����%����5�(�+�+�,��
���A����	�E�:�	&�%�e�U�3�3�	�E�1�	2�$�U�E�J�J�7�7�	�E�3�,�,�	-���u�-�-��>�?�?r:c�<���fd�}tj|i|�S)Nc���t|t�ri|j�]|j�urO|j�jvr�j|jSt|�}�j
|�|Syr2)r[rr�rhrr�r�)�colrr�s  �r8�replacez!_copy_expression.<locals>.replace�se����s�F�#��	�	�%��	�	��-��x�x�<�>�>�)�#�~�~�c�h�h�/�/��#�J���*�*�1�-���r:)r�replacement_traverse)�
expressionr�rs ` r8rr�s$���
��(�(��B���r:c�"�eZdZdZdZdd�Zd�Zy)r�aQWrap around a sqlalchemy text() construct in such a way that
    we appear like a column-oriented SQL expression to an Index
    construct.

    The issue here is that currently the Postgresql dialect, the biggest
    recipient of functional indexes, keys all the index expressions to
    the corresponding column expressions when rendering CREATE INDEX,
    so the Index we create here needs to have a .columns collection that
    is the same length as the .expressions collection.  Ultimately
    SQLAlchemy should support text() expressions in indexes.

    See SQLAlchemy issue 3174.

    �_textual_idx_elementc���||_||_|j|_tj|jjt
j�|_|j|j�yr2)	r�rrbrrr�r��fake_columnr�)r4r�rs   r8�__init__z_textual_index_element.__init__�sP����
���	��9�9���!�=�=�������9J�9J�K���
���D�,�,�-r:c��|jgSr2)r)r4r7s  r8�get_childrenz#_textual_index_element.get_children�s��� � �!�!r:N)r�r$rrr;�None)r=r>r?�__doc__�__visit_name__rrr3r:r8r�r��s��
�,�N�.�"r:r�c�<�|j|jfi|��Sr2)�processr�r5r6r7s   r8�_render_textual_index_columnr�s ���8���G�L�L�/�B�/�/r:c��eZdZy)�_literal_bindparamN)r=r>r?r3r:r8rr�s��r:rc�(�|j|fi|��Sr2)�render_literal_bindparamrs   r8�_render_literal_bindparamr�s��-�8�,�,�W�;��;�;r:c�^�|j�y|�J�|jj|d��S�NF)�_alembic_quote�rh�identifier_preparer�format_constraint)r�r�s  r8�_get_constraint_final_namer$�sB������������&�&�8�8��5�9��r:c�f�|j�y|�J�|jj|d��}|duSrr!)r�r�rhs   r8�_constraint_is_namedr&�sJ������������&�&�8�8��5�9��D��t��r:c�@�|jD]}t|�s�yy�NTF)r��
is_expression)�index�exprs  r8�is_expression_indexr,�s"���!�!������"�r:c��t|t�r|j}t|t�r�t|t�r|jryyr()r[rr5r�
is_literal)r+s r8r)r)�s7��
�T�?�
+��|�|���T�?�
+��d�L�)�T�_�_��r:)rBr<r;zUnion[int, str])r5zType[ClauseElement]rJr<r;z0Callable[[_CompilerProtocol], _CompilerProtocol])F)r_z&Union[Identity, schema.Sequence, None]r]r�r;zDict[str, Any])rh�_ConstraintNamer;z!TypeGuard[_ConstraintNameDefined])rhr/r;zTypeGuard[str])rhr/r;�
Optional[str])rt�Optional[Connection]r;zIterator[None])rtr%r;r')rtr%r;r)rtr1r;r�)r�r#r;zIterable[ColumnElement[Any]])r�r-r;r-)r�r%r�r<r�zUnion[str, None]r;r�)r;r�)r�r+r;r$)r�rr;r)r�rr;r�)r�r+r;r�)r�r(r�z%Union[Column[Any], ColumnClause[Any]]r;r)r�r$rz*Union[str, TextClause, ColumnElement[Any]]r;z&Union[ColumnElement[Any], Column[Any]])r
r-r�r$r;r-)r5r�r6r)r;r<)r5rr6r)r;r<)r�zUnion[Index, Constraint]r��Optional[Dialect]r;r0)r�zUnion[Constraint, Index]r�r2r;r�)r*r#r;r�)r+rr;r�)u�
__future__r�
contextlib�re�typingrrrrrr	r
rrr
rr�
sqlalchemyrrrrr��sqlalchemy.schemarrrr�r�sqlalchemy.sql.baser�sqlalchemy.sql.elementsrrrr�sqlalchemy.sql.visitorsr�typing_extensionsr�sqlalchemy.sql.namingr r!r"r#r$�sqlalchemy.enginer%r&r'r(�sqlalchemy.sql.compilerr)r*�sqlalchemy.sql.schemar+r,r-r0rC�tuple�findall�_vers�
sqla_14_18�
sqla_14_26�sqla_2�sqlalchemy_versionrK�sqlalchemy.ext.compiler�
issubclassrYrcrd�sqlalchemy.utilrer<r/�_ConstraintNameDefinedrirkrm�AUTOINCREMENT_DEFAULT�contextmanagerrurzr}r�r�r�r�r�r�r�r�r�r�r�r�rZ�
TypeEnginer�r�r�r�r�r�r�r�rr�rrrr$r&r,r))�xs0r8�<module>rPs���#��	���������� ���"���(�-�$�2�#�-�1�0�.�3�,�'��>��(�#� � �,�)�-�4�3�5�0�0�
�e�5�!C�D�E��K��K��	�%�2�:�:�&6��D�E�D�a�Y�q�\�D�E�	���j�
 �
�
�j�
 �
�	�$��� ���?�$�?�14�?�	9�?�
1�)����-�H��
!�&�4�&��&��&�R
�-�3���c�9�,�-���s�I�~�.��D�
�D�&�D�!�:�������$������,"��"��"����	�����	�� ��&�M��M�(+�M�9I�M�	�M�/�
M�I�I� �(���8��� 2�3�,�-�
/�)��B-�"��%� �%�*O�%�	�%�$@��@�C�@�+�@�$�*"�S�.�.�"�:
�
 �!�0�
#�0�/:�0��0�"�0�	��	�
�
��<�
�<�+6�<��<��<�
�(�
�3D�
��
� 	�(�	�3D�	�	�	����O
Fs�5K

Back to Directory File Manager