
    ؄_*                     @   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ej                  Z G d dej                  Z G 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                   v    e Zd ZdZed             Zed             Zd Zd Zd Z	e
j        d             Zd Zd	S )
RowFetchTestTc                     t          d|t          dt          d          t          dt          d                               t          d|t          dt          d          t          dt                               d S )	Nplain_pkidTprimary_keydata2   	has_datestoday)r
   r	   r   r   r   clsmetadatas     j/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/sqlalchemy/testing/suite/test_results.pydefine_tableszRowFetchTest.define_tables   s    4d33366"::&&		
 	
 	
 	4d3337H%%		
 	
 	
 	
 	
    c                    |                     | j        j                                        dddddddddg           |                     | j        j                                        dt          j        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    
connections     r"   insert_datazRowFetchTest.insert_data&   s    J&&(($''$''$''	
 	
 	
 	J '')) 1$2r1a H HIIJ	
 	
 	
 	
 	
r$   c                 F   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rows     r"   test_via_stringzRowFetchTest.test_via_string6   s    iK ''))224;3G3I3LMM
 

%'' 	 	CIqCKr$   c                 F   t           j                            | j        j                                                            | j        j        j        j                            	                                }t          |d         d           t          |d         d           d S )Nr   r&   r'   r4   r9   s     r"   test_via_intzRowFetchTest.test_via_int>   s    iK ''))224;3G3I3LMM
 

%'' 	 	CFACFDr$   c                    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   r5   r-   r.   r   r   r6   r7   r   r8   r   r   r9   s     r"   test_via_col_objectz RowFetchTest.test_via_col_objectF   s    iK ''))224;3G3I3LMM
 

%'' 	 	C$&)*A...C$&+,d33333r$   c                    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   r5   r-   r   r.   r   r7   r   labelr6   r   r8   r   keys)r:   resultr;   s      r"   test_row_with_dupe_namesz%RowFetchTest.test_row_with_dupe_namesN   s    ""K(*/K(*/55f== 
 ht{+-011
 
 llnnFKKMMFF+,,,Cr$   c                    | j         j        }t          |                    d          j        j        g                                          }t          |j        j        |                    d          g          }t          j
                            |                                          }t          |d         t          j        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   aliasr7   r   	as_scalarr   rB   r   r5   r-   r8   r   r0   )r:   	datetabless2r;   s        r"   test_row_w_scalar_selectz%RowFetchTest.test_row_w_scalar_select\   s     K)	IOOC((*0122<<>>Y[^QWW[%9%9:;;i##))++Ch/aRAFFGGGGGr$   N)__name__
__module____qualname____backend__classmethodr#   r2   r<   r>   r@   r   %duplicate_names_in_cursor_descriptionrE   rN    r$   r"   r   r      s        K
 
 [
 
 
 [
    4 4 4 7  87H H H H Hr$   r   c                   B    e Zd ZdZdZdZed             Zd Zd Z	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           	         t          d|t          dt                    t          dt                              | j        _        t          j        dt          j        d          t          j        d                    | j        _        d S )Nzpercent%tablepercent%spaces % more spaces)	r
   r	   r   r.   percent_tabler   tablecolumnlightweight_percent_tabler   s     r"   r#   z$PercentSchemaNamesTest.define_tablesy   ss    #(:w'')733	$
 $

  03yJz""J-..0
 0

,,,r$   c                     | j         j        }ddddddddddddfD ]4}t          j                            |                                |           5|                                  d S Nr+   r,   )rZ   r[         	   
   r.   r\   r   r5   r-   r/   _assert_table)r:   r\   paramss      r"   test_single_roundtripz,PercentSchemaNamesTest.test_single_roundtrip   s    1B77B77B77Q77	
 	> 	>F Im2244f====r$   c                 ,   | j         j        }t          j                            |                                ddd           t          j                            |                                dddddddddg           |                                  d S ra   rf   )r:   r\   s     r"   test_executemany_roundtripz1PercentSchemaNamesTest.test_executemany_roundtrip   s    1	  ""B$O$O	
 	
 	
 		  "";;;;;;	
 	
 	
 	r$   c                    | j         j        }| j         j        }||                                ||                                fD ]}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	           t          j                            |                                                    |j        d         d
i                     t	          t          t          j                            |	                                
                    |j        d                                       g d           d S )NrZ   ))r+   r,   )rb   rc   rd   re   rc   rd   r[   rd   re   rm   rn   r+   r,      ))r+   ro   )rb   ro   )rd   ro   )rc   ro   )r.   r\   r_   rI   r   listr   r5   r-   r   r6   r7   wherein_r8   updatevalues)r:   r\   r_   r]   r;   s        r"   rg   z$PercentSchemaNamesTest._assert_table   s   1$(K$I! !!%%++--	
 !	: !	:E I%%//
0CDD  
 544   I%%uw'=>BBAr7KKLL!%'*"566   '"	 	 	 )##''
