
    dafN                        d dl Z d dlZd dlmZ d dlmZ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 G d de j                        Z G d de j                        Z G d de j                        Zedk(  r e j*                          yy)    N)contextmanager)TESTFNunlinkassert_python_ok)memory_databasec                   T    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d Zy)TransactionTestsc                     t        j                  t        d      | _        | j                  j	                         | _        t        j                  t        d      | _        | j                  j	                         | _        y )Nr   )timeout)sqliteconnectr   con1cursorcur1con2cur2selfs    >/root/Python-3.12.4/Lib/test/test_sqlite3/test_transactions.pysetUpzTransactionTests.setUp"   sP     NN615	II$$&	NN615	II$$&	    c                    	 | j                   j                          | j                  j                          | j                  j                          | j                  j                          t        t               y # t        t               w xY wN)r   closer   r   r   r   r   r   s    r   tearDownzTransactionTests.tearDown+   sP    	IIOOIIOOIIOOIIOO 6NF6Ns   A(A: :Bc                 F   | j                   j                  d       | j                   j                  d       | j                   j                  d       | j                  j                  d       | j                  j                         }| j	                  t        |      d       y )Ncreate table test(i)insert into test(i) values (5)zcreate table test2(j)select i from testr   r   executer   fetchallassertEquallenr   ress     r   $test_dml_does_not_auto_commit_beforez5TransactionTests.test_dml_does_not_auto_commit_before6   st    		01		:;		12		./ii  "S1%r   c                    | j                   j                  d       | j                   j                  d       | j                  j                  d       | j                  j                         }| j	                  t        |      d       y )Nr   r   r    r   r!   r&   s     r   test_insert_starts_transactionz/TransactionTests.test_insert_starts_transaction>   sa    		01		:;		./ii  "S1%r   c                 n   | j                   j                  d       | j                   j                  d       | j                  j                          | j                   j                  d       | j                  j                  d       | j                  j                         d   }| j                  |d       y )Nr   r   zupdate test set i=6r    r      )r   r"   r   commitr   fetchoner$   r&   s     r   test_update_starts_transactionz/TransactionTests.test_update_starts_transactionE   s    		01		:;				/0		./ii  "1%a r   c                 z   | j                   j                  d       | j                   j                  d       | j                  j                          | j                   j                  d       | j                  j                  d       | j                  j                         }| j                  t        |      d       y )Nr   r   zdelete from testr       r   r"   r   r-   r   r#   r$   r%   r&   s     r   test_delete_starts_transactionz/TransactionTests.test_delete_starts_transactionN   s    		01		:;				,-		./ii  "S1%r   c                    | j                   j                  d       | j                   j                  d       | j                  j                          | j                   j                  d       | j                  j                  d       | j                  j                         }| j                  t        |      d       | j                  |d   d   d       y )Nr   r   zreplace into test(i) values (6)r    r1   r   r,   r2   r&   s     r   test_replace_starts_transactionz0TransactionTests.test_replace_starts_transactionW   s    		01		:;				;<		./ii  "S1%QA&r   c                    | j                   j                  d       | j                   j                  d       d | j                  _        | j	                  | j                  j                  d        | j
                  j                  d       | j
                  j                         }| j	                  t        |      d       d| j                  _        | j	                  | j                  j                  d       | j                   j                  d       | j
                  j                  d       | j
                  j                         }| j	                  t        |      d       y )Nr   r   r    r1   DEFERRED)r   r"   r   isolation_levelr$   r   r#   r%   r&   s     r   test_toggle_auto_commitz(TransactionTests.test_toggle_auto_commita   s    		01		:;$(		!22D9		./ii  "S1%$.		!22Z@		:;		./ii  "S1%r   c                    | j                   j                  d       | j                   j                  d       | j                  t        j                        5  | j
                  j                  d       d d d        y # 1 sw Y   y xY wNr   r   )r   r"   assertRaisesr   OperationalErrorr   r   s    r   test_raise_timeoutz#TransactionTests.test_raise_timeoutq   sh    		01		:;v667 	@II>?	@ 	@ 	@s   A;;Bc                 B   | j                   j                  d       | j                   j                  d       | j                  t        j                        5  | j
                  j                  d       d d d        | j                  j                          y # 1 sw Y   $xY wr;   )r   r"   r<   r   r=   r   r   r-   r   s    r   test_lockingzTransactionTests.test_lockingw   s|     			01		:;v667 	@II>?	@ 				@ 	@s   BBc                    t        j                  d      }|j                         }|j                  d       |j                  d       |j                  d       |j	                          | j                  |j                         g d       y)z3Check that cursors behave correctly after rollback.:memory:zcreate table test(x)zinsert into test(x) values (5)z&select 1 union select 2 union select 3)r1      )   N)r   r   r   r"   rollbackr$   r#   )r   concurs      r    test_rollback_cursor_consistencyz1TransactionTests.test_rollback_cursor_consistency   sb    nnZ(jjl*+45<=);<r   c                 p   i fd}| j                   j                  d        || j                   dddd       | j                   j                           || j                  d      j	                         d   }| j                  |d	        || j                  d
      j                  }| j                  |d	       | j                  j                           || j                   dd        || j                   dd        || j                  d      j	                         d   }| j                  |d        || j                   d      j	                         d   }| j                  |d       | j                   j                           || j                  d      j	                         d   }| j                  |d       y )Nc                 h    | j                         }|j                  ||       |t        |      <   |S r   )r   r"   id)cxsqlargscuCURSORSs       r   rO   z@TransactionTests.test_multiple_cursors_and_iternext.<locals>.sql   s/    BJJsD!!GBsGIr   create table t(t)z"insert into t values (?), (?), (?)u1u2u3zselect count(*) from tr   rF   zdelete from tzinsert into t values (?)u4u5rE   )r   r"   r-   r   r.   r$   rowcount)r   rO   countchangesrR   s       @r   "test_multiple_cursors_and_iternextz3TransactionTests.test_multiple_cursors_and_iternext   sw    	 			-.DII;T4N		 DII78AACAF"dii1::!$		 	DII148DII148 DII78AACAF" DII78AACAF" 			DII78AACAF"r   N)__name__
