+
    BiL                         ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^RI
HtHt ^RI
Ht  ! R R]]P                  4      t ! R R	]P                  4      t]R
8X  d   ]P$                  ! 4        R# R# )    N)support)patch)memory_databasecx_limit)MemoryDatabaseMixinc                      a  ] tR t^$t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R  t#R! t$R" t%R# t&R$t'V t(R%# )&RegressionTestsc                \    V P                   P                  4       pVP                  R 4       R# )zpragma user_versionN)concursorexecuteselfcurs   & 8/usr/lib/python3.14/test/test_sqlite3/test_regression.pytest_pragma_user_version(RegressionTests.test_pragma_user_version&   s    hhoo)*    c                    \        \        P                  R 7      ;_uu_ 4       pV P                  P	                  4       pVP                  R4       RRR4       R#   + '       g   i     R# ; i)detect_typeszpragma schema_versionN)r   sqlitePARSE_COLNAMESr   r   r   r   r   r   s   &  r   test_pragma_schema_version*RegressionTests.test_pragma_schema_version+   sB    &*?*?@@C((//#CKK/0 A@@@s   ,AA*	c           
        \        ^R7      ;_uu_ 4       p\        ^4       Uu. uF  q!P                  4       NK  	  ppV^ ,          P                  R4       \        ^
4       F5  pV^ ,          P	                  R\        ^
4       Uu. uF  q"3NK  	  up4       K7  	  \        ^4       F(  pW4,          P                  RV,          R,           4       K*  	  VP                  4        RRR4       R# u upi u upi   + '       g   i     R# ; i)   )cached_statementszcreate table test(x)insert into test(x) values (?) zselect x from testN)r   ranger   r   executemanyrollback)r   r   xcursorsis   &    r   test_statement_reset$RegressionTests.test_statement_reset1   s     q1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11s)   C4C*AC4C/AC4*
C44D	c                &   V P                   P                  4       pVP                  R 4       V P                  VP                  ^ ,          ^ ,          R4       VP                  R4       V P                  VP                  ^ ,          ^ ,          R4       R# )z select 1 as "foo bar [datetime]"zfoo bar [datetime]zselect 1 as "foo baz"zfoo bazN)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                    . p\        ^i4       FO  pV P                  P                  4       pVP                  V4       VP	                  R\        V4      ,           4       KQ  	  R# )i   zselect 1 x union select N)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                Z   V P                   pVP                  R 4       VP                  R4        VP                  R4       VP                  R4        VP	                  4        R#   \        P                   d     L;i ; i  \        P
                   d    T P                  R4        R# i ; i)z3create 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 ROLLBACKN)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% B  %A=<A= &B*)B*c                    V P                   P                  R4       V P                   P                  R4       V P                   P                  R4       R# )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                <    V P                   P                  R4       R# )zg
pysqlite used to segfault with SQLite versions 3.5.x. These return NULL
for "no-operation" statements
 Nr@   rA   s   &r   test_empty_statement$RegressionTests.test_empty_statementk   s    
 	r   c           	     F   Rp\        \        P                  R7      ;_uu_ 4       pVP                  4       pVP	                  R4       V P                  \        R4      ;_uu_ 4        VP	                  R\        P                  P                  4       34       RRR4       VP	                  V4       VP	                  R4       VP	                  R4       VP	                  R	4       VP	                  V4       RRR4       R#   + '       g   i     Lo; i  + '       g   i     R# ; i)
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 (?)Nr?   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    
 %&*@*@AAS**,CKK9:&&'99EE=@Q@Q@U@U@W?YZ FKKKK()KK78KK9:KK BA FE BAAs%   A D%0C<	AD<DDD 	c           	     j  a  ! V3R  lR4      pV! 4       ^ .o\        \        P                  R7      ;_uu_ 4       pVP                  R4       V P	                  \
        4      ;_uu_ 4        VP                  RS4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)c                   .   <a  ] tR t^t o V3R ltRtV tR# )2RegressionTests.test_bind_mutating_list.<locals>.Xc                (   < SP                  4        R # )z...)clear)r   protocol
