+
    Bi$$                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt	^ RI
t
^ RIHtHtHt ^ RIHt ^ RIHtHt ^ RIHtHtHt ^ RIHtHtHtHtHt ^RIHtHt ^RIHt  ! R	 R
]P>                  4      t  ! R R]P>                  4      t! ! R R]P>                  4      t"]PF                  ! ]$! ]PJ                  R4      R4       ! R R]P>                  4      4       t& ! R R]P>                  4      t' ! R R]P>                  4      t( ! R R]P>                  4      t)]PT                  ! 4        ! R R]P>                  4      4       t+ ! R R]P>                  4      t, ! R R]P>                  4      t- ! R R ]P>                  4      t. ! R! R"]]P>                  4      t/ ! R# R$]P>                  4      t0]! 4        ! R% R&]P>                  4      4       t1 ! R' R(]P>                  4      t2]3R)8X  d   ]Ph                  ! 4        R# R# )*    N)SHORT_TIMEOUTcheck_disallow_instantiationrequires_subprocess)
gc_collect)threading_helperimport_helper)SEEK_SETSEEK_CURSEEK_END)TESTFNTESTFN_UNDECODABLEunlinktemp_dirFakePath)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V tR# )ModuleTestsc                r    V P                  \        P                  R R\        P                  ,          4       R# )z2.0zapilevel is %s, should be 2.0N)assertEqualsqliteapilevelselfs   &3/usr/lib/python3.14/test/test_sqlite3/test_dbapi.pytest_api_levelModuleTests.test_api_level.   s%    %86??J	L    c                v    V P                  \        P                  0 RmR\        P                  ,          4       R# )r   z'threadsafety is %d, should be 0, 1 or 3N>   r         )assertInr   threadsafetyr   s   &r   test_thread_safetyModuleTests.test_thread_safety2   s)    f))9?))*	+r   c                r    V P                  \        P                  R R\        P                  ,          4       R# )qmarkz%paramstyle is '%s', should be 'qmark'N)r   r   
paramstyler   s   &r   test_param_styleModuleTests.test_param_style7   s+    **G@**+	,r   c                N    V P                  \        P                  \        4       R # N)assertIsSubclassr   Warning	Exceptionr   s   &r   test_warningModuleTests.test_warning<   s    fnni8r   c                N    V P                  \        P                  \        4       R # r-   )r.   r   Errorr0   r   s   &r   
test_errorModuleTests.test_error?   s    fllI6r   c                b    V P                  \        P                  \        P                  4       R # r-   )r.   r   InterfaceErrorr4   r   s   &r   test_interface_error ModuleTests.test_interface_errorB   s    f33V\\Br   c                b    V P                  \        P                  \        P                  4       R # r-   )r.   r   DatabaseErrorr4   r   s   &r   test_database_errorModuleTests.test_database_errorE   s    f22FLLAr   c                b    V P                  \        P                  \        P                  4       R # r-   )r.   r   	DataErrorr<   r   s   &r   test_data_errorModuleTests.test_data_errorH   s    f..0D0DEr   c                b    V P                  \        P                  \        P                  4       R # r-   )r.   r   OperationalErrorr<   r   s   &r   test_operational_error"ModuleTests.test_operational_errorK       f55v7K7KLr   c                b    V P                  \        P                  \        P                  4       R # r-   )r.   r   IntegrityErrorr<   r   s   &r   test_integrity_error ModuleTests.test_integrity_errorN   s    f33V5I5IJr   c                b    V P                  \        P                  \        P                  4       R # r-   )r.   r   InternalErrorr<   r   s   &r   test_internal_errorModuleTests.test_internal_errorQ   s    f22F4H4HIr   c                b    V P                  \        P                  \        P                  4       R # r-   )r.   r   ProgrammingErrorr<   r   s   &r   test_programming_error"ModuleTests.test_programming_errorT   rG   r   c                b    V P                  \        P                  \        P                  4       R # r-   )r.   r   NotSupportedErrorr<   r   s   &r   test_not_supported_error$ModuleTests.test_not_supported_errorW   s    f668L8LMr   c                   . R NRNRNRNRNRNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNpVRNRO.,          pV. RPNRQNRRNRSNRTNRUNRVNRWNRXNRYNRZNR[NR\NR]NR^NR_NR`NRaNRbNRcNRdNReNRfNRgNRhNRiNRjNRkNRlNRmNRnNRoNRpNRqNRrNRsNRtNRuNRvNRwNRxNRyNRzNR{NR|NR}NR~NRNRNRNRNRNRNRNRNRN,          p\         P                  R8  d   V. RO,          p\         P                  R8  d   V. RO,          p\         P                  R8  d   VRR.,          p\         P                  R8  d   VRR.,          p\         P                  R8  d   V. RO,          p\         P                  R8  d   V. RO,          p\         P                  R8  d   VP                  R4       V F<  pV P                  VR7      ;_uu_ 4        V P	                  \         V4       RRR4       K>  	  R#   + '       g   i     KS  ; i)SQLITE_ABORTSQLITE_ALTER_TABLESQLITE_ANALYZESQLITE_ATTACHSQLITE_AUTHSQLITE_BUSYSQLITE_CANTOPENSQLITE_CONSTRAINTSQLITE_CORRUPTSQLITE_CREATE_INDEXSQLITE_CREATE_TABLESQLITE_CREATE_TEMP_INDEXSQLITE_CREATE_TEMP_TABLESQLITE_CREATE_TEMP_TRIGGERSQLITE_CREATE_TEMP_VIEWSQLITE_CREATE_TRIGGERSQLITE_CREATE_VIEWSQLITE_CREATE_VTABLESQLITE_DELETESQLITE_DENYSQLITE_DETACHSQLITE_DONESQLITE_DROP_INDEXSQLITE_DROP_TABLESQLITE_DROP_TEMP_INDEXSQLITE_DROP_TEMP_TABLESQLITE_DROP_TEMP_TRIGGERSQLITE_DROP_TEMP_VIEWSQLITE_DROP_TRIGGERSQLITE_DROP_VIEWSQLITE_DROP_VTABLESQLITE_EMPTYSQLITE_ERRORSQLITE_FORMATSQLITE_FULLSQLITE_FUNCTIONSQLITE_IGNORESQLITE_INSERTSQLITE_INTERNALSQLITE_INTERRUPTSQLITE_IOERRSQLITE_LIMIT_WORKER_THREADSSQLITE_LOCKEDSQLITE_MISMATCHSQLITE_MISUSESQLITE_NOLFSSQLITE_NOMEMSQLITE_NOTADBSQLITE_NOTFOUNDSQLITE_NOTICE	SQLITE_OKSQLITE_PERMSQLITE_PRAGMASQLITE_PROTOCOLSQLITE_RANGESQLITE_READSQLITE_READONLYSQLITE_RECURSIVESQLITE_REINDEX
SQLITE_ROWSQLITE_SAVEPOINTSQLITE_SCHEMASQLITE_SELECTSQLITE_TOOBIGSQLITE_TRANSACTIONSQLITE_UPDATESQLITE_WARNINGSQLITE_LIMIT_LENGTHSQLITE_LIMIT_SQL_LENGTHSQLITE_LIMIT_COLUMNSQLITE_LIMIT_EXPR_DEPTHSQLITE_LIMIT_COMPOUND_SELECTSQLITE_LIMIT_VDBE_OPSQLITE_LIMIT_FUNCTION_ARGSQLITE_LIMIT_ATTACHED SQLITE_LIMIT_LIKE_PATTERN_LENGTHSQLITE_LIMIT_VARIABLE_NUMBERSQLITE_LIMIT_TRIGGER_DEPTHPARSE_DECLTYPESPARSE_COLNAMESSQLITE_ABORT_ROLLBACKSQLITE_AUTH_USERSQLITE_BUSY_RECOVERYSQLITE_BUSY_SNAPSHOTSQLITE_CANTOPEN_CONVPATHSQLITE_CANTOPEN_FULLPATHSQLITE_CANTOPEN_ISDIRSQLITE_CANTOPEN_NOTEMPDIRSQLITE_CONSTRAINT_CHECKSQLITE_CONSTRAINT_COMMITHOOKSQLITE_CONSTRAINT_FOREIGNKEYSQLITE_CONSTRAINT_FUNCTIONSQLITE_CONSTRAINT_NOTNULLSQLITE_CONSTRAINT_PRIMARYKEYSQLITE_CONSTRAINT_ROWIDSQLITE_CONSTRAINT_TRIGGERSQLITE_CONSTRAINT_UNIQUESQLITE_CONSTRAINT_VTABSQLITE_CORRUPT_VTABSQLITE_IOERR_ACCESSSQLITE_IOERR_AUTHSQLITE_IOERR_BLOCKEDSQLITE_IOERR_CHECKRESERVEDLOCKSQLITE_IOERR_CLOSESQLITE_IOERR_CONVPATHSQLITE_IOERR_DELETESQLITE_IOERR_DELETE_NOENTSQLITE_IOERR_DIR_CLOSESQLITE_IOERR_DIR_FSYNCSQLITE_IOERR_FSTATSQLITE_IOERR_FSYNCSQLITE_IOERR_GETTEMPPATHSQLITE_IOERR_LOCKSQLITE_IOERR_MMAPSQLITE_IOERR_NOMEMSQLITE_IOERR_RDLOCKSQLITE_IOERR_READSQLITE_IOERR_SEEKSQLITE_IOERR_SHMLOCKSQLITE_IOERR_SHMMAPSQLITE_IOERR_SHMOPENSQLITE_IOERR_SHMSIZESQLITE_IOERR_SHORT_READSQLITE_IOERR_TRUNCATESQLITE_IOERR_UNLOCKSQLITE_IOERR_VNODESQLITE_IOERR_WRITESQLITE_LOCKED_SHAREDCACHESQLITE_NOTICE_RECOVER_ROLLBACKSQLITE_NOTICE_RECOVER_WALSQLITE_OK_LOAD_PERMANENTLYSQLITE_READONLY_CANTLOCKSQLITE_READONLY_DBMOVEDSQLITE_READONLY_RECOVERYSQLITE_READONLY_ROLLBACKSQLITE_WARNING_AUTOINDEXSQLITE_CORRUPT_SEQUENCESQLITE_LOCKED_VTABSQLITE_CANTOPEN_DIRTYWALSQLITE_ERROR_SNAPSHOTSQLITE_IOERR_CORRUPTFS)constN)r"      r   )SQLITE_IOERR_BEGIN_ATOMICSQLITE_IOERR_COMMIT_ATOMICSQLITE_IOERR_ROLLBACK_ATOMIC)r"      r   )SQLITE_ERROR_MISSING_COLLSEQSQLITE_ERROR_RETRYSQLITE_READONLY_CANTINITSQLITE_READONLY_DIRECTORY)r"      r   r"      r   )r"      r   )SQLITE_CANTOPEN_SYMLINKSQLITE_CONSTRAINT_PINNEDSQLITE_OK_SYMLINK)r"       r   )SQLITE_BUSY_TIMEOUTSQLITE_CORRUPT_INDEXSQLITE_IOERR_DATA)r"   "   r   )r   sqlite_version_infoappendsubTestassertHasAttr)r   constsr   s   &  r   test_module_constants!ModuleTests.test_module_constantsZ   sT   P
P
 P
 P
 	P

 P
 P
 P
  P
 P
 "P
 "P
 'P
 'P
 )P
 &P
  $!P
" !#P
$ #%P
& 'P
( )P
* +P
, -P
.  /P
0  1P
2 %3P
4 %5P
6 '7P
8 $9P
: ";P
< =P
> !?P
@ AP
B CP
D EP
F GP
H IP
J KP
L MP
N OP
P QP
R SP
T *UP
V WP
X YP
Z [P
\ ]P
^ _P
` aP
b cP
d eP
f gP
h iP
j kP
l mP
n oP
p qP
r sP
t uP
v wP
x yP
z {P
| }P
~ P
@ AP
B !CP
D EP
F GP
J "KP
L &MP
N "OP
P &QP
R +SP
T #UP
V (WP
X $YP
Z /[P
\ +]P
^ )_P
b 	$&677 9
#9
9
 #9
 #	9

 '9
 '9
 $9
 (9
 &9
 +9
 +9
 )9
 (9
 +9
 &9
  (!9
" '#9
$ %%9
& "'9
( ")9
*  +9
, #-9
. -/9
0 !19
2 $39
4 "59
6 (79
8 %99
: %;9
< !=9
> !?9
@ 'A9
B  C9
D  E9
F !G9
H "I9
J  K9
L  M9
N #O9
P "Q9
R #S9
T #U9
V &W9
X $Y9
Z "[9
\ !]9
^ !_9
` (a9
b -c9
d (e9
f )g9
h 'i9
j &k9
l 'm9
n 'o9
p 'q9
 9	
t %%3  F
 %%3  F %%302FGGF%%313JKKF%%3  F
 %%3  F
 %%3MM23EE**""651 +* ***s   (IIc           	     0   R p\         P                  P                  R4      '       d   \        P                  pM\        P
                  p\        4       ;_uu_ 4       pV P                  \        P                  V4      ;_uu_ 4       p\        P                  ! V4       RRR4       XP                  pV P                  VP                  V4       V P                  VP                  R4       RRR4       R#   + '       g   i     L^; i  + '       g   i     R# ; i)unable to open database filewinNr_   )sysplatform
startswithr   r   r_   r   assertRaisesRegexr4   connect	exceptionr   sqlite_errorcodeassertStartsWithsqlite_errorname)r   err_msgerr_codedbcmes   &     r   test_error_code_on_exception(ModuleTests.test_error_code_on_exception  s    0<<""5))33H--HZZ2''g>>"r" ?AQ//:!!!"4"46GH Z>> ZZs%   )DC1	AD1D<DD	c           	     $   \        4       ;_uu_ 4       pV;_uu_ 4        VP                  R 4       RRR4       RpV P                  \        P                  V4      ;_uu_ 4       pVP                  R4       RRR4       XP
                  pV P                  VP                  \        P                  4       V P                  VP                  R4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)z&create table t(t integer check(t > 0))Nzconstraint failedzinsert into t values(-1)r   )
