B
    f                 @   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'dIS )JSuiteRequirementsc             C   s   t  S )zXTarget database must support external schemas, and have one
        named 'test_schema'.)r   open)self r
   ^C:\Users\Lenovo\AppData\Local\Temp\pip-unpacked-wheel-q6xnih48\alembic\testing\requirements.pyschemas	   s    zSuiteRequirements.schemasc             C   s   t  S )z;target database should support 'AUTOCOMMIT' isolation level)r   closed)r	   r
   r
   r   autocommit_isolation   s    z&SuiteRequirements.autocommit_isolationc             C   s   t  S )zneeded for sqlalchemy compat)r   r   )r	   r
   r
   r   materialized_views   s    z$SuiteRequirements.materialized_viewsc             C   s   dd }t |S )Nc             S   sb   ddl m} || j}y|d W n8 tk
r8   dS  tk
rJ   dS  tk
r\   Y nX 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   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_if)r	   r
   r
   r   	sequences-   s    zSuiteRequirements.sequencesc             C   s   t  S )N)r   r   )r	   r
   r
   r   foreign_key_match6   s    z#SuiteRequirements.foreign_key_matchc             C   s   t  S )N)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
   r   check_constraints_w_enforcement>   s    z1SuiteRequirements.check_constraints_w_enforcementc             C   s   t  S )N)r   r   )r	   r
   r
   r   reflects_pk_namesE   s    z#SuiteRequirements.reflects_pk_namesc             C   s   t  S )N)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 )N)r   Zsqla_14)r   r
   r
   r   r   P   r   z1SuiteRequirements.sqlalchemy_14.<locals>.<lambda>z"SQLAlchemy 1.4 or greater required)r   r   )r	   r
   r
   r   sqlalchemy_14M   s    zSuiteRequirements.sqlalchemy_14c             C   s   t dd dS )Nc             S   s   t jS )N)r   sqla_2)r   r
   r
   r   r   W   r   z1SuiteRequirements.sqlalchemy_1x.<locals>.<lambda>zSQLAlchemy 1.x test)r   r   )r	   r
   r
   r   sqlalchemy_1xT   s    zSuiteRequirements.sqlalchemy_1xc             C   s   t dd dS )Nc             S   s   t j S )N)r   r%   )r   r
   r
   r   r   ^   r   z0SuiteRequirements.sqlalchemy_2.<locals>.<lambda>zSQLAlchemy 2.x test)r   r   )r	   r
   r
   r   sqlalchemy_2[   s    zSuiteRequirements.sqlalchemy_2c             C   s   t dd S )Nc             S   s
   | j jjS )N)r   r   Zsupports_comments)r   r
   r
   r   r   e   r   z,SuiteRequirements.comments.<locals>.<lambda>)r   r   )r	   r
   r
   r   commentsb   s    zSuiteRequirements.commentsc             C   s   t  S )N)r   r   )r	   r
   r
   r   alter_columnh   s    zSuiteRequirements.alter_columnc             C   s   t  S )N)r   r   )r	   r
   r
   r   computed_columnsl   s    z"SuiteRequirements.computed_columnsc             C   s   t t tjS )N)r   r   BooleanPredicater   Zhas_computed)r	   r
   r
   r   computed_columns_apip   s    z&SuiteRequirements.computed_columns_apic             C   s   t t tjS )N)r   r   r+   r   Zhas_computed_reflection)r	   r
   r
   r   computed_reflects_normallyv   s    z,SuiteRequirements.computed_reflects_normallyc             C   s   t  S )N)r   r   )r	   r
   r
   r   #computed_reflects_as_server_default|   s    z5SuiteRequirements.computed_reflects_as_server_defaultc             C   s   t  S )N)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 )N)r   r   )r	   r
   r
   r   autoincrement_on_composite_pk   s    z/SuiteRequirements.autoincrement_on_composite_pkc             C   s   t  S )N)r   r   )r	   r
   r
   r   fk_ondelete_is_reflected   s    z*SuiteRequirements.fk_ondelete_is_reflectedc             C   s   t  S )N)r   r   )r	   r
   r
   r   fk_onupdate_is_reflected   s    z*SuiteRequirements.fk_onupdate_is_reflectedc             C   s   t  S )N)r   r   )r	   r
   r
   r   fk_onupdate   s    zSuiteRequirements.fk_onupdatec             C   s   t  S )N)r   r   )r	   r
   r
   r   fk_ondelete_restrict   s    z&SuiteRequirements.fk_ondelete_restrictc             C   s   t  S )N)r   r   )r	   r
   r
   r   fk_onupdate_restrict   s    z&SuiteRequirements.fk_onupdate_restrictc             C   s   t  S )N)r   r   )r	   r
   r
   r   fk_ondelete_noaction   s    z&SuiteRequirements.fk_ondelete_noactionc             C   s   t  S )N)r   r   )r	   r
   r
   r   fk_initially   s    zSuiteRequirements.fk_initiallyc             C   s   t  S )N)r   r   )r	   r
   r
   r   fk_deferrable   s    zSuiteRequirements.fk_deferrablec             C   s   t  S )N)r   r   )r	   r
   r
   r   fk_deferrable_is_reflected   s    z,SuiteRequirements.fk_deferrable_is_reflectedc             C   s   t  S )N)r   r   )r	   r
   r
   r   fk_names   s    zSuiteRequirements.fk_namesc             C   s   t  S )N)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 )N)r   r   Zrequires_name_normalize)r   r
   r
   r   r      r   z5SuiteRequirements.no_name_normalize.<locals>.<lambda>)r   r   )r	   r
   r
   r   no_name_normalize   s    z#SuiteRequirements.no_name_normalizec             C   s   t  S )N)r   r   )r	   r
   r
   r   identity_columns   s    z"SuiteRequirements.identity_columnsc             C   s   t  S )N)r   r   )r	   r
   r
   r   identity_columns_alter   s    z(SuiteRequirements.identity_columns_alterc             C   s   t t tjS )N)r   r   r+   r   Zhas_identity)r	   r
   r
   r   identity_columns_api   s    z&SuiteRequirements.identity_columns_apiN)(__name__
__module____qualname__propertyr   r   r   r   r   r   r    r!   r"   r#   r$   r&   r'   r(   r)   r*   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r
   r
   r
   r   r      sH   	r   N)	Zsqlalchemy.testing.requirementsr   Zalembicr   Zalembic.utilr   Ztestingr   r   r
   r
   r
   r   <module>   s   