__module____qualname__r   r   r(   r*   r/   r3   r5   r9   r>   r@   rJ   r\    r   r   r
   r
   !   s?    '	&&!&'& @	=%#r   r
   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	RollbackTestszEbpo-44092: sqlite3 now leaves it to SQLite to resolve rollback issuesc                 L   t        j                  d      | _        | j                  j                         | _        | j                  j                         | _        | j                  5  | j                  j                  d       | j                  j                  dg d       d d d        | j                  j                  d       d}| j                  j                  |       | j                  j                          | j
                  j                  |      | _	        y # 1 sw Y   |xY w)NrB   zcreate table t(c)zinsert into t values(?)))r   rC   rD   zbegin transactionzselect c from t)
r   r   rH   r   r   r   r"   executemanyrG   r'   )r   selects     r   r   zRollbackTests.setUp   s    >>*-HHOO%	HHOO%	XX 	PHH01HH  !:<NO	P 			-."		&!99$$V,	P 	Ps   %:DD#c                 8    | j                   j                          y r   rH   r   r   s    r   r   zRollbackTests.tearDown       r   c                 h    t        | j                        D ]  \  }}| j                  |d   |        y )Nr   )	enumerater'   r$   )r   irows      r   _check_rowszRollbackTests._check_rows   s2    ) 	(FAsSVQ'	(r   c                 (    | ` | j                          y r   )r   rm   r   s    r   0test_no_duplicate_rows_after_rollback_del_cursorz>RollbackTests.test_no_duplicate_rows_after_rollback_del_cursor   s    Ir   c                 X    | j                   j                          | j                          y r   )r   r   rm   r   s    r   2test_no_duplicate_rows_after_rollback_close_cursorz@RollbackTests.test_no_duplicate_rows_after_rollback_close_cursor   s    		r   c                 Z    | j                   j                  d       | j                          y )Nzselect c from t where c = 1)r   r"   rm   r   s    r   /test_no_duplicate_rows_after_rollback_new_queryz=RollbackTests.test_no_duplicate_rows_after_rollback_new_query   s!    		78r   N)
r]   r^   r_   __doc__r   r   rm   ro   rq   rs   r`   r   r   rb   rb      s#    O-(r   rb   c                   $    e Zd Zd Zd Zd Zd Zy)SpecialCommandTestsc                 v    t        j                  d      | _        | j                  j                         | _        y NrB   )r   r   rH   r   rI   r   s    r   r   zSpecialCommandTests.setUp   s$    >>*-88??$r   c                     | j                   j                  d       | j                   j                  d       | j                   j                  d       y )Nr   r   zdrop table testrI   r"   r   s    r   test_drop_tablez#SpecialCommandTests.test_drop_table   s;    /09:*+r   c                     | j                   j                  d       | j                   j                  d       | j                   j                  d       y )Nr   r   zpragma count_changes=1rz   r   s    r   test_pragmazSpecialCommandTests.test_pragma   s;    /09:12r   c                 l    | j                   j                          | j                  j                          y r   )rI   r   rH   r   s    r   r   zSpecialCommandTests.tearDown   s    r   N)r]   r^   r_   r   r{   r}   r   r`   r   r   rv   rv      s    %,
3
r   rv   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TransactionalDDLc                 8    t        j                  d      | _        y rx   )r   r   rH   r   s    r   r   zTransactionalDDL.setUp   s    >>*-r   c                     | j                   j                  d       | j                   j                          | j                   j                  d      j                         }| j	                  |g        y )Nr   select * from test)rH   r"   rG   r#   r$   )r   results     r   'test_ddl_does_not_autostart_transactionz8TransactionalDDL.test_ddl_does_not_autostart_transaction   sU     	/0!!"67@@B$r   c                 B   | j                   j                  d       | j                   j                  d       | j                   j                          | j                  t        j
                        5  | j                   j                  d       d d d        y # 1 sw Y   y xY w)Nzbegin immediater   r   rH   r"   rG   r<   r   r=   r   s    r    test_immediate_transactional_ddlz1TransactionalDDL.test_immediate_transactional_ddl   sv     	*+/0v667 	3HH12	3 	3 	3   0BBc                 B   | j                   j                  d       | j                   j                  d       | j                   j                          | j                  t        j
                        5  | j                   j                  d       d d d        y # 1 sw Y   y xY w)Nbeginr   r   r   r   s    r   test_transactional_ddlz'TransactionalDDL.test_transactional_ddl  su     	!/0v667 	3HH12	3 	3 	3r   c                 8    | j                   j                          y r   rg   r   s    r   r   zTransactionalDDL.tearDown  rh   r   N)r]   r^   r_   r   r   r   r   r   r`   r   r   r   r      s    .%33r   r   c                   D    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)IsolationLevelFromInitrS   insert into t values(1)c                     g | _         y r   )tracedr   s    r   r   zIsolationLevelFromInit.setUp  s	    r   c                      |j                   j                         |j                   fd       |5  |j                   j                         d d d        y # 1 sw Y   y xY w)Nc                 :    j                   j                  |       S r   r   appendstmtr   s    r   <lambda>z2IsolationLevelFromInit._run_test.<locals>.<lambda>  s    4;;+=+=d+C r   )r"   CREATEset_trace_callbackINSERTr   rN   s   ` r   	_run_testz IsolationLevelFromInit._run_test  sJ    