r   executer	  r   rI   r  r   r  r   r  )r   conerrmsgr  excs   &    r   %test_extended_error_code_on_exception1ModuleTests.test_extended_error_code_on_exception  s    #DE (F''(=(=vFF"67 G,,CS11#;;=S113LM  GF	 s:   C>C	2C>"C+	4AC>C(#C>+C;6C>>D	c           
         \        4       ;_uu_ 4       p\        V \        V! R 4      4      4       \        V \        P                  4       RRR4       R#   + '       g   i     R# ; i)select 1N)r   r   typer   Blobr   cxs   & r   test_disallow_instantiation'ModuleTests.test_disallow_instantiation%  s=    "(tBzN/CD(v{{; s   6AA$	c                    V P                  \        P                  ! R 4      4       V P                  \        P                  ! R4      4       R# )zselect tzcreate table t(t);N)assertFalser   complete_statement
assertTruer   s   &r   test_complete_statement#ModuleTests.test_complete_statement*  s3    22:>?112FGHr    N)__name__
__module____qualname____firstlineno__r   r%   r*   r1   r5   r9   r=   rA   rE   rJ   rN   rR   rV   r  r  r  r#  r)  __static_attributes____classdictcell____classdict__s   @r   r   r   -   ss     L+
,
97CBFMKJMNo2bI
N<
I Ir   r   c                      a  ] tR tR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V t R# )ConnectionTestsi/  c                    \         P                  ! R 4      V n        V P                  P                  4       pVP	                  R4       VP	                  RR4       VP                  4        R# ):memory:z4create table test(id integer primary key, name text)!insert into test(name) values (?)Nfoo)r   r
  r"  cursorr  closer   cus   & r   setUpConnectionTests.setUp1  sG    ..,WW^^


IJ


6A

r   c                :    V P                   P                  4        R # r-   r"  r<  r   s   &r   tearDownConnectionTests.tearDown8      r   c                :    V P                   P                  4        R # r-   r"  commitr   s   &r   test_commitConnectionTests.test_commit;  s    r   c                n    V P                   P                  4        V P                   P                  4        R # r-   rG  r   s   &r   test_commit_after_no_changes,ConnectionTests.test_commit_after_no_changes>  s      	r   c                :    V P                   P                  4        R # r-   r"  rollbackr   s   &r   test_rollbackConnectionTests.test_rollbackE  s    r   c                n    V P                   P                  4        V P                   P                  4        R # r-   rO  r   s   &r   test_rollback_after_no_changes.ConnectionTests.test_rollback_after_no_changesH  s$     	r   c                :    V P                   P                  4       pR # r-   r"  r;  r=  s   & r   test_cursorConnectionTests.test_cursorO  s    WW^^r   c                    R pV P                  \        P                  4      ;_uu_ 4        \        P                  ! V4       RRR4       R#   + '       g   i     R# ; i)z/foo/bar/bla/23534/mydb.dbN)assertRaisesr   rD   r
  )r   YOU_CANNOT_OPEN_THISs   & r   test_failed_open ConnectionTests.test_failed_openR  s;    ;v6677NN/0 8777s   AA	c                :    V P                   P                  4        R # r-   rB  r   s   &r   
test_closeConnectionTests.test_closeW  rE  r   c           	        R pV P                   P                  4       pVP                  V4      pV P                   P                  4        V P	                  \
        P                  VP                  4       V P	                  \
        P                  VP                  V4       V P	                  \
        P                  VP                  V. 4       V P	                  \
        P                  VP                  V4       V P	                  \
        P                  V P                   P                  V4       V P	                  \
        P                  V P                   P                  V. 4       V P	                  \
        P                  V P                   P                  V4       V P	                  \
        P                  V P                   P                  R^R 4       V P	                  \
        P                  V P                   P                  4       V P	                  \
        P                  4      ;_uu_ 4        V P                   ;_uu_ 4         RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r  tc                     V # r-   r+  xs   &r   <lambda>6ConnectionTests.test_use_after_close.<locals>.<lambda>h  s    Qr   N)r"  r;  r  r<  r[  r   rQ   fetchallexecutemanyexecutescriptcreate_function)r   sqlr>  ress   &   r   test_use_after_close$ConnectionTests.test_use_after_closeZ  s   WW^^jjo&113<<@&112::sC&112>>3K&1123C3CSI&11477??CH&11''--sB	8&114773H3H#N&11''113;	H&11477>>Bv6677  87 877s$   'I#<I	>I#I I##I4	c                   V P                  V P                  P                  \        P                  4       V P                  V P                  P                  \        P                  4       V P                  V P                  P
                  \        P
                  4       V P                  V P                  P                  \        P                  4       V P                  V P                  P                  \        P                  4       V P                  V P                  P                  \        P                  4       V P                  V P                  P                  \        P                  4       V P                  V P                  P                  \        P                  4       V P                  V P                  P                  \        P                  4       V P                  V P                  P                  \        P                  4       R # r-   )r   r"  r/   r   r4   r8   r<   r@   rD   rI   rM   rQ   rU   r   s   &r   test_exceptionsConnectionTests.test_exceptionsn  s:   &..95//1F1FG..0D0DE**F,<,<=1163J3JK//1F1FG..0D0DE1163J3JK22F4L4LMr   c                   \        4       ;_uu_ 4       pVP                  4       pV P                  VP                  R 4       VP	                  R4       V P                  VP                  R 4       VP	                  RR4       V P                  VP                  R4       VP	                  RR.4       VP                  4       pV P                  VP                  R4       VP                  4        V P                  VP                  R 4       VP	                  RR.4       VP                  4       pV P                  VP                  R 4       VP                  4        RRR4       R#   + '       g   i     R# ; i)Fz?create table transactiontest(id integer primary key, name text)z,insert into transactiontest(name) values (?)r:  Tz-select name from transactiontest where name=?Nr9  )r   r;  r   in_transactionr  fetchonerH  r<  )r   r"  r>  rows   &   r   test_in_transaction#ConnectionTests.test_in_transaction{  s   "BR..6JJXYR..6JJExPR..5JJFP++-CR..5IIKR..6JJFP++-CR..6HHJ s   EEE0	c                    V P                  \        4      ;_uu_ 4        R V P                  n        RRR4       R#   + '       g   i     R# ; i)TN)r[  AttributeErrorr"  ru  r   s   &r   test_in_transaction_ro&ConnectionTests.test_in_transaction_ro  s.    ~..%)DGG" /...s	   :A	c           
     .   . ROpV Fv  pV P                  VR7      ;_uu_ 4        V P                  V P                  V4       V P                  \	        \
        V4      \	        V P                  V4      4       RRR4       Kx  	  R#   + '       g   i     K  ; i)r@   )r  N)	r@   r<   r4   rI   r8   rU   rD   rQ   r/   )r   r   r"  assertIsgetattrr   )r   
exceptionsr  s   &  r   test_connection_exceptions*ConnectionTests.test_connection_exceptions  sl    


 C#&&""477C0gfc2GDGGS4IJ '& &&&s   ABBc                    V P                   P                  4        V P                  \        P                  4      ;_uu_ 4        V P                   P                  4        R R R 4       R #   + '       g   i     R # ; ir-   )r"  r<  r[  r   rQ   	interruptr   s   &r   test_interrupt_on_closed_db+ConnectionTests.test_interrupt_on_closed_db  sE    v6677GG 8777s   A''A8	c                X    V P                  V P                  P                  4       4       R # r-   )assertIsNoner"  r  r   s   &r   test_interruptConnectionTests.test_interrupt  s    $''++-.r   c                    \        R 4       FH  pV P                  P                  RV 24      pV P                  VP	                  4       ^ ,          V4       KJ  	  R# )i  zselect N)ranger"  r  r   rv  )r   nr>  s   &  r   test_drop_unused_refs%ConnectionTests.test_drop_unused_refs  sC    sA71#/BR[[]1-q1 r   c                   \         P                  pV P                  P                  V4      p ^
pV P                  P	                  W4      pV P                  W$4       V P                  V P                  P                  V4      V4       RpV P                  \         P                  VV P                  P                  R4       V P                  P	                  W4       R#   T P                  P	                  Y4       i ; i)
   query string is too largezselect 1 as '16'N)	r   r   r"  getlimitsetlimitr   r	  r@   r  )r   categorysaved_limit	new_limit
prev_limitmsgs   &     r   test_connection_limits&ConnectionTests.test_connection_limits  s    11gg&&x0		4I))(>J[5TWW--h7C-C""6#3#3S#'77??4FH GGX3DGGX3s   BC C8c                    R pRpV P                  \        P                  VV P                  P                  V4       V P                  \        P                  VV P                  P
                  V^ 4       R# )z'category' is out of boundsiW  N)r	  r   rQ   r"  r  r  )r   r  cats   &  r   "test_connection_bad_limit_category2ConnectionTests.test_connection_bad_limit_category  s\    +v66#ww//	6v66#ww//a	9r   c                0   R pRpV F  pV P                  VR7      ;_uu_ 4        V P                  \        V4      ;_uu_ 4        \        VR7       RRR4       \        4       ;_uu_ 4       pV P                  \        V4      ;_uu_ 4        W4n        RRR4       V P                  VP                  R4       RRR4       RRR4       K  	  R#   + '       g   i     L; i  + '       g   i     LU; i  + '       g   i     LD; i  + '       g   i     EK  ; i)zJisolation_level string must be '', 'DEFERRED', 'IMMEDIATE', or 'EXCLUSIVE'levelisolation_levelN )BOGUS DEFERREIMMEDIATEXCLUSIV	DEFERREDS
IMMEDIATES
EXCLUSIVES)r   r	  
ValueErrorr   r  r   )r   r  levelsr  r"  s   &    r   (test_connection_init_bad_isolation_level8ConnectionTests.test_connection_init_bad_isolation_level  s     		
 EE**++J<<#E: =$&&"//
C@@-2* A $$R%7%7<	 ' +* << A@ '& +**sS   DC
D*C0	C$C04D
CDC-(C00D ;DDc           
        R F  pV P                  VR7      ;_uu_ 4        \        VR7      ;_uu_ 4       pV P                  VP                  V4       RRR4       \        4       ;_uu_ 4       pV P                  VP                  R 4       Wn        V P                  VP                  V4       RRR4       RRR4       K  	  R#   + '       g   i     Lw; i  + '       g   i     L1; i  + '       g   i     K  ; i)r  Nr  r  )r  DEFERRED	IMMEDIATE	EXCLUSIVEN)r   r   r   r  )r   r  r"  s   &  r   *test_connection_init_good_isolation_levels:ConnectionTests.test_connection_init_good_isolation_levels  s    EEE**$U;;r$$R%7%7? <$&&"$$R%7%7<).&$$R%7%7? ' +* F;;&& +**s:   C'CC',?C+C'CC'C$C''C8c           	     8   \        4       ;_uu_ 4       p\        Vn        \        P                  Vn        VP                  4       pVP                  R 4       VP                  RR \        ^4       4       4       VP                  R4       VP                  ^4       Uu. uF  q3NK  	  ppT P                  \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      4       T P                  V Uu. uF  q3^ ,          NK  	  upRR.4       VP                  R	4       VP                  R 4       VP                  RR
 R 4       4       VP                  4        Uu. uF  q3NK  	  ppT P                  \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      4       T P                  V Uu. uF  q3^ ,          NK  	  upRR.4       VP!                  4        RRR4       R# u upi u upi u upi u upi   + '       g   i     R# ; i)zcreate table foo (bar)z insert into foo (bar) values (?)c              3   :   "   T F  p\        V4      3x  K  	  R # 5ir-   )str.0vs   & r   	<genexpr>9ConnectionTests.test_connection_reinit.<locals>.<genexpr>  s     8x!SVIxs   zselect bar from fooc              3   V   "   T F  p\        V\        P                  4      x  K!  	  R # 5ir-   
isinstancer   Rowr  rs   & r   r  r         H4a
1fjj 9 94   ')FT   0   1r7  c              3   &   "   T F  q3x  K	  	  R # 5ir-   r+  r  s   & r   r  r    s     ?*>QD*>   c              3   V   "   T F  p\        V\        P                  4      x  K!  	  R # 5ir-   r  r  s   & r   r  r    r  r  23N)abcd)r   bytestext_factoryr   r  row_factoryr;  r  rj  r  	fetchmanyr(  allr   __init__ri  r<  )r   r"  r>  r  rowss   &    r   test_connection_reinit&ConnectionTests.test_connection_reinit  s   "#BO#ZZBNBJJ/0NN=8uQx8:JJ,-!||A/!AD/OOCCH4HCCCH4HHID1DqddD1D$<@KK
#JJ/0NN=?*>?A  "{{}-}!A}D-OOCCH4HCCCH4HHID1DqddD1C:>HHJ-  01 .1+ sO   BH
G4%)H(H9G9
AH!
G>+)H(H?HH4HH	c                   \         P                  ! R 4      pV;_uu_ 4        VP                  R4       RRR4       \        4       ;_uu_ 4       pV P	                  \         P
                  RVP                  V4       V P	                  \         P                  RVP                  RR \        ^4       4       4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r7  create table t(t)Nr  #Base Connection.__init__ not calledzinsert into t values(?)c              3   &   "   T F  q3x  K	  	  R # 5ir-   r+  r  s   & r   r  =ConnectionTests.test_connection_bad_reinit.<locals>.<genexpr>  s     #;(QD(r  )
r   r
  r  r   r	  rD   r  rQ   rj  r  )r   r"  r  s   &  r   test_connection_bad_reinit*ConnectionTests.test_connection_bad_reinit  s    ^^J'RJJ*+ ZZ2""6#:#:#A#%;;4 ""6#:#:#H#%>>3L#;%(#;=	 Z RZZs   CA*CC	C%	c           	     (   \         P                  p\        4       ;_uu_ 4       pV P                  \        R 4      ;_uu_ 4        VP                  R4       RRR4       VP                  V4      pV'       * pVP                  W4       V P                  VP                  V4      V4       VP                  V4       V P                  VP                  V4      4       V;_uu_ 4        VP                  R4       RRR4       V P                  \         P                  R4      ;_uu_ 4        VP                  R4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     Lo; i  + '       g   i     L@; i  + '       g   i     R# ; i)unknownNz
                    create table t(t integer primary key);
                    create table u(u, foreign key(u) references t(t));
                
