+
    Bie$                     x   ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIH	t	H
t
 ]	P                  ! R4      t^ RIt^ RIHt  ! R R	]P                   4      t ! R
 R]P                   4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t]R8X  d   ]P2                  ! 4        R# R# )    N)closing)partial)Path)import_helper	os_helperzdbm.sqlite3)_normalize_uric                   ,   a  ] tR t^t o R tR tRtV tR# )_SQLiteDbmTestsc                    \         P                  V n        \        P	                  V P                  R 4      pVP                  4        R# )cN)r   TESTFNfilenamedbm_sqlite3opencloseselfdbs   & ,/usr/lib/python3.14/test/test_dbm_sqlite3.pysetUp_SQLiteDbmTests.setUp   s.    !((dmmS1

    c                f    R F*  p\         P                  ! V P                  V,           4       K,  	  R# ) N)r   z-walz-shm)r   unlinkr   )r   suffixs   & r   tearDown_SQLiteDbmTests.tearDown   s#    (FT]]V34 )r   )r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes____classdictcell____classdict__s   @r   r
   r
      s     
5 5r   r
   c                   r   a  ] tR t^t o R t]P                  ! ]P                  R8H  R4      R 4       t	Rt
V tR# )URIc                    RpV FC  w  r#V P                  W#R7      ;_uu_ 4        V P                  \        V4      V4       RRR4       KE  	  R#   + '       g   i     KZ  ; i)/absolute/////b/cpath
normalizedN))r*   z/absolute/b/c)zPRE#MID##ENDzPRE%23MID%23%23END)z%#?%%#z%25%23%3F%25%25%23)subTestassertEndsWithr   r   datasetr,   r-   s   &   r   test_uri_substitutionsURI.test_uri_substitutions   sQ    

 !(D4??##N4$8*E @? !(???s   AAwin32zrequires Windowsc                ,   RpV Fw  w  r#V P                  W#R7      ;_uu_ 4        \        V4      P                  4       '       g   V P                  RV: 24       V P	                  \        V4      V4       RRR4       Ky  	  R#   + '       g   i     K  ; i)2018\January.xlsxr+   zskipping relative path: N))r6   z2018/January.xlsx)z%C:\Projects\apilibrary\apilibrary.slnz&/C:/Projects/apilibrary/apilibrary.sln)z$C:Projects\apilibrary\apilibrary.slnz%/C:Projects/apilibrary/apilibrary.sln)r.   r   is_absoluteskipTestr/   r   r0   s   &   r   test_uri_windowsURI.test_uri_windows)   sx    

 !(D4??Dz--//MM$<TH"EF##N4$8*E @? !(???s   ABB N)r   r    r!   r"   r2   unittest
skipUnlesssysplatformr9   r#   r$   r%   s   @r   r(   r(      s9     F 02DEF FFr   r(   c                   \   a a ] tR t^=t oV 3R ltV 3R ltR tR tR tR t	R t
RtVtV ;t# )	ReadOnlyc                
  < \         SV `  4        \        P                  V P                  R 4      ;_uu_ 4       pRVR&   RVR&   RRR4       \        P                  V P                  R4      V n        R#   + '       g   i     L7; i)wvalue1   key1value2   key2Nrsuperr   r   r   r   r   )r   r   	__class__s   & r   r   ReadOnly.setUp?   s_    dmmS11R"BwK"BwK 2 ""4==#6 21s   A22B	c                X   < V P                   P                  4        \        SV `  4        R # Nr   r   rJ   r   r   rK   s   &r   r   ReadOnly.tearDownF       r   c                    V P                  V P                  R ,          R4       V P                  V P                  R,          R4       R# )rE   s   value1rG   s   value2NassertEqualr   r   s   &r   test_readonly_readReadOnly.test_readonly_readJ   s4    )95)95r   c                    V P                  \        P                  4      ;_uu_ 4        R V P                  R&   RRR4       R#   + '       g   i     R# ; i)value   newNassertRaisesr   errorr   rV   s   &r   test_readonly_writeReadOnly.test_readonly_writeN   s5    {0011%DGGFO 2111   AA	c                    V P                  \        P                  4      ;_uu_ 4        V P                  R  RRR4       R#   + '       g   i     R# ; i)rE   Nr\   rV   s   &r   test_readonly_deleteReadOnly.test_readonly_deleteR   s4    {0011  2111s   A  A	c                ^    V P                  V P                  P                  4       R R.4       R# rE   rG   N)rU   r   keysrV   s   &r   test_readonly_keysReadOnly.test_readonly_keysV   s!    '7);<r   c                j    T P                  V P                   Uu. uF  qNK  	  upR R.4       R# u upi rf   rT   )r   ks   & r   test_readonly_iterReadOnly.test_readonly_iterY   s-    TWW-W!W-/AB-s   
0r   )r   r    r!   r"   r   r   rW   r_   rc   rh   rl   r#   r$   __classcell__rK   r&   s   @@r   rA   rA   =   s/     76&!=C Cr   rA   c                   \   a a ] tR t^]t oV 3R ltV 3R ltR tR tR tR t	R t
RtVtV ;t# )		ReadWritec                n   < \         SV `  4        \        P                  V P                  R 4      V n        R# rC   NrI   rP   s   &r   r   ReadWrite.setUp_   $    ""4==#6r   c                X   < V P                   P                  4        \        SV `  4        R # rN   rO   rP   s   &r   r   ReadWrite.tearDownc   rR   r   c                T   \        \        P                  ! V P                  4      4      ;_uu_ 4       pVP	                  R 4       Uu. uF  q"^ ,          NK  	  ppVP	                  R4       Uu. uF  q"^ ,          NK  	  ppRRR4       W43# u upi u upi   + '       g   i     XX3# ; i)zSELECT key FROM DictzSELECT value FROM DictN)r   sqlite3connectr   execute)r   cxrH   rg   valss   &    r   
db_contentReadWrite.db_contentg   s    W__T]]344"$**-C"DE"DQaDD"DDE"$**-E"FG"FQaDD"FDG 5 z FG 54 Tzs)   BB
B,B=B

