o
    [h:                     @   s4  d dl Z d dl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 G dd deZG dd deZG dd deZG dd deZG dd deeZG dd deeejZG dd deZG dd deZdS )     N   )
assertions)configschema)drop_all_tables)BasicEntity)ComparableEntity)adict   )event)util)declarative_base)DeclarativeMeta)sort_tables_and_constraintsc                   @   sJ   e Zd ZdZdZdZdZdZdddZdd Z	dd Z
e d	d
 ZdS )TestBase Nc                 C   s   |sJ |d S Nr   )selfvalmsgr   r   /home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/venv/lib/python3.10/site-packages/sqlalchemy/testing/fixtures.pyassert_1   s   zTestBase.assert_c                 C      t | dr|   d S d S )NsetUp)hasattrr   r   r   r   r   setup5      
zTestBase.setupc                 C   r   )NtearDown)r   r   r   r   r   r   teardown9   r   zTestBase.teardownc                 c   sD    t j }| }z|V  W |  |  d S |  |  w r   )r   dbconnectbeginrollbackclose)r   connZtransr   r   r   
connection=   s   

zTestBase.connectionr   )__name__
__module____qualname__Z__whitelist____requires__Z__unsupported_on__Z__only_on__Z__skip_if__r   r   r    r   Zfixturer'   r   r   r   r   r      s    
r   c                   @   s   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZedd Zedd Zedd	 Zed
d Zdd Zdd Zdd Zdd Zdd Zedd Zedd Zedd Zedd Zedd Zed d! Zed"d# Zd$d% Zd&d' Zed(d) Z dS )*
TablesTestonceeachNc                 C   s   |    |   |   d S r   )_init_class_setup_once_tables_setup_once_insertsclsr   r   r   setup_classq   s   zTablesTest.setup_classc                 C   sZ   | j dkr| jdkrd| _| jdv sJ t | _t | _|  | _t	 | _
| j| j
_d S )Nr.   r-   )r.   N)run_define_tablesrun_create_tablesrun_insertsr
   othertables
setup_bindbindsaZMetaDatametadatar2   r   r   r   r/   y   s   



zTablesTest._init_classc                 C   P   | j dkr&|   | j }| | W d    d S 1 sw   Y  d S d S Nr-   r7   _load_fixturesr;   r#   insert_data)r3   r&   r   r   r   r1      s   
"zTablesTest._setup_once_insertsc                 C   sF   | j dkr!| | j | jdkr| j| j | j| jj d S d S r?   r5   define_tablesr=   r6   
create_allr;   r9   updater2   r   r   r   r0      s   

zTablesTest._setup_once_tablesc                 C   sb   | j dkr!| | j | jdkr| j| j | j| jj d S | jdkr/| j| j d S d S Nr.   rC   r   r   r   r   _setup_each_tables   s   


zTablesTest._setup_each_tablesc                 C   r>   rG   r@   )r   r&   r   r   r   _setup_each_inserts   s   
"zTablesTest._setup_each_insertsc                 C   s  | j dkr| j  | jdkrt| j| j | j  n| jdkr(t| j| j | j dkr| jdkr| j D}t	dd t
| jj D D ]+}z	||  W qG tjjyr } ztjd||f tjd W Y d }~qGd }~ww W d    d S 1 s~w   Y  d S d S d S )Nr.   c                 S   s   g | ]
\}}|d ur|qS r   r   ).0tfksr   r   r   
<listcomp>   s
    z4TablesTest._teardown_each_tables.<locals>.<listcomp>zError emptying table %s: %r)file)r5   r9   clearr6   r   r=   r;   run_deletesr"   reversedr   valuesexecutedeleter<   excZ
DBAPIErrorr   print_sysstderr)r   r&   tableexr   r   r   _teardown_each_tables   s8   




	
"z TablesTest._teardown_each_tablesc                 C      |    |   d S r   )rH   rI   r   r   r   r   r      s   zTablesTest.setupc                 C      |    d S r   )r[   r   r   r   r   r       s   zTablesTest.teardownc                 C   sJ   | j r
t| j| j | jdkr| | j d | j_| jd ur#d | _d S d S r?   )r6   r   r=   r;   run_dispose_binddispose_bindrun_setup_bindr2   r   r   r   _teardown_once_metadata_bind   s   


z'TablesTest._teardown_once_metadata_bindc                 C   r]   r   )ra   r2   r   r   r   teardown_class   s   zTablesTest.teardown_classc                 C   s   t jS r   )r   r!   r2   r   r   r   r:         zTablesTest.setup_bindc                 C   s0   t |dr|  d S t |dr|  d S d S )Ndisposer%   )r   rd   r%   )r3   r;   r   r   r   r_      s
   