constraintzinsert into u values(0))r   SQLITE_DBCONFIG_ENABLE_FKEYr   r	  r  	getconfig	setconfigr   r(  rk  rI   r  )r   opr"  oldnews   &    r   test_connection_config&ConnectionTests.test_connection_config  s   //"''
I>>R  ? ,,r"C'CLL!R\\"-s3LLOOBLL,-    "  
 ''(=(=|LL

45 M' >> 
 ML' sT   F E	BF !E	30F #E-	5F EF E*%F -E=8F  F	c                   R pV P                  \        V4      ;_uu_ 4       p\        P                  ! RR4      pVP	                  4        RRR4       V P                  XP                  \        4       R#   + '       g   i     L2; i)zPassing more than 1 positional argument to sqlite3.connect\(\) is deprecated. Parameters 'timeout', 'detect_types', 'isolation_level', 'check_same_thread', 'factory', 'cached_statements' and 'uri' will become keyword-only parameters in Python 3.15.r7  g      ?N)assertWarnsRegexDeprecationWarningr   r
  r<  r   filename__file__)r   regexr  r"  s   &   r   !test_connect_positional_arguments1ConnectionTests.test_connect_positional_arguments'  sa    ) 	 ""#5u==
C0BHHJ > 	h/ >=s   (A33B	c                    V P                  \        4      ;_uu_ 4        \        P                  ! R 4      p?\	        4        RRR4       R#   + '       g   i     R# ; ir7  N)assertWarnsResourceWarningr   r
  r   r!  s   & r    test_connection_resource_warning0ConnectionTests.test_connection_resource_warning4  s8    o..
+BL /...s   "A

A	c                l    ^ RI Hp V! V P                  4      pV P                  \	        V4      R4       R# )r   )	signaturez(sql, /)N)inspectr  r"  r   r  )r   r  sigs   &  r   test_connection_signature)ConnectionTests.test_connection_signature:  s'    % S:.r   r"  N)!r,  r-  r.  r/  r?  rC  rI  rL  rQ  rT  rX  r]  r`  ro  rr  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  r1  r2  s   @r   r5  r5  /  s     1
(N&*K" 
/2
49=2@2=600/ /r   r5  c                   ,   a  ] tR tRt o R tR tRtV tR# )UninitialisedConnectionTestsi@  c                j    \         P                  P                  \         P                  4      V n        R # r-   )r   
Connection__new__r"  r   s   &r   r?  "UninitialisedConnectionTests.setUpA  s     ##++F,=,=>r   c                
  a  V 3R  lV 3R lV 3R lV 3R lV 3R lV 3R l3pV FG  pS P                  VR7      ;_uu_ 4        S P                  \        P                  RV4       RRR4       KI  	  R#   + '       g   i     K^  ; i)	c                  0   < S P                   P                  # r-   )r"  r  r   s   r   rg  EUninitialisedConnectionTests.test_uninit_operations.<locals>.<lambda>F  s    DGG++r   c                  0   < S P                   P                  # r-   )r"  total_changesr   s   r   rg  r  G  s    DGG))r   c                  0   < S P                   P                  # r-   )r"  ru  r   s   r   rg  r  H  s    DGG**r   c                  8   < S P                   P                  4       # r-   )r"  iterdumpr   s   r   rg  r  I  s    DGG$$&r   c                  8   < S P                   P                  4       # r-   rW  r   s   r   rg  r  J  s    DGGNN$r   c                  8   < S P                   P                  4       # r-   rB  r   s   r   rg  r  K  s    DGGMMOr   )funcr  N)r   r	  r   rQ   )r   funcsr  s   f  r   test_uninit_operations3UninitialisedConnectionTests.test_uninit_operationsD  sg    +)*&$#
 D4((&&v'>'>'L'+- )( (((s   "A11Br  N)r,  r-  r.  r/  r?  r  r0  r1  r2  s   @r   r  r  @  s     ?- -r   r  	serializezNeeds SQLite serialize APIc                   2   a  ] tR tRt o R tR tR tRtV tR# )SerializeTestsiT  c           	     R   \        4       ;_uu_ 4       pV;_uu_ 4        VP                  R 4       RRR4       VP                  4       pV;_uu_ 4        VP                  R4       RRR4       RpV P                  \        P
                  V4      ;_uu_ 4        VP                  R4       RRR4       VP                  V4       VP                  R4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Lb; i  + '       g   i     R# ; i)r  Nzdrop table tzno such tablezselect t from t)r   r  r  r	  r   rD   deserialize)r   r"  datar  s   &   r   test_serialize_deserialize)SerializeTests.test_serialize_deserializeW  s    "

./ <<>D 

>* #E''(?(?GG

,- H NN4 JJ() 
  HG sQ   DC	"DC/	$2DD	(*DC,'D/C?:DDDD&	c           
     z   \         \        R 4      R,          3\        . 3\        ^3\        R33pV F_  w  r#V P                  W#R7      ;_uu_ 4        \	        4       ;_uu_ 4       pV P                  W$P                  V4       RRR4       RRR4       Ka  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)s   blobNN   N)r  arg)BufferError
memoryview	TypeErrorr   r   r[  r  )r   datasetr  r$  r"  s   &    r   test_deserialize_wrong_args*SerializeTests.test_deserialize_wrong_argsh  s    *W-c23ON	
  HC#//$&&"%%c>>3? ' 0/  && 0//s$   B)#B B)B&!B))B:c           	     4   \        4       ;_uu_ 4       pR pV P                  \        P                  V4      ;_uu_ 4        VP	                  R4       VP                  R4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zfile is not a databases    zcreate table fail(f)N)r   r	  r   r<   r  r  )r   r"  r  s   &  r   !test_deserialize_corrupt_database0SerializeTests.test_deserialize_corrupt_databaset  sg    ",E''(<(<eDDy) 

12	 E DD s"   +B#A3	!B3B>BB	r+  N)	r,  r-  r.  r/  r  r)  r,  r0  r1  r2  s   @r   r  r  T  s     *"
@3 3r   r  c                      a  ] tR tRt o RtR tR t]P                  ! ]	P                  R8H  R4      R 4       tR tR	 tR
 t]P                  ! ]	P                  R8H  R4      R 4       tR tR tRtV tR# )	OpenTestsi~  zcreate table test(id integer)c                   \        \        4      pV P                  \        V4       V P	                  \
        P                  P                  V4      4       \        P                  ! \        P                  ! V4      4      ;_uu_ 4       pV P                  \
        P                  P                  V4      4       VP                  V P                  4       R R R 4       R #   + '       g   i     R # ; ir-   )r   r   
addCleanupr   r&  ospathexists
contextlibclosingr   r
  r(  r  _sqlr   r3  r"  s   &  r   test_open_with_path_like_object)OpenTests.test_open_with_path_like_object  s     %-.t 455OOBGGNN401JJtyy! 6555s   A
CC+	c                    \         pV'       g   V P                  R 4        \        VR4      P                  4        \        V4       V#   \         d    T P                  RT: 24        L/i ; i)z)only works if there are undecodable pathswbz(can't create file with undecodable path )r   skipTestopenr<  OSErrorr   )r   r3  s   & r   get_undecodable_pathOpenTests.get_undecodable_path  se    !MMEF	Ot""$ 	t  	OMMDTHMN	Os   A  A+*A+win32zskipped on Windowsc                   V P                  4       pV P                  \        V4       \        P                  ! \
        P                  ! V4      4      ;_uu_ 4       pV P                  \        P                  P                  V4      4       VP                  V P                  4       R R R 4       R #   + '       g   i     R # ; ir-   )r@  r1  r   r5  r6  r   r
  r(  r2  r3  r4  r  r7  r8  s   &  r   test_open_with_undecodable_path)OpenTests.test_open_with_undecodable_path  sr    ((*%t 455OOBGGNN401JJtyy! 6555s   A
B--B>	c                B   \         pV P                  \        V4       R \        P                  P                  \        P                  ! V4      4      ,           pV P                  \        P                  P                  V4      4       \        P                  ! \        P                  ! VRR7      4      ;_uu_ 4       pV P                  \        P                  P                  V4      4       VP!                  V P"                  4       RRR4       R#   + '       g   i     R# ; ifile:TuriN)r   r1  r   urllibparsequoter2  fsencoder&  r3  r4  r5  r6  r   r
  r(  r  r7  r   r3  rJ  r"  s   &   r   test_open_uriOpenTests.test_open_uri  s    %**2;;t+<==-.s =>>"OOBGGNN401JJtyy! ?>>>s   9A
DD	c                   \         pV P                  \        V4       R V,           pV P                  \        P
                  P                  V4      4       \        P                  ! \        P                  ! VRR7      4      ;_uu_ 4       pV P                  \        P
                  P                  V4      4       VP                  V P                  4       RRR4       R#   + '       g   i     R# ; irG  )r   r1  r   r&  r2  r3  r4  r5  r6  r   r
  r(  r  r7  rO  s   &   r   test_open_unquoted_uri OpenTests.test_open_unquoted_uri  s    %n-.s =>>"OOBGGNN401JJtyy! ?>>>s   A
CC-	c           	     2   \         pV P                  \        V4       R \        P                  P                  \        P                  ! V4      4      ,           R,           pV P                  \        P                  P                  V4      4       V P                  \        P                  4      ;_uu_ 4        \        P                  ! VRR7       RRR4       V P                  \        P                  P                  V4      4       \        P                  ! V4      P                  4        V P!                  \        P                  P                  V4      4       \"        P$                  ! \        P                  ! VRR7      4      ;_uu_ 4       pV P                  \        P                  4      ;_uu_ 4        VP'                  V P(                  4       RRR4       RRR4       R#   + '       g   i     EL; i  + '       g   i     L.; i  + '       g   i     R# ; i)rH  z?mode=roTrI  N)r   r1  r   rK  rL  rM  r2  rN  r&  r3  r4  r[  r   rD   r
  r<  r(  r5  r6  r  r7  rO  s   &   r   test_open_uri_readonly OpenTests.test_open_uri_readonly  s=   %**2;;t+<==
J-.v6677NN3D) 8-.t""$t,-s =>>"""6#:#:;;

499% < ?> 877 <; ?>>s0   3G(H0G2	HG/	2H=HH	c                   V P                  4       pV P                  \        V4       R \        P                  P                  V4      ,           p\        P                  ! \        P                  ! VRR7      4      ;_uu_ 4       pV P                  \        P                  P                  V4      4       VP                  V P                  4       RRR4       R#   + '       g   i     R# ; irG  )r@  r1  r   rK  rL  rM  r5  r6  r   r
  r(  r2  r3  r4  r  r7  rO  s   &   r   test_open_undecodable_uri#OpenTests.test_open_undecodable_uri  s    ((*%**400s =>>"OOBGGNN401JJtyy! ?>>>s   A
CC&	c                4  a V3R  lp\         \        P                  ! \         4      \        \         4      \        \        P                  ! \         4      4      3 F<  pRo\        P
                  ! W!R7      P                  4        V P                  SV4       K>  	  R# )c                 <   < V o\         P                  ! R .VO5/ VB # )r7  )r   r  )databaseargskwargsdatabase_args   &*,r   factory4OpenTests.test_factory_database_arg.<locals>.factory  s#    #L$$ZA$A&AAr   N)ra  )r   r2  rN  r   r   r
  r<  r   )r   ra  r]  r`  s   &  @r   test_factory_database_arg#OpenTests.test_factory_database_arg  si    	B
  V!4!&)8BKK4G+HJHLNN85;;=\84	Jr   c                    \         P                  ! \        P                  ! R R7      4      ;_uu_ 4       pV P	                  \        V4      \        P                  4       RRR4       R#   + '       g   i     R# ; i)r7  )r]  N)r5  r6  r   r
  r   r  r  r!  s   & r   test_database_keywordOpenTests.test_database_keyword  sH    
 CDDT"Xv'8'89 EDDDs   *A((A9	r+  N)r,  r-  r.  r/  r7  r9  r@  unittestskipIfr  r  rD  rP  rS  rV  rY  rc  rf  r0  r1  r2  s   @r   r/  r/  ~  s     *D"	 __S\\W,.BC" D"""&  __S\\W,.BC" D"
5: :r   r/  c                     a  ] tR tR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!]"PF                  ! ]$PJ                  R?8  R 4      R! 4       t&R" t'R# t(R$ t)R% t*R& t+R' t,R( t-R) t.R* t/R+ t0R, t1R- t2R. t3R/ t4R0 t5R1 t6R2 t7R3 t8R4 t9R5 t:R6 t;R7 t<R8 t=R9 t>R: t?R; t@R< tAR=tBV tCR># )@CursorTestsi  c                    \         P                  ! R 4      V n        V P                  P                  4       V n        V P                  P                  R4       V P                  P                  RR4       R# )r7  z\create table test(id integer primary key, name text, income number, unique_test text unique)r8  Nr9  r   r
  r"  r;  r>  r  r   s   &r   r?  CursorTests.setUp  sN    ..,''.."6	
 	;XFr   c                n    V P                   P                  4        V P                  P                  4        R # r-   r>  r<  r"  r   s   &r   rC  CursorTests.tearDown      r   c                <    V P                   P                  R 4       R# )delete from testNr>  r  r   s   &r   test_execute_no_args CursorTests.test_execute_no_args  s    *+r   c                    V P                  \        P                  4      ;_uu_ 4        V P                  P	                  R 4       RRR4       R#   + '       g   i     R# ; i)zselect asdfN)r[  r   rD   r>  r  r   s   &r   test_execute_illegal_sql$CursorTests.test_execute_illegal_sql  s8    v6677GGOOM* 8777   AA	c           
     L   R pRpV Fr  pV P                  VR7      ;_uu_ 4        V P                  \        P                  V4      ;_uu_ 4        V P                  P                  V4       RRR4       RRR4       Kt  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)z,You can only execute one statement at a timequeryN)