parameterss   &&r   __conform__>RegressionTests.test_bind_mutating_list.<locals>.X.__conform__   s      "r    N)__name__
__module____qualname____firstlineno__rZ   __static_attributes____classdictcell__)__classdict__rY   s   @r   XrU      s      r   rd   r   z$create table foo(bar X, baz integer)z'insert into foo(bar, baz) values (?, ?)N)r   r   rK   r   assertRaises
IndexError)r   rd   r   rY   s   &  @r   test_bind_mutating_list'RegressionTests.test_bind_mutating_list   s~    	 	 c1X
&*@*@AASKK>?"":..EzR / BA /. BAAs#   /B!)B	<B!BB!!B2	c           
     V   V P                  \        P                  4      ;_uu_ 4       pV P                  P	                  R \        \        ^.4      4      34      P                  4        RRR4       RpV P                  V\        XP                  4      4       R#   + '       g   i     L9; i)z"select 'xxx' || ? || 'yyy' colnameNz9Could not decode to UTF-8 column 'colname' with text 'xxx)re   r   r8   r   r   bytes	bytearrayfetchoneassertInr2   	exception)r   cmmsgs   &  r   test_error_msg_decode_error+RegressionTests.test_error_msg_decode_error   sx     v66772HHA#Ise$45799A 8 Jc3r||,-	 87s   ?BB(	c                R    V P                  \        \        P                  / R4       R# )z
See issue 3312.
N)re   	TypeErrorr   register_adapterrA   s   &r   test_register_adapter%RegressionTests.test_register_adapter   s     	)V%<%<b$Gr   c           
       a  ! V3R  lR\         4      pV P                  oRSn        R	 Fd  pV P                  VR7      ;_uu_ 4        VSn        VP	                  4       Sn        VP                  4       Sn        V! V4      Sn        RRR4       Kf  	  RSn        RSn        ^\        3R\        3R\        3R\        3R\        3.pV Fm  w  rEV P                  VR7      ;_uu_ 4        V P                  V4      ;_uu_ 4        VSn        RRR4       V P                  SP                  R4       RRR4       Ko  	  R#   + '       g   i     EK"  ; i  + '       g   i     LO; i  + '       g   i     K  ; i)
c                   4   <a  ] tR t^t o R tV3R ltRtV tR# );RegressionTests.test_set_isolation_level.<locals>.CustomStrc                    R # Nr\   rA   s   &r   upperARegressionTests.test_set_isolation_level.<locals>.CustomStr.upper   s    r   c                   < R Sn         R# )rE   Nisolation_levelr:   s   &r   __del__CRegressionTests.test_set_isolation_level.<locals>.CustomStr.__del__   s    &(#r   r\   N)r]   r^   r_   r`   r}   r   ra   rb   )rc   r   s   @r   	CustomStrrz      s     ) )r   r   NDEFERRED)levelr   abczIMMEDIATE EXCLUSIVE   é)rE   r   	IMMEDIATE	EXCLUSIVE)
r2   r   r   subTestlower
capitalizert   
ValueErrorre   r+   )r   r   r   pairsvalueexcr   s   &     @r   test_set_isolation_level(RegressionTests.test_set_isolation_level   s2   	) 	) hh"=EE**&+#&+kkm#&+&6&6&8#&/&6#	 +* > #(	NS),uj.A#Z06:2F
  JEE**&&s++*/C' ,  !4!4jA +*   +** ,+ +**s0   ?D9%E!?E$E!9EEE!!E2c                    ! R R\         P                  4      pV! V P                  4      pV P                  \         P                  4      ;_uu_ 4        VP                  R4      P                  4        RRR4       V P                  \         P                  R4      ;_uu_ 4        VP                  4        RRR4       R#   + '       g   i     LS; i  + '       g   i     R# ; i)zL