zTablesTest.dispose_bindc                 C      d S r   r   )r3   r=   r   r   r   rD         zTablesTest.define_tablesc                 C   s   i S r   r   r2   r   r   r   fixtures   rf   zTablesTest.fixturesc                 C   re   r   r   )r3   r'   r   r   r   rB      rf   zTablesTest.insert_datac                 C   s   |  | j|| d S r   )Zassert_sql_countr;   )r   countfnr   r   r   
sql_count_      zTablesTest.sql_count_c                 C   s   |  | j|| d S r   )Z
assert_sqlr;   )r   Z	callable_Z
statementsr   r   r   sql_eq_   rk   zTablesTest.sql_eq_c                    s   i i  }|    D ]$\}t|dk rqttjr!| j |d  < |dd |< qt| jj	 D ]!\}du rAq8 vrFq8| j
  fdd| D  q8dS )z4Insert rows as represented by the fixtures() method.r   r   r   Nc                    s   g | ]}t t  |qS r   )dictzip)rJ   Zcolumn_valuesheadersrY   r   r   rM     s    z-TablesTest._load_fixtures.<locals>.<listcomp>)rg   itemslen
isinstancer   string_typesr9   r   r=   rR   r;   rS   insert)r3   rowsdatarL   r   ro   r   rA      s,   