zselect 1; select 2z)select 1; // c++ comments are not allowedzselect 1; *not a commentzselect 1; -*not a commentzselect 1; /* */ azselect 1; /**/azselect 1; -zselect 1; /zselect 1; -
- select 2zHselect 1;
               -- comment
               select 2
            r   r	  r   rQ   r>  r  )r   r  r(  r~  s   &   r    test_execute_multiple_statements,CursorTests.test_execute_multiple_statements  su    <
 EE**++F,C,CSIIGGOOE* J +* II +**s#   )BA?)B?B
BB#c                    RpV FA  pV P                  VR7      ;_uu_ 4        V P                  P                  V4       RRR4       KC  	  R#   + '       g   i     KX  ; i)select 1; -- foo barr}  N)r  zselect 1; --zselect 1; /*zT
            select 5+4;

            /*
            foo
            */
            )r   r>  r  )r   r(  r~  s   &  r   #test_execute_with_appended_comments/CursorTests.test_execute_with_appended_comments  sH    
 EE**& +* ***s   AAc                    V P                  \        4      ;_uu_ 4        V P                  P                  ^*4       RRR4       R#   + '       g   i     R# ; i*   N)r[  r'  r>  r  r   s   &r   test_execute_wrong_sql_arg&CursorTests.test_execute_wrong_sql_arg  s2    y))GGOOB *)))   AA	c                >    V P                   P                  R R4       R# )insert into test(id) values (?)N)r  ru  r   s   &r   test_execute_arg_int CursorTests.test_execute_arg_int  s    95Ar   c                >    V P                   P                  R R4       R# )#insert into test(income) values (?)N)gq=
ף@ru  r   s   &r   test_execute_arg_float"CursorTests.test_execute_arg_float  s    =zJr   c                >    V P                   P                  R R4       R# )r8  N)Hugoru  r   s   &r   test_execute_arg_string#CursorTests.test_execute_arg_string   s    ;YGr   c                   V P                   P                  R R4       V P                   P                  RV P                   P                  34       V P                   P                  4       pV P	                  V^ ,          R4       R# )r8  Hu goz select name from test where id=?N)r  )r>  r  	lastrowidrv  r   r   rw  s   & r   &test_execute_arg_string_with_zero_byte2CursorTests.test_execute_arg_string_with_zero_byte#  s[    ;]K:TWW=N=N<PQgg Q,r   c                   V P                  \        P                  4      ;_uu_ 4       pV P                  P	                  R ^*4       RRR4       V P                  \        XP                  4      R4       R#   + '       g   i     L7; i)r  Nz"parameters are of unsupported type)r[  r   rQ   r>  r  r   r  r  )r   r  s   & r   test_execute_non_iterable%CursorTests.test_execute_non_iterable*  sV    v66772GGOO=rB 8R\\*,PQ 87s   A44B	c                    V P                  \        P                  4      ;_uu_ 4        V P                  P	                  R R4       RRR4       R#   + '       g   i     R# ; i)r  N)   Egonr[  r   rQ   r>  r  r   s   &r   test_execute_wrong_no_of_args1*CursorTests.test_execute_wrong_no_of_args1/  s;    v6677GGOO=|L 8777s   AA 	c                    V P                  \        P                  4      ;_uu_ 4        V P                  P	                  R 4       RRR4       R#   + '       g   i     R# ; ir  Nr  r   s   &r   test_execute_wrong_no_of_args2*CursorTests.test_execute_wrong_no_of_args24  9    v6677GGOO=> 8777r{  c                    V P                  \        P                  4      ;_uu_ 4        V P                  P	                  R 4       RRR4       R#   + '       g   i     R# ; ir  r  r   s   &r   test_execute_wrong_no_of_args3*CursorTests.test_execute_wrong_no_of_args39  r  r{  c                    V P                   P                  R 4       V P                   P                  RR.4       V P                   P                  4       pV P                  V^ ,          R4       R# )%insert into test(name) values ('foo')"select name from test where name=?r:  Nr>  r  rv  r   r  s   & r   test_execute_param_list#CursorTests.test_execute_param_list>  sN    ?@<ugFgg Q'r   c                     ! R  R4      pV P                   P                  R4       V P                   P                  RV! 4       4       V P                   P                  4       pV P                  V^ ,          R4       R# )c                   ,   a  ] tR tRt o R tR tRtV tR# )2CursorTests.test_execute_param_sequence.<locals>.LiE  c                    ^# r!   r+  r   s   &r   __len__:CursorTests.test_execute_param_sequence.<locals>.L.__len__F  s    r   c                    R # r9  r+  r   rf  s   &&r   __getitem__>CursorTests.test_execute_param_sequence.<locals>.L.__getitem__H  s    r   r+  Nr,  r-  r.  r/  r  r  r0  r1  r2  s   @r   Lr  E  s      r   r  r  r  r:  Nr  )r   r  rw  s   &  r   test_execute_param_sequence'CursorTests.test_execute_param_sequenceD  sZ    	 	 	?@<acBgg Q'r   c                    ! R  R4      pV P                   P                  R4       V P                  \        4      ;_uu_ 4        V P                   P                  RV! 4       4       RRR4       R#   + '       g   i     R# ; i)c                   ,   a  ] tR tRt o R tR tRtV tR# ):CursorTests.test_execute_param_sequence_bad_len.<locals>.LiS  c                    ^^ ,           R# )r!   Nr+  r   s   &r   r  BCursorTests.test_execute_param_sequence_bad_len.<locals>.L.__len__T  s    !r   c                    \         hr-   )AssertionError)slfrf  s   &&r   r  FCursorTests.test_execute_param_sequence_bad_len.<locals>.L.__getitem__V  s    $$r   r+  Nr  r2  s   @r   r  r  S  s     % %r   r  r  r  N)r>  r  r[  ZeroDivisionError)r   r  s   & r   #test_execute_param_sequence_bad_len/CursorTests.test_execute_param_sequence_bad_lenQ  sU    	% 	% 	?@011GGOO@!#F 2111s   "A//B 	c           
     P   RpRpV Ft  w  r4V P                  W4R7      ;_uu_ 4        V P                  \        P                  V4      ;_uu_ 4       pV P                  P                  W44       RRR4       RRR4       Kv  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)	select :azBinding.*is a named parameterr~  paramsN))r  r  )zselect :a, ?, ?r!   r#  r"   )zselect ?, :b, ?r  )zselect ?, ?, :cr  )zselect :a, :b, ?r  r  )r   r(  r  r~  r  r  s   &     r   %test_execute_named_param_and_sequence1CursorTests.test_execute_named_param_and_sequence]  sy    
 .$MEE99++F,C,CSIIRGGOOE2 J :9 %II :99s#   )BB+BBBB%c           
        R F  w  rpV P                  WR7      ;_uu_ 4        \        P                  ! 4       ;_uu_ 4        \        P                  ! R\        4       V P
                  P                  W4      pVP                  4       w  pV P                  WS4       RRR4       RRR4       K  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)select ?1, ?2r  errorN))r  r!   r#  r  )zselect ?2, ?1r  )r#  r!   )	r   warningscatch_warningssimplefilterr  r>  r  ri  r   )r   r~  r  expectedr>  actuals   &     r   $test_execute_indexed_nameless_params0CursorTests.test_execute_indexed_nameless_paramsk  s    (
#E8 E99,,..))'3EF7B kkmGF$$V6	 / :9	(

 /. :99s$   CAB1C1C<CCc           	        \         P                  pR p\        V P                  V^R7      ;_uu_ 4        V P                  P                  RR4       V P                  \         P                  V4      ;_uu_ 4        V P                  P                  RR4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)ztoo many SQL variables)r  limitzselect * from test where id=?z(select * from test where id!=? and id!=?Nr  r  )r   r   r   r"  r>  r  r	  rD   )r   r  r  s   &  r   test_execute_too_many_params(CursorTests.test_execute_too_many_paramsx  s    66&dgg::GGOO;TB''(?(?EE J &( F ;:EE ;::s$   AB:8B'	B:'B72B::C	c                    V P                   P                  R 4       V P                   P                  RRR/4       V P                   P                  4       pV P                  V^ ,          R4       R# )r  &select name from test where name=:namenamer:  Nr  r  s   & r   test_execute_dict_mapping%CursorTests.test_execute_dict_mapping  sP    ?@@65/Rgg Q'r   c                    ! R  R\         4      pV P                  P                  R4       V P                  P                  RV! 4       4       V P                  P                  4       pV P	                  V^ ,          R4       R# )c                   &   a  ] tR tRt o R tRtV tR# )8CursorTests.test_execute_dict_mapping_mapping.<locals>.Di  c                    R # r9  r+  )r   keys   &&r   __missing__DCursorTests.test_execute_dict_mapping_mapping.<locals>.D.__missing__  s    r   r+  N)r,  r-  r.  r/  r  r0  r1  r2  s   @r   Dr    s      r   r  r  r  r:  N)dictr>  r  rv  r   )r   r  rw  s   &  r   !test_execute_dict_mapping_mapping-CursorTests.test_execute_dict_mapping_mapping  s\    	 	 	?@@!#Fgg Q'r   c                    V P                   P                  R 4       V P                  \        P                  4      ;_uu_ 4        V P                   P                  RRR/4       RRR4       R#   + '       g   i     R# ; i)r  z1select name from test where name=:name and id=:idr  r:  Nr>  r  r[  r   rQ   r   s   &r   )test_execute_dict_mapping_too_little_args5CursorTests.test_execute_dict_mapping_too_little_args  sS    ?@v6677GGOOORXZ_Q`a 8777   A,,A=	c                    V P                   P                  R 4       V P                  \        P                  4      ;_uu_ 4        V P                   P                  R4       RRR4       R#   + '       g   i     R# ; i)r  r  Nr  r   s   &r   !test_execute_dict_mapping_no_args-CursorTests.test_execute_dict_mapping_no_args  sJ    ?@v6677GGOODE 8777   A))A:	c                    V P                   P                  R 4       V P                  \        P                  4      ;_uu_ 4        V P                   P                  RRR/4       RRR4       R#   + '       g   i     R# ; i)r  r  r  r:  Nr  r   s   &r   !test_execute_dict_mapping_unnamed-CursorTests.test_execute_dict_mapping_unnamed  sP    ?@v6677GGOO@65/R 8777r  c                :    V P                   P                  4        R # r-   )r>  r<  r   s   &r   r`  CursorTests.test_close  rE  r   c                *   V P                   P                  R 4       V P                   P                  R4       V P                   P                  R4       V P                   P                  R4       V P                  V P                   P                  ^4       R# )rt  r  zupdate test set name='bar'Nr>  r  r   rowcountr   s   &r   test_rowcount_execute!CursorTests.test_rowcount_execute  s`    *+?@?@45))1-r   c                    V P                   P                  R 4       V P                  V P                   P                  R4       R# )zselect 5 union select 6Nr  r  r   s   &r   test_rowcount_select CursorTests.test_rowcount_select  s/     	12))2.r   c                    V P                   P                  R 4       V P                   P                  R. RO4       V P                  V P                   P                  ^4       R# )rt  r8  Nr  )r#  r"   )r>  r  rj  r   r  r   s   &r   test_rowcount_executemany%CursorTests.test_rowcount_executemany  sC    *+?AST))1-r   zRequires SQLite 3.35.0 or newerc                    V P                   P                  R 4       V P                  V P                   P                  4       ^ ,          ^4       V P                  V P                   P                  ^4       R# )z7update test set name='bar' where name='foo' returning 1N)r>  r  r   rv  r  r   s   &r   test_rowcount_update_returning*CursorTests.test_rowcount_update_returning  sQ     	QR))+A.2))1-r   c                   V P                   P                  R 4       V P                  V P                   P                  ^4       V P                   P                  R4       V P                  V P                   P                  ^4       V P                   P                  R4       V P                  V P                   P                  ^4       R# )zW
            -- foo
            insert into test(name) values ('foo'), ('foo')
        z
            /* -- messy *r /* /* ** *- *--
            */
            /* one more */ insert into test(name) values ('messy')
        z5/* bar */ update test set name='bar' where name='foo'Nr  r   s   &r   #test_rowcount_prefixed_with_comment/CursorTests.test_rowcount_prefixed_with_comment  s      	 	))1-  	
 	))1-OP))1-r   c                D   RpV P                   P                  RV4       V P                  V P                   P                  ^4       V P                  P                  4        V P                   P                  R4       V P                  V P                   P                  R4       R# )r!   z"insert into test(income) values(?)vacuumNr  r  )r>  rj  r   r  r"  rH  r  )r   r  s   & r   test_rowcount_vaccuum!CursorTests.test_rowcount_vaccuum  sn    !@$G))1-!))2.r   c                    V P                   P                  R 4       V P                   P                  R 4       V P                  ^V P                  P                  RR7       R# )r  z"total changes reported wrong value)r  N)r>  r  
assertLessr"  r  r   s   &r   test_total_changesCursorTests.test_total_changes  sA    ?@?@477006Z[r   c                |    V P                   P                  R \        ^d^n4       Uu. uF  q3NK  	  up4       R# u upi r  N)r>  rj  r  r  s   & r   test_execute_many_sequence&CursorTests.test_execute_many_sequence  s5    ARWX[]`RaCbRaQDRaCbcCbs   9
c                \     ! R  R4      pV P                   P                  RV! 4       4       R# )c                   2   a  ] tR tRt o R tR tR tRtV tR# )6CursorTests.test_execute_many_iterator.<locals>.MyIteri  c                    ^V n         R#    Nvaluer   s   &r   r  ?CursorTests.test_execute_many_iterator.<locals>.MyIter.__init__  s	    
r   c                    V # r-   r+  r   s   &r   __iter__?CursorTests.test_execute_many_iterator.<locals>.MyIter.__iter__  s    r   c                |    V P                   ^
8X  d   \        hV ;P                   ^,          un         V P                   3# r  )r*  StopIterationr   s   &r   __next__?CursorTests.test_execute_many_iterator.<locals>.MyIter.__next__  s-    ::#''JJ!OJ JJ=(r   r)  N)	r,  r-  r.  r/  r  r-  r2  r0  r1  r2  s   @r   MyIterr%    s     ) )r   r4  r  Nr>  rj  )r   r4  s   & r   test_execute_many_iterator&CursorTests.test_execute_many_iterator  s%    	) 	) 	A68Lr   c                N    R  pV P                   P                  RV! 4       4       R# )c               3   <   "   \        ^4       F  p V 3x  K
  	  R# 5ir'  )r  )is    r   mygen6CursorTests.test_execute_many_generator.<locals>.mygen  s     1Xd
 s   r  Nr5  )r   r;  s   & r   test_execute_many_generator'CursorTests.test_execute_many_generator  s     	 	A57Kr   c                    V P                  \        4      ;_uu_ 4        V P                  P                  ^*R.4       RRR4       R#   + '       g   i     R# ; i)r  Nr  r[  r'  r>  rj  r   s   &r   test_execute_many_wrong_sql_arg+CursorTests.test_execute_many_wrong_sql_arg  s8    y))GGTF+ *)))s   AA	c                    V P                  \        P                  4      ;_uu_ 4        V P                  P	                  R R.4       RRR4       R#   + '       g   i     R# ; i)zselect ?Nr  )r[  r   rQ   r>  rj  r   s   &r   test_execute_many_select$CursorTests.test_execute_many_select   s>    v6677GG
