
    +hg2                        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 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j0                        Z G d dej4                        Z G d dej0                        Z G d dej4                        Z G d d ej4                        Z G d! d"ej>                  e      Z  G d# d$ej4                        Z!y%)&   )testing   )assert_raises)config)engines)eq_)fixtures)ne_)provide_metadata)requirements) set_default_schema_on_connection)Column)Table   )	bindparam)event)exc)Integer)literal_column)select)String)compatc                   R    e Zd ZdZdZdZed        Zej                  d        Z
d Zy)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                 h    t        d|t        dt        dd      t        dt        d                   y )N	manual_pkidTFprimary_keyautoincrementdata2   r   r   r   r   clsmetadatas     X/var/www/html/venv/lib/python3.12/site-packages/sqlalchemy/testing/suite/test_dialect.pydefine_tableszExceptionTest.define_tables%   s,    4d%H66":&		
    c           	         t         j                  j                         5 }|j                         }|j	                  | j
                  j                  j                         ddd       t        t        j                  |j                  | j
                  j                  j                         ddd       |j                          d d d        y # 1 sw Y   y xY w)Nr   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     YY  	DJJLELL%%,,.q$0G ""%%,,.$'	 NN	 	 	s   B#CCc                    t         j                  j                         5 }	 |j                  t	        t        d                   J # t        j                  $ r7}t        |      }t        |j                        t        |      v sJ Y d }~nd }~ww xY wt        j                  rt        |t              sJ t        |t              sJ d d d        y # 1 sw Y   y xY w)Nu   méil)r   r.   r/   r1   r   r   r   
DBAPIErrorstrorigr   py2k
isinstance)r6   r7   errerr_strs       r(   test_exception_with_non_asciiz+ExceptionTest.test_exception_with_non_asciiA   s    YY  	0D1 VN8$<=>u>> 1c(388}C0001 {{!'3///!'3///'	0 	0 	0s.   C%AB-BCB7CCN)__name__
__module____qualname____doc__run_deletes__backend__classmethodr)   r   $duplicate_key_raises_integrity_errorr9   rB    r*   r(   r   r      sD     KK
 
 66 7$0r*   r   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)IsolationLevelTestTisolation_levelc                     t        j                  t              }|d   }|d   }t        |      j	                  d|g      }|r|j                         S t        j                  d       y )Ndefault	supported
AUTOCOMMITz(no non-default isolation level available)r   get_isolation_levelsr   set
differencepop	skip_test)r6   levelsrQ   rR   ss        r(    _get_non_default_isolation_levelz3IsolationLevelTest._get_non_default_isolation_level]   s\    226:#;'		N%%|W&=>557NGHr*   c                     t        t        j                  j                  j                  t        j                  t              d          y )NrQ   )r   r   r.   dialectdefault_isolation_levelr   rT   )r6   s    r(   test_default_isolation_levelz/IsolationLevelTest.test_default_isolation_leveli   s0    II55--f5i@	
r*   c                    | j                         }t        j                  j                         5 }|j	                         }t        ||       |j                  |       t        |j	                         |       |j                  j                  |j                         t        |j	                         |       d d d        y # 1 sw Y   y xY w)NrN   )r[   r   r.   r/   get_isolation_levelr
   execution_optionsr   r]   reset_isolation_level
connection)r6   non_defaultr7   existings       r(    test_non_default_isolation_levelz3IsolationLevelTest.test_non_default_isolation_levelo   s    ;;=YY  	6D//1H+&"";"?((*K8LL..t?((*H5	6 	6 	6s   BC  C	c                 R   t        j                  t              }|d   }t        |      j	                  dg      D ]  }t        j
                  j                         5 }|j                  |       t        |j                         |       |j                         }|j                          t        |j                         |       d d d        t        j
                  j                         5 }t        |j                         |d          d d d         y # 1 sw Y   PxY w# 1 sw Y   xY w)NrR   rS   rN   rQ   )r   rT   r   rU   rV   r.   r/   rb   r   ra   r0   r5   )r6   rY   
all_levelslevelr7   r8   s         r(   test_all_levelsz"IsolationLevelTest.test_all_levels   s    226:K(
_//? 	E""$ 7&&u&=D,,.6

 D,,.67 ""$ ,,.9% 	7 7 s   A'D(DD	D&	N)	rC   rD   rE   rH   __requires__r[   r_   rg   rk   rK   r*   r(   rM   rM   X   s!    K'L
I
6 r*   rM   c                   @    e Zd ZdZdZdZed        Zd Zd Z	d Z
d Zy	)
AutocommitIsolationTestr   )
autocommitTc                 l    t        d|t        dt        dd      t        dt        d            d       y )	N
some_tabler   TFr   r"   r#   )test_needs_acidr$   r%   s     r(   r)   z%AutocommitIsolationTest.define_tables   s/    4d%H66":& 	
r*   c                    |j                         }|j                  | j                  j                  j	                         ddd       |j                          t        |j                  t        | j                  j                  j                  j                              |rdnd        |j                         5  |j                  | j                  j                  j                                d d d        y # 1 sw Y   y xY w)Nr   z	some datar-   )r0   r1   r2   rq   r3   r5   r   scalarr   cr   delete)r6   r7   ro   r8   s       r(   _test_conn_autocommitsz.AutocommitIsolationTest._test_conn_autocommits   s    

