o
    8c                     @   sL   d dl Z 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 )    N)Requirements)util)
exclusions)sqla_compatc                   @   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d+S ),SuiteRequirementsc                 C      t  S )zXTarget database must support external schemas, and have one
        named 'test_schema'.r   openself r   R/var/www/html/gps/gps/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   s   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>/      
 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_match3      z#SuiteRequirements.foreign_key_matchc                 C   r   )zMTarget database must support check constraints
        and also enforce them.r   r
   r   r   r   check_constraints_w_enforcement7   r   z1SuiteRequirements.check_constraints_w_enforcementc                 C   r   r"   r   r
   r   r   r   reflects_pk_names>   r,   z#SuiteRequirements.reflects_pk_namesc                 C   r   r"   r   r
   r   r   r   reflects_fk_optionsB   r,   z%SuiteRequirements.reflects_fk_optionsc                 C   s   dd }t |dS )Nc                  S   s$   zdd l } W dS  ty   Y dS w )Nr   FT)editorImportError)r0   r   r   r   goH   s   
z.SuiteRequirements.editor_installed.<locals>.gozeditor package not installedr(   )r   r2   r   r   r   editor_installedF   s   z"SuiteRequirements.editor_installedc                 C      t dd dS )Nc                 S      t j S r"   )r   sqla_13r%   r   r   r   r&   U       z1SuiteRequirements.sqlalchemy_13.<locals>.<lambda>z"SQLAlchemy 1.3 or greater requiredr   r
   r   r   r   sqlalchemy_13R      zSuiteRequirements.sqlalchemy_13c                 C   r4   )Nc                 S   r5   r"   )r   sqla_14r%   r   r   r   r&   \   r7   z1SuiteRequirements.sqlalchemy_14.<locals>.<lambda>z"SQLAlchemy 1.4 or greater requiredr   r
   r   r   r   sqlalchemy_14Y   r9   zSuiteRequirements.sqlalchemy_14c                 C   r4   )Nc                   S   s
   t jdk S )N)   )sysversion_infor   r   r   r   r&   c   r'   z+SuiteRequirements.python3.<locals>.<lambda>z Python version 3.xx is required.r   r
   r   r   r   python3`   s   zSuiteRequirements.python3c                 C      t dd S )Nc                 S   s
   t j S r"   )r   compathas_pep3147r%   r   r   r   r&   i   r'   z+SuiteRequirements.pep3147.<locals>.<lambda>r(   r
   r   r   r   pep3147f   s   zSuiteRequirements.pep3147c                 C   r@   )Nc                 S   r!   r"   )r   r#   supports_commentsr%   r   r   r   r&   n   r'   z,SuiteRequirements.comments.<locals>.<lambda>r(   r
   r   r   r   commentsk   s   zSuiteRequirements.commentsc                 C   r   r"   r   r
   r   r   r   alter_columnq   r,   zSuiteRequirements.alter_columnc                 C   r   r"   r   r
   r   r   r   computed_columnsu   r,   z"SuiteRequirements.computed_columnsc                 C      t t tjS r"   )r   r)   BooleanPredicater   has_computedr
   r   r   r   computed_columns_apiy      
z&SuiteRequirements.computed_columns_apic                 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_alterc                 C   rH   r"   )r   r)   rI   r   has_identityr
   r   r   r   identity_columns_api   rL   z&SuiteRequirements.identity_columns_apic                 C   r   r"   r   r
   r   r   r   supports_identity_on_null   r,   z+SuiteRequirements.supports_identity_on_nullN)__name__
__module____qualname__propertyr   r   r    r*   r+   r-   r.   r/   r3   r8   r;   r?   rC   rE   rF   rG   rK   rM   rN   rP   rQ   r   r   r   r   r   
   sV    



















r   )
r=   sqlalchemy.testing.requirementsr   alembicr   alembic.testingr   alembic.utilr   r   r   r   r   r   <module>   s    