o
    hT                     @   s8   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   )
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"d?S )@SuiteRequirementsc                 C      t  S )zXTarget database must support external schemas, and have one
        named 'test_schema'.r   openself r   p/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/alembic/testing/requirements.pyschemas      zSuiteRequirements.schemasc                 C   r   )z;target database should support 'AUTOCOMMIT' isolation levelr   closedr
   r   r   r   autocommit_isolation   s   z&SuiteRequirements.autocommit_isolationc                 C   r   )zneeded for sqlalchemy compatr   r
   r   r   r   materialized_views   s   z$SuiteRequirements.materialized_viewsc                 C      dd }t |S )Nc                 S   s`   ddl m} || j}z|d W dS  ty   Y dS  ty&   Y dS  ty/   Y dS w )Nr   )inspectxTF)
sqlalchemyr   dbget_unique_constraintsNotImplementedError	TypeError	Exception)configr   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   
   | j jjS N)r   dialectsupports_sequencesr   r   r   r   <lambda>1      
 z-SuiteRequirements.sequences.<locals>.<lambda>zno sequence supportr   only_ifr
   r   r   r   	sequences,   s   zSuiteRequirements.sequencesc                 C   r   r$   r   r
   r   r   r   foreign_key_match5      z#SuiteRequirements.foreign_key_matchc                 C   r   r$   r   r
   r   r   r   !foreign_key_constraint_reflection9   r.   z3SuiteRequirements.foreign_key_constraint_reflectionc                 C   r   )zMTarget database must support check constraints
        and also enforce them.r   r
   r   r   r   check_constraints_w_enforcement=   r   z1SuiteRequirements.check_constraints_w_enforcementc                 C   r   r$   r   r
   r   r   r   reflects_pk_namesD   r.   z#SuiteRequirements.reflects_pk_namesc                 C   r   r$   r   r
   r   r   r   reflects_fk_optionsH   r.   z%SuiteRequirements.reflects_fk_optionsc                 C      t dd dS )Nc                 S   s   t jS r$   r   sqla_2r'   r   r   r   r(   O   s    z1SuiteRequirements.sqlalchemy_1x.<locals>.<lambda>zSQLAlchemy 1.x testr    r
   r   r   r   sqlalchemy_1xL      zSuiteRequirements.sqlalchemy_1xc                 C   r3   )Nc                 S   s   t j S r$   r4   r'   r   r   r   r(   V   s    z0SuiteRequirements.sqlalchemy_2.<locals>.<lambda>zSQLAlchemy 2.x testr    r
   r   r   r   sqlalchemy_2S   r7   zSuiteRequirements.sqlalchemy_2c                 C   r   )Nc                 S   s$   zdd l }W dS  ty   Y dS w )Nr   FT)greenletImportError)r   r9   r   r   r   go\   s   
z%SuiteRequirements.asyncio.<locals>.gor*   )r   r;   r   r   r   asyncioZ   s   
zSuiteRequirements.asyncioc                 C      t dd S )Nc                 S   r#   r$   )r   r%   supports_commentsr'   r   r   r   r(   i   r)   z,SuiteRequirements.comments.<locals>.<lambda>r*   r
   r   r   r   commentsf      zSuiteRequirements.commentsc                 C   r   r$   r   r
   r   r   r   alter_columnl   r.   zSuiteRequirements.alter_columnc                 C   r   r$   r   r
   r   r   r   computed_columnsp   r.   z"SuiteRequirements.computed_columnsc                 C   r   r$   r   r
   r   r   r   autoincrement_on_composite_pkt   r.   z/SuiteRequirements.autoincrement_on_composite_pkc                 C   r   r$   r   r
   r   r   r   fk_ondelete_is_reflectedx   r.   z*SuiteRequirements.fk_ondelete_is_reflectedc                 C   r   r$   r   r
   r   r   r   fk_onupdate_is_reflected|   r.   z*SuiteRequirements.fk_onupdate_is_reflectedc                 C   r   r$   r   r
   r   r   r   fk_onupdate   r.   zSuiteRequirements.fk_onupdatec                 C   r   r$   r   r
   r   r   r   fk_ondelete_restrict   r.   z&SuiteRequirements.fk_ondelete_restrictc                 C   r   r$   r   r
   r   r   r   fk_onupdate_restrict   r.   z&SuiteRequirements.fk_onupdate_restrictc                 C   r   r$   r   r
   r   r   r   fk_ondelete_noaction   r.   z&SuiteRequirements.fk_ondelete_noactionc                 C   r   r$   r   r
   r   r   r   fk_initially   r.   zSuiteRequirements.fk_initiallyc                 C   r   r$   r   r
   r   r   r   fk_deferrable   r.   zSuiteRequirements.fk_deferrablec                 C   r   r$   r   r
   r   r   r   fk_deferrable_is_reflected   r.   z,SuiteRequirements.fk_deferrable_is_reflectedc                 C   r   r$   r   r
   r   r   r   fk_names   r.   zSuiteRequirements.fk_namesc                 C   r   r$   r   r
   r   r   r   integer_subtype_comparisons   r.   z-SuiteRequirements.integer_subtype_comparisonsc                 C   r=   )Nc                 S   r#   r$   )r   r%   requires_name_normalizer'   r   r   r   r(      r)   z5SuiteRequirements.no_name_normalize.<locals>.<lambda>r    r
   r   r   r   no_name_normalize   r@   z#SuiteRequirements.no_name_normalizec                 C   r   r$   r   r
   r   r   r   identity_columns   r.   z"SuiteRequirements.identity_columnsc                 C   r   r$   r   r
   r   r   r   identity_columns_alter   r.   z(SuiteRequirements.identity_columns_alterN)#__name__
__module____qualname__propertyr   r   r   r"   r,   r-   r/   r0   r1   r2   r6   r8   r<   r?   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rP   rQ   rR   r   r   r   r   r      s~    





























r   N)sqlalchemy.testing.requirementsr   alembicr   testingr   r   r   r   r   r   <module>   s    