
    4hhL                         S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  SSK
JrJr  SSK
Jr   " S S\\R                  5      r " S	 S
\R                  5      r\S:X  a  \R$                  " 5         gg)    N)support)patch   )memory_databasecx_limit)MemoryDatabaseMixinc                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S%r'g&)'RegressionTests$   c                 Z    U R                   R                  5       nUR                  S5        g )Nzpragma user_version)concursorexecuteselfcurs     J/opt/python-3.13.8/usr/lib/python3.13/test/test_sqlite3/test_regression.pytest_pragma_user_version(RegressionTests.test_pragma_user_version&   s    hhoo)*    c                     [        [        R                  S9 nU R                  R	                  5       nUR                  S5        S S S 5        g ! , (       d  f       g = f)Ndetect_typeszpragma schema_version)r   sqlitePARSE_COLNAMESr   r   r   r   r   r   s      r   test_pragma_schema_version*RegressionTests.test_pragma_schema_version+   s<    &*?*?@C((//#CKK/0 A@@s   ,A
Ac           	         [        SS9 n[        S5       Vs/ s H  o!R                  5       PM     nnUS   R                  S5        [        S5       H2  nUS   R	                  S[        S5       Vs/ s H  o"4PM     sn5        M4     [        S5       H  nX4   R                  SU-  S-   5        M     UR                  5         S S S 5        g s  snf s  snf ! , (       d  f       g = f)	N   )cached_statementsr   zcreate table test(x)
   insert into test(x) values (?) zselect x from test)r   ranger   r   executemanyrollback)r   r   xcursorsis        r   test_statement_reset$RegressionTests.test_statement_reset1   s     q1S-21X6Xzz|XG6AJ562Y
&&'GX]^`XaIbXaST$XaIbc  1X
""37-A#AB  LLN 216 Jc	 21s)   CCA C1C=AC
C
C$c                    U R                   R                  5       nUR                  S5        U R                  UR                  S   S   S5        UR                  S5        U R                  UR                  S   S   S5        g )Nz select 1 as "foo bar [datetime]"r   zfoo bar [datetime]zselect 1 as "foo baz"zfoo baz)r   r   r   assertEqualdescriptionr   s     r   test_column_name_with_spaces,RegressionTests.test_column_name_with_spaces@   si    hhoo67+A.0DE+,+A.	:r   c                     / n[        S5       HK  nU R                  R                  5       nUR                  U5        UR	                  S[        U5      -   5        MM     g )Ni   zselect 1 x union select )r%   r   r   appendr   str)r   r)   r*   r   s       r   'test_statement_finalization_on_close_db7RegressionTests.test_statement_finalization_on_close_dbH   sI    
 sA((//#CNN3KK2SV;< r   c                 R   U R                   nUR                  S5        UR                  S5         UR                  S5        UR                  S5         UR	                  5         g ! [        R                   a     N9f = f! [        R
                   a    U R                  S5         g f = f)Nz3create table foo(x, unique(x) on conflict rollback)zinsert into foo(x) values (1)zinsert into foo(x) values (2)z1pysqlite knew nothing about the implicit ROLLBACK)r   r   r   DatabaseErrorcommitOperationalErrorfailr   r   s     r   test_on_conflict_rollback)RegressionTests.test_on_conflict_rollbackT   s    hhIJ34	KK78 	34	KJJL	 ## 		
 && 	KIIIJ	Ks#   A$ A> $A;:A;>%B&%B&c                     U R                   R                  S5        U R                   R                  S5        U R                   R                  S5        g)zU
pysqlite would crash with older SQLite versions unless
a workaround is implemented.
create table foo(bar)drop table fooNr   r   r   s    r   2test_workaround_for_buggy_sqlite_transfer_bindingsBRegressionTests.test_workaround_for_buggy_sqlite_transfer_bindingsb   s=    
 	01)*01r   c                 :    U R                   R                  S5        g)zg
