o
    g>                     @  s  d dl mZ d dlZd dlZ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ZG dd dZG dd deZG dd dZ	dddZdS )     )annotationsN   )TestBase   )config)mock)eq_)ne_)adict)drop_all_tables_from_metadata   )event)util)sort_tables_and_constraints)visitors)ClauseElementc                   @  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dZejddddd Zejdd	d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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eachNTclassautousescopec                 c  s2    | j }|  |  |  d V  |  d S N)	__class___init_class_setup_once_tables_setup_once_inserts_teardown_once_metadata_bind)selfcls r!   a/var/www/html/ecg_monitoring/venv/lib/python3.10/site-packages/sqlalchemy/testing/fixtures/sql.py_setup_tables_test_class7   s   z#TablesTest._setup_tables_test_classfunctionc                 c  s$    |    |   d V  |   d S r   )_setup_each_tables_setup_each_inserts_teardown_each_tablesr   r!   r!   r"   _setup_tables_test_instanceD   s
   z&TablesTest._setup_tables_test_instancec                 C     | j S r   )_tables_metadatar(   r!   r!   r"   tables_test_metadataM      zTablesTest.tables_test_metadatac                 C  sX   | j dkr| jdkrd| _| jdv sJ t | _t | _t | _|  | _t	
 | _d S )Nr   r   )r   N)run_define_tablesrun_create_tablesrun_insertsr
   othertables	sequences
setup_bindbindsaMetaDatar+   r    r!   r!   r"   r   Q   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   r0   _load_fixturesr5   begininsert_data)r    connr!   r!   r"   r   _   s   
"zTablesTest._setup_once_insertsc                 C  sV   | j dkr)| | j | jdkr| j| j | j| jj | j| jj	 d S d S r:   
r.   define_tablesr+   r/   
create_allr5   r2   updater3   
_sequencesr8   r!   r!   r"   r   f   s   

zTablesTest._setup_once_tablesc                 C  sr   | j dkr)| | j | jdkr| j| j | j| jj | j| jj	 d S | jdkr7| j| j d S d S Nr   r@   r(   r!   r!   r"   r%   o   s   


zTablesTest._setup_each_tablesc                 C  r9   rE   r;   )r   r?   r!   r!   r"   r&   y   s   
"zTablesTest._setup_each_insertsc                 C  sr  | j dkr| j  | jdkrt| j| j | j  n| jdkr(t| j| j ttj	dd}|r4|j
}| j dkr| jdkr| jdkr| j a}tdd t| jj D D ]H}z'|ry|  ||  W d    n1 ssw   Y  n||  W qX tjjy } ztd||f tjd W Y d }~qXd }~ww W d    d S 1 sw   Y  d S d S d S d S )Nr   
savepointsFc                 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.   r2   clearr/   r   r+   r5   getattrr   requirementsenabledrun_deletesr=   reversedr   valuesbegin_nestedexecutedeleter6   exc
DBAPIErrorprintsysstderr)r   rF   r?   tableexr!   r!   r"   r'      sR   







	

"z TablesTest._teardown_each_tablesc                 C  sJ   | j r
t| j| j | jdkr| | j d | j_| jd ur#d | _d S d S r:   )r/   r   r+   r5   run_dispose_binddispose_bindrun_setup_bindr8   r!   r!   r"   r      s   


z'TablesTest._teardown_once_metadata_bindc                 C  s   t jS r   )r   dbr8   r!   r!   r"   r4      r-   zTablesTest.setup_bindc                 C  s0   t |dr|  d S t |dr|  d S d S )Ndisposeclose)hasattrra   rb   )r    r5   r!   r!   r"   r^      s
   

zTablesTest.dispose_bindc                 C     d S r   r!   )r    metadatar!   r!   r"   rA         zTablesTest.define_tablesc                 C  s   i S r   r!   r8   r!   r!   r"   fixtures   rf   zTablesTest.fixturesc                 C  rd   r   r!   )r    
connectionr!   r!   r"   r>      rf   zTablesTest.insert_datac                 C  s   |  | j|| d S r   )assert_sql_countr5   )r   countfnr!   r!   r"   
sql_count_      zTablesTest.sql_count_c                 C  s   |  | j|| d S r   )
assert_sqlr5   )r   	callable_
statementsr!   r!   r"   sql_eq_   rm   zTablesTest.sql_eq_c              	     s   i i  }|    D ]#\}t|dk rqttr | j |d  < |dd |< qt| jj D ]5\}du r@q7 vrEq7| j	
 }|  fdd| D  W d   n1 sgw   Y  q7dS )z4Insert rows as represented by the fixtures() method.r   r   r   Nc                   s   g | ]}t t  |qS r!   )dictzip)rG   column_valuesheadersr[   r!   r"   rJ      s    z-TablesTest._load_fixtures.<locals>.<listcomp>)rg   itemslen
isinstancestrr2   r   r+   rR   r5   r=   rT   insert)r    rowsdatarI   r?   r!   ru   r"   r<      s2   



zTablesTest._load_fixtures)$__name__
__module____qualname__r_   r.   r/   r0   rP   r]   r5   r+   r2   r1   r3   r   fixturer#   r)   propertyr,   classmethodr   r   r   r%   r&   r'   r   r4   r^   rA   rg   r>   rl   rq   r<   r!   r!   r!   r"   r      sV    






)





r   c                   @  s"   e Zd Zejddddd ZdS )NoCacheTr$   r   c                 c  s$    t jj}d t j_d V  |t j_d S r   )r   r`   _compiled_cache)r   _cacher!   r!   r"   _disable_cache   s
   zNoCache._disable_cacheN)r~   r   r   r   r   r   r!   r!   r!   r"   r      s    r   c                   @  s8   e Zd Zejdd Zdd Zejddddd	 Z	d