4;;
CD 	$JJt{{#	$ 	$ 	$s   AA!c                     t               5 }| j                  |       | j                  | j                  d| j                  dg       d d d        y # 1 sw Y   y xY wNBEGIN COMMITr   r   r$   r   r   r   s     r   test_isolation_level_defaultz3IsolationLevelFromInit.test_isolation_level_default  sN     	M"NN2T[[8T[[(*KL	M 	M 	Ms   ;AAc                     t        d      5 }| j                  |       | j                  | j                  d| j                  dg       d d d        y # 1 sw Y   y xY w)N r8   r   r   r   r   s     r   test_isolation_level_beginz1IsolationLevelFromInit.test_isolation_level_begin!  sP    R0 	MBNN2T[[8T[[(*KL	M 	M 	M   ;AAc                     t        d      5 }| j                  |       | j                  | j                  d| j                  dg       d d d        y # 1 sw Y   y xY w)Nr7   r   BEGIN DEFERREDr   r   r   s     r   test_isolation_level_deferredz4IsolationLevelFromInit.test_isolation_level_deferred&  sQ    Z8 	UBNN2T[[+;T[[(*ST	U 	U 	Ur   c                     t        d      5 }| j                  |       | j                  | j                  d| j                  dg       d d d        y # 1 sw Y   y xY w)N	IMMEDIATEr   BEGIN IMMEDIATEr   r   r   s     r   test_isolation_level_immediatez5IsolationLevelFromInit.test_isolation_level_immediate+  T    [9 	IRNN2T[[/hGI	I 	I 	Ir   c                     t        d      5 }| j                  |       | j                  | j                  d| j                  dg       d d d        y # 1 sw Y   y xY w)N	EXCLUSIVEr   BEGIN EXCLUSIVEr   r   r   s     r   test_isolation_level_exclusivez5IsolationLevelFromInit.test_isolation_level_exclusive1  r   r   c                     t        d       5 }| j                  |       | j                  | j                  | j                  g       d d d        y # 1 sw Y   y xY w)Nr   r   r   s     r   test_isolation_level_nonez0IsolationLevelFromInit.test_isolation_level_none7  sG    T2 	9bNN2T[[4;;-8	9 	9 	9s   9AAN)r]   r^   r_   r   r   r   r   r   r   r   r   r   r   r`   r   r   r   r     s9     F&F$M
M
U
II9r   r   c                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)IsolationLevelPostInitr   c                      t        j                  d       _         j                  j                  d       g  _         j                  j                   fd       y )NrB   rS   c                 :    j                   j                  |       S r   r   r   s    r   r   z.IsolationLevelPostInit.setUp.<locals>.<lambda>D  s    0B0B40H r   )r   r   rN   r"   r   r   r   s   `r   r   zIsolationLevelPostInit.setUp@  s>    ..,+,""#HIr   c                 8    | j                   j                          y r   )rN   r   r   s    r   r   zIsolationLevelPostInit.tearDownF  s    r   c                     | j                   5  | j                   j                  | j                         d d d        | j                  | j                  d| j                  dg       y # 1 sw Y   3xY wr   )rN   r"   QUERYr$   r   r   s    r   r   z3IsolationLevelPostInit.test_isolation_level_defaultI  sQ    WW 	(GGOODJJ'	(xX&FG	( 	(s   &A%%A.c                    d| j                   _        | j                   5  | j                   j                  | j                         d d d        | j	                  | j
                  d| j                  dg       y # 1 sw Y   3xY w)Nr   r   r   rN   r8   r"   r   r$   r   r   s    r   r   z1IsolationLevelPostInit.test_isolation_level_beginN  s]    "$WW 	(GGOODJJ'	(xX&FG	( 	(   &A66A?c                    d| j                   _        | j                   5  | j                   j                  | j                         d d d        | j	                  | j
                  d| j                  dg       y # 1 sw Y   3xY w)Nr7   r   r   r   r   s    r   test_isolation_level_deferrredz5IsolationLevelPostInit.test_isolation_level_deferrredT  s^    ",WW 	(GGOODJJ'	('7X&NO	( 	(r   c                    d| j                   _        | j                   5  | j                   j                  | j                         d d d        | j	                  | j
                  d| j                  dg       y # 1 sw Y   3xY w)Nr   r   r   r   r   s    r   r   z5IsolationLevelPostInit.test_isolation_level_immediateZ  a    "-WW 	(GGOODJJ'	(+TZZB	D	( 	(r   c                    d| j                   _        | j                   5  | j                   j                  | j                         d d d        | j	                  | j
                  d| j                  dg       y # 1 sw Y   3xY w)Nr   r   r   r   r   s    r   r   z5IsolationLevelPostInit.test_isolation_level_exclusivea  r   r   c                     d | j                   _        | j                   5  | j                   j                  | j                         d d d        | j	                  | j
                  | j                  g       y # 1 sw Y   1xY wr   r   r   s    r   r   z0IsolationLevelPostInit.test_isolation_level_noneh  sX    "&WW 	(GGOODJJ'	(tzzl3	( 	(s   &A44A=N)r]   r^   r_   r   r   r   r   r   r   r   r   r   r`   r   r   r   r   =  s5    %EJH
HPDD4r   r   c                       e Zd ZdZej
                  Zedd       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d Zd Zd Zd Zd Zy)AutocommitAttributez,Test PEP 249-compliant autocommit behaviour.c              #      K   	 g |j                  fd       d  | j                  |       |r|j                  d        y y # | j                  |       |r|j                  d        w w xY ww)Nc                 &    j                  |       S r   )r   )r   r   s    r   r   z6AutocommitAttribute.check_stmt_trace.<locals>.<lambda>w  s    v}}T/B r   )r   r$   )r   rN   expectedresetr   s       @r   check_stmt_tracez$AutocommitAttribute.check_stmt_traces  sr     	,F!!"BCVX.%%d+  VX.%%d+ s   A1A 'A1(A..A1c                     t               5 }| j                  |j                  t        j                         d d d        y # 1 sw Y   y xY wr   )r   r$   
