
    ؄_5                     R   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                  Z G d dej                  ZdS )   )assert_raises)config)eq_)fixtures)ne_)provide_metadata)requirements)Column)Table   )exc)Integer)literal_column)select)String)compatc                   V    e Zd ZdZdZdZed             Zej	        d             Z
d ZdS )ExceptionTestzTest basic exception wrapping.

    DBAPIs vary a lot in exception behavior so to actually anticipate
    specific exceptions from real round trips, we need to be conservative.

    eachTc                     t          d|t          dt          dd          t          dt          d                               d S )N	manual_pkidTFprimary_keyautoincrementdata2   r   r
   r   r   clsmetadatas     j/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/sqlalchemy/testing/suite/test_dialect.pydefine_tableszExceptionTest.define_tables    sK    4d%HHH66"::&&		
 	
 	
 	
 	
    c           	         t           j                                        5 }|                                }|                    | j        j                                        ddd           t          t          j
        |j        | j        j                                        ddd           |                                 d d d            d S # 1 swxY w Y   d S )N   d1r   r   )r   dbconnectbeginexecutetablesr   insertr   r   IntegrityErrorrollback)selfconntranss      r"   test_integrity_errorz"ExceptionTest.test_integrity_error)   s
    Y   	DJJLLELL%,,..q$0G0G   "%,,..$''	   NN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   BC

CCc                    t           j                                        5 }	 |                    t	          t          d          g                     J # t          j        $ r>}t          |          }t          |j	                  t          |          v sJ Y d }~nd }~ww xY wt          j        rt          |t                    sJ nt          |t                    sJ d d d            d S # 1 swxY w Y   d S )Nu   méil)r   r)   r*   r,   r   r   r   
DBAPIErrorstrorigr   py2k
isinstance)r1   r2   errerr_strs       r"   test_exception_with_non_asciiz+ExceptionTest.test_exception_with_non_ascii<   s=   Y   	0D1 V^H%=%=$>??@@@> 1 1 1c((38}}C0000000001 { 0!'3//////!'3/////'	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s4   C+2AB "4BC+B  >C++C/2C/N)__name__
__module____qualname____doc__run_deletes__backend__classmethodr#   r	   $duplicate_key_raises_integrity_errorr4   r=    r$   r"   r   r      sq          KK
 
 [
 6  76$0 0 0 0 0r$   r   c                   (    e Zd ZdZdZd Zd Zd ZdS )IsolationLevelTestTisolation_levelc                     t          j        t                    }|d         }|d         }t          |                              d|g          }|r|                                S t          j        d           d S )Ndefault	supported
AUTOCOMMITz(no non-default isolation level available)r	   get_isolation_levelsr   set
differencepop	skip_test)r1   levelsrL   rM   ss        r"    _get_non_default_isolation_levelz3IsolationLevelTest._get_non_default_isolation_levelX   sr    26::#;'		NN%%|W&=>> 	I5577NGHHHHHr$   c                     t          t          j        j        j        t          j        t                    d                    d S )NrL   )r   r   r)   dialectdefault_isolation_levelr	   rO   )r1   s    r"   test_default_isolation_levelz/IsolationLevelTest.test_default_isolation_leveld   s<    I5-f55i@	
 	
 	
 	
 	
r$   c                    |                                  }t          j                                        5 }|                                }t          ||           |                    |           t          |                                |           |j        	                    |j
                   t          |                                |           d d d            d S # 1 swxY w Y   d S )NrI   )rV   r   r)   r*   get_isolation_levelr   execution_optionsr   rX   reset_isolation_level
