+
    Bi1                        ^ RI t ^ RIt^ RIHt ^RIHt ^RIHt R 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      t ! R R]] P                  4      t ! R R] P                  4      t]R8X  d   ] P&                  ! 4        R# R# )    N)Sequence)memory_database)MemoryDatabaseMixinc                 h    / p\        V P                  4       F  w  r4W,          W$^ ,          &   K  	  V# )r   )	enumeratedescription)cursorrowdidxcols   &&   5/usr/lib/python3.14/test/test_sqlite3/test_factory.pydict_factoryr      s0    
Af001Ha&	 2H    c                   &   a  ] tR t^%t o R tRtV tR# )MyCursorc                d    \         P                  P                  ! V .VO5/ VB  \        V n        R # N)sqliteCursor__init__r   row_factoryselfargskwargss   &*,r   r   MyCursor.__init__&   s&    t5d5f5'r   )r   N__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   r   r   %   s     ( (r   r   c                   2   a  ] tR t^*t o R tR tR tRtV tR# )ConnectionFactoryTestsc           	         ! R  R\         P                  4      p ! R R\         P                  4      p\        VR7      ;_uu_ 4       pV P                  W24       RRR4       RpV P	                  \         P
                  V4      ;_uu_ 4        \        VR7      ;_uu_ 4       pV P                  W14       RRR4       RRR4       R#   + '       g   i     Ls; i  + '       g   i     L-; i  + '       g   i     R# ; i)c                   &   a  ] tR t^,t o R tRtV tR# )GConnectionFactoryTests.test_connection_factories.<locals>.DefectFactoryc                    R # r    r   s   &*,r   r   PConnectionFactoryTests.test_connection_factories.<locals>.DefectFactory.__init__-   s    r   r-   Nr   r%   s   @r   DefectFactoryr+   ,   s      r   r/   c                   &   a  ] tR t^/t o R tRtV tR# )CConnectionFactoryTests.test_connection_factories.<locals>.OkFactoryc                N    \         P                  P                  ! V .VO5/ VB  R # r   )r   
Connectionr   r   s   &*,r   r   LConnectionFactoryTests.test_connection_factories.<locals>.OkFactory.__init__0   s     !!**4A$A&Ar   r-   Nr   r%   s   @r   	OkFactoryr1   /   s     B Br   r5   factoryNz$Base Connection.__init__ not called.)r   r3   r   assertIsInstanceassertRaisesRegexProgrammingError)r   r/   r5   conregexs   &    r   test_connection_factories0ConnectionFactoryTests.test_connection_factories+   s    	F-- 		B)) 	B Y//3!!#1 06##F$;$;UCC 773%%c9 8 DC 0/ 87 DCCs0   CC* C	2C*C	C'"C**C;	c                   a  ! V3R  lR\         P                  4      o\        SR7      ;_uu_ 4       pV P                  VP                  4       V P                  VS4       RRR4       R#   + '       g   i     R# ; i)c                   6   <a a ] tR t^<t oVV 3R ltRtVtV ;t# )LConnectionFactoryTests.test_connection_factory_relayed_call.<locals>.Factoryc                2   < R VR&   \         SV `  ! V/ VB  R # )Nisolation_levelsuperr   r   r   r   Factory	__class__s   &*,r   r   UConnectionFactoryTests.test_connection_factory_relayed_call.<locals>.Factory.__init__=   s"    ,0()gt-t>v>r   r-   r   r    r!   r"   r   r#   r$   __classcell__rH   r&   rG   s   @@r   rG   rA   <   s     ? ?r   rG   r6   N)r   r3   r   assertIsNonerC   r8   )r   r;   rG   s   & @r   $test_connection_factory_relayed_call;ConnectionFactoryTests.test_connection_factory_relayed_call:   sW    	?f'' 	?
 W--c112!!#w/ .---s   .A**A;	c           	       a  ! V3R  lR\         P                  4      oRpV P                  \        V4      ;_uu_ 4       p\	        R^ RRS4      ;_uu_ 4       pV P                  VP                  4       V P                  VS4       RRR4       RRR4       V P                  XP                  \        4       R#   + '       g   i     L:; i  + '       g   i     LE; i)c                   6   <a a ] tR t^Ft oVV 3R ltRtVtV ;t# )QConnectionFactoryTests.test_connection_factory_as_positional_arg.<locals>.Factoryc                (   < \         SV `  ! V/ VB  R # r   rD   rF   s   &*,r   r   ZConnectionFactoryTests.test_connection_factory_as_positional_arg.<locals>.Factory.__init__G   s    gt-t>v>r   r-   rJ   rL   s   @@r   rG   rR   F   s     ? ?r   rG   zPassing more than 1 positional argument to _sqlite3.Connection\(\) 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.g      @NT)r   r3   assertWarnsRegexDeprecationWarningr   rM   rC   r8   assertEqualfilename__file__)r   r<   cmr;   rG   s   &   @r   )test_connection_factory_as_positional_arg@ConnectionFactoryTests.test_connection_factory_as_positional_argE   s    	?f'' 	?
