HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/sqlalchemy/testing/__pycache__/schema.cpython-310.pyc
o

���gq�@s�ddlmZddlZddlmZddlmZddlmZddlmZdd	lmZ	dd
l
mZddl
mZdd
gZiZd dd�Zdd�Zdd
�Zdd�ZGdd�d�ZGdd�d�ZGdd�d�Zdd�Zdd�ZdS)!�)�annotationsN�)�config)�
exclusions�)�event)�schema)�types)�
mapped_column)�OrderedDict�Table�Column�return�schema.Tablecs��fdd�t��D�}��t�t�tjd�r5d�vr4d�vr4d�vr4d|vs+d|vr0d	�d<n)d
�d<n$t�tjd�rYd�vrYd
�vrYd�vrYd|vsPd|vrUd	�d<nd
�d<tj|i���S)z8A schema.Table wrapper/hook for dialect-specific tweaks.c�"i|]
}|�d�r|��|��qS��test_��
startswith�pop��.0�k��kw��D/usr/local/lib/python3.10/dist-packages/sqlalchemy/testing/schema.py�
<dictcomp>�"zTable.<locals>.<dictcomp>�mysql�mysql_engine�
mysql_type�
autoload_with�
test_needs_fk�test_needs_acid�InnoDB�MyISAM�mariadb�mariadb_engine�mariadb_type)	�list�update�
table_optionsr�againstr�_currentrr)�argsr�	test_optsrrrrs$

�
cOstt||�S)z>An orm.mapped_column wrapper/hook for dialect-specific tweaks.)�_schema_column�_orm_mapped_column�r/rrrrr
?sr
cOsttj||�S)z9A schema.Column wrapper/hook for dialect-specific tweaks.)r1rr
r3rrrr
Escs��fdd�t��D�}tjj�t�sdd�|D�}||i���}|tjur(|}n|j}|�dd�r]��dd�r]|j	durD|j
durDd|_d|jd<t
�tjd	�r]d
d�}tj|d|dd
�|S)NcrrrrrrrrLrz"_schema_column.<locals>.<dictcomp>cSsg|]
}t|tj�s|�qSr)�
isinstancer�
ForeignKey)r�argrrr�
<listcomp>Osz"_schema_column.<locals>.<listcomp>�test_needs_autoincrementF�primary_keyT�oraclecSs2|�tjttjj|jd|jd�dd��dS)N�_�_seqT)�optional)�_init_itemsr�Sequence�_truncate_namer�db�dialect�name)�c�tblrrr�add_seqes���z_schema_column.<locals>.add_seq�after_parent_attach)�	propagate)r*r�requirements�foreign_key_ddl�enabled_for_configrr
�column�get�default�server_default�
autoincrement�inforr-r.r�listen)�factoryr/rr0�	construct�colrFrrrr1Ks"
�

r1c@�(eZdZdZdd�Zdd�Zdd�ZdS)	�eq_type_affinitya�Helper to compare types inside of datastructures based on affinity.

    E.g.::

        eq_(
            inspect(connection).get_columns("foo"),
            [
                {
                    "name": "id",
                    "type": testing.eq_type_affinity(sqltypes.INTEGER),
                    "nullable": False,
                    "default": None,
                    "autoincrement": False,
                },
                {
                    "name": "data",
                    "type": testing.eq_type_affinity(sqltypes.NullType),
                    "nullable": True,
                    "default": None,
                    "autoincrement": False,
                },
            ],
        )

    cCst�|�|_dS�N)�sqltypes�to_instance�target��selfr[rrr�__init__�szeq_type_affinity.__init__cCs|jj|juSrX�r[�_type_affinity�r]�otherrrr�__eq__��zeq_type_affinity.__eq__cCs|jj|juSrXr_rarrr�__ne__�rdzeq_type_affinity.__ne__N��__name__�
__module__�__qualname__�__doc__r^rcrerrrrrWss
rWc@rV)	�eq_compile_typez,similar to eq_type_affinity but uses compilecC�
||_dSrX�r[r\rrrr^��
zeq_compile_type.__init__cCs|j|��kSrX�r[�compilerarrrrc�rdzeq_compile_type.__eq__cCs|j|��kSrXrorarrrre�rdzeq_compile_type.__ne__Nrfrrrrrk��
rkc@rV)	�eq_clause_elementz3Helper to compare SQL structures based on compare()cCrlrXrmr\rrrr^�rnzeq_clause_element.__init__cCs|j�|�SrX�r[�comparerarrrrc�szeq_clause_element.__eq__cCs|j�|�SrXrsrarrrre�rdzeq_clause_element.__ne__Nrfrrrrrr�rqrrcCsFt|�|jkr!|dt|jdd��dtt|�d�dd�S|S)Nr�r;�@r)�len�max_identifier_length�max�hex�hash)rBrCrrrr@�s���r@c	s�t�}d	�fdd�	}i�t�fdd��}t|tf|||d��}zt�d�j�dd�}Wntt	fy6Ynw|dur>||_
|S)
NcsP||_||_||j|<|�|<t|j||�|r&||j|<t|j||�dSdSrX)rC�value�__members__�setattr�	__class__)r]rCr|�alias��value_to_memberrrr^�s

�zpep435_enum.<locals>.__init__cs�|SrXr)�clsr|r�rrrM�szpep435_enum.<locals>.get)r}r^rMrrg�__main__rX)r�classmethod�type�object�sys�	_getframe�	f_globalsrM�AttributeError�
ValueErrorrh)rCr}r^rM�someenum�modulerr�r�pep435_enum�s$

��r�)rr)�
__future__rr��rrrrr	rY�ormr
r2�utilr�__all__r,rr
r1rWrkrrr@r�rrrr�<module>s(
%(%