Verifies that cursor methods check whether base class __init__ was
called.
c                   &   a  ] tR t^t o R tRtV tR# )BRegressionTests.test_cursor_constructor_call_check.<locals>.Cursorc                    R # r|   r\   r:   s   &&r   __init__KRegressionTests.test_cursor_constructor_call_check.<locals>.Cursor.__init__       r   r\   Nr]   r^   r_   r`   r   ra   rb   rc   s   @r   Cursorr            r   r   z
select 4+5Nz$^Base Cursor\.__init__ not called\.$)	r   r   r   re   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7KK%..0 8##F$;$;$KM MIIKM M 87M M Ms    B>#C>C	C"	c                j     ! R R\         4      pV P                  P                  RV! R4      34       R# )zQ
The Python 3.0 port of the module didn't cope with values of subclasses of str.
c                       ] tR t^tRtR# )0RegressionTests.test_str_subclass.<locals>.MyStrr\   N)r]   r^   r_   r`   ra   r\   r   r   MyStrr      s    $r   r   zselect ?r   N)r2   r   r   )r   r   s   & r   test_str_subclass!RegressionTests.test_str_subclass   s&     	CeEl_5r   c                     ! R R\         P                  4      pV! R4      pV P                  \         P                  4      ;_uu_ 4        VP	                  4       pRRR4       R#   + '       g   i     R# ; i)zP
Verifies that connection methods check whether base class __init__ was
called.
c                   &   a  ] tR t^t o R tRtV tR# )JRegressionTests.test_connection_constructor_call_check.<locals>.Connectionc                    R # r|   r\   )r   names   &&r   r   SRegressionTests.test_connection_constructor_call_check.<locals>.Connection.__init__   r   r   r\   Nr   r   s   @r   
Connectionr      r   r   r   :memory:N)r   r   re   r   r   )r   r   r   r   s   &   r   &test_connection_constructor_call_check6RegressionTests.test_connection_constructor_call_check   sQ    
	** 	 $v6677**,C 8777s   	A$$A5	c                    \        RR7      ;_uu_ 4       pV P                  VP                  4       V P                  VP                  4       RRR4       R#   + '       g   i     R# ; i)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   sH     T22cc112S//0 3222s   7AA'	c                    V P                   P                  4       pVP                  R4       VP                  R4       VP                  R4       VP                  4       pR# )zo
Verifies that running a PRAGMA statement that does an autocommit does
work. This did not work in 2.5.3/2.5.4.
r>   rJ   zpragma page_sizeN)r   r   r   rl   )r   r   rows   &  r   test_pragma_autocommit&RegressionTests.test_pragma_autocommit   sF    
 hhoo+,56&'llnr   c                H    V P                  \        V P                  R4       R# )ze