* 	 ""#5u== atW==!!#"5"56%%c73 > > 	h/ >= >=s#   C	.B6	C	6CC		C	r-   N)	r   r    r!   r"   r=   rN   r[   r#   r$   r%   s   @r   r(   r(   *   s     :	00 0r   r(   c                   ,   a  ] tR t^Xt o R tR tRtV tR# )CursorFactoryTestsc                J   V P                   P                  4       pV P                  V\        P                  4       V P                   P                  \
        4      pV P                  V\
        4       V P                   P                  R  R7      pV P                  V\
        4       R# )c                     \        V 4      # r   )r   r;   s   &r   <lambda>5CursorFactoryTests.test_is_instance.<locals>.<lambda>_   s    (3-r   r6   N)r;   r	   r8   r   r   r   )r   curs   & r   test_is_instance#CursorFactoryTests.test_is_instanceZ   sm    hhooc6==1hhooh'c8,hhoo&?o@c8,r   c                   V P                  \        V P                  P                  R 4       V P                  \        V P                  P                  R 4       V P                  \        V P                  P                  R 4       R # )Nc                      R # r   r-   r-   r   r   rb   9CursorFactoryTests.test_invalid_factory.<locals>.<lambda>f   s    dr   c                     R # r   r-   ra   s   &r   rb   ri   h   s    $r   )assertRaises	TypeErrorr;   r	   r   s   &r   test_invalid_factory'CursorFactoryTests.test_invalid_factoryb   sQ    )TXX__d;)TXX__lC)TXX__6FGr   r-   N)r   r    r!   r"   re   rn   r#   r$   r%   s   @r   r^   r^   X   s     -H Hr   r^   c                   &   a  ] tR t^kt o R tRtV tR# )RowFactoryTestsBackwardsCompatc                    V P                   P                  \        R 7      pVP                  R4       VP	                  4       pV P                  V\        4       VP                  4        R# )r6   zselect 4+5 as fooN)r;   r	   r   executefetchoner8   dictclose)r   rd   r
   s   &  r   test_is_produced_by_factory:RowFactoryTestsBackwardsCompat.test_is_produced_by_factorym   sG    hhooho/'(llnc4(		r   r-   N)r   r    r!   r"   rw   r#   r$   r%   s   @r   rq   rq   k   s      r   rq   c                   t   a a ] tR t^ut oV 3R l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V ;t# )RowFactoryTestsc                b   < \         SV `  4        \        P                  V P                  n        R # r   )rE   setUpr   Rowr;   r   )r   rH   s   &r   r|   RowFactoryTests.setUpw   s    %zzr   c                    R  V P                   n        V P                   P                  R4      P                  4       pV P	                  V\
        4       R# )c                     \        V4      # r   )list)rd   r
   s   &&r   rb   5RowFactoryTests.test_custom_factory.<locals>.<lambda>|   s    S	r   zselect 1, 2N)r;   r   rs   rt   r8   r   r   r
   s   & r   test_custom_factory#RowFactoryTests.test_custom_factory{   s;    9hh}-668c4(r   c                   V P                   P                  R 4      P                  4       pV P                  V\        P
                  4       V P                  VR,          ^R4       V P                  VR,          ^R4       V P                  VR,          ^R4       V P                  VR,          ^R4       V P                  V^ ,          ^R	4       V P                  V^,          ^R
