o
    i:                     @   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   V/var/www/edux/Edux_v2/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   conntransr   r   r   
connection=   s   

zTestBase.connectionr   )__name__
__module____qualname____whitelist____requires____unsupported_on____only_on____skip_if__r   r   r    r   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 )Nr4   r3   )r4   N)run_define_tablesrun_create_tablesrun_insertsr
   othertables
setup_bindbindsaMetaDatametadatar8   r   r   r   r5   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 Nr3   r=   _load_fixturesrA   r#   insert_data)r9   r&   r   r   r   r7      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 rF   r;   define_tablesrD   r<   
create_allrA   r?   updater8   r   r   r   r6      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 Nr4   rJ   r   r   r   r   _setup_each_tables   s   


zTablesTest._setup_each_tablesc                 C   rE   rN   rG   )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 )Nr4   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)r;   r?   clearr<   r   rD   rA   run_deletesr"   reversedr   valuesexecutedeleterB   exc
DBAPIErrorr   print_sysstderr)r   r&   tableexr   r   r   _teardown_each_tables   s8   




	
"z TablesTest._teardown_each_tablesc                 C      |    |   d S r   )rO   rP   r   r   r   r   r      s   zTablesTest.setupc                 C      |    d S r   )rc   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 rF   )r<   r   rD   rA   run_dispose_binddispose_bindrun_setup_bindr8   r   r   r   _teardown_once_metadata_bind   s   


z'TablesTest._teardown_once_metadata_bindc                 C   re   r   )ri   r8   r   r   r   teardown_class   s   zTablesTest.teardown_classc                 C   s   t jS r   )r   r!   r8   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   rl   r%   )r9   rA   r   r   r   rg      s
   

zTablesTest.dispose_bindc                 C      d S r   r   )r9   rD   r   r   r   rK         zTablesTest.define_tablesc                 C   s   i S r   r   r8   r   r   r   fixtures   rn   zTablesTest.fixturesc                 C   rm   r   r   )r9   r(   r   r   r   rI      rn   zTablesTest.insert_datac                 C   s   |  | j|| d S r   )assert_sql_countrA   )r   countfnr   r   r   
sql_count_      zTablesTest.sql_count_c                 C   s   |  | j|| d S r   )
assert_sqlrA   )r   	callable_
statementsr   r   r   sql_eq_   rt   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)rQ   column_valuesheadersra   r   r   rT     s    z-TablesTest._load_fixtures.<locals>.<listcomp>)ro   itemslen
isinstancer   string_typesr?   r   rD   rY   rA   rZ   insert)r9   rowsdatarS   r   r|   r   rH      s,   


zTablesTest._load_fixtures)!r)   r*   r+   rh   r;   r<   r=   rW   rf   rA   rD   r?   r>   classmethodr:   r5   r7   r6   rO   rP   rc   r   r    ri   rj   r@   rg   rK   ro   rI   rs   rx   rH   r   r   r   r   r2   X   sT    



	






r2   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  rk   zRemovesEvents._event_fnsc                 K   s,   | j |||f tj|||fi | d S r   )r   addr   listen)r   targetnamerr   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superr   r   r    )r   keysuper_	__class__r   r   r      s   


zRemovesEvents.teardown)	r)   r*   r+   r   memoized_propertyr   r   r    __classcell__r   r   r   r   r     s
    
r   c                   @   s   e Zd Zedd ZdS )_ORMTestc                 C   s   t jj  t j  d S r   )rB   ormsessionclose_all_sessionsclear_mappersr8   r   r   r   rj   $  s   z_ORMTest.teardown_classN)r)   r*   r+   r   rj   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 ) 
MappedTestr3   r4   Nc                 C   s>   |    | jd u rt | _|   |   |   |   d S r   )r5   classesr
   r6   _setup_once_classes_setup_once_mappersr7   r8   r   r   r   r:   7  s   
zMappedTest.setup_classc                 C   rd   r   )_teardown_once_classri   r8   r   r   r   rj   C  s   zMappedTest.teardown_classc                 C   s$   |    |   |   |   d S r   )rO   _setup_each_classes_setup_each_mappersrP   r   r   r   r   r   H  s   zMappedTest.setupc                 C   s(   t jj  |   |   |   d S r   )rB   r   r   r   _teardown_each_mappers_teardown_each_classesrc   r   r   r   r   r    N  s   zMappedTest.teardownc                 C   s   | j   t  d S r   )r   rV   r   rj   r8   r   r   r   r   T  s   
zMappedTest._teardown_once_classc                 C      | j dkr| | j d S d S rF   run_setup_classes_with_register_classessetup_classesr8   r   r   r   r   Y     
zMappedTest._setup_once_classesc                 C   r   rF   run_setup_mappersr   setup_mappersr8   r   r   r   r   ^  r   zMappedTest._setup_once_mappersc                 C   r   rN   r   r   r   r   r   r   c     
zMappedTest._setup_each_mappersc                 C   r   rN   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__r9   	classnamebasesdict_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   )r9   rr   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 rF   )r   rB   r   r   r   r   r   r   r     s   
z!MappedTest._teardown_each_mappersc                 C   s   | j dkr| j  d S d S rF   )r   r   rV   r   r   r   r   r     s   
z!MappedTest._teardown_each_classesc                 C   rm   r   r   r8   r   r   r   r     rn   zMappedTest.setup_classesc                 C   rm   r   r   r8   r   r   r   r     rn   zMappedTest.setup_mappers)r)   r*   r+   r   r   r   r   r:   rj   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 )DeclarativeMappedTestr3   c                 C   rm   r   r   r8   r   r   r   r6     rn   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   Table__table_cls__r   r   r   r   DeclarativeBasic  s    
r   )rD   	metaclassr9   )r   r   r   r   rD   r   r   r   r   r?   r<   rL   r   r!   )r9   rr   r   r   	_DeclBaser   r   r   r     s   z,DeclarativeMappedTest._with_register_classes)	r)   r*   r+   r   r   r   r6   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)computed_columns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   computed_default_tableidT)primary_keynormalcomputed_colznormal + 42with_default42)server_defaultcomputed_column_tablecomputed_no_flagznormal / 42r   computed_virtualz
normal + 2F)	persistedz
normal / 2computed_storedznormal - 42znormal * 42)r   r   r   r   r   r   r   requiresschemasenabledr   test_schemacomputed_columns_virtualappend_columncomputed_columns_stored)	r9   rD   r   r   r   r   r   rR   t2r   r   r   rK     s~   	

	






z+ComputedReflectionFixtureTest.define_tables)r)   r*   r+   r=   rW   __backend__r-   recompiler   r   r   rK   r   r   r   r   r     s    
r   )r   r_   
sqlalchemyrB   r   r   r   r   enginesr   entitiesr   r	   r   r
   r   ext.declarativer   r   r   r   r   r2   r   r   r   AssertsExecutionResultsr   r   r   r   r   r   r   <module>   s0   : ;l#