S )RemovesEventsc                 C  s   t  S r   )setr(   r!   r!   r"   
_event_fns   r-   zRemovesEvents._event_fnsc                 K  s,   | j |||f tj|||fi | d S r   )r   addr   listen)r   targetnamerk   kwr!   r!   r"   event_listen   s   zRemovesEvents.event_listenTr$   r   c                 c  s"    d V  | j D ]}tj|  qd S r   )r   r   remove)r   keyr!   r!   r"   _remove_events   s
   
zRemovesEvents._remove_eventsN)
r~   r   r   r   memoized_propertyr   r   r   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)Tablecomputed_default_tableidT)primary_keynormalcomputed_colznormal + 42with_default42)server_defaultcomputed_column_tablecomputed_no_flagznormal / 42)schemacomputed_virtualz
normal + 2F)	persistedz
normal / 2computed_storedznormal - 42znormal * 42)r   r   r   r   r   r   r   requiresschemasrO   r   test_schemacomputed_columns_virtualappend_columncomputed_columns_stored)	r    re   r   r   r   r   r   rH   t2r!   r!   r"   rA     s~   	

	






z+ComputedReflectionFixtureTest.define_tables)r~   r   r   r0   rP   __backend____requires__recompiler   r   r   rA   r!   r!   r!   r"   r     s    
r   c                   @  s$   e Zd Zdd Zdd Zdd ZdS )CacheKeyFixturec                 C  s   |  }|  }|d u r|jdsJ |d u sJ ||fS t|j|j tt|jt|j t|j|jD ]\}}|j||dsDJ q7||fS )Nnocachecompare_values)	_generate_cache_key_annotationsgetr   r   hashrs   
bindparamscompare)r   abr   a_keyb_keya_paramb_paramr!   r!   r"   _compare_equalX  s   zCacheKeyFixture._compare_equalc                 C  s  | }| }t tt|dD ]\}}||kr+| || || |\}}|d u r*qn[||  }||  }|d u s?|d u r\|d u rM|| jdsMJ |d u r[|| jds[J q|j|jkrt	|j
|j
D ]\}	}
|	j|
|dsv nqit|j|j nt|j|j t|| trt|| trg }g }t|| D ]}|jdkr|| qt|| D ]}|jdkr|| qtt|j
dd dtt|dd d tt|j
d	d dtt|d
d d qd S )Nr   r   r   	bindparamc                 S  r*   r   r   r   r!   r!   r"   <lambda>      z8CacheKeyFixture._run_cache_key_fixture.<locals>.<lambda>r   c                 S  r*   r   r   r   r!   r!   r"   r     r   c                 S  r*   r   r   r   r!   r!   r"   r     r   c                 S  r*   r   r   r   r!   r!   r"   r     r   )	itertoolscombinations_with_replacementrangerx   r   r   r   r   r   rs   r   r   r	   ry   r   r   iterate__visit_name__appendr   sortedr   unique_list)r   r   r   case_acase_br   r   r   r   r   r   assert_a_paramsassert_b_paramselemr!   r!   r"   _run_cache_key_fixtureh  sv   




z&CacheKeyFixture._run_cache_key_fixturec                 C  sD   | }| }t tt|dD ]\}}| || || | qd S )Nr   )r   r   r   rx   r   )r   r   r   r   r   r   r   r!   r!   r"   _run_cache_key_equal_fixture  s   z,CacheKeyFixture._run_cache_key_equal_fixtureN)r~   r   r   r   r   r   r!   r!   r!   r"   r   W  s    Kr   Fc                   sJ   | j }|j| jG dd d  fddfdd}|| _d S )Nc                   @  s,   e Zd ZdZdd Zedd Zdd ZdS )	z.insertmanyvalues_fixture.<locals>.RandomCursorcursorc                 S  s
   || _ d S r   r   )r   r   r!   r!   r"   __init__  s   
z7insertmanyvalues_fixture.<locals>.RandomCursor.__init__c                 S  s   | j jS r   )r   descriptionr(   r!   r!   r"   r     s   z:insertmanyvalues_fixture.<locals>.RandomCursor.descriptionc                 S  s    | j  }t|}t| |S r   )r   fetchalllistrandomshuffle)r   r|   r!   r!   r"   r     s   

z7insertmanyvalues_fixture.<locals>.RandomCursor.fetchallN)r~   r   r   	__slots__r   r   r   r   r!   r!   r!   r"   RandomCursor  s    
r   c                 3  sD    r |}| |||||D ]}r|j rtd |V  qd S )Nz)Batches were downgraded for sorted INSERT)is_downgradedr   warn)rh   r   	statement
parametersgeneric_setinputsizescontextbatch)r   orig_dialectrandomize_rowswarn_on_downgradedr!   r"   !_deliver_insertmanyvalues_batches  s   

zCinsertmanyvalues_fixture.<locals>._deliver_insertmanyvalues_batchesc                   s@   t jj| d d | |W  d    S 1 sw   Y  d S )Nr   )new)r   patchobject)dialectr   )r   	orig_connr!   r"   _exec_insertmany_context  s   $z:insertmanyvalues_fixture.<locals>._exec_insertmany_context)r   r   r   )rh   r   r   r   r   r!   )r   r   r   r   r   r   r"   insertmanyvalues_fixture  s   
r   )FF) 
__future__r   r   r   r   rY   
sqlalchemyr6   baser   r   r   r   
assertionsr   r	   r   r
   r   r   r   r   sqlr   sql.elementsr   r   r   r   r   r   r   r!   r!   r!   r"   <module>   s4    Q	Pg