o
    i*                     @   s   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 d
dlmZ d
dlmZ G dd dejZG dd dejZG dd dejejZdS )    N   )config)engines)fixtures)eq_)requirements)Column)Table   )DateTime)func)Integer)select)sql)String)testing)textc                   @   sV   e Zd ZdZedd Zedd Zdd Zdd	 Zd
d Z	e
jdd Zdd ZdS )RowFetchTestTc                 C   sD   t d|tdtddtdtd t d|tdtddtdt d S )	Nplain_pkidTprimary_keydata2   	has_datestoday)r	   r   r   r   r   clsmetadata r   `/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/sqlalchemy/testing/suite/test_results.pydefine_tables   s   zRowFetchTest.define_tablesc                 C   s\   | | jj dddddddddg | | jj dtdd	d
d
dddg d S )N   d1)r   r   r   d2r
   d3        r   )r   r   )executetablesr   insertr   datetime)r   
connectionr   r   r    insert_data&   s   
	
zRowFetchTest.insert_datac                 C   sF   t j| jj | jjjj	 }t
|d d t
|d d d S )Nr   r"   r   r#   r   dbr)   r*   r   r   order_bycr   firstr   selfrowr   r   r    test_via_string6      zRowFetchTest.test_via_stringc                 C   sF   t j| jj | jjjj	 }t
|d d t
|d d d S )Nr   r"   r#   r/   r4   r   r   r    test_via_int>   r8   zRowFetchTest.test_via_intc                 C   sV   t j| jj | jjjj	 }t
|| jjjj d t
|| jjjj d d S )Nr"   r#   )r   r0   r)   r*   r   r   r1   r2   r   r3   r   r   r4   r   r   r    test_via_col_objectF   s   z RowFetchTest.test_via_col_objectc                 C   s`   t jt| jjjj| jjjjdg	| jjjj
}| }t| ddg t|d d S )Nr   )r#   r#   )r   r0   r)   r   r*   r   r2   r   labelr1   r   r3   r   keys)r5   resultr6   r   r   r    test_row_with_dupe_namesN   s   
z%RowFetchTest.test_row_with_dupe_namesc              
   C   sh   | j j}t|djjg }t|jj|dg}t	j
| }t|d tdddddd dS )ztest that a scalar select as a column is returned as such
        and that type conversion works OK.

        (this is half a SQLAlchemy Core test and half to catch database
        backends that may have unusual behavior with scalar selects.)

        x	somelabelr&   r'   r(   r   N)r*   r   r   aliasr2   r   	as_scalarr   r;   r   r0   r)   r3   r   r,   )r5   	datetabless2r6   r   r   r    test_row_w_scalar_select\   s
   "z%RowFetchTest.test_row_w_scalar_selectN)__name__
__module____qualname____backend__classmethodr!   r.   r7   r9   r:   r   %duplicate_names_in_cursor_descriptionr>   rF   r   r   r   r    r      s    


r   c                   @   s<   e Zd ZdZdZdZedd Zdd Zdd	 Z	d
d Z
dS )PercentSchemaNamesTestztests using percent signs, spaces in table and column names.

    This is a very fringe use case, doesn't work for MySQL
    or PostgreSQL.  the requirement, "percent_schema_names",
    is marked "skip" by default.

    )percent_schema_namesTc                 C   s@   t d|tdttdt| j_tdtdtd| j_d S )Nzpercent%tablepercent%spaces % more spaces)	r	   r   r   r*   percent_tabler   tablecolumnlightweight_percent_tabler   r   r   r    r!   y   s   z$PercentSchemaNamesTest.define_tablesc                 C   sP   | j j}ddddddddddddfD ]}tj| | q|   d S Nr'   r(   )rO   rP         	   
   r*   rQ   r   r0   r)   r+   _assert_table)r5   rQ   paramsr   r   r    test_single_roundtrip   s   z,PercentSchemaNamesTest.test_single_roundtripc                 C   sV   | j j}tj| ddd tj| dddddddddg |   d S rU   rZ   )r5   rQ   r   r   r    test_executemany_roundtrip   s   z1PercentSchemaNamesTest.test_executemany_roundtripc                 C   sF  | j j}| j j}|| || fD ]i}tttj|	 