Call a connection with a non-string SQL request: check error handling
of the statement constructor.
s   select 1N)re   rt   r   rA   s   &r   test_connection_call$RegressionTests.test_connection_call   s    
 	)TXX{;r   c                d    R  pV P                  \        V P                  P                  RV4       R# )c                     ^#    r\   )abs   &&r   collation_cb4RegressionTests.test_collation.<locals>.collation_cb   s    r   u   N)re   UnicodeEncodeErrorr   create_collation)r   r   s   & r   test_collationRegressionTests.test_collation   s)    	,dhh.G.Gl	$r   c                P  a V P                   P                  4       oSP                  R4       SP                  R4       V3R lpV P                  \        P
                  4      ;_uu_ 4        SP                  RR V! 4        4       4       RRR4       R#   + '       g   i     R# ; i)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   <   <"   S P                  R R4       ^x  R# 5i)zinsert into a (bar) values (?)Nr   r   )r   s   r   foo6RegressionTests.test_recursive_cursor_use.<locals>.foo  s     KK8$?Gs   zinsert into b (baz) values (?)c              3   &   "   T F  q3x  K	  	  R # 5ir|   r\   ).0r'   s   & r   	<genexpr><RegressionTests.test_recursive_cursor_use.<locals>.<genexpr>  s     15aT5   N)r   r   r   re   r   r   r#   )r   r   r   s   & @r   test_recursive_cursor_use)RegressionTests.test_recursive_cursor_use  su     hhoo*+*+	 v6677OO<13513 8777s   +BB%	c                   \        \        P                  R7      ;_uu_ 4       pVP                  4       pVP	                  R4       VP	                  R4       VP	                  R4       VP	                  R4       V P                  \        R4      ;_uu_ 4        VP                  4        Uu. uF  q3^ ,          NK  	  ppRRR4       V P                  X\        P                  ! R^^^^^ R	4      \        P                  ! R^^^^^ R
4      .4       RRR4       R# u upi   + '       g   i     Lg; i  + '       g   i     R# ; i)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	converterNi  i@ i@ )
r   r   rK   r   r   rL   rM   r   r+   rN   )r   r   r   r%   valuess   &    r   *test_convert_timestamp_microsecond_padding:RegressionTests.test_convert_timestamp_microsecond_padding  s    &*@*@AAS**,CKK67 KKNO KKTUKK)*&&'9;GG(+71A$$7 H V!!$1b!Q?!!$1b!Q?&  BA 8 HG BAAs7   A3D.D	)D:D	<AD.D	D+&D..D?	c                    R pV P                  \        V4      ;_uu_ 4        \        ^{R7      P                  4        RRR4       R#   + '       g   i     R# ; i)z#isolation_level must be str or Noner   N)r   rt   r   	__enter__)r   regexs   & r   !test_invalid_isolation_level_type1RegressionTests.test_invalid_isolation_level_type3  s:    5##Iu55C0::< 6555s   AA	c           	        V P                   P                  4       pR R.pV F  pV P                  VR7      ;_uu_ 4        V P                  \        P
                  RV P                   P                  V4       RRR4       V P                  VR7      ;_uu_ 4        V P                  \        P
                  RVP                  V4       RRR4       K  	  R#   + '       g   i     Le; i  + '       g   i     K  ; i)z	 select 1z	select 1 )queryz	null charN)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   7C-C%C"%C6c                   V P                   pV P                  \        VR 4       V P                  \        VR4       VP                  4       pV P                  \        VP                  R 4       V P                  \        VP                  R4       R# )u   select ''u   select ''N)r   re   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           
        R p\        4       ;_uu_ 4       p\        V4      ;_uu_ 4       pVP                  4       pV! RP                  V4      4       VP	                  RP                  V4      4       RP                  V^,           4      pV P                  \        P                  WV4       V P                  \        P                  WP                  V4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zquery string is too largeselect 1zselect 2zselect 3N)r   r   r   ljustr   r   r   	DataError)r   rp   cxlimcusqls   &     r   test_large_sqlRegressionTests.test_large_sqlN  s    )"hrllcBz$%JJz'',-""3q5)C""6#3#3ScB""6#3#3S**cJ '3lls#   C:B,C'	C:'C72C::D	c                r   V P                   pVP                  R4       V P                  VP                  R4       ^ p\	        VP                  R4      4       F  w  r4V P                  W4R7      ;_uu_ 4        VP                  RV34       VP                  4        V^ 8X  d   V P                  V^ ,          ^ 4       MAV^8X  d   V P                  V^ ,          ^4       M V^8X  d   V P                  V^ ,          ^4       V^,          pRRR4       K  	  V P                  V^R4       R#   + '       g   i     K  ; i)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);
        rE   zselect c from t)r'   r   zinsert into t2(c) values (?)Nz'should have returned exactly three rows)r   executescriptr+   r   	enumerater   r   r7   )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   5BD%%D6c                    R p\         P                  ! V P                  4      p\        P                  ! W!4      pVP                  V P                  4       ??\        P                  ! 4        R# )zU