pysqlite used to segfault with SQLite versions 3.5.x. These return NULL
for "no-operation" statements
 NrC   rD   s    r   test_empty_statement$RegressionTests.test_empty_statementk   s    
 	r   c                    Sn[        [        R                  S9 nUR                  5       nUR	                  S5        U R                  [        S5         UR	                  S[        R                  R                  5       45        SSS5        UR	                  U5        UR	                  S5        UR	                  S5        UR	                  S	5        UR	                  U5        SSS5        g! , (       d  f       Nl= f! , (       d  f       g= f)
zu
pysqlite until 2.4.1 did not rebuild the row_cast_map when recompiling
a statement. This test exhibits the problem.
zselect * from foor   zcreate table foo(bar timestamp)adapterzinsert into foo(bar) values (?)NrB   zcreate table foo(bar integer)insert into foo(bar) values (5))	r   r   PARSE_DECLTYPESr   r   assertWarnsRegexDeprecationWarningdatetimenow)r   SELECTr   r   s       r   test_type_map_usage#RegressionTests.test_type_map_usager   s    
 %&*@*@AS**,CKK9:&&'99E=@Q@Q@U@U@W?YZ FKKKK()KK78KK9:KK BA FE BAs$   8C90C(AC9(
C6	2C99
Dc                 8  ^  " U4S jS5      nU" 5       S/m[        [        R                  S9 nUR                  S5        U R	                  [
        5         UR                  ST5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                   "   > \ rS rSrU 4S jrSrg)2RegressionTests.test_bind_mutating_list.<locals>.X   c                 &   > TR                  5         g)Nz...)clear)r   protocol
parameterss     r   __conform__>RegressionTests.test_bind_mutating_list.<locals>.X.__conform__   s      "r    N)__name__
__module____qualname____firstlineno__r^   __static_attributes__)r]   s   r   XrX      s     r   rf   r   r   z$create table foo(bar X, baz integer)z'insert into foo(bar, baz) values (?, ?))r   r   rN   r   assertRaises
IndexError)r   rf   r   r]   s      @r   test_bind_mutating_list'RegressionTests.test_bind_mutating_list   su    	 	 c1X
&*@*@ASKK>?"":.EzR / BA /. BAs#   'BA:)B:
B	B
Bc           	      @   U R                  [        R                  5       nU R                  R	                  S[        [        S/5      5      45      R                  5         S S S 5        SnU R                  U[        WR                  5      5        g ! , (       d  f       N6= f)Nz"select 'xxx' || ? || 'yyy' colname   z9Could not decode to UTF-8 column 'colname' with text 'xxx)rg   r   r;   r   r   bytes	bytearrayfetchoneassertInr5   	exception)r   cmmsgs      r   test_error_msg_decode_error+RegressionTests.test_error_msg_decode_error   su     v6672HHA#Ise$45799A 8 Jc3r||,-	 87s   ?B
Bc                 P    U R                  [        [        R                  0 S5        g)z
See issue 3312.
N)rg   	TypeErrorr   register_adapterrD   s    r   test_register_adapter%RegressionTests.test_register_adapter   s     	)V%<%<b$Gr   c                   ^  " U4S jS[         5      nU R                  mS Tl        S HY  nU R                  US9   UTl        UR	                  5       Tl        UR                  5       Tl        U" U5      Tl        S S S 5        M[     S Tl        STl        S[        4S[        4S[        4S	[        4S
[        4/nU HZ  u  pEU R                  US9   U R                  U5         UTl        S S S 5        U R                  TR                  S5        S S S 5        M\     g ! , (       d  f       GM  = f! , (       d  f       NJ= f! , (       d  f       M  = f)Nc                   (   > \ rS rSrS rU 4S jrSrg);RegressionTests.test_set_isolation_level.<locals>.CustomStr   c                     g Nr`   rD   s    r   upperARegressionTests.test_set_isolation_level.<locals>.CustomStr.upper   s    r   c                    > STl         g )NrH   isolation_levelr=   s    r   __del__CRegressionTests.test_set_isolation_level.<locals>.CustomStr.__del__   s    &(#r   r`   N)ra   rb   rc   rd   r   r   re   )r   s   r   	CustomStrr}      s    ) )r   r   )rH   DEFERRED	IMMEDIATE	EXCLUSIVE)levelr   r   r   abczIMMEDIATE EXCLUSIVE   é)
r5   r   r   subTestlower
capitalizerw   
ValueErrorrg   r.   )r   r   r   pairsvalueexcr   s         @r   test_set_isolation_level(RegressionTests.test_set_isolation_level   s#   	) 	) hh"=EE*&+#&+kkm#&+&6&6&8#&/&6#	 +* > #(	NS),uj.A#Z06:2F
  JEE*&&s+*/C' ,  !4!4jA +*   +* ,+ +*s/   ?DD>!D-)$D>
D*	-
D;7D>>
E	c                     " S S[         R                  5      nU" U R                  5      nU R                  [         R                  5         UR                  S5      R                  5         SSS5        U R                  [         R                  S5         UR                  5         SSS5        g! , (       d  f       NH= f! , (       d  f       g= f)zL
Verifies that cursor methods check whether base class __init__ was
called.
c                       \ rS rSrS rSrg)BRegressionTests.test_cursor_constructor_call_check.<locals>.Cursor   c                     g r   r`   r=   s     r   __init__KRegressionTests.test_cursor_constructor_call_check.<locals>.Cursor.__init__       r   r`   Nra   rb   rc   rd   r   re   r`   r   r   Cursorr          r   r   z
select 4+5Nz$^Base Cursor\.__init__ not called\.$)	r   r   r   rg   ProgrammingErrorr   fetchallassertRaisesRegexclose)r   r   r   s      r   "test_cursor_constructor_call_check2RegressionTests.test_cursor_constructor_call_check   s    
	V]] 	 TXXv667KK%..0 8##F$;$;$KMIIKM M 87M Ms    B-B>-
B;>
Cc                 h     " S S[         5      nU R                  R                  SU" S5      45        g)zQ
The Python 3.0 port of the module didn't cope with values of subclasses of str.
c                       \ rS rSrSrg)0RegressionTests.test_str_subclass.<locals>.MyStr   r`   N)ra   rb   rc   rd   re   r`   r   r   MyStrr      s    $r   r   zselect ?r   N)r5   r   r   )r   r   s     r   test_str_subclass!RegressionTests.test_str_subclass   s&     	CeEl_5r   c                      " S S[         R                  5      nU" S5      nU R                  [         R                  5         UR	                  5       nSSS5        g! , (       d  f       g= f)zP
Verifies that connection methods check whether base class __init__ was
called.
c                       \ rS rSrS rSrg)JRegressionTests.test_connection_constructor_call_check.<locals>.Connection   c                     g r   r`   )r   names     r   r   SRegressionTests.test_connection_constructor_call_check.<locals>.Connection.__init__   r   r   r`   Nr   r`   r   r   
Connectionr      r   r   r   :memory:N)r   r   rg   r   r   )r   r   r   r   s       r   &test_connection_constructor_call_check6RegressionTests.test_connection_constructor_call_check   sK    
	** 	 $v667**,C 877s   A
A)c                     [        SS9 nU R                  UR                  5        U R                  UR                  5        SSS5        g! , (       d  f       g= f)z
Verifies that creating a connection in autocommit mode works.
2.5.3 introduced a regression so that these could no longer
be created.
Nr   )r   assertIsNoner   assertFalsein_transactionr=   s     r   test_auto_commit RegressionTests.test_auto_commit   sB     T2cc112S//0 322s   7A


Ac                     U R                   R                  5       nUR                  S5        UR                  S5        UR                  S5        UR                  5       ng)zo
Verifies that running a PRAGMA statement that does an autocommit does
work. This did not work in 2.5.3/2.5.4.
rA   rM   zpragma page_sizeN)r   r   r   ro   )r   r   rows      r   test_pragma_autocommit&RegressionTests.test_pragma_autocommit   sF    
 hhoo+,56&'llnr   c                 F    U R                  [        U R                  S5        g)ze
