
    +hT                     >    d dl mZ d dlmZ ddlmZ  G d de      Zy)    )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"y )!SuiteRequirementsc                 *    t        j                         S )zXTarget database must support external schemas, and have one
        named 'test_schema'.r   openselfs    O/var/www/html/venv/lib/python3.12/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                 2    d }t        j                  |      S )Nc                     ddl m}  || j                        }	 |j                  d       y# t        $ r Y yt
        $ r Y yt        $ r Y yw xY w)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   sX    *699%D++C0  '   s   , 	AAAAr   skip_if)r   r$   s     r   unique_constraint_reflectionz.SuiteRequirements.unique_constraint_reflection   s    	 !!"BCCr   c                 2    t        j                  d gd      S )z'Target database must support SEQUENCEs.c                 B    | j                   j                  j                  S N)r   dialectsupports_sequencesr"   s    r   <lambda>z-SuiteRequirements.sequences.<locals>.<lambda>1   s    FII--@@ 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                 0    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                 0    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                 2    d }t        j                  |      S )Nc                 ,    	 dd l }y# t        $ r Y yw xY w)Nr   TF)greenletImportError)r"   rH   s     r   goz%SuiteRequirements.asyncio.<locals>.go\   s#       s    	r/   )r   rJ   s     r   asynciozSuiteRequirements.asyncioZ   s    	 !!"%%r   c                 .    t        j                  d       S )Nc                 B    | j                   j                  j                  S r*   )r   r+   supports_commentsr-   s    r   r.   z,SuiteRequirements.comments.<locals>.<lambda>i   s    699,,>> 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                 *    t        j                         S r*   r   r   s    r   autoincrement_on_composite_pkz/SuiteRequirements.autoincrement_on_composite_pkt   r;   r   c                 *    t        j                         S r*   r   r   s    r   fk_ondelete_is_reflectedz*SuiteRequirements.fk_ondelete_is_reflectedx   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                 *    t        j                         S r*   r
   r   s    r   fk_nameszSuiteRequirements.fk_names   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                 B    | j                   j                  j                  S r*   )r   r+   requires_name_normalizer-   s    r   r.   z5SuiteRequirements.no_name_normalize.<locals>.<lambda>   s    699,,DD r   r%   r   s    r   no_name_normalizez#SuiteRequirements.no_name_normalize   s    !!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   rK   rO   rQ   rS   rU   rW   rY   r[   r]   r_   ra   rc   re   rg   ri   rk   ro   rq   rs    r   r   r   r      sn   ! ! # #
 # # D D" 
 
 ! ! ! ! ! ! # # # # 
 
 
 
 	& 	& 
 

 ! ! # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # ! ! ! ! 
 

 # # # #r   r   N)sqlalchemy.testing.requirementsr   alembicr   testingr   r   rx   r   r   <module>r|      s    8   i# i#r   