autocommitr   LEGACY_TRANSACTION_CONTROLr   s     r   test_autocommit_defaultz+AutocommitAttribute.test_autocommit_default~  sA     	@"R]]#>>@	@ 	@ 	@s	   +?Ac                    ddt         j                  f}|D ]  }| j                  |      5  t        |      5 }| j	                  |j
                  |       d d d        t               5 }||_        | j	                  |j
                  |       d d d        d d d         y # 1 sw Y   JxY w# 1 sw Y    xY w# 1 sw Y   xY w)NTFmoder   )r   r   subTestr   r$   r   )r   datasetr   rN   s       r   test_autocommit_setgetz*AutocommitAttribute.test_autocommit_setget  s    --

  	:D4( :$5 :$$R]]D9:$& :"$(BM$$R]]D9:: :	:: :: :: :s:   B6BB6'$B*B6B'#B6*B3/B66B?	c                     d}dD ]S  }| j                  |      5  | j                  t        |      5  t        j                  d|       d d d        d d d        U y # 1 sw Y   xY w# 1 sw Y   lxY w)Nz*autocommit must be True, False, or.*LEGACY)a   r`   Nr   rB   r   )r   assertRaisesRegex
ValueErrorr   r   )r   msgr   s      r   test_autocommit_setget_invalidz2AutocommitAttribute.test_autocommit_setget_invalid  s|    :% 	@D4( @++J< @NN:$?@@ @	@@ @@ @s"   A(A	A(A%!A((A1	c                 4   g d}t        d      5 }| j                  |j                         | j                  ||      5  |j	                  d       |j                          |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)SELECT 1r   BEGINROLLBACKr   Fr   r   )r   
assertTruein_transactionr   r"   r-   rG   r   r   rN   s      r   test_autocommit_disabledz,AutocommitAttribute.test_autocommit_disabled  s    
 . 	"OOB--.&&r84 

:&			 	 	 	s"   .B2B1BB	BBc                     dg}t        d      5 }| j                  |j                         | j                  ||d      5  |j	                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   Fr   )r   )r   r   r   r   r   r   s      r   *test_autocommit_disabled_implicit_rollbackz>AutocommitAttribute.test_autocommit_disabled_implicit_rollback  sr    <. 	"OOB--.&&r85&A 
	 	 	 	s#   0A. A"A."A+	'A..A7c                 L   ddg}t        d      5 }| j                  |j                         | j                  ||      5  |j	                  d       |j	                  d       | j                  |j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzCREATE TABLE t(t)zINSERT INTO t VALUES(1)Tr   )r   assertFalser   r   r"   r   s      r   test_autocommit_enabledz+AutocommitAttribute.test_autocommit_enabled  s    ')BC- 	4R../&&r84 4

./

45  !2!234	4 	44 4	4 	4s"   .B>B=BB	BB#c           	         dD ]  }| j                  |      5  t        d      5 }t        ||      }| j                  |j                         | j                  |g       5   |        | j                  |j                         d d d        d d d        d d d         y # 1 sw Y   xY w# 1 sw Y    xY w# 1 sw Y   xY w)N)r-   rG   )opTr   )r   r   getattrr   r   r   )r   r   rN   meths       r   test_autocommit_enabled_txn_ctlz3AutocommitAttribute.test_autocommit_enabled_txn_ctl  s    & 	<B$ <$5 <"2r?D$$R%6%67..r26 <(():):;<<< <	<
< << << <s:   B5:B)#B	B)
B5B&"B))B2.B55B>	c                    dg}t        d      5 }| j                  |j                         | j                  ||      5  d|_        | j                  |j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   Fr   T)r   r   r   r   r   r   r   s      r   %test_autocommit_disabled_then_enabledz9AutocommitAttribute.test_autocommit_disabled_then_enabled  s    :. 	4"OOB--.&&r84 4 $  !2!234	4 	44 4	4 	4"   .A>#A2!A>2A;	7A>>Bc                    dg}t        d      5 }| j                  |j                         | j                  ||      5  d|_        | j                  |j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   Tr   F)r   r   r   r   r   r   r   s      r   %test_autocommit_enabled_then_disabledz9AutocommitAttribute.test_autocommit_enabled_then_disabled  s    9- 	3R../&&r84 3 % 1 123	3 	33 3	3 	3r   c                 6   dg}t        d      5 }| j                  |j                         | j                  ||      5  |j	                  d       d|_        | j                  |j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   Tr   F)r   r   r   r   r"   r   r   r   s      r   &test_autocommit_explicit_then_disabledz:AutocommitAttribute.test_autocommit_explicit_then_disabled  s    $%- 	3R../&&r84 3

