
    g@                         d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlmZ	m
Z
 d dlZddlmZ  ed      Z	 d d	lmZ  G d
 de	      Zy# e$ r eZY w xY w)    N)Path)OperationalError)Thread)IsolatedAsyncioTestCaseSkipTest   setup_loggertest.db)_unicode_text_factoryc                       e Zd Ze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d Zd Zd Zd Zd Zd Zd Zd Zy)	SmokeTestc                     t                y Nr	   )clss    J/var/www/openai/venv/lib/python3.12/site-packages/aiosqlite/tests/smoke.py
setUpClasszSmokeTest.setUpClass   s        c                 V    t         j                         rt         j                          y y r   TEST_DBexistsunlinkselfs    r   setUpzSmokeTest.setUp       >>NN r   c                 V    t         j                         rt         j                          y y r   r   r   s    r   tearDownzSmokeTest.tearDown   r   r   c                   K   t        j                  t               d {   }| j                  |t         j                         |j                  d      4 d {   }|j                          d {   }| j                  |dg       d d d       d {    |j                          d {    y 7 7 Z7 D7 ## 1 d {  7  sw Y   3xY w7 "wNselect 1, 2)r      )		aiosqliteconnectr   assertIsInstance
ConnectionexecutefetchallassertEqualcloser   dbcursorrowss       r   test_connection_awaitzSmokeTest.test_connection_await#   s     $$W--b)"6"67::m,,**DTF8, -, hhj . -* -,,, 	su   CB29CB4CB:1B62B:	CB8C,C-C4C6B:8C:C CCCc                   K   t        j                  t              4 d {   }| j                  |t         j                         |j                  d      4 d {   }|j                          d {   }| j                  |dg       d d d       d {    d d d       d {    y 7 7 R7 <7 # 1 d {  7  sw Y   +xY w7 "# 1 d {  7  sw Y   y xY wwr!   )r$   r%   r   r&   r'   r(   r)   r*   r,   s       r   test_connection_contextz!SmokeTest.test_connection_context-   s     $$W--!!"i&:&:;zz-00F#__..  x0 10 .-- 1. 1000 .---s   CB+C6C
B-C
B32B/3B3
C
B1C
C%C&C-C
/B31C
3C	9B<:C	C
C
CCCCc                   K    G d d      }ddt        d       |       f}t        j                  t              4 d {   }|j	                  d       d {    |j	                  d       d {    |j                          d {    |j	                  d       d {   }|j                          d {   }d d d       d {    |D ]q  }t        j                  |      4 d {   }|j	                  d       d {   }| j                  |j                          d {          d d d       d {    s y 7 7 7 7 7 7 7 # 1 d {  7  sw Y   xY w7 |7 e7 D7 1# 1 d {  7  sw Y   xY ww)Nc                       e Zd Zd Zy)1SmokeTest.test_connection_locations.<locals>.Fakec                      t        t              S r   )strr   r   s    r   __str__z9SmokeTest.test_connection_locations.<locals>.Fake.__str__7   s    7|#r   N)__name__
__module____qualname__r8    r   r   Faker5   6   s    $r   r=   r   s   test.dbz'create table foo (i integer, k integer)z$insert into foo (i, k) values (1, 5)select * from foo)r   r$   r%   r   r(   commitr)   r*   )r   r=   locsr-   r.   r/   locs          r   test_connection_locationsz#SmokeTest.test_connection_locations5   s4    	$ 	$ :tI?$$W--**FGGG**CDDD))+::&9::F**D .- C ((--!zz*=>>  v'8!8$? .--  .GD:* .--- .>!8 .---s  <FEFEEE0E
1EE	E!E"E9E:E>F	E
"F,E)-F0E1E+"E1(E-)	E12F=E/>FE
EEEEFE&EE&"F+E1-E1/F1F	7E:8F	?Fc                 z  K   t        j                  t              4 d {   }|j                  d       d {    d d d       d {    d }t	        j
                  t        d      D cg c]
  } ||       c}  d {    t        j                  t              4 d {   }|j                  d       d {   }|j                          d {   }d d d       d {    t              dk(  sJ y 7 7 7 # 1 d {  7  sw Y   xY wc c}w 7 7 x7 a7 K7 =# 1 d {  7  sw Y   MxY ww)NzHcreate table multiple_connections (i integer primary key asc, k integer)c                   K   t        j                  t              4 d {   }|j                  d| g       d {    |j	                          d {    d d d       d {    y 7 H7 /7 7 # 1 d {  7  sw Y   y xY ww)Nz/insert into multiple_connections (k) values (?))r$   r%   r   r(   r?   )ir-   s     r   do_one_connz8SmokeTest.test_multiple_connections.<locals>.do_one_connP   sd      ((11Rjj!RUVTWXXXiik!! 211X! 2111sf   BA)BA1A+A1A-A1B#A/$B+A1-A1/B1B7A:8B?B
   z"select * from multiple_connections)	r$   r%   r   r(   asynciogatherranger)   len)r   r-   rF   rE   r.   r/   s         r   test_multiple_connectionsz#SmokeTest.test_multiple_connectionsI   s     $$W--**9   .-	"
 nnuRyAy!{1~yABBB$$W--::&JKKF**D .- 4yB# . .--- BB-K* .---s   D;C<D;DC>DD;	D 
#D;-D<D;D!D;%D&D;)D&>D ?D&D"D&D;&D$'D;>D D;DD	DD;D; D&"D&$D;&D8,D/-D84D;c           
        K   t        j                  t              4 d {   }|j                  d       d {    t	        j
                  t        d      D cg c]  }|j                  d|g       c}  d {    |j                          d {    d d d       d {    t        j                  t              4 d {   }|j                  d       d {   }|j                          d {   }d d d       d {    t              dk(  sJ y 7 7 c c}w 7 7 7 # 1 d {  7  sw Y   xY w7 z7 c7 M7 ?# 1 d {  7  sw Y   OxY ww)NzDcreate table multiple_queries (i integer primary key asc, k integer)rG   z+insert into multiple_queries (k) values (?)zselect * from multiple_queries)
r$   r%   r   r(   rH   rI   rJ   r?   r)   rK   )r   r-   rE   r.   r/   s        r   test_multiple_querieszSmokeTest.test_multiple_queries]   s-    $$W--**9  
 .. #2Y& JJLqcR&   ))+ .- $$W--::&FGGF**D .- 4yB' .  .--- .G* .---s   EDED+D D+D 
4D+;D%<D+D'D+E#D)$!EE E	EEE6E7E;EEED+ D+'D+)E+D=1D42D=9EEEEEEEEc                   K   t        j                  t              4 d {   }|j                          d {   }|j	                  d       d {    |j                  dt        d      D cg c]  }|g c}       d {    |j                          d {    d d d       d {    t        j                  t              4 d {   }|j	                  d       d {   }g }|2 3 d {   }|j                  |       7 7 7 c c}w 7 7 {7 m# 1 d {  7  sw Y   }xY w7 b7 K7 @6 d d d       d {  7   n# 1 d {  7  sw Y   nxY wt              dk(  sJ y w)NzCcreate table iterable_cursor (i integer primary key asc, k integer)z*insert into iterable_cursor (k) values (?)rG   zselect * from iterable_cursor
r$   r%   r   r.   r(   executemanyrJ   r?   appendrK   r   r-   r.   rE   r/   rows         r   test_iterable_cursorzSmokeTest.test_iterable_cursors   s7    $$W--99;&F..X   $$<ERTI>VIqsI>V   ))+ .- $$W--::&EFFFD# !cC  .& ?W  .--- .F!V .---- 4yBs  E/D
E/DDDDD/
D9
DDDDD E/+D,!E/D0E/E	&D2'E	/D63D44D67E	
E/DDDDE/D-!D$"D-)E/2E	4D66E	7E/EE/	EEEE/c           	         K   i  fd}t        j                  d      4 d {   }|j                  d       d {    |j                  dd       d {    |j                          d {    t	        d      D cg c]  }t        |||f       }}|D ]  }|j                           |D ]  }|j                           d d d       d {     j                  t              d       j                         D ]  } j                  t        |      d        y 7 7 7 7 c c}w 7 ]# 1 d {  7  sw Y   mxY ww)	Nc                     fd}j                  |       5  t        j                         }|j                   |             }|j	                          || <   d d d        y # 1 sw Y   y xY w)Nc                    K   j                  d      4 d {   } | j                          d {   }j                  t        |      d       |cd d d       d {    S 7 J7 47 	# 1 d {  7  sw Y   y xY ww)Nr>   r#   )r(   r)   r*   rK   )r.   r/   connr   s     r   queryz>SmokeTest.test_multi_loop_usage.<locals>.runner.<locals>.query   s^     <<(;<<!'!22D$$SY2 =<<2 =<<<sT   A?A$A?A*A& A*A?A(A?&A*(A?*A<0A31A<8A?)subTestrH   new_event_looprun_until_completer+   )krY   rZ   loopr/   resultsr   s    `   r   runnerz/SmokeTest.test_multi_loop_usage.<locals>.runner   sQ      a--/..uw7

!
	 !s   A A##A,:memory:z'create table foo (id int, name varchar)z%insert into foo values (?, ?), (?, ?))r   Sallyr#   Janet   )targetargsr#   )r$   r%   r(   r?   rJ   r   startjoinr*   rK   values)r   ra   r-   r^   threadsthreadr/   r`   s   `      @r   test_multi_loop_usagezSmokeTest.test_multi_loop_usage   s    	" $$Z00B**FGGG**79Q   ))+DI!HMHqvV1b':HGM! "! " 10 	Wq)NN$DSY* % 1G M 1000s   "E	D%E	D4D' D4D)D41D+2D4D-0D4	E	D2AE	'D4)D4+D4-D42E	4E:D=;EE	c           	        K   t        j                  t              4 d {   }|j                         4 d {   }|j	                  d       d {    |j                  dt        d      D cg c]  }|g c}       d {    |j                          d {    d d d       d {    d d d       d {    t        j                  t              4 d {   }|j	                  d      4 d {   }g }|2 3 d {   }|j                  |       7 7 7 c c}w 7 7 7 ~# 1 d {  7  sw Y   xY w7 # 1 d {  7  sw Y   xY w7 z7 b7 W6 d d d       d {  7   n# 1 d {  7  sw Y   nxY wd d d       d {  7   n# 1 d {  7  sw Y   nxY wt              dk(  sJ y w)NzBcreate table context_cursor (i integer primary key asc, k integer)z)insert into context_cursor (k) values (?)rG   zselect * from context_cursorrP   rS   s         r   test_context_cursorzSmokeTest.test_context_cursor   s^    $$W--yy{{fnn=   ((?"'),)QaS),   iik!! #{ .- $$W--zz"@AAV!' %#KK$! ." - " #{{{ .--- .A% BAAAA .---- 4yBss  F?DF?EDED-D D-0
D":
D-D'D-D)D-!E,D+-E1F?<E=!F?EF?"F8E9F<E2EE
E	E2F?E D-"D-)D-+E-D?	3D64D?	;EF?E
EEF?FEE2 F+E.,F2F	8E;9F	 FF?FF?F+F" F+'F?c                   K   t        j                  t              4 d {   }|j                          d {   }|j	                  d       d {   }| j                  ||d       |j                  dddg       d {   }| j                  ||       |j                  d       d {   }| j                  ||       d d d       d {    y 7 7 7 7 X7 /7 # 1 d {  7  sw Y   y xY ww)Nz;create table test_cursor_return_self (i integer, k integer)zcursor execute returns itselfz1insert into test_cursor_return_self values (?, ?))r   r   )r#   r#   zinsert into test_cursor_return_self values (3, 3);insert into test_cursor_return_self values (4, 4);insert into test_cursor_return_self values (5, 5);)r$   r%   r   r.   r(   r*   rQ   executescript)r   r-   r.   results       r   test_cursor_return_selfz!SmokeTest.test_cursor_return_self   s     $$W--99;&F!>>M F VV-LM!--CffEU F VV,!//E F
 VV,% .--&

 .---s   C4CC4CCCC.C C*C+C,CC4CC4CCCCC4C1%C(&C1-C4c                 
  K   t        j                  t              4 d {   }| j                  |j                  d       |j                         4 d {   }| j                  |j                         |j                  d       d {    |j                  d       d {    | j                  |j                         |j                          d {    | j                  |j                         d d d       d {    | j                  |j                  d       | j                  |j                         | j                  |j                  t               |j                         4 d {   }|j                  d       d {    |j                          d {   }| j!                  |t"               | j                  |d       | j%                  t&              5  |d   }d d d        d d d       d {    |j                         4 d {   }t         j(                  |_        | j                  |j                  t         j(                         |j                  d       d {    |j                          d {   }| j!                  |t         j(                         | j                  |d   d       | j                  |d   d	       | j                  |d   d       | j                  |d
   d	       d d d       d {    t         j(                  |_        t*        |_        | j                  |j                  t         j(                         | j                  |j                  t*               |j                         4 d {   }|j                  d       d {    |j                          d {   }| j!                  |t         j(                         | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d
   d       d d d       d {    d d d       d {    y 7 77 7 7 7 7 f# 1 d {  7  sw Y   wxY w7 7 7 # 1 sw Y   xY w7 # 1 d {  7  sw Y   xY w7 7 D7 /7 # 1 d {  7  sw Y   xY w7 D7 .7 7 # 1 d {  7  sw Y   xY w7 # 1 d {  7  sw Y   y xY ww)Nr   zKcreate table test_properties (i integer primary key asc, k integer, d text)z3insert into test_properties (k, d) values (1, 'hi')r   zselect * from test_properties)r   r   hir^   r#   ru   ds   hi)r$   r%   r   r*   total_changesr.   assertFalsein_transactionr(   
assertTruer?   assertIsNonerow_factorytext_factorydefault_text_factoryfetchoner&   tupleassertRaises	TypeErrorRowbytes)r   r-   r.   rT   _s        r   test_connection_propertiesz$SmokeTest.test_connection_properties   s    $$W--R--q1yy{{f  !2!23nnE   nnI    1 12iik!!  !2!23 #{ R--q1bnn-R__.BCyy{{fnn%DEEE"OO--%%c51  l3&&y1CA 2 #{ yy{{f%.]]"  !3!3Y]]Cnn%DEEE"OO--%%c9==9  Q+  Q.  S1-  S40 #{ ']]BN#BOR^^Y]];R__e4yy{{fnn%DEEE"OO--%%c9==9  Q+  Q/  S1-  S51 #{[ .-- # " #{{{$ #E- 21 #{{{ # F-	 #{{{  #E- #{{{[ .---s  TQT1S2QS20Q)	Q
Q)"Q #2Q)Q#Q)5S2 Q&A/S20Q?1S24R	R
R!R"AR#R)R1S2<R=S2R.S2AR:-R1.R:R4A8R:>S2	R7
BS2SS2S%S&S=S>A8S6S2SS2TS0TS2Q) Q)#Q)&S2)Q<	/Q20Q<	7	S2RRRRS2R+	R!R+	&	S21R:4R:7S2:S	 SS		S2SSS2S-	!S$"S-	)S20T2T8S;9T Tc                 j  K   t        j                  t              4 d {   }|j                  d       d {    |j                  d       d {    |j	                          d {    d d d       d {    t        j                  t              4 d {   }|j                  d       d {   }|j                          d {   }| j                  |g d       d d d       d {    y 7 7 7 7 7 # 1 d {  7  sw Y   xY w7 y7 b7 L7 *# 1 d {  7  sw Y   y xY ww)NzBcreate table test_fetch_all (i integer primary key asc, k integer)z<insert into test_fetch_all (k) values (10), (24), (16), (32)z)select k from test_fetch_all where k < 30))rG   )   )   )r$   r%   r   r(   r?   r)   r*   r,   s       r   test_fetch_allzSmokeTest.test_fetch_all  s     $$W--**T   **N   ))+ .- $$W--::&QRRF**DT#89 .-- .  .--- .R* .---s   D3C7D3DC9DC;D*C=+D/D3:C?;!D3DD3 D5D6DDD&D31D2D39D;D=D?D3DD
DD3DDD3D0$D'%D0,D3c                   K   t        j                  t              4 d{   }	 |j                  d       d{    |j	                  d       d{    ddd      d{    y7 H7 07 # t
        $ r}d|j                  vsJ Y d}~5d}~wt        $ r}t        d      |d}~ww xY w7 I# 1 d{  7  sw Y   yxY ww)z@Assert that after enabling extension loading, they can be loadedNTtestznot authorizedzKpython was not compiled with sqlite3 extension support, so we can't test it)	r$   r%   r   enable_load_extensionload_extensionr   rg   AttributeErrorr   )r   r-   es      r   test_enable_load_extensionz$SmokeTest.test_enable_load_extension  s     $$W--	..t444''/// .--4/# 6'qvv555! =  .---s   CA)CB/A/A+A/A-A/C#B-$C+A/-A//	B*8BB/B*B%%B**B/-C/C5B86C=Cc                 f  K   t        j                  t              4 d{   }|j                  d d       d{    | j	                  t
              5  |j                  d       d{    ddd       ddd      d{    y7 g7 N7 !# 1 sw Y    xY w7 # 1 d{  7  sw Y   yxY ww)ze
        Assert that after setting a progress handler returning 1, DB operations are aborted
        Nc                       y)Nr   r<   r<   r   r   <lambda>z5SmokeTest.test_set_progress_handler.<locals>.<lambda>*  s    !r   r   zIcreate table test_progress_handler (i integer primary key asc, k integer))r$   r%   r   set_progress_handlerr   r   r(   r   r-   s     r   test_set_progress_handlerz#SmokeTest.test_set_progress_handler%  s      $$W--)))Q777""#34jj_   5 .--7 54 .---s~   B1BB1BB
BB*B+B/B7B1BB1
BBB	BB1B."B%#B.*B1c                   K   d }d }t        j                  t              4 d{   }|j                  dd|       d{    |j                  dd|       d{    |j	                  d      4 d{   }|j                          d{   }| j                  |d   d	       ddd      d{    |j	                  d
      4 d{   }|j                          d{   }| j                  |d   d       ddd      d{    ddd      d{    y7 7 7 7 7 7 v# 1 d{  7  sw Y   xY w7 s7 ]7 :# 1 d{  7  sw Y   JxY w7 A# 1 d{  7  sw Y   yxY ww)z<Assert that after creating a custom function, it can be usedc                       y)Nno argr<   r<   r   r   no_argz.SmokeTest.test_create_function.<locals>.no_arg3  s    r   c                     | dz  S Nr#   r<   nums    r   one_argz/SmokeTest.test_create_function.<locals>.one_arg6      7Nr   Nr   r   r   r   zSELECT no_arg();r   zSELECT one_arg(10);   )r$   r%   r   create_functionr(   r   r*   )r   r   r   r-   resrT   s         r   test_create_functionzSmokeTest.test_create_function0  s$    		 $$W--$$Xq&999$$Y7;;;zz"455LLN*  Q2 65 zz"788CLLN*  Q, 98 .--9;5* 6555 9* 9888 .---s  $E3D E3ED"ED$E6D&7E:D,D(D,(E3D*4EEEE%E&E?E
EEE3EE3"E$E&E(D,*E,D>	2D53D>	:EEEE	EE	EE3E0$E'%E0,E3c                 R  K   d }t        j                  t              4 d{   }|j                  dd|d       d{    |j	                  d       d{    |j	                  d       d{    ddd      d{    y7 d7 I7 27 7 # 1 d{  7  sw Y   yxY ww)	zAssert that after creating a deterministic custom function, it can be used.

        https://sqlite.org/deterministic.html
        c                     | dz  S r   r<   r   s    r   r   z=SmokeTest.test_create_function_deterministic.<locals>.one_argK  r   r   Nr   r   T)deterministicz"create table foo (id int, bar int)z#create index t on foo(one_arg(bar)))r$   r%   r   r   r(   )r   r   r-   s      r   "test_create_function_deterministicz,SmokeTest.test_create_function_deterministicE  s     	 $$W--$$Y7$$OOO**ABBB **BCCC .--OB D .---sz   !B'BB'B B
BBB2B3B7B'BB'
BBBB'B$BB$ B'c                 P  K   g dt         ffd}t        j                  t              4 d {   }|j	                  |       d {    |j                  d       d {    | j                  d       d d d       d {    y 7 Y7 B7 +7 # 1 d {  7  sw Y   y xY ww)N	statementc                 (    j                  |        y r   )rR   )r   
statementss    r   callbackz3SmokeTest.test_set_trace_callback.<locals>.callbackX  s    i(r   z	select 10)r7   r$   r%   r   set_trace_callbackr(   assertIn)r   r   r-   r   s      @r   test_set_trace_callbackz!SmokeTest.test_set_trace_callbackU  s     
	) 	) $$W--''111**[)))MM+z2	 .--1) .---sh   ,B&B	B&BB	B!B"B8B&BB&BBB&B#BB#B&c                   K   t        d      }| j                  t        d      5  t        j                  |      4 d {   }| j                  |       d d d       d {    d d d        | j                  t        d      5  t        j                  |       d {    d d d        y 7 j7 K# 1 d {  7  sw Y   [xY w# 1 sw Y   _xY w7 2# 1 sw Y   y xY ww)Nz!/something/that/shouldnt/exist.dbzunable to open database)r   assertRaisesRegexr   r$   r%   r{   )r   bad_dbr-   s      r   test_connect_errorzSmokeTest.test_connect_errora  s     9:##$46OP ((00B!!"% 10 Q ##$46OP##F+++ QP 10000 QP
 , QPs   "CCB)CB-CB+ C$CCCC 	C)C+C-B?	3B64B?	;CCCCCCc                   K   t        j                  d      4 d {   }|j                  d       d {    |j                  dddg       d {    |j	                         2 cg c3 d {   }|7 Y7 B7 (7 6 nc c}w }}| j                  |g d       d d d       d {  7   y # 1 d {  7  sw Y   y xY ww)Nrb   ,create table foo (i integer, k charvar(250))insert into foo values (?, ?)r   hellor#   world)zBEGIN TRANSACTION;z-CREATE TABLE foo (i integer, k charvar(250));z$INSERT INTO "foo" VALUES(1,'hello');z$INSERT INTO "foo" VALUES(2,'world');zCOMMIT;)r$   r%   r(   rQ   iterdumpr*   )r   r-   lineliness       r   test_iterdumpzSmokeTest.test_iterdumpj  s     $$Z00B**KLLL../,1M   -/KKM::DT 1L ;::E:	 10000s   CA6CB-A8B-A:B-(B *A>.A</A>2B 6C8B-:B-<A>>B ?B-C&B)'C-B?3B64B?;Cc                   K   t        j                  t               d {   }|j                  d       d {   }|j	                          d {    | j                  t        d      5  |j                          d {    d d d        | j                  t        d      5  |j                          d {    d d d        y 7 7 7 w7 J# 1 sw Y   IxY w7 !# 1 sw Y   y xY ww)Nr"   zConnection closed)r$   r%   r   r(   r+   r   
ValueErrorr)   )r   r-   r.   s      r    test_cursor_on_closed_connectionz*SmokeTest.test_cursor_on_closed_connection}  s     $$W--zz-00hhj##J0CD//### E##J0CD//### ED .0# ED $ EDs   C&CC&CC&CC&+C?C
 CC&"C6C7C;
C&C&C&
CCC&CC#C&c                   K   t        j                  t               d {   }|j                  d       d {   }g }t	        d      D ]k  }|dk(  r2|j                  t        j                  |j                                      |j                  t        j                  |j                                      m |D ]  }	 | d {     y 7 7 7 # t        j                  $ r Y ,w xY ww)Nr"   d   2   )r$   r%   r   r(   rJ   rR   rH   ensure_futurer+   r)   sqlite3ProgrammingError)r   r-   r.   tasksrE   tasks         r   %test_cursor_on_closed_connection_loopz/SmokeTest.test_cursor_on_closed_connection_loop  s     $$W--zz-00sABwW22288:>?LL..v/@AB  D

  .0 ++ sV   C*CC*CBC*>CCCC*C*CC'$C*&C''C*c                    K   t        j                  t               d {   }|j                          d {    |j                          d {    y 7 57 7 	wr   )r$   r%   r   r+   r   s     r   test_close_twicezSmokeTest.test_close_twice  sH     $$W--hhj hhj . 	s1   AAAAAAAAAc           	        K   d }t        j                  d      4 d {   }t        j                  d      4 d {   }|j                  d       d {    |j                  dddg       d {    |j	                          d {    | j                  t        d      5  |j                  d       d {    d d d        |j                  ||	       d {    |j                  d      4 d {   }|j                          d {   }| j                  |ddg       d d d       d {    d d d       d {    d d d       d {    y 7 :7 7 	7 7 7 # 1 sw Y   xY w7 7 ~7 h7 F# 1 d {  7  sw Y   VxY w7 M# 1 d {  7  sw Y   ]xY w7 T# 1 d {  7  sw Y   y xY ww)
Nc                     t        | ||       y r   )print)abcs      r   progressz1SmokeTest.test_backup_aiosqlite.<locals>.progress  s    !QNr   rb   r   r   r   r   no such table: foor>   )r   )
r$   r%   r(   rQ   r?   r   r   backupr)   r*   )r   r   db1db2r.   r/   s         r   test_backup_aiosqlitezSmokeTest.test_backup_aiosqlite  s{    	 $$Z00C9J9J:
 :
++LMMM///,1M   **,''(8:NOkk"5666 P **S8*444{{#6776#__..  l'CD 87:
 :
000 :
 N  7 PO 57. 8777:
 :
 :
 :
0000sP  F?EF?F*EF*FEF2E"3F
E$F%E(:E&
;E(?FE4F7E6
8F;E<E8
E<(F3E:4F8F*FF*F?F(F?F*F"F$F&E((E1-F6F8E<:F<FFF
FF*F%	FF%	!F*(F?*F<0F31F<8F?c                   K   t        j                  d      4 d {   }t        j                  d      5 }|j                  d       d {    |j	                  dddg       d {    |j                          d {    | j                  t        d      5  |j                  d       d d d        |j                  |       d {    |j                  d      }|j                         }| j                  |ddg       d d d        d d d       d {    y 7 7 7 7 # 1 sw Y   xxY w7 f# 1 sw Y   0xY w7 '# 1 d {  7  sw Y   y xY ww)Nrb   r   r   r   r   r   r>   )r$   r%   r   r(   rQ   r?   r   r   r   r)   r*   )r   r   r   r.   r/   s        r   test_backup_sqlitezSmokeTest.test_backup_sqlite  s    $$Z00C,kk"PQQQoo3lL5Q   jjl""++,<>RSKK 34 T jjo%%%89(  l'CD - 100Q #SS & -, 1000s   EDED?D1DD1'D(D1?D! D1D#,D1D/	9D1D?
ED=ED1D1!D1#D,(D11D:	6D?=E?EEEEN)r9   r:   r;   classmethodr   r   r   r0   r2   rB   rL   rN   rU   rm   ro   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   r   r   r   r      s     1@((,&+B*-*52n:	-*D 
3,&$E,Er   r   )rH   r   pathlibr   r   	threadingr   unittestr   TestCaser   r$   helpersr
   r   _sqlite3r   r~   ImportErrorr7   r   r<   r   r   <module>r      sW       $  B  !
y/F
nE nE	  s   A AA