TF3 8777s   AA!	c                    V P                  \        4      ;_uu_ 4        V P                  P                  R ^*4       RRR4       R#   + '       g   i     R# ; ir   r@  r   s   &r   test_execute_many_not_iterable*CursorTests.test_execute_many_not_iterable  s7    y))GG ErJ *)))s   AA	c                   V P                   P                  R 4       V P                   P                  RR4       V P                   P                  RR4       V P                   P                  R4       . pV P                    F  pVP                  V^ ,          4       K  	  V P                  V^ ,          ^4       V P                  V^,          ^4       R# )rt  r  zselect id from test order by idN)r(  )   )r>  r  r   r   )r   lstrw  s   &  r   test_fetch_iterCursorTests.test_fetch_iter  s    *+94@94@9:77CJJs1v Q#Q#r   c                    V P                   P                  R 4       V P                   P                  4       pV P                  V^ ,          R4       V P                   P                  4       pV P                  VR4       R# )select name from testr:  Nr  r  s   & r   test_fetchoneCursorTests.test_fetchone  s[    /0gg Q'gg d#r   c                ~    V P                   P                  4       pVP                  4       pV P                  VR 4       R # r-   )r"  r;  rv  r   )r   currw  s   &  r   test_fetchone_no_statement&CursorTests.test_fetchone_no_statement  s-    ggnnllnd#r   c                   V P                  V P                  P                  ^4       ^V P                  n        V P                  P                  R4       V P                  P                  R4       V P                  P                  R4       V P                  P                  R4       V P                  P                  R4       V P                  P	                  4       pV P                  \        V4      ^4       R# )r!   rt  z#insert into test(name) values ('A')z#insert into test(name) values ('B')z#insert into test(name) values ('C')rO  N)r   r>  	arraysizer  r  lenr   rn  s   & r   test_array_sizeCursorTests.test_array_size   s    **A.  	*+=>=>=>/0gg!S1%r   c                   V P                   P                  R 4       V P                   P                  ^d4      pV P                  \	        V4      ^4       V P                   P                  ^d4      pV P                  V. 4       R# rO  Nr>  r  r  r   rX  rY  s   & r   test_fetchmanyCursorTests.test_fetchmany1  s_    /0gg$S1%gg$b!r   c                    V P                   P                  R 4       V P                   P                  ^dR7      pV P                  \	        V4      ^4       R# )rO  )sizeNr^  rY  s   & r   test_fetchmany_kw_arg!CursorTests.test_fetchmany_kw_arg8  s>    /0ggS)S1%r   c                    V P                   P                  R 4       V P                   P                  4       pV P                  \	        V4      ^4       V P                   P                  4       pV P                  V. 4       R# r]  )r>  r  ri  r   rX  rY  s   & r   test_fetchallCursorTests.test_fetchall>  s[    /0gg S1%gg b!r   c                @    V P                   P                  . RO4       R# )r"   N)r"      r(  )r>  setinputsizesr   s   &r   test_setinputsizesCursorTests.test_setinputsizesE  s    i(r   c                >    V P                   P                  ^^ 4       R# r'  r>  setoutputsizer   s   &r   test_setoutputsizeCursorTests.test_setoutputsizeH  s    a#r   c                <    V P                   P                  ^*4       R# r  rn  r   s   &r   test_setoutputsize_no_column(CursorTests.test_setoutputsize_no_columnK  s    b!r   c                f    V P                  V P                  P                  V P                  4       R # r-   )r   r>  
connectionr"  r   s   &r   test_cursor_connection"CursorTests.test_cursor_connectionN  s     ++TWW5r   c                    V P                  \        4      ;_uu_ 4        R  pV P                  P                  V4      pRRR4       R#   + '       g   i     R# ; i)c                      R # r-   r+  r+  r   r   f1CursorTests.test_wrong_cursor_callable.<locals>.fT  s    Tr   N)r[  r'  r"  r;  )r   r{  rS  s   &  r   test_wrong_cursor_callable&CursorTests.test_wrong_cursor_callableR  s7    y))''..#C *)))s   AA	c                     ! R  R4      pV! 4       pV P                  \        4      ;_uu_ 4        \        P                  ! V4      pRRR4       R#   + '       g   i     R# ; i)c                       ] tR tRtRtR# )0CursorTests.test_cursor_wrong_class.<locals>.FooiX  r+  Nr,  r-  r.  r/  r0  r+  r   r   Foor  X  s    4r   r  N)r[  r'  r   Cursor)r   r  r:  rS  s   &   r   test_cursor_wrong_class#CursorTests.test_cursor_wrong_classW  s<    ey))--$C *)))s   AA!	c                ,   R pR Fw  pV P                  VR7      ;_uu_ 4        V P                  P                  VP                  V4      R4       V P	                  V P                  P
                  ^4       RRR4       Ky  	  R#   + '       g   i     K  ; i)z+{} INTO test(id, unique_test) VALUES (?, ?)	statementN)zINSERT OR REPLACEREPLACE)r!   r:  )r   r>  r  formatr   r  )r   rm  r  s   &  r   test_last_row_id_on_replace'CursorTests.test_last_row_id_on_replace]  sk     <9I	22

9 5zB  !2!2A6 32 :222s   ABBc                   V P                   P                  R R4       V P                  V P                   P                  ^4       V P                   P                  R R4       V P                  V P                   P                  ^4       R# )z2insert or ignore into test(unique_test) values (?)N)test)r>  r  r   r  r   s   &r   test_last_row_id_on_ignore&CursorTests.test_last_row_id_on_ignoreg  sf    @	 	**A.@	 	**A.r   c           
        . pR EF  pRpV P                  RP                  V4      R7      ;_uu_ 4        V P                  P                  VP                  V4      V34       VP	                  W P                  P
                  34       V P                  \        P                  4      ;_uu_ 4        V P                  P                  VP                  V4      V34       RRR4       VP	                  W P                  P
                  34       RRR4       EK  	  . ROpV P                  W4       R#   + '       g   i     LZ; i  + '       g   i     EKM  ; i)FAILz.INSERT OR {} INTO test(unique_test) VALUES (?)zINSERT OR {}r  N)r  ABORTROLLBACK)r  r#  r  r  r"   r  r  ri  r  )
r   r  r>  r  r   r  r[  r   rI   r   )r   resultsr  rm  r  s   &    r   test_last_row_id_insert_o_r'CursorTests.test_last_row_id_insert_o_rq  s    6IBC(=(=i(HII

9 5	|D	77+<+<=>&&v'<'<==GGOOCJJy$9I<H >	77+<+<=> JI 7

 	+ >= JIIs$   A:E .-D-.E -D=8E  Ec                0   R pV P                   P                  V4      p\        VP                  4      pV P                   P                  R4       V P                   P                  V4      p\        VP                  4      pV P	                  WC,
          ^4       R# )zselect * from testzalter table test add newcolN)r>  r  rX  descriptionr   )r   selectrn  	old_count	new_counts   &    r   test_column_countCursorTests.test_column_count  sk    %ggoof%(	56ggoof%(	.2r   c                    \        ^4       Uu. uF  qP                  P                  R4      NK  	  ppV F$  pV P                  VP	                  4       R.4       K&  	  R# u upi )r"   r  Nr  )r  r"  r  r   ri  )r   _cursorsr>  s   &   r   #test_same_query_in_multiple_cursors/CursorTests.test_same_query_in_multiple_cursors  sM    8=aA177??:.ABR[[]TF3  Bs   #Ar>  r"  N)r"   #   r   )Dr,  r-  r.  r/  r?  rC  rv  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r`  r  r
  r  rh  ri  r   r   r  r  r  r  r!  r6  r=  rA  rD  rG  rL  rP  rT  rZ  r_  rc  rf  rk  rp  rs  rw  r}  r  r  r  r  r  r  r0  r1  r2  s   @r   rk  rk    sc    G,++,'" BKH-R
M
?
?
((
G37(((b
F
S
./.
 __V//*<68.8.. /\dM"L,4K
$$$
&""&")$"6$
%7/,"	34 4r   rk  c                     a  ] tR tR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'R& t(R' t)R( t*R) t+R* t,R+ t-R,t.V t/R-# ).	BlobTestsi  c                   \         P                  ! R 4      V n        V P                  P                  R4       RV n        V P                  P                  RV P                  34       V P                  P                  RR^4      V n        R# )r7  create table test(b blob)s2   this blob data string is exactly fifty bytes long!zinsert into test(b) values (?)r  r  N)r   r
  r"  r  r  blobopenblobr   s   &r   r?  BlobTests.setUp  s]    ..,34I	8499,GGG$$VS!4	r   c                n    V P                   P                  4        V P                  P                  4        R # r-   )r  r<  r"  r   s   &r   rC  BlobTests.tearDown  s    		r   c                Z    V P                  V P                  \        P                  4       R # r-   )assertIsInstancer  r   r   r   s   &r   test_blob_is_a_blobBlobTests.test_blob_is_a_blob  s    dii5r   c                L   V P                   P                  ^
4       V P                  V P                   P                  4       ^
4       V P                   P                  ^
\        4       V P                  V P                   P                  4       ^
4       V P                   P                  ^
\
        4       V P                  V P                   P                  4       ^4       V P                   P                  R\        4       V P                  V P                   P                  4       ^(4       R# )r  N)r  seekr   tellr	   r
   r   r   s   &r   test_blob_seek_and_tell!BlobTests.test_blob_seek_and_tell  s    		r)2.		r8$)2.		r8$)2.		sH%)2.r   c                   a  R pRp\         VV 3R l3\         VV 3R l3\         VV 3R l3\         VV 3R l33pV F<  w  rEpS P                  WEVR7      ;_uu_ 4        S P                  WEV4       RRR4       K>  	  R#   + '       g   i     KS  ; i)zoffset out of blob rangez;'origin' should be os.SEEK_SET, os.SEEK_CUR, or os.SEEK_ENDc                  :   < S P                   P                  R 4      # )  r  r  r   s   r   rg  0BlobTests.test_blob_seek_error.<locals>.<lambda>  s    $))..*>r   c                  :   < S P                   P                  R4      # )r  r  r  r   s   r   rg  r    s    $))..*=r   c                  <   < S P                   P                  ^
R4      # )r  r  r  r   s   r   rg  r    s    499>>"b+Ar   c                  <   < S P                   P                  ^
^4      # r0  r  r   s   r   rg  r    s    499>>"a+@r   )r  r  fnN)r  r   r	  )r   msg_oormsg_origr(  r  r  r  s   f      r   test_blob_seek_errorBlobTests.test_blob_seek_error  s    ,P ">?"=>#AB#@A	
 $LCb#266&&s4 76 $666s   A<<Bc                   R p\         P                  ! R4      pV P                  P                  ^\        4       V P                  \        V4      ;_uu_ 4        V P                  P                  VP                  \        4       RRR4       V P                  \        V4      ;_uu_ 4        V P                  P                  VP                  \        4       RRR4       R#   + '       g   i     Lc; i  + '       g   i     R# ; i)zseek offset results in overflow	_testcapiN)
r   import_moduler  r  r	   r	  OverflowErrorINT_MAXr
   r   )r   msg_ofr  s   &  r   test_blob_seek_overflow_error'BlobTests.test_blob_seek_overflow_error  s    2!//<			q(###M6::IINN9,,h7 ;##M6::IINN9,,h7 ;: ;::::s   +C(+C0C-	0D	c                p    V P                   P                  4       pV P                  WP                  4       R # r-   )r  readr   r  r   bufs   & r   test_blob_readBlobTests.test_blob_read  s$    iinnii(r   c                    V P                   P                  \        V P                  4      ^,          4      pV P	                  WP                  4       R# )r#  N)r  r  rX  r  r   r  s   & r   test_blob_read_oversized"BlobTests.test_blob_read_oversized  s3    iinnS^a/0ii(r   c                    ^
pV P                   P                  V4      pV P                  W P                  RV 4       V P                  V P                   P	                  4       V4       R# )r  N)r  r  r   r  r  )r   r  r  s   &  r   test_blob_read_advance_offset'BlobTests.test_blob_read_advance_offset  sL    iinnQiim,)1-r   c                    V P                   P                  ^
4       V P                  V P                   P                  ^
4      V P                  R,          4       R# )r  :r     NN)r  r  r   r  r  r   s   &r   test_blob_read_at_offset"BlobTests.test_blob_read_at_offset  s8    		r+TYYu-=>r   c                    V P                   P                  R 4       V P                  \        P                  4      ;_uu_ 4        V P
                  P                  4        RRR4       R#   + '       g   i     R# ; i)&update test set b='aaaa' where rowid=1N)r"  r  r[  r   rD   r  r  r   s   &r    test_blob_read_error_row_changed*BlobTests.test_blob_read_error_row_changed  sG    @Av6677IINN 8777s   A((A9	c                    R P                  ^24      pV P                  P                  V4       V P                  P	                  R4      P                  4       pV P                  V^ ,          V4       R# )s   new dataselect b from testN)ljustr  writer"  r  rv  r   r   new_datarw  s   &  r   test_blob_writeBlobTests.test_blob_write  sR    $$R(		!ggoo23<<>Q*r   c                *   RpV P                   P                  ^4       V P                   P                  V4       V P                  P	                  R4      P                  4       pV P                  V^ ,          V P                  R,          V,           4       R# )   cr  :Nr   NNs   ccccccccccccccccccccccccc)r  r  r  r"  r  rv  r   r  r  s   &  r   test_blob_write_at_offset#BlobTests.test_blob_write_at_offset  sd    		r		!ggoo23<<>Q3(!:;r   c                    V P                   P                  R4       V P                  V P                   P                  4       ^
4       R# )   dNs
   dddddddddd)r  r  r   r  r   s   &r   test_blob_write_advance_offset(BlobTests.test_blob_write_advance_offset  s-    		 )2.r   c                N   V P                  \        R 4      ;_uu_ 4        V P                  P                  R4       RRR4       V P                  P	                  ^ \
        4       \        V P                  4      pV P                  P                  RV^,
          ,          4       V P                  P                  R4       V P                  \        R 4      ;_uu_ 4        V P                  P                  R4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zdata longer than blob   aN  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)r	  r  r  r  r  r	   rX  )r   r  s   & r   test_blob_write_error_length&BlobTests.test_blob_write_error_length  s    ##J0GHHIIOOK( I 			q(#		N		!%		##J0GHHIIOOD! IH IH IHHs   D D D	D$	c                    V P                   P                  R 4       V P                  \        P                  4      ;_uu_ 4        V P
                  P                  R4       RRR4       R#   + '       g   i     R# ; i)r     aaaN)r"  r  r[  r   rD   r  r  r   s   &r   !test_blob_write_error_row_changed+BlobTests.test_blob_write_error_row_changed  sI    @Av6677IIOOF# 8777r  c                   V P                   P                  R R^RR7      pV P                  \        P                  R4      ;_uu_ 4        VP                  R4       RRR4       VP                  4        R#   + '       g   i     L"; i)r  r  T)readonlyr   r  N)r"  r  r	  r   rD   r  r<  )r   ro_blobs   & r   test_blob_write_error_readonly(BlobTests.test_blob_write_error_readonly  s]    ''""63D"A##F$;$;ZHHMM&! I IHs   A44B	c           
     n   RRR/3R/ 3R/ 3R	/ 33pRpV Fu  w  r4V P                  W4R7      ;_uu_ 4        V P                  \        P                  V4      ;_uu_ 4        V P                  P
                  ! V/ VB  RRR4       RRR4       Kw  	  R#   + '       g   i     L; i  + '       g   i     K  ; i)