The interpreter shouldn't crash in case Cursor.__init__() is called
more than once.
c                      R # 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                    V P                  \        4      ;_uu_ 4        V P                  =R R R 4       R #   + '       g   i     R # ; ir|   )re   AttributeErrorr   r   rA   s   &r   !test_del_isolation_level_segfault1RegressionTests.test_del_isolation_level_segfault  s,    ~..( /...s	   5A	c                r    ! R  R4      pV P                   P                  \        P                  ! V P                   P                  ^R7      V P                   P
                  3 FQ  pV! 4       pV! VP                  4       V! VP                  4       V P                   P                  R4       V! R4       KS  	  R# )c                   &   a  ] tR tRt o R tRtV tR# ).RegressionTests.test_bpo37347.<locals>.Printeri  c                "    \         P                  # r|   )r   	SQLITE_OK)r   r   s   &*r   log2RegressionTests.test_bpo37347.<locals>.Printer.log  s    '''r   r\   N)r]   r^   r_   r`   r  ra   rb   r   s   @r   Printerr    s     ( (r   r  )nr   N)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                    V P                   P                  R 4      pVP                  4       ^ ,          pV P                  VR4       R# )z
select X''r   N)r   r   rl   r+   )r   r   vals   &  r   test_return_empty_bytestring,RegressionTests.test_return_empty_bytestring  s6    hh|,llnQc"r   c           	        \        4       ;_uu_ 4       pV P                  pVP                  4       pVP                  R 4       VP	                  RR \        ^4       4       4       VP                  4        VP                  R4       VP                  R4       VP                  4        RRR4       R#   + '       g   i     R# ; i)create table t(t)insert into t values(?)c              3   &   "   T F  q3x  K	  	  R # 5ir|   r\   r   vs   & r   r   FRegressionTests.test_table_lock_cursor_replace_stmt.<locals>.<genexpr>       48aT8r   select t from tdrop table tN)r   r   r   r   r#   r"   r7   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//C 	c           	     z   \        4       ;_uu_ 4       pVP                  R 4       VP                  RR \        ^4       4       4       VP	                  4        VP                  R4      p?\
        P                  ! 4        VP                  R4       VP	                  4        RRR4       R#   + '       g   i     R# ; i)r!  r"  c              3   &   "   T F  q3x  K	  	  R # 5ir|   r\   r$  s   & r   r   ARegressionTests.test_table_lock_cursor_dealloc.<locals>.<genexpr>  r'  r   r(  r)  N)r   r   r#   r"   r7   r   r  r   s   &  r   test_table_lock_cursor_dealloc.RegressionTests.test_table_lock_cursor_dealloc  s    #KK+,OO545846JJL++/0C KK'JJL s   BB))B:	c           	       a \        4       ;_uu_ 4       oSP                  R 4       SP                  RR \        ^4       4       4       SP	                  4        V3R lpSP                  R^V4       SP                  R4      p?\        P                  ! 4        SP                  R4       SP	                  4        RRR4       R#   + '       g   i     R# ; i)r!  r"  c              3   &   "   T F  q3x  K	  	  R # 5ir|   r\   r$  s   & r   r   MRegressionTests.test_table_lock_cursor_non_readonly_select.<locals>.<genexpr>  r'  r   c                 .   < SP                  R V 34       R# )r"  Nr   )r%  r   s   &r   dupGRegressionTests.test_table_lock_cursor_non_readonly_select.<locals>.dup  s    5t<r   r5  zselect dup(t) from tr)  N)r   r   r#   r"   r7   create_functionr   r  )r   r5  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%CC	c           	       a \        4       ;_uu_ 4       p\        ^4       Uu. uF  q"3NK  	  ppV;_uu_ 4        VP                  R4       VP                  RV4       RRR4       . oVP	                  R^V3R l4       VP                  R4       V P                  SV4       RRR4       R# u upi   + '       g   i     L[; i  + '       g   i     R# ; i)r   r!  r"  Nstepc                 (   < SP                  V 34      # r|   )r1   )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#   r7  r   r+   )r   r   r%  r   r=  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   CB+C$B0	AC+C0C ;CC	r\   N))r]   r^   r_   r`   r   r   r(   r-   r3   r;   rB   rF   rQ   rg   rq   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r*  r/  r8  r@  ra   rb   r   s   @r   r	   r	   $   s     +