KK""))+A{-K	
 	KKt{{5577::;<A	

 ZZ\ 	:LL//6689	: 	: 	:s   84C55C>c                     |}|j                  d      }| j                  |d       |j                  j                  |j                         | j                  |d       y )NrS   rN   TF)rb   rw   r]   rc   rd   )r6   connection_no_transr7   c2s       r(   test_autocommit_onz*AutocommitIsolationTest.test_autocommit_on   sP    "##L#A##B-


((7##D%0r*   c                 ,    |}| j                  |d       y )NF)rw   r6   ry   r7   s      r(   test_autocommit_offz+AutocommitIsolationTest.test_autocommit_off   s    "##D%0r*   c                     |}|j                  d      }| j                  |d       |j                  t        j                  t              d          | j                  |d       y )NrS   rN   TrQ   F)rb   rw   r   rT   r   r}   s      r(   .test_turn_autocommit_off_via_default_iso_levelzFAutocommitIsolationTest.test_turn_autocommit_off_via_default_iso_level   sg     #%%l%C##D$/(==fE 	 	

 	##D%0r*   N)rC   rD   rE   rG   rl   rH   rI   r)   rw   r{   r~   r   rK   r*   r(   rn   rn      s7    K"LK
 
:111r*   rn   c                       e Zd Zed        Zy)EscapingTestc                 D   | j                   }t        d|t        dt        d                  }|j	                  t
        j                         t
        j                  j                         5 }|j                  |j                         t        d             |j                  |j                         t        d             t        |j                  t        |j                  j                        j!                  |j                  j                  t#        d      k(              d       t        |j                  t        |j                  j                        j!                  |j                  j                  t#        d      k(              d       d	d	d	       y	# 1 sw Y   y	xY w)
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.   r0   r1   r3   dictr   rt   r   ru   r"   wherer   )r6   mr   r7   s       r(   test_percent_sign_round_tripz)EscapingTest.test_percent_sign_round_trip   s$    MM#q&45	YY__ 	$LLT~%>?LLT/D%EF13388$**N3C$DD
  13388$**N3J$KK
 &	 	 	s   *D#FFN)rC   rD   rE   r   r   rK   r*   r(   r   r      s     r*   r   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy) WeCanSetDefaultSchemaWEventsTestT)default_schema_name_switchc                     t         j                  j                  j                  }t	        j
                         }|j                         5  	 d d d        t        |j                  j                  |       y # 1 sw Y   *xY wN)r   r.   r]   default_schema_namer   testing_enginer/   r   )r6   r   engs      r(   test_control_casez2WeCanSetDefaultSchemaWEventsTest.test_control_case   s^    $ii//CC$$&[[] 		 	CKK++-@A	 	s   	A44A=c                    t         j                  j                  j                  }t	        j
                         }t        j                  |d      d        }|j                         5 }|j                  j                  |      }t        |t         j                         d d d        t        |j                  j                  |       y # 1 sw Y   *xY w)Nr/   c                 B    t        t        | t        j                         y r   r   r   test_schemadbapi_connectionconnection_records     r(   