r  r  notexistingzno such)r^  kwdsN)r  r  r!   )r  r  r!   )r  r  r!   )r  r  r#  )r   r	  r   rD   r"  r  )r   r(  r  r^  r  s   &    r   test_blob_open_errorBlobTests.test_blob_open_error  s    67$b)',r"	
 !JD433++F,C,CUKKGG$$d3d3 L 43 "KK 433s#   )B#B:B#B B##B4c                P    V P                  \        V P                  4      ^24       R# )2   N)r   rX  r  r   s   &r   test_blob_lengthBlobTests.test_blob_length  s    TYY,r   c                   V P                  V P                  ^,          \        R4      4       V P                  V P                  ^,          \        R4      4       V P                  V P                  ^,          \        R4      4       V P                  V P                  ^,          \        R4      4       V P                  V P                  R,          \        R4      4       R# )r(  r  lo!Nr  )r   r  ordr   s   &r   test_blob_get_itemBlobTests.test_blob_get_item  s    1s3x01s3x01s3x01s3x02C1r   c                    \        R 4      V P                  ^ &   RV P                  R,          ,           pV P                  P	                  R4      P                  4       ^ ,          pV P                  W!4       R# )r     b:r!   NNr  N)r  r  r  r"  r  rv  r   r   r  r  s   &  r   test_blob_set_itemBlobTests.test_blob_set_item  sT    3x		!$))B-'!56??A!D*r   c                   V P                   P                  ^ \        4       V P                  V P                   P	                  4       R4       \        R4      V P                   ^ &   \        R4      V P                   R&   V P                   P                  ^ \        4       RpV P                  V P                   P	                  4       V4       R# )r   r   T.s2   This blob data string is exactly fifty bytes long.Nr  )r  r  r   r   r  r  r	   )r   r  s   & r   test_blob_set_item_with_offset(BlobTests.test_blob_set_item_with_offset"  s    		q(#)3/3x		!C		"		q(#H)84r   c                t   ^ RI H p \        R4      V P                  R&   V P                  V P                  R,          R4       \	        R4      V P                  R&   V P                  V P                  R,          R4       V! R. RO4      V P                  R&   V P                  V P                  R,          R4       R# )	r   )array   12345r   r(  Ns   23456r  s   N)r!   r#  r"   ri  r(  )r  r&  r  r   	bytearray)r   r  s   & r   !test_blob_set_slice_buffer_object+BlobTests.test_blob_set_slice_buffer_object+  s    #H-		#32"8,		#32sO4		#3)@Ar   c                j    ^V P                   R&   V P                  V P                   R,          ^4       R# )   Nr  )r  r   r   s   &r   !test_blob_set_item_negative_index+BlobTests.test_blob_set_item_negative_index6  s'    		"2,r   c                L    V P                  V P                  R ,          R4       R# ):r(     Ns	   blob dataNr   r  r   s   &r   test_blob_get_sliceBlobTests.test_blob_get_slice:  s    4,7r   c                L    V P                  V P                  R ,          R4       R# ):r(  r(  Nr   Nr+  r   s   &r   test_blob_get_empty_slice#BlobTests.test_blob_get_empty_slice=  s    3-r   c                ^    V P                  V P                  ^R V P                  ^R 4       R# )r(  N)r   r  r  r   s   &r   "test_blob_get_slice_negative_index,BlobTests.test_blob_get_slice_negative_index@  s&    1R$))Ab/:r   c                L    V P                  V P                  R ,          R4       R# )r   r  r#  s   ti lbNr+  r   s   &r   test_blob_get_slice_with_skip'BlobTests.test_blob_get_slice_with_skipC  s    6*H5r   c                    R V P                   R&   R V P                  R,          ,           pV P                  P                  R4      P	                  4       ^ ,          pV P                  W!4       R# )r   r!  :r(  NNr  N)r  r  r"  r  rv  r   r  s   &  r   test_blob_set_sliceBlobTests.test_blob_set_sliceF  sP    !		#diim+!56??A!D*r   c                ~    R V P                   R&   V P                  V P                   R,          V P                  4       R# )r   :r   r   N:NNNN)r  r   r  r   s   &r   test_blob_set_empty_slice#BlobTests.test_blob_set_empty_sliceL  s+    		#1tyy1r   c                    R V P                   R&   V P                  P                  R4      P                  4       ^ ,          pRV P                  R,          ,           pV P                  W4       R# )r   r6  r  s
   1h2s3b4o5 :r  NNN)r  r"  r  rv  r  r   )r   r  r  s   &  r   test_blob_set_slice_with_skip'BlobTests.test_blob_set_slice_with_skipP  sQ    $		&!56??A!D 499S>1*r   c                   R pV P                  \        V4      ;_uu_ 4        V P                  R,           RRR4       V P                  \        V4      ;_uu_ 4        V P                  R,           RRR4       V P                  \        V4      ;_uu_ 4        RV P                  R&   RRR4       R#   + '       g   i     L; i  + '       g   i     L[; i  + '       g   i     R# ; i)zindices must be integers:r(  g      @NNg      ?r  r  r	  r'  r  )r   r  s   & r   $test_blob_mapping_invalid_index_type.BlobTests.test_blob_mapping_invalid_index_typeV  s    (##Is33IIe 4##Is33IIcN 4##Is33!DIIcN 43	 4333333s#   B/CC/B?	C	C&	c           
     4   \        V P                  4      ^iR.pV F`  pV P                  VR7      ;_uu_ 4        V P                  \        R4      ;_uu_ 4        V P                  V,           RRR4       RRR4       Kb  	  V P
                  P                  R4       V P                  \        P                  4      ;_uu_ 4        V P                  ^ ,           RRR4       R#   + '       g   i     L|; i  + '       g   i     K  ; i  + '       g   i     R# ; i)i   )idxzindex out of rangeNr  i)
rX  r  r   r	  
IndexErrorr"  r  r[  r   rD   )r   r(  rH  s   &  r   test_blob_get_item_error"BlobTests.test_blob_get_item_error_  s    tyy>3-C#&&++J8LMMIIcN N '&  	@Av6677IIaL 87 NM '&& 877s/   C2C+C2DC/*C22DD	c                    \         P                  ! R 4      pV P                  \        R4      ;_uu_ 4        V P                  VP
                  ,           RRR4       R#   + '       g   i     R# ; i)r  zcannot fit 'int'N)r   r  r	  rI  r  
ULLONG_MAX)r   r  s   & r   test_blob_get_item_error_bigint)BlobTests.test_blob_get_item_error_bigintk  sH    !//<	##J0BCCIIi**+ DCCCs   AA.	c                   V P                  \        R 4      ;_uu_ 4        RV P                  ^ &   RRR4       V P                  \        R 4      ;_uu_ 4        RV P                  ^ &   RRR4       V P                  \        R 4      ;_uu_ 4        \        R4      V P                  ^ &   RRR4       V P                  \        R4      ;_uu_ 4        V P                  ^  RRR4       V P                  \        R4      ;_uu_ 4        ^ V P                  R&   RRR4       V P                  \
        R4      ;_uu_ 4        R	V P                  ^ &   RRR4       V P                  \
        R4      ;_uu_ 4        RV P                  ^ &   RRR4       V P                  \
        R4      ;_uu_ 4        ^^A,          V P                  ^ &   RRR4       R#   + '       g   i     EL; i  + '       g   i     ELy; i  + '       g   i     ELN; i  + '       g   i     EL.; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)
zcannot be interpreteds   multipleNr  doesn't support.*deletionzBlob index out of ranger  zmust be in range   r  )r	  r'  r  r"  rI  r  r   s   &r   test_blob_set_item_error"BlobTests.test_blob_set_item_errorp  s   ##I/FGG&DIIaL H##I/FGGDIIaL H##I/FGG$T?DIIaL H##I/JKK		! L##J0IJJDIIdO K##J0BCCDIIaL D##J0BCCDIIaL D ##J0BCCb5DIIaL DC HGGGGGGGGKKKJJJCCCC DCCs_   GGG)
G=>H4H%*H8 IG	G&	)G:	=H	H"	%H5	8I	I	c                   V P                  \        R 4      ;_uu_ 4        RV P                  R&   RRR4       V P                  \        R 4      ;_uu_ 4        R
V P                  R&   RRR4       V P                  \        R4      ;_uu_ 4        V P                  R RRR4       V P                  \        R4      ;_uu_ 4        RV P                  R&   RRR4       V P                  \        4      ;_uu_ 4        \        R4      R	,          V P                  R&   RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)z
wrong sizer  :r(  r  NNrQ  zstep cannot be zeror   :r(  r  r   s   abcder"  r  )r	  rI  r  r'  r  r[  r%  r&  r   s   &r   test_blob_set_slice_error#BlobTests.test_blob_set_slice_error  s    ##J=="DIIdO >##J==)DIIdO >##I/JKK		$ L##J0EFF (DIIf G{++(237DIIdO ,+ >===KKFF+++s;   DD1E?E4 E*D.	1E	E	E'	*E;	c                   V P                  \        R 4      ;_uu_ 4        V P                  V P                  ,            RRR4       V P                  \        R 4      ;_uu_ 4        V P                  ^,           RRR4       V P                  \        R4      ;_uu_ 4        RV P                  9    RRR4       R#   + '       g   i     L; i  + '       g   i     L[; i  + '       g   i     R# ; i)zunsupported operandNzis not.+iterabler  rC  r   s   &r    test_blob_sequence_not_supported*BlobTests.test_blob_sequence_not_supported  s    ##I/DEEII		! F##I/DEEIIM F##I/ABBDII CB	 FEEEBBBs#   B7#C
C7C	
C	C.	c                   RpV P                   P                  RR^4      ;_uu_ 4       pVP                  V4       RRR4       V P                   P                  R4      P	                  4       ^ ,          pV P                  W14       V P                  \        P                  R4      ;_uu_ 4        XP                  4        RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r  r  r  Nr  zclosed blobs2   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)
r"  r  r  r  rv  r   r	  r   rQ   r  )r   r  r  r  s   &   r   test_blob_context_manager#BlobTests.test_blob_context_manager  s    WWfc1--JJt .!56??A!D& ##F$;$;]KKIIK LK .- LKKs   C+CC	C*	c           	         ! R  R\         4      pV P                  VR4      ;_uu_ 4        V P                  P                  RR^4      ;_uu_ 4       pV! R4      h  + '       g   i     M; i RRR4       R#   + '       g   i     R# ; i)c                       ] tR tRtRtR# )NBlobTests.test_blob_context_manager_reraise_exceptions.<locals>.DummyExceptioni  r+  Nr  r+  r   r   DummyExceptionr`    s    r   ra  reraisedr  r  N)r0   r	  r"  r  )r   ra  r  s   &  r   ,test_blob_context_manager_reraise_exceptions6BlobTests.test_blob_context_manager_reraise_exceptions  sc    	Y 	##NJ??!!&#q11T$Z00 211 @???s   &A7	A	A)$A77B	c           	     `   \        4       ;_uu_ 4       pVP                  R 4       VP                  R4       VP                  RR^4      pVP                  4        RpV P	                  \
        P                  V4      ;_uu_ 4        VP                  4        RRR4       V P	                  \
        P                  V4      ;_uu_ 4        VP                  R4       RRR4       V P	                  \
        P                  V4      ;_uu_ 4        VP                  ^ 4       RRR4       V P	                  \
        P                  V4      ;_uu_ 4        VP                  4        RRR4       V P	                  \
        P                  V4      ;_uu_ 4        VP                  4        RRR4       V P	                  \
        P                  V4      ;_uu_ 4        VP                  RRR4       RRR4       V P	                  \
        P                  V4      ;_uu_ 4        \        V4       RRR4       V P	                  \
        P                  V4      ;_uu_ 4        V^ ,           RRR4       V P	                  \
        P                  V4      ;_uu_ 4        VR,           RRR4       V P	                  \
        P                  V4      ;_uu_ 4        RV^ &   RRR4       RRR4       R#   + '       g   i     ELK; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELe; i  + '       g   i     EL=; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)r  z'insert into test values (zeroblob(100))r  r  zCannot operate on a closed blobNr   :r   r!   N)r   r  r  r<  r	  r   rQ   r  r  r  r  	__enter____exit__rX  )r   r"  r  r  s   &   r   test_blob_closedBlobTests.test_blob_closed  sR   "JJ23JJ@A;;vsA.DJJL3C''(?(?EE		 F''(?(?EE

