o
    iD1                     @  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 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)picklers   )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	j
e d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   `/var/www/html/arapca_proje/venv/lib/python3.10/site-packages/sqlalchemy/testing/fixtures/base.pyassert_1   s   zTestBase.assert_c                 c  s$    t jj}d t j_d V  |t j_d S r   )r   db_compiled_cache)r   _cacher   r   r   nocache4   s
   zTestBase.nocachec                 c  sH    t | dd p	tj}| }|V  W d    d S 1 sw   Y  d S Nbind)getattrr   r   connect)r   engconnr   r   r   connection_no_trans;   s
   
"zTestBase.connection_no_transc                 c  sL    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   
connectionB   s   zTestBase.connectionc                 #  sd    g  g d fdd	}|V  D ]}z|   W q   Y q D ]}z|  W q"   Y q"d S )NFc                   s      |  |r |  d S d S r   )append)resultconsumeto_close
to_consumer   r   go\   s   
z/TestBase.close_result_when_finished.<locals>.go)F)allr*   )r   r3   rr   r0   r   close_result_when_finishedW   s    z#TestBase.close_result_when_finishedc              	   c  s:    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   r;   regr   r   r   r   m   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>.Baser7   r8   r9   r:   N	__name__
__module____qualname__r;   r=   r>   r?   r@   r<   r   _mdr   r   Base~   s    
rI   )r   r   rA   r   r;   rI   r   rG   r   	decl_basez   s
   zTestBase.decl_basec                 #  s0    | 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>.Baser7   r8   r9   NrC   r   rG   r   r   rI      s    
rI   )r   r   r   rA   rJ   r   rG   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   rM      s   
zTestBase.future_enginec                 #  s8    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testing_enginerS   rO   r   r   gen_testing_engine   s   z3TestBase.testing_engine.<locals>.gen_testing_enginerQ   )NNF) rP   testing_reaper_drop_testing_engines)r   rY   r   rO   r   rX      s   zTestBase.testing_enginec                   s    fdd}|S )Nc                    s   d| d<  di | S )NTrV   r   r   )kwrW   r   r   r3      s   z)TestBase.async_testing_engine.<locals>.gor   )r   rX   r3   r   rW   r   async_testing_engine   s   zTestBase.async_testing_engine)paramsc                 c  s    |j V  d S r   )param)r   requestr   r   r   r      s   zTestBase.picklersc                 c  s    ddl m} | }||j_|V  |j`tr?t r?t }|  t	  t
|t W d   dS 1 s8w   Y  dS t
|tj dS )z>Provide bound MetaData for a single test, dropping afterwards.r	   )schemaN)sqlrb   MetaDatainstancer;   r'   in_transactionget_transactionr)   r&   r   r   r   )r   ra   rb   r;   r+   r   r   r   r;      s$   
"zTestBase.metadatac                 #  s>    ddl m d   fdd}|V   d usJ j = d S )Nr	   r   c                   s    | j   s	J d| j < | S )Nzname is required)nameimpls)dialect_clsrh   r   r   r   r3      s   
z'TestBase.thirdparty_dialect.<locals>.go)dialectsr   ri   )r   r3   r   rk   r   thirdparty_dialect   s   zTestBase.thirdparty_dialectc                 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>rp   c                   sP   |j \ td|tdtt| dd ptj}|  fdd}|S )Ntestdatar    c              
     s:  |   D} rtjjjstd |r|  }n| }|q |r-|  ddi n
| ddi r>|	  n|
  dkrttjjd3 dkrk|r`|  ddi n| ddi ndkrz|rv|   n|  W d    n1 sw   Y  W d    n1 sw   Y  |r|  dd	i n| dd	i n|r|  ddi n
| ddi |rՈr| 	  n| 
  nr|	  n|
  dkrBttjjdL dkr|r|  ddi n1| ddi n&dkr!t|dr|   n|    nd
kr2|r.|   n|  W d    n	1 s=w   Y  W d    n	1 sMw   Y  d} r[|d7 }sb|d7 }|rvt| tt | d S |  }t|tt | W d    d S 1 sw   Y  d S )Nzsavepoints not enabledrv   
   rn   zCan't operate on closed transaction inside context manager.  Please complete the context manager before emitting further commands.ro      r&      rs   r      )r&   r   requirements
savepointsenabled	skip_testrs   ro   insertr)   commitr   expect_raises_messager>   excInvalidRequestErrorhasattrr   scalarr   r   countselect_fromr"   )subjecttrans_on_subjectexecute_on_subjectr+   nested_transexpected_committedr$   rs   r)   rr   tr   r   run_test  s   




)









`
$z4TestBase.trans_ctx_manager_fixture.<locals>.run_test)r`   r   r
   r   r!   r   r   create)r   ra   r;   r#   r   r   r   r   trans_ctx_manager_fixture   s   
wz"TestBase.trans_ctx_manager_fixturer   )rD   rE   rF   __requires____unsupported_on____only_on____skip_if__"__leave_connections_for_teardown__r   r   rQ   r   r%   r,   r6   r   rK   rL   rN   rM   rX   r^   r   r;   rm   r   r   r   r   r   r      sR    














r   c                   @  s   e Zd ZdZdS )FutureEngineMixinz alembic's suite still using thisN)rD   rE   rF   __doc__r   r   r   r   r     s    r   )
__future__r   
sqlalchemyr>   rZ   r   r   r   utilr   r   r
   r   r   r   r   ormr   r   r   mark_base_test_classr   r'   r   r   r   r   r   <module>   s*   	  a