on_connectzMWeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insert.<locals>.on_connect      ,(&*<*<r*   )r   r.   r]   r   r   r   r   listens_forr/   _get_default_schema_namer   r   )r6   r   r   r   r7   what_it_should_bes         r(   test_wont_work_wo_insertz9WeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insert  s    $ii//CC$$&			3		*	 
+	
 [[] 	7d # D DT J!6#5#56	7 	CKK++-@A		7 	7s   %6CCc                 x   t        j                         }t        j                  |dd      d        }|j	                         5 }|j
                  j                  |      }t        |t        j                         d d d        t        |j
                  j                  t        j                         y # 1 sw Y   8xY w)Nr/   Tr3   c                 B    t        t        | t        j                         y r   r   r   s     r(   r   zRWeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect.<locals>.on_connect  r   r*   )r   r   r   r   r/   r]   r   r   r   r   r   )r6   r   r   r7   r   s        r(   test_schema_change_on_connectz>WeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect  s    $$&			3	$	7	 
8	
 [[] 	7d # D DT J!6#5#56	7 	CKK++V-?-?@		7 	7s   6B00B9c                 "   t        j                         }t        j                  |dd      d        }|j	                         5 }|j                         }|j                  j                  |      }t        |t        j                         |j                          |j                  j                  |      }t        |t        j                         d d d        t        |j                  j                  t        j                         y # 1 sw Y   8xY w)Nr/   Tr   c                 B    t        t        | t        j                         y r   r   )r   args     r(   r   z\WeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions.<locals>.on_connect%  r   r*   )r   r   r   r   r/   r0   r]   r   r   r   r   r5   r   )r6   r   r   r7   r8   r   s         r(   'test_schema_change_works_w_transactionszHWeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions"  s    $$&			3	$	7	 
8	
 [[] 	7dJJLE # D DT J!6#5#56NN # D DT J!6#5#56	7 	CKK++V-?-?@	7 	7s   BDDN)	rC   rD   rE   rH   rl   r   r   r   r   rK   r*   r(   r   r      s$    K2LBB"AAr*   r   c                       e Zd Zy)&FutureWeCanSetDefaultSchemaWEventsTestN)rC   rD   rE   rK   r*   r(   r   r   7  s     	r*   r   c                       e Zd ZdZ ej
                  dddddddd	d
ddddddddddddd      Zeej                  j                  d               Z
ej                  d        Zed        Zed        Zy)DifficultParametersTestT)boring)zper cent)z
per % cent)z%percent)zpar(ens))zpercent%(ens)yah)zcol:ons)_starts_with_underscore)zdot.s)zmore :: %colons%)_name)___name)z[BracketsAndCase])	42numbers)zpercent%signs)z
has spaces)z	/slashes/)zmore/slashes)zq?marks)1param)z1col:on	paramname)argnamesc                 V   |}t        d|t        dt        d      t        |t        d      d            }|j	                  |       |j                  |j                         j                  dd|d	i             t        |j                  |         j                  |j                  |   d	k(        }t        |j                  |      d	       t        |j                  |         j                  |j                  |   t        |      k(        }|j                  ||d	i      j                         }t        |j                  |   d	       t        |j                  |         j                  |j                  |   j!                  d	d
g            }|j                  |      j                         }y )Nr   r   T)r    r#   F)nullabler   z	some namezsome other_name)r   r   r   r   r   r1   r3   valuesr   ru   r   r   rt   r   first_mappingin_)r6   r   rd   r'   namer   stmtrows           r(   !test_round_trip_same_named_columnz9DifficultParametersTest.test_round_trip_same_named_columnY  sg   
 4d34e4	
 	
 	188:,,dAt[-IJK acc$i &&qss4yK'?@Jd#[1 acc$i &&qss4yIdO'CD  k':;AAC 	CLL, acc$i &&CCIMM;(9:;
   &,,.r*   c              #   $  K   t        d|t        dt              t        dt        d            t        dt        d                  }|j	                  |       |j                  |j                         dddd	d
ddd	dddd	dddd	g       | y w)Nmytablemyidr   r#   descr   aa_desc)r   r   r   r   bb_descr   ru   c_desc   dd_desc)r   r   r   r   r   r1   r3   )r6   r'   rd   r   s       r(   multirow_fixturez(DifficultParametersTest.multirow_fixture  s     67#66":&66":&
 	z"NNC:C:C:C:		
 s   BBc                     |}t        |j                  j                        j                  |j                  j                  t        |d      k(        }|j                  ||di      }t        |d       y )Nxvalueru   r   )r   ru   r   r   r   r   rt   r   r6   r   rd   r   tbl1r   ress          r(    test_standalone_bindparam_escapez8DifficultParametersTest.test_standalone_bindparam_escape  s_      dffkk"((FFKK9Yc::
 y#&67Cr*   c           	      n   |}t        |j                  j                        j                  |j                  j                  j                  t        |ddg                  j                  |j                  j                        }|j                  ||ddgi      j                         }t        |ddg       y )Nr   r   r   r   r   r   )r   ru   r   r   r   r   r   order_byscalarsallr   r   s          r(   *test_standalone_bindparam_escape_expandingzBDifficultParametersTest.test_standalone_bindparam_escape_expanding  s      466;;U466;;??9YsCj#IJKXdffkk" 	   	C:'>?CCEC!Qr*   N)rC   rD   rE   rH   r   combinationstough_parametersr   r   unusual_column_name_charactersr   fixturer   r   r   rK   r*   r(   r   r   =  s    K+w++$-2 77$/ 8 $/L __ ,    r*   r   N)" r   r   r   r   r   r	   r
   r   r   	provisionr   schemar   r   r   r   r   r   r   r   r   utilr   
TablesTestr   TestBaserM   rn   r   r   FutureEngineMixinr   r   rK   r*   r(   <module>r      s            ! 8          <0H'' <0~;** ;|:1h11 :1z8$$ B@Ax'8'8 @AF	 @	rh// rr*   