3 F''(?(?EE		! F''(?(?EE		 F''(?(?EE  F''(?(?EEdD$/ F''(?(?EED	 F''(?(?EEQ F''(?(?EES	 F''(?(?EEQ F3  FEEEEEEEEEEEEEEEEEEEEEEEEEEE3 s   A0NK	0NK*	0NK>	0NL	0N	L&	0N
L:	0NM	0N

M"	0N
M6	0N>N		NK'!	N*K;5	N>L		NL#	N&L71	N:M	NM	N"M3-	N6NN	NNN-	c                D   \        4       ;_uu_ 4       pVP                  R 4       VP                  R4       VP                  RR^4      pVP                  4        V P	                  \
        P                  RVP                  4       RRR4       R#   + '       g   i     R# ; i)r  z*insert into test(b) values (zeroblob(100))r  r  z#Cannot operate on a closed databaseN)r   r  r  r<  r	  r   rQ   r  )r   r"  r  s   &  r   test_blob_closed_db_read"BlobTests.test_blob_closed_db_read  sq    "JJ23JJCD;;vsA.DHHJ""6#:#:#H#'99. s   A1BB	c                    \        4       ;_uu_ 4       pRpVP                  R4       VP                  RV34       VP                  RRV4       RRR4       R#   + '       g   i     R# ; i)r#  zcreate table t(t blob)z/insert into t(rowid, t) values (?, zeroblob(1))rc  Nl        )r   r  r  )r   r"  rowids   &  r   test_blob_32bit_rowidBlobTests.test_blob_32bit_rowid  sO    "EJJ/0JJH5(SKKS%(	 s   :AA(	)r  r"  r  N)0r,  r-  r.  r/  r?  rC  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r'  r,  r/  r3  r7  r:  r=  r@  rD  rJ  rN  rS  rV  rY  r\  rc  rh  rk  ro  r0  r1  r2  s   @r   r  r    s     56/58)).?
+</	"$
4-2+5	B-8.;6+2+"
,
!&
8	1:.) )r   r  c                      a  ] tR tRt o R tR t]P                  R 4       tR t	R t
]P                  R 4       tRtV tR	# )
ThreadTestsi  c                    \         P                  ! R 4      V n        V P                  P                  4       V n        V P                  P                  R4       V P                  P                  R4       R# )r7  z$create table test(name text, b blob)z,insert into test values('blob', zeroblob(1))N)r   r
  r  r;  rS  r  r   s   &r   r?  ThreadTests.setUp  sJ    >>*-88??$?@GHr   c                n    V P                   P                  4        V P                  P                  4        R # r-   rS  r<  r  r   s   &r   rC  ThreadTests.tearDown      r   c                   aaa VVV3R  lp. p\         P                  ! VRV/R7      pVP                  4        VP                  4        V'       d#   V P	                  RP                  V4      4       R# R# )c                    <  S! S/ SB  V P                  R 4       R#   \        P                   d     R#  T P                  R4        R# ; i)zdid not raise ProgrammingErrorzraised wrong exceptionN)r   r   rQ   )errr^  r  r  s   &r   run"ThreadTests._run_test.<locals>.run  sG    5D!D!

;<** 5

34s    AAr{  targetr_  
N)	threadingThreadstartjoinfail)r   r  r^  r  r|  r{  rc  s   &fjl   r   	_run_testThreadTests._run_test  sS    	5 C=			IIdiin% r   c                  a  V 3R  lV 3R lV 3R lV 3R lV 3R lV 3R lV 3R lV 3R lV 3R lV 3R	 l.
p\        \        P                  R
4      '       d+   VP                  V 3R l4       VP                  V 3R l4       \        P                  R8  d   VP                  V 3R l4       V F7  pS P                  VR7      ;_uu_ 4        S P                  V4       RRR4       K9  	  R#   + '       g   i     KN  ; i)c                  8   < S P                   P                  4       # r-   )r  r;  r   s   r   rg  :ThreadTests.test_check_connection_thread.<locals>.<lambda>      DHHOO%r   c                  8   < S P                   P                  4       # r-   )r  rH  r   s   r   rg  r    r  r   c                  8   < S P                   P                  4       # r-   )r  rP  r   s   r   rg  r        DHH%%'r   c                  8   < S P                   P                  4       # r-   )r  r<  r   s   r   rg  r        DHHNN$r   c                  :   < S P                   P                  R 4      # r-   )r  set_trace_callbackr   s   r   rg  r    s    DHH//5r   c                  :   < S P                   P                  R 4      # r-   )r  set_authorizerr   s   r   rg  r    s    DHH++D1r   c                  <   < S P                   P                  R R4      # r:  N)r  create_collationr   s   r   rg  r     s    DHH--eT:r   c                  X   < S P                   P                  \        P                  R4      # )r!   r  )r  r  r   r   r   s   r   rg  r    s    DHH%%f&@&@"Er   c                  V   < S P                   P                  \        P                  4      # r-   )r  r  r   r   r   s   r   rg  r    s    DHH%%f&@&@Ar   c                  >   < S P                   P                  R R^4      # )r  r  )r  r  r   s   r   rg  r    s    DHH%%fc15r   r  c                  8   < S P                   P                  4       # r-   )r  r  r   s   r   rg  r    s    txx113r   c                  :   < S P                   P                  R 4      # )r   )r  r  r   s   r   rg  r    s    txx33C8r   c                  >   < S P                   P                  R ^ R4      # r  )r  create_window_functionr   s   r   rg  r  	  s    txx>>uaNr   r  Nr   )hasattrr   r  r   r   r   r  r   fnsr  s   f  r   test_check_connection_thread(ThreadTests.test_check_connection_thread  s    %%'$51:EA5
 6$$k22JJ34JJ89%%3JJNOB$$r" %$ $$$s   	C))C:c                   a  V 3R  lV 3R lV 3R lV 3R l.pV F7  pS P                  VR7      ;_uu_ 4        S P                  V4       RRR4       K9  	  R#   + '       g   i     KN  ; i)c                  :   < S P                   P                  R 4      # )z"insert into test(name) values('a')rS  r  r   s   r   rg  6ThreadTests.test_check_cursor_thread.<locals>.<lambda>  s    DHH$$%IJr   c                  8   < S P                   P                  4       # r-   )rS  r<  r   s   r   rg  r    r  r   c                  :   < S P                   P                  R 4      # )rO  r  r   s   r   rg  r    s    DHH$$%<=r   c                  8   < S P                   P                  4       # r-   )rS  rv  r   s   r   rg  r    r  r   r  N)r   r  r  s   f  r   test_check_cursor_thread$ThreadTests.test_check_cursor_thread  sQ    J$='	
 B$$r" %$ $$$s   AA(c           	     @   R  p\        RR7      ;_uu_ 4       p. p\        P                  ! VRVRV/R7      pVP                  4        VP	                  4        V P                  \        V4      ^ RP	                  V4      4       RRR4       R#   + '       g   i     R# ; i)c                      V P                  R 4       R#   \        P                   d    TP                  R4        R# i ; i)r  zmulti-threading not allowedN)r  r   r4   r   )r  r{  s   &&r   r|  4ThreadTests.test_dont_check_same_thread.<locals>.run  s3    :J'<< :

89:s    &??F)check_same_threadr  r{  r~  r  N)r   r  r  r  r  r   rX  )r   r|  r  r{  rc  s   &    r   test_dont_check_same_thread'ThreadTests.test_dont_check_same_thread  su    	: u55C  UC4LMAGGIFFHSXq$))C.9 6555s   A*BB	r  rS  N)r,  r-  r.  r/  r?  rC  r   reap_threadsr  r  r  r  r0  r1  r2  s   @r   rr  rr    sN     I ""& #&"#.	# "": #:r   rr  c                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )ConstructorTestsi+  c                6    \         P                  ! R ^
^4      pR# i  N)r   Dater   r  s   & r   	test_dateConstructorTests.test_date,  s    KKb"%r   c                6    \         P                  ! ^^'^#4      pR# )   N)r   Timer   rc  s   & r   	test_timeConstructorTests.test_time/  s    KKB#r   c                <    \         P                  ! R ^
^^^'^#4      pR# r  )r   	Timestampr   tss   & r   test_timestampConstructorTests.test_timestamp2  s    dBBB7r   c                2    \         P                  ! ^*4      pR# r  )r   DateFromTicksr  s   & r   test_date_from_ticks%ConstructorTests.test_date_from_ticks5        $r   c                2    \         P                  ! ^*4      pR# r  )r   TimeFromTicksr  s   & r   test_time_from_ticks%ConstructorTests.test_time_from_ticks8  r  r   c                2    \         P                  ! ^*4      pR# r  )r   TimestampFromTicksr  s   & r   test_timestamp_from_ticks*ConstructorTests.test_timestamp_from_ticks;  s    &&r*r   c                2    \         P                  ! R 4      pR# )s    'N)r   Binary)r   r  s   & r   test_binaryConstructorTests.test_binary>  s    MM&!r   r+  N)r,  r-  r.  r/  r  r  r  r  r  r  r  r0  r1  r2  s   @r   r  r  +  s-     &$8%%+" "r   r  c                   n   a  ] tR tR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V tR# )ExtensionTestsiA  c                z    \         P                  ! R 4      V n        V P                  P                  4       V n        R# r  )r   r
  r  r;  rS  r   s   &r   r?  ExtensionTests.setUpB  s$    >>*-88??$r   c                n    V P                   P                  4        V P                  P                  4        R # r-   rv  r   s   &r   rC  ExtensionTests.tearDownF  rx  r   c                    V P                   pVP                  R 4       VP                  R4       VP                  4       ^ ,          pV P	                  V^4       R# )z
            -- bla bla
            /* a stupid comment */
            create table a(i);
            insert into a(i) values (5);
            zselect i from aN)rS  rk  r  rv  r   )r   rS  rn  s   &  r   test_script_string_sql%ExtensionTests.test_script_string_sqlJ  sM    hh  	 	%&llnQa r   c                    V P                  \        P                  4      ;_uu_ 4        V P                  P	                  R 4       RRR4       R#   + '       g   i     R# ; i)zo
                CREATE TABLE test(x);
                asdf;
                CREATE TABLE test2(x)
            Nr[  r   rD   rS  rk  r   s   &r   test_script_syntax_error'ExtensionTests.test_script_syntax_errorV  s?    v6677HH"" $  8777r{  c                    V P                  \        P                  4      ;_uu_ 4        V P                  P	                  R 4       RRR4       R#   + '       g   i     R# ; i)zc
                CREATE TABLE test(sadfsadfdsa);
                SELECT foo FROM hurz;
            Nr  r   s   &r   test_script_error_normal'ExtensionTests.test_script_error_normal^  s?    v6677HH"" $  8777r{  c                    V P                  \        4      ;_uu_ 4        V P                  P                  R 4       RRR4       R#   + '       g   i     R# ; i)sg   
                CREATE TABLE test(foo);
                INSERT INTO test(foo) VALUES (5);
            N)r[  r'  rS  rk  r   s   &r   "test_cursor_executescript_as_bytes1ExtensionTests.test_cursor_executescript_as_bytese  s9    y))HH"" $  *)))r  c                    V P                  \        4      ;_uu_ 4        V P                  P                  R 4       RRR4       R#   + '       g   i     R# ; i)z^
                CREATE TABLE a(i); 
                INSERT INTO a(i) VALUES (5);
            N)r[  r  rS  rk  r   s   &r   .test_cursor_executescript_with_null_characters=ExtensionTests.test_cursor_executescript_with_null_charactersl  s9    z**HH"" $  +***r  c                    V P                  \        4      ;_uu_ 4        V P                  P                  R 4       RRR4       R#   + '       g   i     R# ; i)ua   
                CREATE TABLE a(s);
                INSERT INTO a(s) VALUES ('');
            N)r[  UnicodeEncodeErrorrS  rk  r   s   &r   )test_cursor_executescript_with_surrogates8ExtensionTests.test_cursor_executescript_with_surrogatess  s:    122HH"" $  3222r  c                   R p\        4       ;_uu_ 4       p\        V4      ;_uu_ 4       pVP                  RP                  V4      4       V P	                  \
        P                  V4      ;_uu_ 4        VP                  RP                  V^,           4      4       RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)r  zselect 'almost too large'zselect 'too large'N)r   r   rk  r  r	  r   r@   )r   r  r"  lims   &   r   *test_cursor_executescript_too_large_script9ExtensionTests.test_cursor_executescript_too_large_scriptz  s    )"hrllc8>>sCD''(8(8#>>  !5!;!;CE!BC ? '3>> '3ls;   CA	C	2(B4C	"C4C?C	CCC+	c                    V P                   pVP                  R 4       V P                  VP                  4       VP	                  R4       V P                  VP                  4       R# )beginr  N)r  r  r(  ru  rk  r&  )r   r  s   & r   $test_cursor_executescript_tx_control3ExtensionTests.test_cursor_executescript_tx_control  sK    hhG**+*%++,r   c                    V P                   P                  R 4      P                  4       ^ ,          pV P                  V^R4       R# )zselect 5z Basic test of Connection.executeN)r  r  rv  r   )r   results   & r   test_connection_execute&ExtensionTests.test_connection_execute  s7    !!*-668;$FGr   c                *   V P                   pVP                  R 4       VP                  RRR.4       VP                  R4      P                  4       pV P	                  V^ ,          ^ ,          ^R4       V P	                  V^,          ^ ,          ^R4       R# )zcreate table test(foo)z insert into test(foo) values (?)z!select foo from test order by fooz$Basic test of Connection.executemanyNr  ri  )r  r  rj  ri  r   r   r  r  s   &  r   test_connection_executemany*ExtensionTests.test_connection_executemany  sy    hh,-:T4LI@AJJL1q*PQ1q*PQr   c                    V P                   pVP                  R 4       VP                  R4      P                  4       ^ ,          pV P	                  V^R4       R# )z[
            CREATE TABLE test(foo);
            INSERT INTO test(foo) VALUES (5);
        zselect foo from testz&Basic test of Connection.executescriptN)r  rk  r  rv  r   r  s   &  r   test_connection_executescript,ExtensionTests.test_connection_executescript  sP    hh  	 34==?B$LMr   r  N)r,  r-  r.  r/  r?  rC  r  r  r  r  r  r  r  r  r  r  r  r0  r1  r2  s   @r   r  r  A  sP     %
!D-HRN N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
R	 tR
 tR tR tRtV tR# )ClosedConTestsi  c                    R pV P                  \        P                  V4      ;_uu_ 4        V! V/ VB  RRR4       R#   + '       g   i     R# ; i)z$Cannot operate on a closed database.N)r	  r   rQ   )r   r  r^  r  r  s   &&*, r   checkClosedConTests.check  s=    6##F$;$;UCC DCCCs	   	>A	c                    \         P                  ! R 4      V n        V P                  P                  4       V n        V P                  P                  4        R# r  )r   r
  r  r;  rS  r<  r   s   &r   r?  ClosedConTests.setUp  s2    >>*-88??$r   c                P    V P                  V P                  P                  4       R # r-   )r  r  r;  r   s   &r   test_closed_con_cursor%ClosedConTests.test_closed_con_cursor      

488??#r   c                P    V P                  V P                  P                  4       R # r-   )r  r  rH  r   s   &r   test_closed_con_commit%ClosedConTests.test_closed_con_commit  r  r   c                P    V P                  V P                  P                  4       R # r-   )r  r  rP  r   s   &r   test_closed_con_rollback'ClosedConTests.test_closed_con_rollback  s    

488$$%r   c                R    V P                  V P                  P                  R 4       R# )zselect 4N)r  rS  r  r   s   &r   test_closed_cur_execute&ClosedConTests.test_closed_cur_execute  s    