BB'	c                    R V P                   R&   RV P                   R&   V P                  4       w  rV P                  VR.4       V P                  VR.4       R# )rZ   keyother   keys   otherNr   r   rU   r   rg   r~   s   &  r   test_readwrite_unique_key#ReadWrite.test_readwrite_unique_keym   sN      __&
x(z*r   c                R   R V P                   R&   RV P                   R&   V P                   R V P                  4       w  rV P                  VR.4       V P                  VR.4       V P                   R V P                  4       w  rV P                  V. 4       V P                  V. 4       R# )rZ   r   r   newr[   r      valueNr   r   s   &  r   test_readwrite_deleteReadWrite.test_readwrite_deletet   s      GGFO__&
x(z*GGFO__&
r"r"r   c                    V P                  \        P                  4      ;_uu_ 4        R V P                  R&   RRR4       R#   + '       g   i     R# ; i)rZ   Nr\   rV   s   &r   test_readwrite_null_key!ReadWrite.test_readwrite_null_key   s5    {0011#DGGDM 2111ra   c                    V P                  \        P                  4      ;_uu_ 4        R V P                  R&   R R R 4       R #   + '       g   i     R # ; i)Nr   r\   rV   s   &r   test_readwrite_null_value#ReadWrite.test_readwrite_null_value   s5    {0011"DGGFO 2111ra   rn   )r   r    r!   r"   r   r   r   r   r   r   r   r#   r$   ro   rp   s   @@r   rr   rr   ]   s-     7+#$# #r   rr   c                   z   a a ] tR t^t oV 3R lt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VtV ;t# )Misusec                n   < \         SV `  4        \        P                  V P                  R 4      V n        R# rt   rI   rP   s   &r   r   Misuse.setUp   rv   r   c                X   < V P                   P                  4        \        SV `  4        R # rN   rO   rP   s   &r   r   Misuse.tearDown   rR   r   c                    R V P                   R&   \        P                  V P                  R4      ;_uu_ 4       pV P	                  VR,          R4       RRR4       R#   + '       g   i     R# ; i)rZ   r   r   r   r   N)r   r   r   r   rU   r   s   & r   test_misuse_double_create Misuse.test_misuse_double_create   sK     dmmS11RRZ2 2111s   AA-	c                :    V P                   P                  4        R # rN   )r   r   rV   s   &r   test_misuse_double_closeMisuse.test_misuse_double_close   s    r   c                    R pV P                  \        V4      ;_uu_ 4        \        P                  V P                  RR7       RRR4       R#   + '       g   i     R# ; i)z*must be.*'r'.*'w'.*'c'.*'n', not 'invalid'invalidflagN)assertRaisesRegex
ValueErrorr   r   r   )r   regexs   & r   test_misuse_invalid_flagMisuse.test_misuse_invalid_flag   s@    <##J66T]]; 7666s   "AA	c                    R V P                   R&   V P                   R V P                  \        4      ;_uu_ 4        V P                   R RRR4       R#   + '       g   i     R# ; i)rZ   r   r   N)r   r]   KeyErrorrV   s   &r   test_misuse_double_delete Misuse.test_misuse_double_delete   sE     GGFOx(( )(((s   AA#	c                    V P                  \        4      ;_uu_ 4        V P                  R ,           RRR4       R#   + '       g   i     R# ; i)r   N)r]   r   r   rV   s   &r   test_misuse_invalid_keyMisuse.test_misuse_invalid_key   s-    x((GGFO )(((s	   <A	c                    ^V P                   R&   \        V P                   4      pV P                   P                  4        V P                  \        P
                  4      ;_uu_ 4        \        V4       RRR4       R#   + '       g   i     R# ; i)   1N)r   iterr   r]   r   r^   nextr   its   & r   test_misuse_iter_close1Misuse.test_misuse_iter_close1   sV    $'']{0011H 2111s   &A<<B	c                T   ^V P                   R&   ^V P                   R&   \        V P                   4      p\        V4       V P                   P                  4        V P	                  \
        P                  4      ;_uu_ 4        \        V4       RRR4       R#   + '       g   i     R# ; i)r   r   2N)r   r   r   r   r]   r   r^   r   s   & r   test_misuse_iter_close2Misuse.test_misuse_iter_close2   sj    $'']R{0011H 2111s    BB'	c                   V P                   P                  4        V P                  \        P                  4      ;_uu_ 4        V P                   R ,           RRR4       V P                  \        P                  4      ;_uu_ 4        RV P                   R&   RRR4       V P                  \        P                  4      ;_uu_ 4        V P                   R RRR4       V P                  \        P                  4      ;_uu_ 4        \        V P                   4       RRR4       V P                  \        P                  4      ;_uu_ 4        V P                   P                  4        RRR4       R#   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)s   readNrZ   s   writes   del)r   r   r]   r   r^   lenrg   rV   s   &r   test_misuse_use_after_close"Misuse.test_misuse_use_after_close   s   {0011GGG 2{0011 'DGGH 2{0011 2{0011L 2{0011GGLLN 21 211111111111s<   E+E?FF%F8+E<	?F	F"	%F5	8G		c                    V P                  \        P                  4      ;_uu_ 4        V P                  P	                  R RRR7       RRR4       R#   + '       g   i     R# ; i)znew.dbni  )r   modeN)r]   r   r^   r   __init__rV   s   &r   test_misuse_reinitMisuse.test_misuse_reinit   sA    {0011GGXCe< 2111s   AA"	c                    R FJ  pV P                  \        P                  4      ;_uu_ 4        \        P                  RRR7      pRRR4       KL  	  R#   + '       g   i     Ka  ; i)rH   r   r   r   N)rH   rC   r   r   )r]   r   r^   r   )r   r   r   s   &  r   test_misuse_empty_filename!Misuse.test_misuse_empty_filename   sJ    &D"";#4#455 %%bs%3 65 '555s   AA$rn   )r   r    r!   r"   r   r   r   r   r   r   r   r   r   r   r   r   r#   r$   ro   rp   s   @@r   r   r      sF     73
<
 =4 4r   r   c                   T   a a ] tR t^t oRtV 3R ltV 3R ltR tR tR t	Rt