1;
=K2 "S.HB< 61
<$3&6=
;NKP>)#


 	, 	,r   r	   c                   B   a  ] tR tRt o RtR tR tR tR tR t	Rt
V tR	# )
RecursiveUseOfCursorsi  z$Recursive use of cursors not allowedc                   \         P                  ! R \         P                  R7      V n        V P                  P	                  4       V n        V P
                  P                  R4       V P
                  P                  RRR.4       R# )r   r   zcreate table test(x foo)r    N)r   )bar)r   connectr   r   r   r   r   r#   rA   s   &r   setUpRecursiveUseOfCursors.setUp  s`    >>*/5/D/DF88??$34=&1	3r   c                n    V P                   P                  4        V P                  P                  4        R # r|   )r   r   r   rA   s   &r   tearDownRecursiveUseOfCursors.tearDown  s    r   c                `  a  V 3R  lp\         P                  ! \        P                  RV/4      ;_uu_ 4        S P                  P                  R4       S P                  \        P                  S P                  S P                  P                  4       RRR4       R#   + '       g   i     R# ; i)c                 N   < SP                   P                  SP                  4      # r|   )r   r   r   r%   r   s   &r   r>  BRecursiveUseOfCursors.test_recursive_cursor_init.<locals>.<lambda>  s    **4884r   INITz#select x as "x [INIT]", x from testN
r   dictr   
convertersr   r   r   r   rp   r   r   convs   f r   test_recursive_cursor_init0RecursiveUseOfCursors.test_recursive_cursor_init  sn    4ZZ))FD>::HHBC""6#:#:DHH#'88#4#46 ;:::   ABB-	c                `  a  V 3R  lp\         P                  ! \        P                  RV/4      ;_uu_ 4        S P                  P                  R4       S P                  \        P                  S P                  S P                  P                  4       RRR4       R#   + '       g   i     R# ; i)c                 8   < SP                   P                  4       # r|   )r   r   rN  s   &r   r>  CRecursiveUseOfCursors.test_recursive_cursor_close.<locals>.<lambda>  s    )r   CLOSEz$select x as "x [CLOSE]", x from testNrQ  rT  s   f r   test_recursive_cursor_close1RecursiveUseOfCursors.test_recursive_cursor_close  sn    )ZZ))GT?;;HHCD""6#:#:DHH#'88#4#46 <;;;rX  c                f  a  . 3V 3R  llp\         P                  ! \        P                  RV/4      ;_uu_ 4        S P                  P                  R4       S P                  \        P                  S P                  S P                  P                  4       RRR4       R#   + '       g   i     R# ; i)c                 j   < V'       d   SP                   P                  4       # VP                  R 4      # r|   )r   rl   r1   )r%   lr   s   &&r   r>  BRecursiveUseOfCursors.test_recursive_cursor_iter.<locals>.<lambda>  s$    atxx002KQXXd^Kr   ITERz#select x as "x [ITER]", x from testNrQ  rT  s   f r   test_recursive_cursor_iter0RecursiveUseOfCursors.test_recursive_cursor_iter  sq    KZZ))FD>::HHBC""6#:#:DHH#'88#4#46 ;:::s   ABB0	)r   r   N)r]   r^   r_   r`   rp   rG  rJ  rV  r]  rd  ra   rb   r   s   @r   rC  rC    s(     
0C3666 6r   rC  __main__)rN   unittestsqlite3r   r  r  testr   unittest.mockr   utilr   r   r   TestCaser	   rC  r]   mainr\   r   r   <module>rn     se   .        + %m,)8+<+< m,`#6H-- #6L zMMO r   