488##Z0r   c                \    R  pV P                  V P                  P                  R^V4       R# )c                     ^# r  r+  re  s   &r   r{  5ClosedConTests.test_closed_create_function.<locals>.f  s    r   r:  N)r  r  rl  )r   r{  s   & r   test_closed_create_function*ClosedConTests.test_closed_create_function  s#    	

488++UAq9r   c                j     ! R  R4      pV P                  V P                  P                  R^V4       R# )c                   2   a  ] tR tRt o R tR tR tRtV tR# )8ClosedConTests.test_closed_create_aggregate.<locals>.Aggi  c                    R # r-   r+  r   s   &r   r  AClosedConTests.test_closed_create_aggregate.<locals>.Agg.__init__      r   c                    R # r-   r+  r  s   &&r   step=ClosedConTests.test_closed_create_aggregate.<locals>.Agg.step  r(  r   c                    ^# r  r+  r   s   &r   finalizeAClosedConTests.test_closed_create_aggregate.<locals>.Agg.finalize  s    r   r+  N)	r,  r-  r.  r/  r  r*  r-  r0  r1  r2  s   @r   Aggr%    s      r   r/  r:  N)r  r  create_aggregate)r   r/  s   & r   test_closed_create_aggregate+ClosedConTests.test_closed_create_aggregate  s*    	 	 	

488,,eQ<r   c                X    R  pV P                  V P                  P                  V4       R# )c                  "    \         P                  # r-   )r   DENY)r^  s   *r   
authorizer=ClosedConTests.test_closed_set_authorizer.<locals>.authorizer  s    ;;r   N)r  r  r  )r   r6  s   & r   test_closed_set_authorizer)ClosedConTests.test_closed_set_authorizer  s    	

488**J7r   c                Z    R  pV P                  V P                  P                  V^d4       R# )c                      R # r-   r+  r+  r   r   progressBClosedConTests.test_closed_set_progress_callback.<locals>.progress  s    r   N)r  r  set_progress_handler)r   r<  s   & r   !test_closed_set_progress_callback0ClosedConTests.test_closed_set_progress_callback  s!    	

48800(C@r   c                <    V P                  V P                  4       R # r-   )r  r  r   s   &r   test_closed_callClosedConTests.test_closed_call  s    

488r   r  N)r,  r-  r.  r/  r  r?  r  r  r  r  r!  r1  r8  r?  rB  r0  r1  r2  s   @r   r
  r
    sB     

$$&1:
=8
A
 r   r
  c                   &   a  ] tR tRt o R tRtV tR# )ClosedCurTestsi  c                J   V P                   P                  4       pVP                  4        R F^  pVR9   d   RpMVR8X  d   RRR.3pM. pV P                  \        P
                  4      ;_uu_ 4        \        W4      pV! V!   RRR4       K`  	  R#   + '       g   i     Ku  ; i)	r  rj  zinsert into foo(bar) values (?)N)r  rj  rk  ri  r  rv  )r  rk  )zselect 4 union select 5r  r  )r"  r;  r<  r[  r   rQ   r  )r   rS  method_namer  methods   &    r   test_closedClosedCurTests.test_closed  s    ggnn		kK::5-;dD\J""6#:#:;; 2 <; l <;;s   1BB"r+  N)r,  r-  r.  r/  rI  r0  r1  r2  s   @r   rE  rE    s        r   rE  c                   V   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tRtV tR# )SqliteOnConflictTestsi  c                    \         P                  ! R 4      V n        V P                  P                  4       V n        V P                  P                  R4       R# )r7  zz
          CREATE TABLE test(
            id INTEGER PRIMARY KEY, name TEXT, unique_name TEXT UNIQUE
          );
        Nrm  r   s   &r   r?  SqliteOnConflictTests.setUp  s9    ..,''.."  	r   c                n    V P                   P                  4        V P                  P                  4        R # r-   rp  r   s   &r   rC  SqliteOnConflictTests.tearDown  rr  r   c                   R V P                   n        V P                   P                  4       V n        V P                  P	                  R4       V P                  P	                  R4       V P                  P	                  R4       V P                  \        P                  4      ;_uu_ 4        V P                  P	                  R4       R R R 4       V P                   P                  4        V P                  P	                  R4       V P                  V P                  P                  4       . 4       R #   + '       g   i     Lq; i)NBEGIN,INSERT INTO test(name) VALUES ('abort_test')8INSERT OR ROLLBACK INTO test(unique_name) VALUES ('foo')z"SELECT name, unique_name from testr"  r  r;  r>  r  r[  r   rI   rH  r   ri  r   s   &r   3test_on_conflict_rollback_with_explicit_transactionISqliteOnConflictTests.test_on_conflict_rollback_with_explicit_transaction  s    "&''.." FGRSv4455GGOOVW 6 	<=))+R0 65s   )D..D>	c                   R V P                   n        V P                   P                  4       V n        V P                  P	                  R4       V P                  P	                  R4       V P                  P	                  R4       V P                  \        P                  4      ;_uu_ 4        V P                  P	                  R4       R R R 4       V P                   P                  4        V P                  P	                  R4       V P                  V P                  P                  4       RR.4       R #   + '       g   i     Ls; i)NrR  rS  5INSERT OR ABORT INTO test(unique_name) VALUES ('foo')"SELECT name, unique_name FROM test
abort_testNNr:  rU  r   s   &r   8test_on_conflict_abort_raises_with_explicit_transactionsNSqliteOnConflictTests.test_on_conflict_abort_raises_with_explicit_transactions  s     #'''.." FGOPv4455GGOOST 6<=))+.BN-ST 65s   )D00E 	c                   V P                   P                  R 4       V P                   P                  R4       V P                  \        P                  4      ;_uu_ 4        V P                   P                  R4       RRR4       V P                   P                  R4       V P                  V P                   P                  4       . 4       R#   + '       g   i     LW; i)rS  rT  NrZ  r>  r  r[  r   rI   r   ri  r   s   &r   -test_on_conflict_rollback_without_transactionCSqliteOnConflictTests.test_on_conflict_rollback_without_transaction  s    FGRSv4455GGOOVW 6<=))+R0	 65s   C		C	c                   V P                   P                  R 4       V P                   P                  R4       V P                  \        P                  4      ;_uu_ 4        V P                   P                  R4       RRR4       V P                   P                  R4       V P                  V P                   P                  4       RR.4       R#   + '       g   i     LY; i)rS  rY  NrZ  r[  r]  ra  r   s   &r   2test_on_conflict_abort_raises_without_transactionsHSqliteOnConflictTests.test_on_conflict_abort_raises_without_transactions!  s     	FGOPv4455GGOOST 6 	<=))+.BN-ST	 65s   CC	c                L   V P                   P                  R 4       V P                  \        P                  4      ;_uu_ 4        V P                   P                  R 4       RRR4       V P                  V P                   P                  4       . 4       R#   + '       g   i     L<; i)z4INSERT OR FAIL INTO test(unique_name) VALUES ('foo')Nra  r   s   &r   test_on_conflict_fail+SqliteOnConflictTests.test_on_conflict_fail,  sf    NOv4455GGOORS 6))+R0 65s   BB#	c                    V P                   P                  R 4       V P                   P                  R 4       V P                   P                  R4       V P                  V P                   P                  4       R.4       R# )z6INSERT OR IGNORE INTO test(unique_name) VALUES ('foo')zSELECT unique_name FROM testNr9  r>  r  r   ri  r   s   &r   test_on_conflict_ignore-SqliteOnConflictTests.test_on_conflict_ignore2  sT    PQPQ67))+hZ8r   c                    V P                   P                  R 4       V P                   P                  R4       V P                   P                  R4       V P                  V P                   P                  4       R.4       R# )zFINSERT OR REPLACE INTO test(name, unique_name) VALUES ('Data!', 'foo')zUINSERT OR REPLACE INTO test(name, unique_name) VALUES ('Very different data!', 'foo')rZ  N)zVery different data!r:  rk  r   s   &r   test_on_conflict_replace.SqliteOnConflictTests.test_on_conflict_replace9  sV    `aop<=))+.M-NOr   r  N)r,  r-  r.  r/  r?  rC  rV  r^  rb  re  rh  rl  ro  r0  r1  r2  s   @r   rL  rL    s;     1U 1	U19P Pr   rL  c                   0   a  ] tR tRt o ^ tR tR tRtV tR# )MultiprocessTestsiA  c                $    \        \        4       R # r-   )r   r   r   s   &r   rC  MultiprocessTests.tearDownE  s	    vr   c                D   R \          RV P                   R2p\        P                  ! \        P
                  RV.R^ \        P                  \        P                  R7      pV P                  VP                  4       V P                  RVP                  P                  4       P                  4       4       \        P                  ! \         V P                  R7      p V;_uu_ 4        VP                  R4       R	R	R	4       VP                   P#                  R
4       VP)                  4        V P+                  VP,                  4        VP                  R\.        R7       T P                  TP,                  ^ 4       R	#   + '       g   i     L; i  \        P$                   d/   pTP                   P#                  \'        T4      4        R	p?LR	p?ii ; i  TP)                  4        i ; i  \        P0                   d#    TP3                  4        TP                  4        h i ; i)zif 1:
            import sqlite3
            def wait():
                print("started")
                assert "database is locked" in input()

            cx = sqlite3.connect("z", timeout=a  )
            cx.create_function("wait", 0, wait)
            with cx:
                cx.execute("create table t(t)")
            try:
                # execute two transactions; both will try to lock the db
                cx.executescript('''
                    -- start a transaction and wait for parent
                    begin transaction;
                    select * from t;
                    select wait();
                    rollback;

                    -- start a new transaction; would fail if parent holds lock
                    begin transaction;
                    select * from t;
                    rollback;
                ''')
            finally:
                cx.close()
        z-czutf-8)encodingbufsizestdinstdoutstarted)timeoutzinsert into t values('test')Nzno errorend)inputr{  )r   CONNECTION_TIMEOUT
subprocessPopenr  
executablePIPEr1  communicater   ry  readlinestripr   r
  r  rx  r  rD   r  r<  r  
returncoder   TimeoutExpiredkill)r   SCRIPTprocr"  r  s   &    r   &test_ctx_mgr_rollback_if_commit_failed8MultiprocessTests.test_ctx_mgr_rollback_if_commit_failedH  s   # $*(+d6M6M5N O	: ^^T6*//??
 	(() 	DKK$8$8$:$@$@$BC^^FD,C,CD	

9: 
 JJZ(HHJ 	$//*	5-@
 	!,# && 	'JJSX&&	'
 HHJ (( 	IIK	sT   
F $E:6F >G G( :F
	F G"$GG GG G%(7Hr+  N)	r,  r-  r.  r/  r~  rC  r  r0  r1  r2  s   @r   rr  rr  A  s     >- >-r   rr  c                   P   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )RowTestsi  c                z    \         P                  ! R 4      V n        \         P                  V P                  n        R# r  )r   r
  r"  r  r  r   s   &r   r?  RowTests.setUp  s"    ..,$jjr   c                :    V P                   P                  4        R # r-   rB  r   s   &r   rC  RowTests.tearDown  rE  r   c                    V P                   P                  R 4      pVP                  4       pV P                  VP	                  4       RR.4       R# )zSELECT 1 as first, 2 as secondfirstsecondN)r"  r  rv  r   keysr   r>  rw  s   &  r   test_row_keysRowTests.test_row_keys  s;    WW__=>kkmgx%89r   c                    V P                   P                  R 4      pVP                  4       pV P                  \	        V4      ^4       R# )zSELECT 1, 2, 3N)r"  r  rv  r   rX  r  s   &  r   test_row_lengthRowTests.test_row_length  s4    WW__-.kkmS1%r   c           
     &   V P                   P                  R 4      pVP                  4       pV P                  V^ ,          ^4       V P                  V^,          ^4       V P                  VR,          ^4       V P                  VR,          ^4       R FT  pV P	                  VR7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        W#,           RRR4       RRR4       KV  	  R#   + '       g   i     L; i  + '       g   i     K~  ; i)zSELECT 1 as a, 2 as br  r  )r  N)nokeyri  g333333?)r"  r  rv  r   r   r[  rI  )r   r>  rw  r  s   &   r   test_row_getitemRowTests.test_row_getitem  s    WW__45kkmQ#Q#S1%S1%"C#&&&&z22H 3 '& #22 '&&s$   /C?	C,C?,C<7C??Dc                n   V P                   P                  R 4      pVP                  4       pV P                   P                  R 4      pVP                  4       pV P                  W$4       V P	                  W$4       V P                   P                  R4      pVP                  4       pV P                  W&4       R# )zSELECT 1 as azSELECT 1 as bN)r"  r  rv  assertIsNotr   assertNotEqual)r   c1r1c2r2c3r3s   &      r   test_row_equalityRowTests.test_row_equality  s    WW___-[[]WW___-[[]  WW___-[[]B#r   c                f   V P                   P                  4       pV P                  VP                  4       \        P
                  ! VR4      pV P                  VP                  4       . 4       V P                  \        R 4      ;_uu_ 4        VR ,           RRR4       R#   + '       g   i     R# ; i)r  Nr+  )
r"  r;  r  r  r   r  r   r  r	  rI  r  s   &  r   test_row_no_description RowTests.test_row_no_description  ss    WW^^"..)jjR R(##J88L 9888s   
BB0	c                    ^ RI Hp V P                  P                  R4      pVP	                  4       pV P                  \        P                  V4       V P                  W14       R# )r   )SequencezSELECT 1N)	collections.abcr  r"  r  rv  r.   r   r  r  )r   r  r>  rw  s   &   r   test_row_is_a_sequenceRowTests.test_row_is_a_sequence  sD    ,WW__Z(kkmfjj(3c,r   r  N)r,  r-  r.  r/  r?  rC  r  r  r  r  r  r  r0  r1  r2  s   @r   r  r    s2     ):
&

$- -r   r  __main__)5r5  r2  sqlite3r   r  r  r  rh  urllib.parserK  r  test.supportr   r   r   r   r   r   r	   r
   r   test.support.os_helperr   r   r   r   r   utilr   r   r   TestCaser   r5  r  
skipUnlessr  r  r  r/  rk  r  requires_working_threadingrr  r  r  r
  rE  rL  rr  r  r,  mainr+  r   r   <module>r     s  .  	   
      $ 8 + + Y Y + %I(## IDN/h'' N/b-8#4#4 -( 
WV..<13%3X&& %33%3PY:!! Y:xv4(## v4rD)!! D)N
 ,,.M:(## M: /M:`"x(( ",ZNX&& ZNz1X&& 1h ((*;*;  $ZPH-- ZPz D-)) D- D-N>-x   >-B zMMO r   