(;<< egg  J###*+R000EGJ'(!,,,EG234b9999	  ""))!78"= 	
 	
 	
 		!!!((**33%
3    211		
 		
 		
 		
 		
r$   N)rO   rP   rQ   __doc____requires__rR   rS   r#   ri   rk   rg   rU   r$   r"   rW   rW   l   sp          -LK
 
 [
	 	 	  6
 6
 6
 6
 6
r$   rW   c                      e Zd ZdZdZd Zd Z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                              d          dfdd ed
g                              d          dfdd ed
g                                          dfddd e
d          dfdd e
d                              d          dfdd          d             Zd Zd Zd Zej        d             ZdS )ServerSideCursorsTest)server_side_cursorsTc                 P   | 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    r)t          d          j        j        }t          ||          S dS )Npsycopg2pymysqlzpymysql.cursorsmysqldbzMySQLdb.cursorsF)	enginedialectdriverboolname
__import__cursorsSSCursor
isinstance)r:   cursorsscursors      r"   _is_server_sidez%ServerSideCursorsTest._is_server_side   s    ;%33$$$[ '944!"344<EHfh///[ '944!"344<EHfh///5r$   c                 H    t          j        d|i          | _        | j        S )Nry   )options)r   testing_enginer~   )r:   ry   s     r"   _fixturezServerSideCursorsTest._fixture   s.    ,*,?@
 
 
 {r$   c                 t    t           j                                         | j                                         d S N)r   testing_reaper	close_allr~   dispose)r:   s    r"   tearDownzServerSideCursorsTest.tearDown   s1    ((***r$   )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                 ,   |                      |          }|                                5 }|                    |          }t          |                     |j                  |           |                                 d d d            d S # 1 swxY w Y   d S r   )r   beginr-   r   r   r   close)r:   engine_ss_arg	statementcursor_ss_statusr~   connrD   s          r"   test_ss_cursor_statusz+ServerSideCursorsTest.test_ss_cursor_status   s    @ }--\\^^ 	t\\),,F$$V]335EFFFLLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AB		BBc                     |                      d          }|                                                    d                              d          }|                     |j                  sJ d S )NFTr   r   )r   connectexecution_optionsr-   r   r   )r:   r~   rD   s      r"   test_conn_optionz&ServerSideCursorsTest.test_conn_option  si    u%% NNd33WZ   	
 ##FM2222222r$   c                 &   |                      d          }t          dg                              d          }|                                                    d                              |          }|                     |j                  rJ d S )NFr&   Tr   )r   r   r   r   r-   r   r   )r:   r~   rL   rD   s       r"   &test_stmt_enabled_conn_option_disabledz<ServerSideCursorsTest.test_stmt_enabled_conn_option_disabled)  s    u%%A3KK)))>> NN..e.DDLLQOO 	 ''6666666r$   c                    |                      d          }t          dg                              d                                          }|                                5 }|                    |          }|                     |j                  sJ |                                 d d d            n# 1 swxY w Y   t          dg|          }|                                5 }|                    |          }|                     |j                  rJ |                                 d d d            d S # 1 swxY w Y   d S )NFr&   Tr   )from_obj)	r   r   r   rI   r   r-   r   r   r   )r:   r~   s1r   rD   rM   s         r"   test_aliases_and_ssz)ServerSideCursorsTest.test_aliases_and_ss4  s   u%%QC[[**$*??EEGG\\^^ 	t\\"%%F''66666LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 QC"%%%\\^^ 	t\\"%%F++FM:::::LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s&    AB22B69B6#AD66D:=D:c                    | j         }|                     d           t          d|t          dt          d          t          dt          d                              }|                    d           |                                                    d	           |                                                    d
	           t          |
                                                    |j        j                                                                                  ddg           |                                                    |j        j        dk                                  |j        j        dz   	                                           t          |
                                                    |j        j                                                                                  ddg           |                                                                 t          t          t)          j        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   r6   r7   r   fetchallrs   rq   rt   r   deleter   countselect_fromscalar)r:   mdr   s      r"   test_roundtripz$ServerSideCursorsTest.test_roundtripD  s   ]d4d33366"::&&	
 

 	T***###111###111((99AACCLLNN<(	
 	
 	
 	!!*,/Q"677>>"Z/ 	? 	
 	

')))((99AACCLLNN/0	
 	
 	
 	##%%%FDJsOO$%%11*==DDFFJJJJJr$   N)rO   rP   rQ   rv   rR   r   r   r   r   combinationsr   r   r   with_for_updater   r   r   r   provide_metadatar   rU   r$   r"   rx   rx      s        ,LK
 
 
     W1	dd:..5	ffaSkk40	ttJ'7'7?FA3KK)))>>		
 #FA3KK)))??		
 
D&&!++"="="?"?F@	udd;//7D//t/DD		
 =7  : ; :	3 	3 	3	7 	7 	7    K K K K Kr$   rx   )r0    r   r   r   
assertionsr   r   schemar	   r
   r   r   r   r   r   r   r   r   
TablesTestr   rW   TestBaseAssertsExecutionResultsrx   rU   r$   r"   <module>r      s                            ! ! ! ! ! !                                                            UH UH UH UH UH8& UH UH UHpk
 k
 k
 k
 k
X0 k
 k
 k
\DK DK DK DK DKw6DK DK DK DK DKr$   