|jd g d tttj|	 |jd ddg
|jd ddg tj|	 
|jd  }t|d d t|d d	 t||jd  d t||jd  d	 qtj| |jd d
i tttj|	 
|jd g d d S )NrO   ))r'   r(   )rV   rW   rX   rY   rW   rX   rP   rX   rY   r_   r`   r'   r(      ))r'   ra   )rV   ra   )rX   ra   )rW   ra   )r*   rQ   rT   rA   r   listr   r0   r)   r   r1   r2   wherein_r3   updatevalues)r5   rQ   rT   rR   r6   r   r   r    r[      sb   	z$PercentSchemaNamesTest._assert_tableN)rG   rH   rI   __doc____requires__rJ   rK   r!   r]   r^   r[   r   r   r   r    rM   l   s    
rM   c                   @   s   e Zd ZdZdZdd Zdd Zdd Zej	d	d
de
ddfddedgdfdde
ddfddedgjdddfddedgjdddfddedg dfddde
ddfdde
djdddfddddd Zdd Zdd  Zd!d" Zejd#d$ Zd%S )&ServerSideCursorsTest)server_side_cursorsTc                 C   sd   | j jjdkrt|jS | j jjdkrtdjj}t||S | j jjdkr0tdjj}t||S dS )Npsycopg2pymysqlzpymysql.cursorsmysqldbzMySQLdb.cursorsF)	enginedialectdriverboolname
__import__cursorsSSCursor
isinstance)r5   cursorsscursorr   r   r    _is_server_side   s   


z%ServerSideCursorsTest._is_server_sidec                 C   s   t jd|id| _| jS )Nrj   )options)r   testing_enginern   )r5   rj   r   r   r    _fixture   s   zServerSideCursorsTest._fixturec                 C   s   t j  | j  d S N)r   testing_reaper	close_allrn   dispose)r5   r   r   r    tearDown   s   
zServerSideCursorsTest.tearDown)global_stringTselect 1Tglobal_textr   global_exprr"   global_off_explicitFstmt_optionstream_resultsstmt_option_disabledfor_update_expr)for_update_stringTzSELECT 1 FOR UPDATET
text_no_ssz	select 42text_ss_optioniaaaz*engine_ss_arg, statement, cursor_ss_status)id_argnamesc                 C   s\   |  |}| }||}t| |j| |  W d    d S 1 s'w   Y  d S r}   )r|   beginr)   r   ry   rw   close)r5   engine_ss_arg	statementcursor_ss_statusrn   connr=   r   r   r    test_ss_cursor_status   s   
 


"z+ServerSideCursorsTest.test_ss_cursor_statusc                 C   s4   |  d}| jddd}| |jsJ d S )NFTr   r   )r|   connectexecution_optionsr)   ry   rw   )r5   rn   r=   r   r   r    test_conn_option  s   
z&ServerSideCursorsTest.test_conn_optionc                 C   sF   |  d}tdgjdd}| jdd|}| |jr!J d S )NFr"   Tr   )r|   r   r   r   r)   ry   rw   )r5   rn   rD   r=   r   r   r    &test_stmt_enabled_conn_option_disabled)  s
   
z<ServerSideCursorsTest.test_stmt_enabled_conn_option_disabledc                 C   s   |  d}tdgjdd }| }||}| |js"J |  W d    n1 s0w   Y  tdg|d}| }||}| |jrNJ |  W d    d S 1 s]w   Y  d S )NFr"   Tr   )from_obj)	r|   r   r   rA   r   r)   ry   rw   r   )r5   rn   s1r   r=   rE   r   r   r    test_aliases_and_ss4  s   






"z)ServerSideCursorsTest.test_aliases_and_ssc                 C   s   | j }| d td|tdtddtdtd}|jdd | jdd	 | jd
d	 t	|
 |jj  ddg | |jjdkj|jjd d	  t	|
 |jj  ddg |   t	t
tdg| d d S )NT
test_tabler   r   r   r   )
checkfirstdata1)r   data2)r"   r   )r   r   r   z updated)r   zdata2 updated*r   )r   r|   r	   r   r   r   creater+   r)   r   r   r1   r2   r   fetchallre   rc   rf   r   deleter   countselect_fromscalar)r5   mdr   r   r   r    test_roundtripD  s2   

$z$ServerSideCursorsTest.test_roundtripN)rG   rH   rI   rh   rJ   ry   r|   r   r   combinationsr   r   r   with_for_updater   r   r   r   provide_metadatar   r   r   r   r    ri      sL    
	ri   )r,    r   r   r   
assertionsr   r   schemar   r	   r   r   r   r   r   r   r   r   
TablesTestr   rM   TestBaseAssertsExecutionResultsri   r   r   r   r    <module>   s*    X
n