4       V P                  VR,          ^R4       V P                  VR,          ^R4       V P                  \        4      ;_uu_ 4        VR,           RRR4       V P                  \        4      ;_uu_ 4        VR,           RRR4       V P                  \        4      ;_uu_ 4        VR,           RRR4       V P                  \        4      ;_uu_ 4        V^,           RRR4       V P                  \        4      ;_uu_ 4        VR,           RRR4       V P                  \        4      ;_uu_ 4        V^R,          ,           RRR4       V P                  \        4      ;_uu_ 4        V\        4       ,           RRR4       R#   + '       g   i     EL<; i  + '       g   i     EL!; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)zselect 1 as a_1, 2 as ba_1z&by name: wrong result for column 'a_1'bz$by name: wrong result for column 'b'A_1z&by name: wrong result for column 'A_1'Bz$by name: wrong result for column 'B'z#by index: wrong result for column 0z#by index: wrong result for column 1z$by index: wrong result for column -1z$by index: wrong result for column -2cNza_za1i  )
r;   rs   rt   r8   r   r}   rW   rk   
IndexErrorcomplexr   s   & r   test_sqlite_row_index%RowFactoryTests.test_sqlite_row_index   s   hh89BBDc6::.UQ(PQS1&LMUQ(PQS1&LMQ$IJQ$IJR!%KLR!%KLz**H +z**M +z**M +z**F +z**G +z**4L +z**	N +* +*****************sT   7
I4&
J
J
J03
K"KK)4J	J	J-	0K 	K	K&	)K:	c                   V P                   P                  R 4      P                  4       pV P                  VR,          ^4       V P	                  \
        4      ;_uu_ 4        VR,           RRR4       V P	                  \
        4      ;_uu_ 4        VR,           RRR4       R#   + '       g   i     LA; i  + '       g   i     R# ; i)u   select 1 as ÿ   ÿu   ŸN   ß)r;   rs   rt   rW   rk   r   r   s   & r   test_sqlite_row_index_unicode-RowFactoryTests.test_sqlite_row_index_unicode   s    hh12;;=Va(z**M +z**K +* +****s    
B#
B6#B3	6C	c                B   V P                   P                  R 4      P                  4       pV P                  VR,          R	4       V P                  VR,          R
4       V P                  VR,          R4       V P                  VR,          R	4       V P                  VR,          R4       V P                  VR,          R4       V P                  VRR R4       V P                  VRR R4       V P                  VR,          R4       V P                  V^^ R1,          R4       R# )zselect 1, 2, 3, 4:r   r   N:r      N:r      N:r   r   N:r   NN:Nr   NN:r         r-   )r   )r   r   )r   r   r   )r   r   r   r   r   )r   )r   r   )r   r   )r   r   r;   rs   rt   rW   r   s   & r   test_sqlite_row_slice%RowFactoryTests.test_sqlite_row_slice   s    hh23<<>S2&S4(S6*S2&R),R),RT*RS6*UV,QqVf-r   c                    V P                   P                  R 4      P                  4       pV Uu. uF  q"NK  	  ppV P                  V^^.4       V Uu. uF  q"NK  	  ppV P                  V^^.4       R# u upi u upi select 1 as a, 2 as bNr   )r   r
   r   itemss   &   r   test_sqlite_row_iter$RowFactoryTests.test_sqlite_row_iter   s~    hh67@@B !$$$A' !$$$A' % %s   
A4
A9c                    V P                   P                  R 4      P                  4       p\        V4      pV P	                  W!R,          VR,          34       R# r   ar   N)r;   rs   rt   tuplerW   )r   r
   ts   &  r   test_sqlite_row_as_tuple(RowFactoryTests.test_sqlite_row_as_tuple   sD    hh67@@B#JXs3x01r   c                    V P                   P                  R 4      P                  4       p\        V4      pV P	                  VR,          VR,          4       V P	                  VR,          VR,          4       R# r   )r;   rs   rt   ru   rW   )r   r
   r   s   &  r   test_sqlite_row_as_dict'RowFactoryTests.test_sqlite_row_as_dict   sY    hh67@@BI3S*3S*r   c                   V P                   P                  R 4      P                  4       pV P                   P                  R 4      P                  4       pV P                   P                  R4      P                  4       pV P                   P                  R4      P                  4       pV P                   P                  R4      P                  4       pV P                  W8H  4       V P                  W8H  4       V P	                  W8H  4       V P	                  W8H  4       V P	                  W8H  4       V P	                  V\        4       8H  4       V P	                  W8g  4       V P	                  W8g  4       V P                  W8g  4       V P                  W8g  4       V P                  W8g  4       V P                  V\        4       8g  4       V P                  \        4      ;_uu_ 4        W8   RRR4       V P                  \        4      ;_uu_ 4        W8   RRR4       V P                  \        4      ;_uu_ 4        W8   RRR4       V P                  \        4      ;_uu_ 4        W8*   RRR4       V P                  \        V4      \        V4      4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Lo; i)r   zselect 1 as a, 3 as bzselect 1 as b, 2 as azselect 2 as b, 1 as aN)
r;   rs   rt   
assertTrueassertFalseobjectrk   rl   rW   hash)r   row_1row_2row_3row_4row_5s   &     r   test_sqlite_row_hash_cmp(RowFactoryTests.test_sqlite_row_hash_cmp   s     !89BBD  !89BBD  !89BBD  !89BBD  !89BBD''(((&(*+((''')*y))M *y))M *y))N *y))N * 	ed5k2 *)))))))s0   !JJ%5J8KJ"	%J5	8K	K	c                   V P                   P                  R 4      P                  4       p\        V4      pV P	                  \        \        V4      4      \        \        V4      4      4       V P                  V\        4       R# r   )	r;   rs   rt   r   rW   r   reversedr8   r   )r   r
   as_tuples   &  r   test_sqlite_row_as_sequence+RowFactoryTests.test_sqlite_row_as_sequence   s\    hh67@@B:hsm,d8H3E.FGc8,r   c                    V P                   P                  R 4      P                  4       pV P                  VP	                  4       RR.4       R# r   )r;   rs   rt   rW   keysr   s   & r   test_sqlite_row_keys$RowFactoryTests.test_sqlite_row_keys   s:    hh67@@Bc3Z0r   c                     ! R  R\         4      pV P                  \        V P                  P                  V4       V P                  \        \
        P                  V! 4       R4       R# )c                   .    ] tR tRt]P
                  tRtR# ):RowFactoryTests.test_fake_cursor_class.<locals>.FakeCursori  r-   N)r   r    r!   r"   r   r   rH   r#   r-   r   r   
FakeCursorr     s    Ir   r   Nr-   )strrk   rl   r;   r	   r   r}   )r   r   s   & r   test_fake_cursor_class&RowFactoryTests.test_fake_cursor_class   sB    	& 	&)TXX__jA)VZZrBr   r-   )r   r    r!   r"   r|   r   r   r   r   r   r   r   r   r   r   r   r#   r$   rK   )rH   r&   s   @@r   rz   rz   u   sI     *)
<."
(2+3B-1
C Cr   rz   c                   2   a  ] tR tRt o R tR tR tRtV tR# )TextFactoryTestsi  c                    R pV P                   P                  RV34      P                  4       pV P                  \	        V^ ,          4      \
        R4       R# )   Österreichselect ?type of row[0] must be unicodeN)r;   rs   rt   rW   typer   r   austriar
   s   &  r   test_unicodeTextFactoryTests.test_unicode
  sC    hhzG:6??Ac!fs,LMr   c                *   \         V P                  n        R pV P                  P                  RV34      P	                  4       pV P                  \        V^ ,          4      \         R4       V P                  V^ ,          VP                  R4      R4       R# )r   r   ztype of row[0] must be bytesutf-8z(column must equal original data in UTF-8N)bytesr;   text_factoryrs   rt   rW   r   encoder   s   &  r   test_stringTextFactoryTests.test_string  so     %hhzG:6??Ac!fu.LMQ!8:der   c                   R  V P                   n        RpV P                   P                  RV34      P                  4       pV P	                  \        V^ ,          4      \        R4       V P                  V^ ,          RR4       R# )c                     \        V R R4      # )r   ignore)r   xs   &r   rb   .TextFactoryTests.test_custom.<locals>.<lambda>  s    #a(*Cr   r   r   r   reichz!column must contain original dataN)r;   r   rs   rt   rW   r   r   assertEndsWithr   s   &  r   test_customTextFactoryTests.test_custom  sf     ChhzG:6??Ac!fs,LMCFG-PQr   r-   N)	r   r    r!   r"   r   r   r   r#   r$   r%   s   @r   r   r     s     N
fR Rr   r   c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
%TextFactoryTestsWithEmbeddedZeroBytesi  c                    \         P                  ! R 4      V n        V P                  P                  R4       V P                  P                  RR4       R# )z:memory:zcreate table test (value text)z#insert into test (value) values (?)N)a b)r   connectr;   rs   rm   s   &r   r|   +TextFactoryTestsWithEmbeddedZeroBytes.setUp   s:    >>*-9:>Lr   c                :    V P                   P                  4        R # r   )r;   rv   rm   s   &r   tearDown.TextFactoryTestsWithEmbeddedZeroBytes.tearDown%  s    r   c                    V P                   P                  R 4      P                  4       pV P                  \	        V^ ,          4      \
        4       V P                  V^ ,          R4       R# )select value from testr   N)r;   rs   rt   assertIsr   r   rW   r   s   & r   r   1TextFactoryTestsWithEmbeddedZeroBytes.test_string(  sJ    hh78AACd3q6lC(Q*r   c                    \         V P                  n        V P                  P                  R 4      P	                  4       pV P                  \        V^ ,          4      \         4       V P                  V^ ,          R4       R# r      a bN)r   r;   r   rs   rt   r   r   rW   r   s   & r   
test_bytes0TextFactoryTestsWithEmbeddedZeroBytes.test_bytes.  sV     %hh78AACd3q6lE*Q+r   c                    \         V P                  n        V P                  P                  R 4      P	                  4       pV P                  \        V^ ,          4      \         4       V P                  V^ ,          R4       R# r   )	bytearrayr;   r   rs   rt   r   r   rW   r   s   & r   test_bytearray4TextFactoryTestsWithEmbeddedZeroBytes.test_bytearray4  sV     )hh78AACd3q6lI.Q+r   c                    R  V P                   n        V P                   P                  R4      P                  4       pV P	                  \        V^ ,          4      \        4       V P                  V^ ,          R4       R# )c                     V # r   r-   r   s   &r   rb   CTextFactoryTestsWithEmbeddedZeroBytes.test_custom.<locals>.<lambda><  s    !r   r   r   N)r;   r   rs   rt   r   r   r   rW   r   s   & r   r   1TextFactoryTestsWithEmbeddedZeroBytes.test_custom:  sV     +hh78AACd3q6lE*Q+r   ra   N)r   r    r!   r"   r|   r   r   r   r   r   r#   r$   r%   s   @r   r   r     s)     M
+,,, ,r   r   __main__)unittestsqlite3r   collections.abcr   utilr   r   r   r   r   TestCaser(   r^   rq   rz   r   r   r   mainr-   r   r   <module>r	     s   .   $ ! %(v}} (
+0X.. +0\H,h.?.? H&%8(:K:K PC)8+<+< PCfR*H,=,= R,!,H,=,= !,H zMMO r   