
    i                     R    d dl mZ d dlmZ d dlmZ ddlmZ  G d de          ZdS )	    )Requirements)util)sqla_compat   )
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$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    b/var/www/html/crypto-bot/backend/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>2   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_match6          r   c                 (    t          j                    S r+   r   r   s    r   !foreign_key_constraint_reflectionz3SuiteRequirements.foreign_key_constraint_reflection:   r5   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_namesE        """r   c                 (    t          j                    S r+   r   r   s    r   reflects_fk_optionsz%SuiteRequirements.reflects_fk_optionsI   r<   r   c                 .    t          j        d d          S )Nc                     t           j         S r+   )r   sqla_14r.   s    r   r/   z1SuiteRequirements.sqlalchemy_14.<locals>.<lambda>P   s    t|+ r   z"SQLAlchemy 1.4 or greater requiredr&   r   s    r   sqlalchemy_14zSuiteRequirements.sqlalchemy_14M   s     !++0
 
 	
r   c                 .    t          j        d d          S )Nc                     t           j        S r+   r   sqla_2r.   s    r   r/   z1SuiteRequirements.sqlalchemy_1x.<locals>.<lambda>W   s    4; r   zSQLAlchemy 1.x testr&   r   s    r   sqlalchemy_1xzSuiteRequirements.sqlalchemy_1xT   s     !&&!
 
 	
r   c                 .    t          j        d d          S )Nc                     t           j         S r+   rE   r.   s    r   r/   z0SuiteRequirements.sqlalchemy_2.<locals>.<lambda>^   s
    t{? r   zSQLAlchemy 2.x testr&   r   s    r   sqlalchemy_2zSuiteRequirements.sqlalchemy_2[   s     !**!
 
 	
r   c                 @    d }| j         t          j        |          z   S )Nc                 2    	 dd l }dS # t          $ r Y dS w xY w)Nr   TF)greenletImportError)r#   rM   s     r   goz%SuiteRequirements.asyncio.<locals>.god   s;     t    uus    
)rB   r   r1   )r   rO   s     r   asynciozSuiteRequirements.asynciob   s,    	 	 	 !J$6r$:$:::r   c                 ,    t          j        d           S )Nc                 $    | j         j        j        S r+   )r   r,   supports_commentsr.   s    r   r/   z,SuiteRequirements.comments.<locals>.<lambda>q   s    69,> r   r0   r   s    r   commentszSuiteRequirements.commentsn   s    !>>
 
 	
r   c                 (    t          j                    S r+   r   r   s    r   alter_columnzSuiteRequirements.alter_columnt   r5   r   c                 (    t          j                    S r+   r   r   s    r   computed_columnsz"SuiteRequirements.computed_columnsx   r<   r   c                 b    t          j        t          j        t          j                            S r+   )r   r1   BooleanPredicater   has_computedr   s    r   computed_columns_apiz&SuiteRequirements.computed_columns_api|   (    !'(@AA
 
 	
r   c                 b    t          j        t          j        t          j                            S r+   )r   r1   rZ   r   has_computed_reflectionr   s    r   computed_reflects_normallyz,SuiteRequirements.computed_reflects_normally   s(    !'(KLL
 
 	
r   c                 (    t          j                    S r+   r   r   s    r   #computed_reflects_as_server_defaultz5SuiteRequirements.computed_reflects_as_server_default   r<   r   c                 (    t          j                    S r+   r   r   s    r   )computed_doesnt_reflect_as_server_defaultz;SuiteRequirements.computed_doesnt_reflect_as_server_default   r<   r   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   r5   r   c                 (    t          j                    S r+   r   r   s    r   fk_ondelete_restrictz&SuiteRequirements.fk_ondelete_restrict   r5   r   c                 (    t          j                    S r+   r   r   s    r   fk_onupdate_restrictz&SuiteRequirements.fk_onupdate_restrict   r5   r   c                 (    t          j                    S r+   r   r   s    r   fk_ondelete_noactionz&SuiteRequirements.fk_ondelete_noaction   r5   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   r5   r   c                 (    t          j                    S r+   r   r   s    r   integer_subtype_comparisonsz-SuiteRequirements.integer_subtype_comparisons   r5   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   c                 b    t          j        t          j        t          j                            S r+   )r   r1   rZ   r   has_identityr   s    r   identity_columns_apiz&SuiteRequirements.identity_columns_api   r]   r   N))__name__
__module____qualname__propertyr   r   r   r(   r2   r4   r7   r9   r;   r>   rB   rG   rJ   rP   rT   rV   rX   r\   r`   rb   rd   rf   rh   rj   rl   rn   rp   rr   rt   rv   rx   rz   r|   r   r   r   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! # # X# 
 
 X

 
 
 X

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

 # # X# # # X# 
 
 X
 
 
r   r	   N)	sqlalchemy.testing.requirementsr   alembicr   alembic.utilr   testingr   r	   r   r   r   <module>r      s    8 8 8 8 8 8       $ $ $ $ $ $            J
 J
 J
 J
 J
 J
 J
 J
 J
 J
r   