+, % 1 123	3 	33 3	3 	3s"   .B4B2BB	BBc                 .   t        d      5 }| j                  |g       5  |5  | j                  |j                         d d d        | j                  |j                         d d d        d d d        y # 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NTr   )r   r   r   r   r   s     r   test_autocommit_enabled_ctx_mgrz3AutocommitAttribute.test_autocommit_enabled_ctx_mgr  s    - 	4&&r2. 4 8$$R%6%678  !2!234	4 	48 84 4	4 	4s8   BA?A3#A?"B3A<8A??B	BBc                 6   ddg}t        d      5 }| j                  ||      5  |5  | j                  |j                         d d d        | j                  |j                         d d d        d d d        y # 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   Fr   )r   r   r   r   r   s      r    test_autocommit_disabled_ctx_mgrz4AutocommitAttribute.test_autocommit_disabled_ctx_mgr  s    g&. 	3"&&r84 3 7OOB$5$567 1 123	3 	37 73 3	3 	3s9   BBA7#B&B7B <BB	BBc                    g d}t        | j                        5 }|j                  d       | j                  ||      5  |5  | j	                  |j
                         |j                  d       | j                  |j
                         d d d        | j	                  |j
                         d d d        d d d        y # 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N)r   INSERT INTO T VALUES(1)r   r   rS   r   )r   legacyr"   r   r   r   r   r   s      r   test_autocommit_compat_ctx_mgrz2AutocommitAttribute.test_autocommit_compat_ctx_mgr  s    B4 	4JJ*+&&r84 4 7$$R%6%67JJ89OOB$5$567   !2!234	4 	47 74 4	4 	4s;   $CC
