a
    g	gI                     @   sD   d dl mZ d dlmZ d dlmZ ddlmZ G dd deZdS )	    )Requirements)util)sqla_compat   )
exclusionsc                   @   s  e Zd Zedd Zedd Zedd Zedd Zed	d
 Zedd Z	edd Z
edd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd  Zed!d" Zed#d$ Zed%d& Zed'd( Zed)d* Zed+d, Zed-d. Zed/d0 Zed1d2 Zed3d4 Zed5d6 Zed7d8 Zed9d: Z ed;d< Z!ed=d> Z"ed?d@ Z#edAdB Z$edCdD Z%edEdF Z&edGdH Z'edIdJ Z(dKS )LSuiteRequirementsc                 C   s   t  S )zXTarget database must support external schemas, and have one
        named 'test_schema'.r   openself r   _/var/www/html/llm_bihealth/app/venv/lib/python3.9/site-packages/alembic/testing/requirements.pyschemas	   s    zSuiteRequirements.schemasc                 C   s   t  S )z;target database should support 'AUTOCOMMIT' isolation levelr   closedr
   r   r   r   autocommit_isolation   s    z&SuiteRequirements.autocommit_isolationc                 C   s   t  S )zneeded for sqlalchemy compatr   r
   r   r   r   materialized_views   s    z$SuiteRequirements.materialized_viewsc                 C   s   dd }t |S )Nc                 S   s`   ddl m} || j}z|d W n6 ty8   Y dS  tyJ   Y dS  tyZ   Y n0 dS )Nr   )inspectxTF)Z
sqlalchemyr   dbZget_unique_constraintsNotImplementedError	TypeError	Exception)configr   Zinspr   r   r    doesnt_have_check_uq_constraints   s    
zXSuiteRequirements.unique_constraint_reflection.<locals>.doesnt_have_check_uq_constraintsr   Zskip_if)r   r   r   r   r   unique_constraint_reflection   s    z.SuiteRequirements.unique_constraint_reflectionc                 C   s   t dd gdS )z'Target database must support SEQUENCEs.c                 S   s
   | j jjS N)r   dialectZsupports_sequencesr   r   r   r   <lambda>2       z-SuiteRequirements.sequences.<locals>.<lambda>zno sequence supportr   only_ifr
   r   r   r   	sequences-   s    zSuiteRequirements.sequencesc                 C   s   t  S r   r   r
   r   r   r   foreign_key_match6   s    z#SuiteRequirements.foreign_key_matchc                 C   s   t  S r   r   r
   r   r   r   !foreign_key_constraint_reflection:   s    z3SuiteRequirements.foreign_key_constraint_reflectionc                 C   s   t  S )zMTarget database must support check constraints
        and also enforce them.r   r
   r   r   r   check_constraints_w_enforcement>   s    z1SuiteRequirements.check_constraints_w_enforcementc                 C   s   t  S r   r   r
   r   r   r   reflects_pk_namesE   s    z#SuiteRequirements.reflects_pk_namesc                 C   s   t  S r   r   r
   r   r   r   reflects_fk_optionsI   s    z%SuiteRequirements.reflects_fk_optionsc                 C   s   t dd dS )Nc                 S   s   t j S r   )r   Zsqla_14r   r   r   r   r    P   r!   z1SuiteRequirements.sqlalchemy_14.<locals>.<lambda>z"SQLAlchemy 1.4 or greater requiredr   r
   r   r   r   sqlalchemy_14M   s    zSuiteRequirements.sqlalchemy_14c                 C   s   t dd dS )Nc                 S   s   t j S r   )r   Zsqla_1xr   r   r   r   r    W   r!   z1SuiteRequirements.sqlalchemy_1x.<locals>.<lambda>zSQLAlchemy 1.x testr   r
   r   r   r   sqlalchemy_1xT   s    zSuiteRequirements.sqlalchemy_1xc                 C   s   t dd dS )Nc                 S   s   t j S r   )r   Zsqla_2r   r   r   r   r    ^   r!   z0SuiteRequirements.sqlalchemy_2.<locals>.<lambda>zSQLAlchemy 2.x testr   r
   r   r   r   sqlalchemy_2[   s    zSuiteRequirements.sqlalchemy_2c                 C   s   t dd S )Nc                 S   s
   | j jjS r   )r   r   Zsupports_commentsr   r   r   r   r    e   r!   z,SuiteRequirements.comments.<locals>.<lambda>r"   r
   r   r   r   commentsb   s    zSuiteRequirements.commentsc                 C   s   t  S r   r   r
   r   r   r   alter_columnh   s    zSuiteRequirements.alter_columnc                 C   s   t  S r   r   r
   r   r   r   computed_columnsl   s    z"SuiteRequirements.computed_columnsc                 C   s   t t tjS r   )r   r#   BooleanPredicater   Zhas_computedr
   r   r   r   computed_columns_apip   s    
z&SuiteRequirements.computed_columns_apic                 C   s   t t tjS r   )r   r#   r0   r   Zhas_computed_reflectionr
   r   r   r   computed_reflects_normallyv   s    
z,SuiteRequirements.computed_reflects_normallyc                 C   s   t  S r   r   r
   r   r   r   #computed_reflects_as_server_default|   s    z5SuiteRequirements.computed_reflects_as_server_defaultc                 C   s   t  S r   r   r
   r   r   r   )computed_doesnt_reflect_as_server_default   s    z;SuiteRequirements.computed_doesnt_reflect_as_server_defaultc                 C   s   t  S r   r   r
   r   r   r   autoincrement_on_composite_pk   s    z/SuiteRequirements.autoincrement_on_composite_pkc                 C   s   t  S r   r   r
   r   r   r   fk_ondelete_is_reflected   s    z*SuiteRequirements.fk_ondelete_is_reflectedc                 C   s   t  S r   r   r
   r   r   r   fk_onupdate_is_reflected   s    z*SuiteRequirements.fk_onupdate_is_reflectedc                 C   s   t  S r   r   r
   r   r   r   fk_onupdate   s    zSuiteRequirements.fk_onupdatec                 C   s   t  S r   r   r
   r   r   r   fk_ondelete_restrict   s    z&SuiteRequirements.fk_ondelete_restrictc                 C   s   t  S r   r   r
   r   r   r   fk_onupdate_restrict   s    z&SuiteRequirements.fk_onupdate_restrictc                 C   s   t  S r   r   r
   r   r   r   fk_ondelete_noaction   s    z&SuiteRequirements.fk_ondelete_noactionc                 C   s   t  S r   r   r
   r   r   r   fk_initially   s    zSuiteRequirements.fk_initiallyc                 C   s   t  S r   r   r
   r   r   r   fk_deferrable   s    zSuiteRequirements.fk_deferrablec                 C   s   t  S r   r   r
   r   r   r   fk_deferrable_is_reflected   s    z,SuiteRequirements.fk_deferrable_is_reflectedc                 C   s   t  S r   r   r
   r   r   r   fk_names   s    zSuiteRequirements.fk_namesc                 C   s   t  S r   r   r
   r   r   r   integer_subtype_comparisons   s    z-SuiteRequirements.integer_subtype_comparisonsc                 C   s   t dd S )Nc                 S   s
   | j jjS r   )r   r   Zrequires_name_normalizer   r   r   r   r       r!   z5SuiteRequirements.no_name_normalize.<locals>.<lambda>r   r
   r   r   r   no_name_normalize   s    z#SuiteRequirements.no_name_normalizec                 C   s   t  S r   r   r
   r   r   r   identity_columns   s    z"SuiteRequirements.identity_columnsc                 C   s   t  S r   r   r
   r   r   r   identity_columns_alter   s    z(SuiteRequirements.identity_columns_alterc                 C   s   t t tjS r   )r   r#   r0   r   Zhas_identityr
   r   r   r   identity_columns_api   s    
z&SuiteRequirements.identity_columns_apic                 C   s   t  S r   r   r
   r   r   r   supports_identity_on_null   s    z+SuiteRequirements.supports_identity_on_nullN))__name__
__module____qualname__propertyr   r   r   r   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   r   r   r   r   r      s   



































r   N)	Zsqlalchemy.testing.requirementsr   Zalembicr   Zalembic.utilr   Ztestingr   r   r   r   r   r   <module>   s   