connection)r1   non_defaultr2   existings       r"    test_non_default_isolation_levelz3IsolationLevelTest.test_non_default_isolation_levelj   s   ;;==Y   	6D//11H+&&&"";"???((**K888L..t???((**H555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   BCC"%C"N)r>   r?   r@   rC   __requires__rV   rZ   rb   rF   r$   r"   rH   rH   S   sN        K'L
I 
I 
I
 
 
6 6 6 6 6r$   rH   c                   H    e Zd ZdZdZdZed             Zd Zd Z	d Z
d Zd	S )
AutocommitTestr   )
autocommitTc                     t          d|t          dt          dd          t          dt          d                    d           d S )	N
some_tabler   TFr   r   r   )test_needs_acidr   r   s     r"   r#   zAutocommitTest.define_tables   sS    4d%HHH66"::&& 	
 	
 	
 	
 	
 	
r$   c                    |                                 }|                    | j        j                                        ddd           |                                 t          |                    t          | j        j        j	        j
        g                    |rdnd            |                    | j        j                                                   d S )Nr&   z	some datar(   )r+   r,   r-   rh   r.   r0   r   scalarr   cr   delete)r1   r2   rf   r3   s       r"   _test_conn_autocommitsz%AutocommitTest._test_conn_autocommits   s    

K"))++A{-K-K	
 	
 	
 	KK 6 8 ;<==>>%AA	
 	
 	

 	T[+224455555r$   c                    t           j                                        }|                    d          }|                     |d           |j                            |j                   |                     |d           d S )NrN   rI   TF)r   r)   r*   r]   rn   rX   r^   r_   )r1   r2   c2s      r"   test_autocommit_onz!AutocommitTest.test_autocommit_on   su    y  ""##L#AA##B---

((777##D%00000r$   c                 n    t           j                                        }|                     |d           d S )NF)r   r)   r*   rn   r1   r2   s     r"   test_autocommit_offz"AutocommitTest.test_autocommit_off   s1    y  ""##D%00000r$   c                 ,   t           j                                        }|                    d           |                     |d           |                    t          j        t                     d                    |                     |d           d S )NrN   rI   TrL   F)r   r)   r*   r]   rn   r	   rO   rs   s     r"   .test_turn_autocommit_off_via_default_iso_levelz=AutocommitTest.test_turn_autocommit_off_via_default_iso_level   s    y  ""|<<<##D$///(=fEE 	 	
 	
 	

 	##D%00000r$   N)r>   r?   r@   rB   rc   rC   rD   r#   rn   rq   rt   rv   rF   r$   r"   re   re   {   sx        K"LK
 
 [
6 6 61 1 11 1 1
1 
1 
1 
1 
1r$   re   c                   $    e Zd Zed             ZdS )EscapingTestc                    | j         }t          d|t          dt          d                              }|                    t
          j                   t
          j                                        5 }|                    |	                                t          d                     |                    |	                                t          d                     t          |                    t          |j        j        g                              |j        j        t#          d          k                        d           t          |                    t          |j        j        g                              |j        j        t#          d          k                        d           d	d	d	           d	S # 1 swxY w Y   d	S )
z|test that the DBAPI accommodates for escaped / nonescaped
        percent signs in a way that matches the compiler

        tr   r   zsome % value)r   zsome %% other valuez'some % value'z'some %% other value'N)r!   r   r
   r   creater   r)   r+   r,   r.   dictr   rk   r   rl   r   wherer   )r1   mrz   r2   s       r"   test_percent_sign_round_tripz)EscapingTest.test_percent_sign_round_trip   s    M#q&4455	Y__ 	$LLT~%>%>%>???LLT/D%E%E%EFFFACH:&&,,N3C$D$DD  
    ACH:&&,,N3J$K$KK  
 &  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1D?F==GGN)r>   r?   r@   r   r   rF   r$   r"   rx   rx      s.            r$   rx   N) r   r   r   r   r   r   r	   schemar
   r   r   r   r   r   r   utilr   
TablesTestr   TestBaserH   re   rx   rF   r$   r"   <module>r      s                                       ! ! ! ! ! !                                                <0 <0 <0 <0 <0H' <0 <0 <0~%6 %6 %6 %6 %6* %6 %6 %6P71 71 71 71 71X( 71 71 71t    8$     r$   