VtV ;t# )	DataTypesc                n   < \         SV `  4        \        P                  V P                  R 4      V n        R# rt   rI   rP   s   &r   r   DataTypes.setUp   rv   r   c                X   < V P                   P                  4        \        SV `  4        R # rN   rO   rP   s   &r   r   DataTypes.tearDown   rR   r   c                    V P                    FY  w  rV P                  WR 7      ;_uu_ 4        WP                  R&   V P                  V P                  R,          V4       RRR4       K[  	  R#   + '       g   i     Kp  ; i)rawcoercedr   r   Nr1   r.   r   rU   r   r   r   s   &  r   test_datatypes_valuesDataTypes.test_datatypes_values   sX     LLLC#77!$  ': 87 )777s   2A,,A=c                b   V P                    F  w  rV P                  WR 7      ;_uu_ 4        RV P                  V&   V P                  V P                  V,          R4       V P                  V P                  V,          R4       V P                  V RRR4       K  	  R#   + '       g   i     K  ; i)r   rZ   r   Nr   r   s   &  r   test_datatypes_keysDataTypes.test_datatypes_keys   s~     LLLC#77&  !18<  x8GGCL 87 )777s   A#BB.c                    R V P                   R&   R V P                   R&   R V P                   ^
&   V P                  V P                   P                  4       R.4       R# )rZ   10s   10N)r   rU   rg   rV   s   &r   test_datatypes_replace_coerced(DataTypes.test_datatypes_replace_coerced   sE     %1r   rn   ))*   s   42)gQ	@s   3.14)strings   string)   bytesr   )r   r    r!   r"   r1   r   r   r   r   r   r#   r$   ro   rp   s   @@r   r   r      s*     G7;!2 2r   r   c                      a a ] tR t^t oRtV 3R ltRR lt]R 4       t]R 4       t	]R 4       t
]R 4       t]R 4       t]R	 4       tR
 tR tRtVtV ;t# )CorruptDatabasez@Verify that database exceptions are raised as dbm.sqlite3.error.c           	     P  < \         SV `  4        \        \        P                  ! V P
                  4      4      ;_uu_ 4       pV;_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DROP TABLE IF EXISTS Dictz"CREATE TABLE Dict (invalid_schema)N)rJ   r   r   rz   r{   r   r|   )r   r}   rK   s   & r   r   CorruptDatabase.setUp   sd    W__T]]344

