a
    [g/                     @  s   d dl mZ d dlZddlmZ ddlmZ ddlmZ ddlm	Z	 dd	lm
Z
 dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ e G dd dZdaG dd dZdS )    )annotationsN   )
assertions)config)eq_)drop_all_tables_from_metadata   )Column)func)Integer)select)Table)DeclarativeBase)MappedAsDataclass)registryc                   @  s  e Zd ZdZdZdZdZdZd$ddZe	
 dd Ze	
 dd	 Ze	
 d
d Ze	
 dd Ze	
 dd Ze	j
dd Ze	j
dd Ze	
 dd Ze	
 dd Ze	
 dd Ze	
 dd Ze	
 dd Ze	j
dd d D d!d"d# ZdS )%TestBase NFc                 C  s   |sJ |d S Nr   )selfvalmsgr   r   n/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/sqlalchemy/testing/fixtures/base.pyassert_0   s    zTestBase.assert_c                 c  s"   t jj}d t j_d V  |t j_d S r   )r   dbZ_compiled_cache)r   _cacher   r   r   nocache3   s    zTestBase.nocachec                 c  sD   t | dd ptj}| }|V  W d    n1 s60    Y  d S Nbind)getattrr   r   connect)r   engconnr   r   r   connection_no_trans:   s    
zTestBase.connection_no_transc                 c  sJ   t | dd ptj}| }| }|a|V  d a|jr>|  |  d S r   )	r   r   r   r   begin_connection_fixture_connection	is_activerollbackclose)r   r    r!   transr   r   r   
connectionA   s    zTestBase.connectionc                 #  sj   g  g d fdd	}|V  D ]}z|   W q"   Y q"0 q" D ]}z|  W qF   Y qF0 qFd S )NFc                   s     |  |r |  d S r   )append)resultZconsumeto_closeZ
to_consumer   r   go[   s    
z/TestBase.close_result_when_finished.<locals>.go)F)allr'   )r   r.   rr   r,   r   close_result_when_finishedV   s    z#TestBase.close_result_when_finishedc              	   c  s8   t |tt tddddid}|V  |  d S )N2   mysqlmariadboracle)metadatatype_annotation_map)r   strsaStringwith_variantdispose)r   r6   regr   r   r   r   l   s    
zTestBase.registryc                 #  s,   | G  fdddt }|V  |j  d S )Nc                      s.   e Zd Z Zee eddddiZdS )z TestBase.decl_base.<locals>.Baser2   r3   r4   r5   N	__name__
__module____qualname__r6   r8   r9   r:   r;   r7   r   Z_mdr   r   Base}   s
   
rC   )r   r   r<   r   r6   rC   r   rB   r   	decl_basey   s    zTestBase.decl_basec                 #  s.   | G  fdddt t}|V  |j  d S )Nc                      s,   e Zd Z Zee edddiZdS )z#TestBase.dc_decl_base.<locals>.Baser2   r3   r4   Nr>   r   rB   r   r   rC      s
   
rC   )r   r   r   r<   rD   r   rB   r   dc_decl_base   s    zTestBase.dc_decl_basec                 c  s
   |V  d S r   r   )r   future_enginer)   r   r   r   future_connection   s    zTestBase.future_connectionc                 c  s
   d V  d S r   r   )r   r   r   r   rG      s    zTestBase.future_enginec                 #  s0   ddl m  d fdd	}|V   jd d S )Nr   enginesFc                   s(   |d u ri }d|d<  j | ||||dS )Nfixturescope)urloptionsasynciotransfer_staticpool
share_pooltesting_engine)rM   rN   futurerO   rP   rQ   rI   r   r   gen_testing_engine   s    z3TestBase.testing_engine.<locals>.gen_testing_enginerK   )NNNFFF) rJ   Ztesting_reaperZ_drop_testing_engines)r   rU   r   rI   r   rS      s          zTestBase.testing_enginec                   s    fdd}|S )Nc                    s   d| d<  f i | S )NTrO   r   )kwrR   r   r   r.      s    z)TestBase.async_testing_engine.<locals>.gor   )r   rS   r.   r   rR   r   async_testing_engine   s    zTestBase.async_testing_enginec                 c  s   ddl m} | }||j_|V  |j`trxt rxt }|  t	  t
|t W d   q1 sl0    Y  nt
|tj dS )z>Provide bound MetaData for a single test, dropping afterwards.r   )schemaN)sqlrY   ZMetaDatainstancer6   r$   Zin_transactionZget_transactionr&   r#   r   r   r   )r   requestrY   r6   r(   r   r   r   r6      s     
$zTestBase.metadatac                 C  s*   g | ]"}d D ]}dD ]}|||fqqqS ))noneexecuter#   TFr   ).0r&   second_operationbegin_nestedr   r   r   
<listcomp>   s   zTestBase.<listcomp>r_   )paramsc                   sP   |j \ td|tdtt| dd p.tj}|  fdd}|S )Ntestdatar   c              
     sJ  |   } rltjjjs&td |r4|  }n| }| |r\|  ddi n| ddi r~|	  n|
  dkrttjjdf dkr|r|  ddi q| ddi ndkr|r|   n|  W d    n1 s0    Y  W d    n1 s.0    Y  |rT|  dd	i n| dd	i n,|r|  ddi n| ddi |rr| 	  n| 
  nr|	  n|
  dkrttjjd dkr,|r|  ddi n| ddi nLdkrVt|drL|   n|    n"d
krx|rp|   n|  W d    n1 s0    Y  W d    n1 s0    Y  d} r|d7 }s|d7 }|rt| tt | nH|  .}t|tt | W d    n1 s<0    Y  d S )Nzsavepoints not enabledrf   
   r]   zCan't operate on closed transaction inside context manager.  Please complete the context manager before emitting further commands.r^      r#      rb   r      )r#   r   requirementsZ
savepointsenabledZ	skip_testrb   r^   insertr&   commitr   Zexpect_raises_messager9   excZInvalidRequestErrorhasattrr   Zscalarr   r
   countselect_fromr   )subjectZtrans_on_subjectZexecute_on_subjectr(   Znested_transZexpected_committedr!   rb   r&   ra   tr   r   run_test   s    





H









H
z4TestBase.trans_ctx_manager_fixture.<locals>.run_test)paramr   r	   r   r   r   r   create)r   r\   r6   r    rv   r   rt   r   trans_ctx_manager_fixture   s    
wz"TestBase.trans_ctx_manager_fixture)N)r?   r@   rA   __requires__Z__unsupported_on__Z__only_on__Z__skip_if__Z"__leave_connections_for_teardown__r   r   rK   r   r"   r)   r1   r   rE   rF   rH   rG   rS   rX   r6   ry   r   r   r   r   r      sH   












r   c                   @  s   e Zd ZdZdS )FutureEngineMixinz alembic's suite still using thisN)r?   r@   rA   __doc__r   r   r   r   r{   m  s   r{   )
__future__r   Z
sqlalchemyr9   rV   r   r   r   utilr   r	   r
   r   r   r   Zormr   r   r   Zmark_base_test_classr   r$   r{   r   r   r   r   <module>
   s&     P