zTablesTest._load_fixtures)!r(   r)   r*   r`   r5   r6   r7   rP   r^   r;   r=   r9   r8   classmethodr4   r/   r1   r0   rH   rI   r[   r   r    ra   rb   r:   r_   rD   rg   rB   rj   rl   rA   r   r   r   r   r,   X   sT    



	






r,   c                       s2   e Zd Zejdd Zdd Z fddZ  ZS )RemovesEventsc                 C   s   t  S r   )setr   r   r   r   
_event_fns  rc   zRemovesEvents._event_fnsc                 K   s,   | j |||f tj|||fi | d S r   )r{   addr   listen)r   targetnameri   kwr   r   r   event_listen  s   zRemovesEvents.event_listenc                    s:   | j D ]}tj|  qtt| }t|dr|  d S d S )Nr    )r{   r   removesuperry   r   r    )r   keyZsuper_	__class__r   r   r      s   


zRemovesEvents.teardown)	r(   r)   r*   r   Zmemoized_propertyr{   r   r    __classcell__r   r   r   r   ry     s
    
ry   c                   @   s   e Zd Zedd ZdS )_ORMTestc                 C   s   t jj  t j  d S r   )r<   ormsessionclose_all_sessionsclear_mappersr2   r   r   r   rb   $  s   z_ORMTest.teardown_classN)r(   r)   r*   rx   rb   r   r   r   r   r   #  s    r   c                   @      e Zd ZdS )ORMTestNr(   r)   r*   r   r   r   r   r   *      r   c                   @   s   e Zd ZdZdZdZedd Zedd Zdd	 Z	d
d Z
edd Zedd Zedd Zdd Zdd Zedd Zdd Zdd Zedd Zedd ZdS ) 
MappedTestr-   r.   Nc                 C   s>   |    | jd u rt | _|   |   |   |   d S r   )r/   classesr
   r0   _setup_once_classes_setup_once_mappersr1   r2   r   r   r   r4   7  s   
zMappedTest.setup_classc                 C   r\   r   )_teardown_once_classra   r2   r   r   r   rb   C  s   zMappedTest.teardown_classc                 C   s$   |    |   |   |   d S r   )rH   _setup_each_classes_setup_each_mappersrI   r   r   r   r   r   H  s   zMappedTest.setupc                 C   s(   t jj  |   |   |   d S r   )r<   r   r   r   _teardown_each_mappers_teardown_each_classesr[   r   r   r   r   r    N  s   zMappedTest.teardownc                 C   s   | j   t  d S r   )r   rO   r   rb   r2   r   r   r   r   T  s   
zMappedTest._teardown_once_classc                 C      | j dkr| | j d S d S r?   run_setup_classes_with_register_classessetup_classesr2   r   r   r   r   Y     
zMappedTest._setup_once_classesc                 C   r   r?   run_setup_mappersr   setup_mappersr2   r   r   r   r   ^  r   zMappedTest._setup_once_mappersc                 C   r   rG   r   r   r   r   r   r   c     
zMappedTest._setup_each_mappersc                 C   r   rG   r   r   r   r   r   r   g  r   zMappedTest._setup_each_classesc                    sl   | j  G  fdddt}G dd dt|t}G dd dt|}G dd dt|}|| _|| _|  d	S )
zRun a setup method, framing the operation with a Base class
        that will catch new subclasses to be established within
        the "classes" registry.

        c                          e Zd Z fddZdS )z6MappedTest._with_register_classes.<locals>.FindFixturec                       |  |< t | ||| d S r   )type__init__r3   	classnamebasesZdict_Zcls_registryr   r   r   u     z?MappedTest._with_register_classes.<locals>.FindFixture.__init__Nr(   r)   r*   r   r   r   r   r   FindFixturet      r   c                   @   r   )z0MappedTest._with_register_classes.<locals>._BaseNr   r   r   r   r   _Basey  r   r   c                   @   r   )z0MappedTest._with_register_classes.<locals>.BasicNr   r   r   r   r   Basic|  r   r   c                   @   r   )z5MappedTest._with_register_classes.<locals>.ComparableNr   r   r   r   r   
Comparable  r   r   N)	r   r   r   with_metaclassobjectr   r	   r   r   )r3   ri   r   r   r   r   r   r   r   r   k  s   
z!MappedTest._with_register_classesc                 C   s   | j dkrtj  d S d S r?   )r   r<   r   r   r   r   r   r   r     s   
z!MappedTest._teardown_each_mappersc                 C   s   | j dkr| j  d S d S r?   )r   r   rO   r   r   r   r   r     s   
z!MappedTest._teardown_each_classesc                 C   re   r   r   r2   r   r   r   r     rf   zMappedTest.setup_classesc                 C   re   r   r   r2   r   r   r   r     rf   zMappedTest.setup_mappers)r(   r)   r*   r   r   r   rx   r4   rb   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   .  s4    






r   c                       s4   e Zd ZdZdZedd Ze fddZ  ZS )DeclarativeMappedTestr-   c                 C   re   r   r   r2   r   r   r   r0     rf   z(DeclarativeMappedTest._setup_once_tablesc                    sx   | j  G  fdddt}G dd dt}t| j||d}|| _tt| | | jj	r8| j
r:| jtj d S d S d S )Nc                       r   )zLDeclarativeMappedTest._with_register_classes.<locals>.FindFixtureDeclarativec                    r   r   )r   r   r   r   r   r   r     r   zUDeclarativeMappedTest._with_register_classes.<locals>.FindFixtureDeclarative.__init__Nr   r   r   r   r   FindFixtureDeclarative  r   r   c                   @   s   e Zd ZejZdS )zFDeclarativeMappedTest._with_register_classes.<locals>.DeclarativeBasicN)r(   r)   r*   r   TableZ__table_cls__r   r   r   r   DeclarativeBasic  s    
r   )r=   	metaclassr3   )r   r   r   r   r=   r   r   r   r   r9   r6   rE   r   r!   )r3   ri   r   r   Z	_DeclBaser   r   r   r     s   z,DeclarativeMappedTest._with_register_classes)	r(   r)   r*   r   r   rx   r0   r   r   r   r   r   r   r     s    
r   c                   @   s:   e Zd Zd ZZdZdZedZ	dd Z
edd ZdS )	ComputedReflectionFixtureTestNT)Zcomputed_columnsZtable_reflectionz[\[\]\(\)\s`'\"]*c                 C   s   | j d| S )N )regexpsublower)r   textr   r   r   	normalize  s   z'ComputedReflectionFixtureTest.normalizec           	      C   sx  ddl m} ddl m} ddlm} ddlm} ddlm} |d||d|d	d
|d||d||d|d|dd |d||d|d	d
|d||d||d}|jjj	rn|d||d|d	d
|d||d||dt
jd}|jjj	r||d||ddd |jjj	r||d||ddd |jjj	r||d||dd	d |jjj	r||d||dd	d d S d S d S )Nr   )Integer)testing)Column)Computed)r   Zcomputed_default_tableidT)Zprimary_keynormalZcomputed_colznormal + 42Zwith_defaultZ42)Zserver_defaultZcomputed_column_tableZcomputed_no_flagznormal / 42r   Zcomputed_virtualz
normal + 2F)Z	persistedz
normal / 2Zcomputed_storedznormal - 42znormal * 42)r   r   r   r   r   r   r   requiresZschemasenabledr   Ztest_schemaZcomputed_columns_virtualappend_columnZcomputed_columns_stored)	r3   r=   r   r   r   r   r   rK   t2r   r   r   rD     s~   	

	






z+ComputedReflectionFixtureTest.define_tables)r(   r)   r*   r7   rP   Z__backend__r+   recompiler   r   rx   rD   r   r   r   r   r     s    
r   )r   rW   Z
sqlalchemyr<   r   r   r   r   Zenginesr   entitiesr   r	   r   r
   r   Zext.declarativer   r   r   r   r   r,   ry   r   r   ZAssertsExecutionResultsr   r   r   r   r   r   r   <module>   s0   : ;l#