
    ZeIi                     F    d dl mZ d dlmZ ddlmZ  G d de          ZdS )    )Requirements)util   )
exclusionsc                      e Zd Zed             Zed             Zed             Zed             Zed             Zed             Z	ed             Z
ed             Zed	             Zed
             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Z ed             Z!ed             Z"ed              Z#ed!             Z$d"S )#SuiteRequirementsc                 (    t          j                    S )zXTarget database must support external schemas, and have one
        named 'test_schema'.r   openselfs    a/var/www/html/MCyber-Diagnostic/venv/lib/python3.11/site-packages/alembic/testing/requirements.pyschemaszSuiteRequirements.schemas       
        c                 (    t          j                    S )z;target database should support 'AUTOCOMMIT' isolation levelr   closedr   s    r   autocommit_isolationz&SuiteRequirements.autocommit_isolation   s      """r   c                 (    t          j                    S )zneeded for sqlalchemy compatr   r   s    r   materialized_viewsz$SuiteRequirements.materialized_views   s      """r   c                 0    d }t          j        |          S )Nc                     ddl m}  || j                  }	 |                    d           n(# t          $ r Y dS t
          $ r Y dS t          $ r Y nw xY wdS )Nr   )inspectxTF)
sqlalchemyr   dbget_unique_constraintsNotImplementedError	TypeError	Exception)configr   insps      r    doesnt_have_check_uq_constraintszXSuiteRequirements.unique_constraint_reflection.<locals>.doesnt_have_check_uq_constraints   s    ******769%%D++C0000&   tt   tt   5s   . 
A	A	AAr   skip_if)r   r$   s     r   unique_constraint_reflectionz.SuiteRequirements.unique_constraint_reflection   s%    	 	 	 !"BCCCr   c                 0    t          j        d gd          S )z'Target database must support SEQUENCEs.c                 $    | j         j        j        S N)r   dialectsupports_sequencesr"   s    r   <lambda>z-SuiteRequirements.sequences.<locals>.<lambda>1   s    FI-@ r   zno sequence supportr   only_ifr   s    r   	sequenceszSuiteRequirements.sequences,   s%     !@@A!
 
 	
r   c                 (    t          j                    S r*   r
   r   s    r   foreign_key_matchz#SuiteRequirements.foreign_key_match5          r   c                 (    t          j                    S r*   r
   r   s    r   !foreign_key_constraint_reflectionz3SuiteRequirements.foreign_key_constraint_reflection9   r4   r   c                 (    t          j                    S )zMTarget database must support check constraints
        and also enforce them.r
   r   s    r   check_constraints_w_enforcementz1SuiteRequirements.check_constraints_w_enforcement=   r   r   c                 (    t          j                    S r*   r   r   s    r   reflects_pk_namesz#SuiteRequirements.reflects_pk_namesD        """r   c                 (    t          j                    S r*   r   r   s    r   reflects_fk_optionsz%SuiteRequirements.reflects_fk_optionsH   r;   r   c                 .    t          j        d d          S )Nc                     t           j        S r*   r   sqla_2r-   s    r   r.   z1SuiteRequirements.sqlalchemy_1x.<locals>.<lambda>O   s    4; r   zSQLAlchemy 1.x testr%   r   s    r   sqlalchemy_1xzSuiteRequirements.sqlalchemy_1xL   s     !&&!
 
 	
r   c                 .    t          j        d d          S )Nc                     t           j         S r*   r@   r-   s    r   r.   z0SuiteRequirements.sqlalchemy_2.<locals>.<lambda>V   s
    t{? r   zSQLAlchemy 2.x testr%   r   s    r   sqlalchemy_2zSuiteRequirements.sqlalchemy_2S   s     !**!
 
 	
r   c                 0    d }t          j        |          S )Nc                 2    	 dd l }dS # t          $ r Y dS w xY w)Nr   TF)greenletImportError)r"   rH   s     r   goz%SuiteRequirements.asyncio.<locals>.go\   s;     t    uus    
r/   r   rJ   s     r   asynciozSuiteRequirements.asyncioZ   s$    	 	 	 !"%%%r   c                 ,    t          j        d           S )Nc                 $    | j         j        j        S r*   )r   r+   supports_commentsr-   s    r   r.   z,SuiteRequirements.comments.<locals>.<lambda>i   s    69,> r   r/   r   s    r   commentszSuiteRequirements.commentsf   s    !>>
 
 	
r   c                 (    t          j                    S r*   r
   r   s    r   alter_columnzSuiteRequirements.alter_columnl   r4   r   c                 (    t          j                    S r*   r   r   s    r   computed_columnsz"SuiteRequirements.computed_columnsp   r;   r   c                 Z    d }t          j        d          t          j        |          z   S )Nc                 6    t          | j        j        d          S )N"supports_virtual_generated_columns)hasattrr   r+   r-   s    r   rJ   z@SuiteRequirements.computed_columns_warn_no_persisted.<locals>.gov   s    	!#G  r   zpostgresql<18r/   rK   s     r   "computed_columns_warn_no_persistedz4SuiteRequirements.computed_columns_warn_no_persistedt   s4    	 	 	
 !/22Z5G5K5KKKr   c                 (    t          j                    S r*   r   r   s    r   autoincrement_on_composite_pkz/SuiteRequirements.autoincrement_on_composite_pk}   r;   r   c                 (    t          j                    S r*   r   r   s    r   fk_ondelete_is_reflectedz*SuiteRequirements.fk_ondelete_is_reflected   r;   r   c                 (    t          j                    S r*   r   r   s    r   fk_onupdate_is_reflectedz*SuiteRequirements.fk_onupdate_is_reflected   r;   r   c                 (    t          j                    S r*   r
   r   s    r   fk_onupdatezSuiteRequirements.fk_onupdate   r4   r   c                 (    t          j                    S r*   r
   r   s    r   fk_ondelete_restrictz&SuiteRequirements.fk_ondelete_restrict   r4   r   c                 (    t          j                    S r*   r
   r   s    r   fk_onupdate_restrictz&SuiteRequirements.fk_onupdate_restrict   r4   r   c                 (    t          j                    S r*   r
   r   s    r   fk_ondelete_noactionz&SuiteRequirements.fk_ondelete_noaction   r4   r   c                 (    t          j                    S r*   r   r   s    r   fk_initiallyzSuiteRequirements.fk_initially   r;   r   c                 (    t          j                    S r*   r   r   s    r   fk_deferrablezSuiteRequirements.fk_deferrable   r;   r   c                 (    t          j                    S r*   r   r   s    r   fk_deferrable_is_reflectedz,SuiteRequirements.fk_deferrable_is_reflected   r;   r   c                     | j         S r*   )foreign_key_name_reflectionr   s    r   fk_nameszSuiteRequirements.fk_names   s    //r   c                 (    t          j                    S r*   r
   r   s    r   ro   z-SuiteRequirements.foreign_key_name_reflection   r4   r   c                 (    t          j                    S r*   r
   r   s    r   integer_subtype_comparisonsz-SuiteRequirements.integer_subtype_comparisons   r4   r   c                 ,    t          j        d           S )Nc                 $    | j         j        j        S r*   )r   r+   requires_name_normalizer-   s    r   r.   z5SuiteRequirements.no_name_normalize.<locals>.<lambda>   s    69,D r   r%   r   s    r   no_name_normalizez#SuiteRequirements.no_name_normalize   s    !DD
 
 	
r   c                 (    t          j                    S r*   r   r   s    r   identity_columnsz"SuiteRequirements.identity_columns   r;   r   c                 (    t          j                    S r*   r   r   s    r   identity_columns_alterz(SuiteRequirements.identity_columns_alter   r;   r   N)%__name__
__module____qualname__propertyr   r   r   r'   r1   r3   r6   r8   r:   r=   rB   rE   rL   rP   rR   rT   rY   r[   r]   r_   ra   rc   re   rg   ri   rk   rm   rp   ro   rs   rw   ry   r{    r   r   r   r      s       ! ! X! # # X#
 # # X# D D XD" 
 
 X
 ! ! X! ! ! X! ! ! X! # # X# # # X# 
 
 X
 
 
 X
 	& 	& X	& 
 
 X

 ! ! X! # # X# L L XL # # X# # # X# # # X# ! ! X! ! ! X! ! ! X! ! ! X! # # X# # # X# # # X# 0 0 X0 ! ! X! ! ! X! 
 
 X

 # # X# # # X# # #r   r   N)sqlalchemy.testing.requirementsr   alembicr   testingr   r   r   r   r   <module>r      sy    8 8 8 8 8 8                  v# v# v# v# v# v# v# v# v# v#r   