AB>
#C
-C>CC

C	CCc                 L   ddg}t        d      5 }| j                  ||      5  | j                  |j                         |j	                  d       |j                  d       | j                  |j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   Tr   )r   r   r   r   r"   executescriptr   r   s      r   %test_autocommit_enabled_executescriptz9AutocommitAttribute.test_autocommit_enabled_executescript  s    Z(- 	3&&r84 3  !2!23

7#  , 1 12	3	3 	33 3	3 	3s#   BAB=BB	BB#c                 (   dg}t        d      5 }| j                  ||      5  | j                  |j                         |j	                  d       | j                  |j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   Fr   )r   r   r   r   r  r   s      r   &test_autocommit_disabled_executescriptz:AutocommitAttribute.test_autocommit_disabled_executescript  s    <. 	3"&&r84 3 1 12  , 1 123	3 	33 3	3 	3s#   BAA<+B<B	BBc                 `   g d}t        | j                        5 }| j                  ||      5  | j                  |j                         |j                  d       |j                  d       | j                  |j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)r   r   r   r   r   r   )r   r   r   r   r   r"   r  r   s      r   $test_autocommit_compat_executescriptz8AutocommitAttribute.test_autocommit_compat_executescript  s    24 	4&&r84 4  !2!23

7#  ,  !2!23	4	4 	44 4	4 	4s#   B$ABB$B!	B$$B-c                 $    d}t        d|d       y )Nzif 1:
            import sqlite3
            cx = sqlite3.connect(":memory:", autocommit=False)
            cx.set_trace_callback(print)
        z-czutf-8)PYTHONIOENCODINGr   )r   codes     r   *test_autocommit_disabled_implicit_shutdownz>AutocommitAttribute.test_autocommit_disabled_implicit_shutdown  s    
 	tg>r   N)T)r]   r^   r_   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r`   r   r   r   r   o  sy    6..F, ,@
:@4<43343	4334?r   r   __main__)unittestsqlite3r   
contextlibr   test.support.os_helperr   r   test.support.script_helperr   test.test_sqlite3.test_dbapir   TestCaser
   rb   rv   r   r   r   r   r]   mainr`   r   r   <module>r     s   .   % 1 7 8P#x(( P#f!H%% !J(++ (x(( D+9X.. +9\/4X.. /4dh?(++ h?V zHMMO r   