67

?@  54 544s$   B#B	/BBBB%	c           	     8   \        \        P                  V P                  V4      4      ;_uu_ 4       pV P	                  \        P
                  4      ;_uu_ 4        V! V4       R R R 4       R R R 4       R #   + '       g   i     L; i  + '       g   i     R # ; irN   )r   r   r   r   r]   r^   )r   r   fnshould_succeedr   s   &&&& r   checkCorruptDatabase.check  s^    [%%dmmT:;;r"";#4#4552 6 <;55 <;;s#   (B	A5	#B5B BB	c                    V R ,          # )r   r;   rn   s   &r   readCorruptDatabase.read
  s    %yr   c                    R V R&   R# )rZ   r   Nr;   rn   s   &r   writeCorruptDatabase.write  s    5	r   c                .    \        \        V 4      4       R # rN   )r   r   rn   s   &r   r   CorruptDatabase.iter  s    T"Xr   c                &    V P                  4        R # rN   )rg   rn   s   &r   rg   CorruptDatabase.keys  s    
	r   c                    V R  R# )r   Nr;   rn   s   &r   del_CorruptDatabase.del_  s	    uIr   c                    \        V 4       R # rN   )r   rn   s   &r   len_CorruptDatabase.len_  s	    Br   c                   R F  pV P                  VR7      ;_uu_ 4        \        V P                  VR7      pV! V P                  R7       V! V P                  R7       V! V P
                  R7       V! V P                  R7       V! V P                  R7       V! V P                  R7       RRR4       K  	  R#   + '       g   i     K  ; i)rH   r   )r   N)rH   rC   r   )	r.   r   r   r   r   r   rg   r   r   )r   r   r   s   &  r   test_corrupt_readwrite&CorruptDatabase.test_corrupt_readwrite"  s    !D4((

6#$#### )( "(((s   B
B88C	c                    \        \        P                  V P                  R 4      4      ;_uu_ 4       pRVR&   VR,          p\	        \        V4      4       VR RRR4       R#   + '       g   i     R# ; i)r   r   foos   fooN)r   r   r   r   r   r   )r   r   _s   &  r   test_corrupt_force_new&CorruptDatabase.test_corrupt_force_new-  sS    [%%dmmS9::bBuI6
AbN6
	 ;:::s   &A""A3	r;   )F)r   r    r!   r"   __doc__r   r   staticmethodr   r   r   rg   r   r   r   r  r#   r$   ro   rp   s   @@r   r   r      s     JA
            	$ r   r   __main__)r>   r<   
contextlibr   	functoolsr   pathlibr   test.supportr   r   import_moduler   rz   dbm.sqlite3r   TestCaser
   r(   rA   rr   r   r   r   r   mainr;   r   r   <module>r     s    
     1))-8
  &	5h'' 	5F(

 F@C C@+# +#\E4_ E4P%2 %2P7o 7t zMMO r   