Call a connection with a non-string SQL request: check error handling
of the statement constructor.
s   select 1N)rg   rw   r   rD   s    r   test_connection_call$RegressionTests.test_connection_call   s    
 	)TXX{;r   c                 b    S nU R                  [        U R                  R                  SU5        g )Nc                     g)Nr   r`   )abs     r   collation_cb4RegressionTests.test_collation.<locals>.collation_cb   s    r   u   )rg   UnicodeEncodeErrorr   create_collation)r   r   s     r   test_collationRegressionTests.test_collation   s)    	,dhh.G.Gl	$r   c                 8  ^ U R                   R                  5       mTR                  S5        TR                  S5        U4S jnU R                  [        R
                  5         TR                  SS U" 5        5       5        SSS5        g! , (       d  f       g= f)z
http://bugs.python.org/issue10811

Recursively using a cursor, such as when reusing it from a generator led to segfaults.
Now we catch recursive cursor usage and raise a ProgrammingError.
zcreate table a (bar)zcreate table b (baz)c               3   :   >#    T R                  SS5        Sv   g 7f)Nzinsert into a (bar) values (?))r   r   r   )r   s   r   foo6RegressionTests.test_recursive_cursor_use.<locals>.foo  s     KK8$?Gs   zinsert into b (baz) values (?)c              3   &   #    U  H  o4v   M	     g 7fr   r`   ).0r*   s     r   	<genexpr><RegressionTests.test_recursive_cursor_use.<locals>.<genexpr>  s     15aT5   N)r   r   r   rg   r   r   r&   )r   r   r   s     @r   test_recursive_cursor_use)RegressionTests.test_recursive_cursor_use  so     hhoo*+*+	 v667OO<13513 877s   #B
Bc                 L   [        [        R                  S9 nUR                  5       nUR	                  S5        UR	                  S5        UR	                  S5        UR	                  S5        U R                  [        S5         UR                  5        Vs/ s H  o3S   PM	     nnSSS5        U R                  W[        R                  " S	S
S
SSSS5      [        R                  " S	S
S
SSSS5      /5        SSS5        gs  snf ! , (       d  f       Nd= f! , (       d  f       g= f)z
http://bugs.python.org/issue14720

The microsecond parsing of convert_timestamp() should pad with zeros,
since the microsecond string "456" actually represents "456000".
r   zCREATE TABLE t (x TIMESTAMP)z4INSERT INTO t (x) VALUES ('2012-04-04 15:06:00.456')z:INSERT INTO t (x) VALUES ('2012-04-04 15:06:00.123456789')zSELECT * FROM t	converterr   Ni           i@ i@ )
r   r   rN   r   r   rO   rP   r   r.   rQ   )r   r   r   r(   valuess        r   *test_convert_timestamp_microsecond_padding:RegressionTests.test_convert_timestamp_microsecond_padding  s     &*@*@AS**,CKK67 KKNO KKTUKK)*&&'9;G(+71A$7 H V!!$1b!Q?!!$1b!Q?&  BA 8 HG BAs7   A+DDC?$D&AD?D
D	D
D#c                     SnU R                  [        U5         [        SS9R                  5         S S S 5        g ! , (       d  f       g = f)Nz#isolation_level must be str or None{   r   )r   rw   r   	__enter__)r   regexs     r   !test_invalid_isolation_level_type1RegressionTests.test_invalid_isolation_level_type3  s4    5##Iu5C0::< 655s	   :
Ac                    U R                   R                  5       nSS/nU H  nU R                  US9   U R                  [        R
                  SU R                   R                  U5        S S S 5        U R                  US9   U R                  [        R
                  SUR                  U5        S S S 5        M     g ! , (       d  f       NW= f! , (       d  f       M  = f)Nz	 select 1z	select 1 )queryz	null char)r   r   r   r   r   r   r   )r   r   queriesr   s       r   test_null_character#RegressionTests.test_null_character:  s    hhoo.EE*&&v'>'>'+xx'7'7@ + E*&&v'>'>'*{{E; +*	 ** +*s   7B;-C;
C		
C	c                    U R                   nU R                  [        US5        U R                  [        US5        UR                  5       nU R                  [        UR                  S5        U R                  [        UR                  S5        g )Nu   select ''u   select '')r   rg   r   r   r   r   s      r   test_surrogatesRegressionTests.test_surrogatesF  sn    hh,c3DE,c3DEjjl,ckk;LM,ckk;LMr   c                    Sn[        5        n[        U5       nUR                  5       nU" SR                  U5      5        UR	                  SR                  U5      5        SR                  US-   5      nU R                  [        R                  XU5        U R                  [        R                  XR                  U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzquery string is too largeselect 1zselect 2zselect 3r   )r   r   r   ljustr   r   r   	DataError)r   rs   cxlimcusqls         r   test_large_sqlRegressionTests.test_large_sqlN  s    )"hrlcBz$%JJz'',-""3q5)C""6#3#3ScB""6#3#3S**cJ '3lls#   C#B(CC#
C 	C##
C1c                 0   U R                   nUR                  S5        U R                  UR                  S5        Sn[	        UR                  S5      5       H  u  p4U R                  X4S9   UR                  SU45        UR                  5         US:X  a  U R                  US   S5        O7US:X  a  U R                  US   S5        OUS:X  a  U R                  US   S5        US-  nS	S	S	5        M     U R                  US
S5        g	! , (       d  f       M  = f)z
Connection.commit() did reset cursors, which made sqlite3
to return rows multiple times when fetched from cursors
after commit. See issues 10513 and 23129 for details.
z
        create table t(c);
        create table t2(c);
        insert into t values(0);
        insert into t values(1);
        insert into t values(2);
        rH   r   zselect c from t)r*   r   zinsert into t2(c) values (?)r      N   z'should have returned exactly three rows)r   executescriptr.   r   	enumerater   r   r:   )r   r   counterr*   r   s        r   test_commit_cursor_reset(RegressionTests.test_commit_cursor_reset[  s    hh  	 	,,b1,= >?FA+:QDA

a<$$SVQ/\$$SVQ/\$$SVQ/1 ,+ @ 	!%NO ,+s   *A<D
D	c                     S n[         R                  " U R                  5      n[        R                  " X!5      nUR                  U R                  5        AA[        R                  " 5         g)zU
The interpreter shouldn't crash in case Cursor.__init__() is called
more than once.
c                      g r   r`   )argss    r   callback/RegressionTests.test_bpo31770.<locals>.callback  s    r   N)r   r   r   weakrefrefr   r   
gc_collect)r   r	  r   r  s       r   test_bpo31770RegressionTests.test_bpo31770z  sI    
	mmDHH%kk#(TXXr   c                 z    U R                  [        5         U R                  ?S S S 5        g ! , (       d  f       g = fr   )rg   AttributeErrorr   r   rD   s    r   !test_del_isolation_level_segfault1RegressionTests.test_del_isolation_level_segfault  s&    ~.( /..s   ,
:c                 j    " S S5      nU R                   R                  [        R                  " U R                   R                  SS9U R                   R
                  4 HQ  nU" 5       nU" UR                  5        U" UR                  5        U R                   R                  S5        U" S 5        MS     g )Nc                       \ rS rSrS rSrg).RegressionTests.test_bpo37347.<locals>.Printeri  c                 "    [         R                  $ r   )r   	SQLITE_OK)r   r  s     r   log2RegressionTests.test_bpo37347.<locals>.Printer.log  s    '''r   r`   N)ra   rb   rc   rd   r  re   r`   r   r   Printerr    s    (r   r  r   )nr   )r   set_trace_callback	functoolspartialset_progress_handlerset_authorizerr  r   )r   r  methodprinter_instances       r   test_bpo37347RegressionTests.test_bpo37347  s    	( 	( xx22 (()F)F!Lxx..0F  'y#''(#''(HHZ(4L0r   c                     U R                   R                  S5      nUR                  5       S   nU R                  US5        g )Nz
select X''r   r   )r   r   ro   r.   )r   r   vals      r   test_return_empty_bytestring,RegressionTests.test_return_empty_bytestring  s6    hh|,llnQc"r   c                 n   [        5        nU R                  nUR                  5       nUR                  S5        UR	                  SS [        S5       5       5        UR                  5         UR                  S5        UR                  S5        UR                  5         S S S 5        g ! , (       d  f       g = f)Ncreate table t(t)insert into t values(?)c              3   &   #    U  H  o4v   M	     g 7fr   r`   r   vs     r   r   FRegressionTests.test_table_lock_cursor_replace_stmt.<locals>.<genexpr>       48aT8r   r    select t from tdrop table t)r   r   r   r   r&   r%   r:   r   s      r   #test_table_lock_cursor_replace_stmt3RegressionTests.test_table_lock_cursor_replace_stmt  s}    #((C**,CKK+,OO545846JJLKK)*KK'JJL s   BB&&
B4c                 b   [        5        nUR                  S5        UR                  SS [        S5       5       5        UR	                  5         UR                  S5      nA[
        R                  " 5         UR                  S5        UR	                  5         S S S 5        g ! , (       d  f       g = f)Nr+  r,  c              3   &   #    U  H  o4v   M	     g 7fr   r`   r.  s     r   r   ARegressionTests.test_table_lock_cursor_dealloc.<locals>.<genexpr>  r1  r   r    r2  r3  )r   r   r&   r%   r:   r   r  r   s      r   test_table_lock_cursor_dealloc.RegressionTests.test_table_lock_cursor_dealloc  sz    #KK+,OO545846JJL++/0C KK'JJL s   BB  
B.c                   ^ [        5        mTR                  S5        TR                  SS [        S5       5       5        TR	                  5         U4S jnTR                  SSU5        TR                  S5      nA[        R                  " 5         TR                  S	5        TR	                  5         S S S 5        g ! , (       d  f       g = f)
Nr+  r,  c              3   &   #    U  H  o4v   M	     g 7fr   r`   r.  s     r   r   MRegressionTests.test_table_lock_cursor_non_readonly_select.<locals>.<genexpr>  r1  r   r    c                 ,   > TR                  SU 45        g )Nr,  r   )r/  r   s    r   dupGRegressionTests.test_table_lock_cursor_non_readonly_select.<locals>.dup  s    5t<r   r?  r   zselect dup(t) from tr3  )r   r   r&   r%   r:   create_functionr   r  )r   r?  r   r   s      @r   *test_table_lock_cursor_non_readonly_select:RegressionTests.test_table_lock_cursor_non_readonly_select  s    #KK+,OO545846JJL q#.++45C KK'JJL s   B%B::
Cc                   ^ [        5        n[        S5       Vs/ s H  o"4PM     nnU   UR                  S5        UR                  SU5        S S S 5        / mUR	                  SSU4S j5        UR                  S5        U R                  TU5        S S S 5        g s  snf ! , (       d  f       NX= f! , (       d  f       g = f)Nr    r+  r,  stepr   c                 (   > TR                  U 45      $ r   )r4   )r(   stepss    r   <lambda>HRegressionTests.test_executescript_step_through_select.<locals>.<lambda>  s    U\\1$5Gr   zselect step(t) from t)r   r%   r   r&   rA  r  r.   )r   r   r/  r   rG  s       @r   &test_executescript_step_through_select6RegressionTests.test_executescript_step_through_select  s    #$)!H-HqdHF-/0 96B  E+GH56UF+ - s3   B1BB1$B AB1B1 
B.	*B11
B?r`   N)(ra   rb   rc   rd   r   r   r+   r0   r6   r>   rE   rI   rT   ri   rt   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r$  r(  r4  r9  rB  rJ  re   r`   r   r   r
   r
   $   s    +
1;
=K2 "S.HB< 61
<$3&6=
;NKP>)#


 	,r   r
   c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
RecursiveUseOfCursorsi  z$Recursive use of cursors not allowedc                    [         R                  " S[         R                  S9U l        U R                  R	                  5       U l        U R
                  R                  S5        U R
                  R                  SSS/5        g )Nr   r   zcreate table test(x foo)r#   )r   )bar)r   connectr   r   r   r   r   r&   rD   s    r   setUpRecursiveUseOfCursors.setUp  s`    >>*/5/D/DF88??$34=&1	3r   c                 l    U R                   R                  5         U R                  R                  5         g r   )r   r   r   rD   s    r   tearDownRecursiveUseOfCursors.tearDown  s    r   c                 H  ^  U 4S jn[         R                  " [        R                  SU05         T R                  R                  S5        T R                  [        R                  T R                  T R                  R                  5        S S S 5        g ! , (       d  f       g = f)Nc                 N   > TR                   R                  TR                  5      $ r   )r   r   r   r(   r   s    r   rH  BRecursiveUseOfCursors.test_recursive_cursor_init.<locals>.<lambda>  s    **4884r   INITz#select x as "x [INIT]", x from test
r   dictr   
convertersr   r   r   r   rs   r   r   convs   ` r   test_recursive_cursor_init0RecursiveUseOfCursors.test_recursive_cursor_init  sh    4ZZ))FD>:HHBC""6#:#:DHH#'88#4#46 ;::   AB
B!c                 H  ^  U 4S jn[         R                  " [        R                  SU05         T R                  R                  S5        T R                  [        R                  T R                  T R                  R                  5        S S S 5        g ! , (       d  f       g = f)Nc                 8   > TR                   R                  5       $ r   )r   r   rX  s    r   rH  CRecursiveUseOfCursors.test_recursive_cursor_close.<locals>.<lambda>  s    )r   CLOSEz$select x as "x [CLOSE]", x from testr[  r^  s   ` r   test_recursive_cursor_close1RecursiveUseOfCursors.test_recursive_cursor_close  sh    )ZZ))GT?;HHCD""6#:#:DHH#'88#4#46 <;;rb  c                 N  ^  / 4U 4S jjn[         R                  " [        R                  SU05         T R                  R                  S5        T R                  [        R                  T R                  T R                  R                  5        S S S 5        g ! , (       d  f       g = f)Nc                 h   > U(       a  TR                   R                  5       $ UR                  S 5      $ r   )r   ro   r4   )r(   lr   s     r   rH  BRecursiveUseOfCursors.test_recursive_cursor_iter.<locals>.<lambda>  s$    atxx002KQXXd^Kr   ITERz#select x as "x [ITER]", x from testr[  r^  s   ` r   test_recursive_cursor_iter0RecursiveUseOfCursors.test_recursive_cursor_iter  sk    KZZ))FD>:HHBC""6#:#:DHH#'88#4#46 ;::s   AB
B$)r   r   N)ra   rb   rc   rd   rs   rQ  rT  r`  rg  rn  re   r`   r   r   rM  rM    s     
0C3666r   rM  __main__)rQ   unittestsqlite3r   r  r  testr   unittest.mockr   utilr   r   r   TestCaser
   rM  ra   mainr`   r   r   <module>rx     se   .        + %m,)8+<+< m,`#6H-- #6L zMMO r   