+
    Bi-9                         ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ]P                  tR t ! R R]P$                  4      t]R8X  d   ]P*                  ! 4        R# R# )	    N)support)	os_helper)partialc                      R F%  p  \         P                  ! \        V ,           4       K'  	  R#   \         d     K9  i ; i).dirNr   .dat.bak)osunlink_fnameOSError)exts    )/usr/lib/python3.14/test/test_dbm_dumb.py_delete_filesr      s5    '	IIfsl# (  		s   !.==c                     a  ] tR t^t o RRRRRRRRR	R
RRRRRP	                  R4      R/tR t]P                  ! ]	! ]
R4      R4      ]P                  R 4       4       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#]P                  R, 4       t$]P                  ! ]PJ                  R-4      R. 4       t&R/ t'R0 t(R1 t)R2 t*R3 t+R4t,V t-R5# )6DumbDBMTestCase   0       as   Python:   bs   Programming   cs   the   ds   way   fs   Guido   gs   intended   üutf-8   !c                r   \         P                  ! \        P                  ! \        R 4      4      ;_uu_ 4       pV P                  \        VP                  4       4      . 4       V P                   F  pV P                  V,          W&   K  	  V P                  V4       RRR4       R#   + '       g   i     R# ; icN)

contextlibclosingdumbdbmopenr   assertEquallistkeys_dictread_helper)selffkeys   &  r   test_dumbdbm_creation%DumbDBMTestCase.test_dumbdbm_creation%   st    VS 9::aT!&&(^R0zzC "Q	 ;:::s   A#B%%B6	umaskztest needs os.umask()c                \    \         P                  ! ^4      p\        P                  ! \        RR4      pVP                  4        \         P                  ! V4       Rp\         P                  R8w  d   Rp^ RIp\         P                  ! \        R,           4      pV P                  VP                  ! VP                  4      V4       \         P                  ! \        R,           4      pV P                  VP                  ! VP                  4      V4       R#   \         P                  ! X4       i ; i)	   r!   i  i  posixi  Nr	   r   )r   r0   r$   r%   r   closenamestatr&   S_IMODEst_mode)r+   	old_umaskr,   expected_moder6   sts   &     r   test_dumbdbm_creation_mode*DumbDBMTestCase.test_dumbdbm_creation_mode,   s    	 IVS%0AGGIHHY77g "MWWVf_%bjj1=AWWVf_%bjj1=A HHYs   AD D+c                    \         P                  ! \        4      pR VR&   V P                  VR,          R 4       VP	                  4        VP	                  4        R# )r   r   N)r$   r%   r   r&   r4   r+   r,   s   & r   test_close_twice DumbDBMTestCase.test_close_twiceB   s?    LL $4$'				r   c                   V P                  4        \        P                  ! \        P                  ! \
        R 4      4      ;_uu_ 4       pR;V P                  R&   VR&   V P                  V4       V P                  VP                  RR4      R4       V P                  VR,          R4       RRR4       R#   + '       g   i     R# ; i)ws   indentedr      xxx   fooN)
init_dbr"   r#   r$   r%   r   r)   r*   r&   
setdefaultr?   s   & r   test_dumbdbm_modification)DumbDBMTestCase.test_dumbdbm_modificationI   s    VS 9::a)44DJJtqwQQ\\&&96BQvY/ ;:::s   A!B33C	c           	     |   V P                  4        \        P                  ! \        P                  ! \
        R 4      4      ;_uu_ 4       pV P                  V4       V P                  \        P                  R4      ;_uu_ 4        RVR&   RRR4       V P                  \        P                  R4      ;_uu_ 4        VR RRR4       V P                  VP                  R4      V P                  R,          4       V P                  VP                  RR4      R4       V P                  VP                  R4      4       V P                  \        4      ;_uu_ 4        VR,           RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L@; i  + '       g   i     R# ; i)rz'The database is opened for reading only   xr   Nr   rD   rE   )rF   r"   r#   r$   r%   r   r*   assertRaisesRegexerrorr&   getr)   assertIsNoneassertRaisesKeyErrorr?   s   & r   test_dumbdbm_read!DumbDBMTestCase.test_dumbdbm_readR   s9   VS 9::aQ''$MO O$O ''$MO OdGO QUU4[$**T*:;QUU662F;aeeFm,""8,,&	 - ;:O OO O -, ;::sU   :F*E1	0F*8F	<BF*
F	F*1F<F*FF*F'"F**F;	c                    V P                  4        \        P                  ! \        P                  ! \
        4      4      ;_uu_ 4       pV P                  V4      pR R R 4       R #   + '       g   i     R # ; iN)rF   r"   r#   r$   r%   r   keys_helper)r+   r,   r(   s   &  r   test_dumbdbm_keys!DumbDBMTestCase.test_dumbdbm_keysc   sF    V 455##A&D 6555s   A##A4	c                    \         P                  ! \        P                  ! \        4      4      ;_uu_ 4       pR VR&   V P                  RV4       RRR4       R#   + '       g   i     R# ; i)   hello   1N)r"   r#   r$   r%   r   assertInr?   s   & r   test_write_contains#DumbDBMTestCase.test_write_containsh   sD    V 455AdGMM$" 6555s   AA*	c                   \         P                  ! \        P                  ! \        4      4      ;_uu_ 4       pR VR&   RVR&   RRR4       \         P                  ! \        P                  ! \        4      4      ;_uu_ 4       pV P                  VR,          R4       RRR4       R#   + '       g   i     Lj; i  + '       g   i     R# ; i)r[   r\      hello2N)r"   r#   r$   r%   r   r&   r?   s   & r   test_write_write_read%DumbDBMTestCase.test_write_write_readm   s    V 455AdGAdG 6 V 455QtWi0 65 65 655s   B$ B7$B4	7C	c           	     @   V P                  4        \        P                  ! \        P                  ! \
        R 4      4      ;_uu_ 4       pV P                  VR,          V P                  RP                  R4      ,          4       RRR4       R#   + '       g   i     R# ; i)rK   r   r   N)	rF   r"   r#   r$   r%   r   r&   r)   encoder?   s   & r   test_str_readDumbDBMTestCase.test_str_readu   s^    VS 9::aQx[$**X__W5M*NO ;:::s   :BB	c           	     l   V P                  4        \        P                  ! \        P                  ! \
        4      4      ;_uu_ 4       pR VR&   RVR&   RRR4       \        P                  ! \        P                  ! \
        R4      4      ;_uu_ 4       pV P                  RV4       V P                  VRP                  R4      ,          V P                  RP                  R4      ,          4       V P                  VR,          R4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	r   r   a1NrK   r   r\   r   )
rF   r"   r#   r$   r%   r   r]   r&   re   r)   r?   s   & r   test_str_write_contains'DumbDBMTestCase.test_str_write_containsz   s    V 455AhKAcF 6 VS 9::aMM(A&Qxw78!ZZ(@ACQtWd+	 ;: 65 ;::s   DA4D"D	"D3	c                &   \         P                  ! \        P                  ! \        4      4      ;_uu_ 4       pR VR&   RVR&   RRR4       \
        P                  ! \        R,           R4      ;_uu_ 4       pVP                  4       pRRR4       \        P                  R8X  d   XP                  RR	4      pMXP                  R	R4      p\
        P                  ! \        R,           R
4      ;_uu_ 4       pVP                  V4       RRR4       \        P                  ! \        4      pV P                  VR,          R 4       V P                  VR,          R4       R#   + '       g   i     EL ; i  + '       g   i     L; i  + '       g   i     L; i)r[   r\   ra      2Nr   rb
   
s   
wb)r"   r#   r$   r%   r   ioreadr   linesepreplacewriter&   )r+   r,   filedatas   &   r   test_line_endings!DumbDBMTestCase.test_line_endings   s
    V 455AdGAdG 6
 WWVf_d++t99;D ,::<<w/D<</DWWVf_d++tJJt , LL 4(+4),! 655
 ,+ ,+s#   E4E-1F E*	-E=	 F	c                    V P                  V4      pV P                   F,  pV P                  V P                  V,          W,          4       K.  	  R # rV   )rW   r)   r&   )r+   r,   r(   r-   s   &&  r   r*   DumbDBMTestCase.read_helper   s:    "::CTZZ_af5 r   c                    \         P                  ! \        P                  ! \        R 4      4      ;_uu_ 4       pV P
                   F  pV P
                  V,          W&   K  	  RRR4       R#   + '       g   i     R# ; inN)r"   r#   r$   r%   r   r)   r+   r,   ks   &  r   rF   DumbDBMTestCase.init_db   sL    VS 9::aZZzz!}   ;:::s   )A++A<	c                    \        VP                  4       4      p\        V P                  P                  4       4      pV P                  W#4       V# rV   )sortedr(   r)   r&   )r+   r,   r(   dkeyss   &&  r   rW   DumbDBMTestCase.keys_helper   s:    affhtzz()%r   c                4   ^ RI p/ p\        ^4       EFY  p\        P                  ! \        P
                  ! \        4      4      ;_uu_ 4       p\        ^d4       F~  pVP                  R4      pVP                  4       R8  d   WR9   d   W% WE K5  K7  VP                  R4      VP                  R4      ,          pWbV&   WdV&   V P                  WE,          V4       K  	  RRR4       \        P                  ! \        P
                  ! \        4      4      ;_uu_ 4       p\        R VP                  4        4       4      p\        VP                  4       4      pV P                  Wx4       RRR4       EK\  	  R#   + '       g   i     L; i  + '       g   i     EK  ; i)r   Nabcdefghijklmg?i'  c              3   L   "   T F  w  rVP                  R 4      V3x  K  	  R# 5i)zlatin-1N)re   ).0r   vs   &  r   	<genexpr>.DumbDBMTestCase.test_random.<locals>.<genexpr>   s      !Qytq188I#6":ys   "$)r   r   r   )randomranger"   r#   r$   r%   r   choice	randranger&   r   items)	r+   r   ddummyr,   r   r   expectedgots	   &        r   test_randomDumbDBMTestCase.test_random   s&   1XE##GLL$899Q"3ZEo6A}},6 ! ! " #MM*<=@P@PQV@WW ! !((q1 ( : ##GLL$899Q!!Qqwwy!QQQWWY'  / :9 99 :99s   BE2AF2FFc                   \         P                  ! \        R 4      ;_uu_ 4       pRVR&   RRR4       \         P                  ! \        R4      ;_uu_ 4       pV P                  \	        VP                  4       4      R.4       RRR4       V P                  \         P                  4      ;_uu_ 4        XP                  4        RRR4       R#   + '       g   i     L; i  + '       g   i     Le; i  + '       g   i     R# ; i)r!   zcontext managerzdumbdbm context managerNrK   s   dumbdbm context manager)r$   r%   r   r&   r'   r(   rQ   rN   )r+   dbs   & r   test_context_manager$DumbDBMTestCase.test_context_manager   s    \\&#&&",=B() ' \\&#&&"T"'')_/I.JK ' w}}--GGI .- '& '& .--s#   C
+C/C0
C	C-	0D	c                   \         P                  ! \        R 4      pVP                  4        \	        \
        P                  V4      \	        \
        P                  VR4      \	        \
        P                  V4      \	        \
        P                  V4      3 F`  pV P                  \         P                  4      ;_uu_ 4       pV! R4       RRR4       V P                  \        XP                  4      R4       Kb  	  \
        P                  ! R4      \
        P                  ! R4      \
        P                  ! R4      \         3 F`  pV P                  \         P                  4      ;_uu_ 4       pV! V4       RRR4       V P                  \        XP                  4      R4       Kb  	  R#   + '       g   i     L; i  + '       g   i     LN; i)r!   btestNz"DBM object has already been closedr(   iterkeysr   )r$   r%   r   r4   r   operatordelitemsetitemgetitemcontainsrQ   rN   r&   str	exceptionmethodcallerlen)r+   r,   methcms   &   r   test_check_closed!DumbDBMTestCase.test_check_closed   s:   LL%		X--q1X--q#6X--q1X..24D ""7==11RV 2S.AC4 **62**:6**73D ""7==11RQ 2S.AC 21 21s   =	F#'	F6#F36Gc                   \         P                  ! \        R 4      ;_uu_ 4       pV P                   F  pV P                  V,          W&   K  	  RRR4       \         P                  ! \        R 4      ;_uu_ 4       pV P	                  VP                  4       . 4       RRR4       R#   + '       g   i     L^; i  + '       g   i     R# ; ir   )r$   r%   r   r)   r&   r(   r   s   &  r   test_create_newDumbDBMTestCase.test_create_new   s    \\&#&&!ZZzz!}   ' \\&#&&!QVVXr* '&	 '& '&&s   )B#8!B6#B3	6C	c                F   \        \        R ,           RRR7      ;_uu_ 4       pVP                  R4       RRR4       \        P                  ! 4       ;_uu_ 4       pV P                  \        4      ;_uu_ 4        \        P                   ! \        4      ;_uu_ 4       p RRR4       RRR4       V P                  VP                  4       R4       RRR4       R#   + '       g   i     L; i  + '       g   i     LU; i  + '       g   i     L`; i  + '       g   i     R# ; i)r   rC   r   )encodingzstr(print('Hacked!')), 0
N )
r%   r   rw   r   captured_stdoutrQ   
ValueErrorr$   r&   getvalue)r+   streamstdoutr,   s   &   r   	test_evalDumbDBMTestCase.test_eval   s    &6/399VLL56 :$$&&&"":..\\&))Q * / V__.3	 '& :9 *) /. '&&sG   CD7#C<	C)C<	$(DC&	)C94C<	<DDD 	c           	        R F  p\        4        V P                  \        4      ;_uu_ 4        \        P                  ! \
        V4       RRR4       V P                  \        P                  P                  \
        R,           4      4       V P                  \        P                  P                  \
        R,           4      4       V P                  \        P                  P                  \
        R,           4      4       K  	  R EF  p\        4        \        P                  ! \
        V4      ;_uu_ 4       pV P                  \        P                  P                  \
        R,           4      4       V P                  \        P                  P                  \
        R,           4      4       V P                  \        P                  P                  \
        R,           4      4       RRR4       V P                  \        P                  P                  \
        R,           4      4       EK!  	  R EF#  p\        4        \        P                  ! \
        V4      ;_uu_ 4       pRVR&   V P                  \        P                  P                  \
        R,           4      4       V P                  \        P                  P                  \
        R,           4      4       V P                  \        P                  P                  \
        R,           4      4       RRR4       V P                  \        P                  P                  \
        R,           4      4       EK&  	  R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     Lx; i)	rK   Nr	   r   r
   valuer-   rK   rC   r!   r   )r   rQ   FileNotFoundErrorr$   r%   r   assertFalser   pathexists
assertTrue)r+   r   r,   s   &  r   test_missing_data!DumbDBMTestCase.test_missing_data   s   EO""#455VU+ 6RWW^^FVO<=RWW^^FVO<=RWW^^FVO<=    EOfe,,v ?@v ?@  !@A - RWW^^FVO<=    EOfe,,"%v ?@v ?@  !@A	 -
 OOBGGNN6F?;<   655 -,, -,s%   M3B,M%B1M9M"%M69N	c           	        \         P                  ! \        R 4      ;_uu_ 4       p RRR4       \        P                  ! \        R,           4       R F  pV P                  \        4      ;_uu_ 4        \         P                  ! \        V4       RRR4       V P                  \        P                  P                  \        R,           4      4       V P                  \        P                  P                  \        R,           4      4       K  	  R F  p\         P                  ! \        V4      ;_uu_ 4       pV P                  \        P                  P                  \        R,           4      4       V P                  \        P                  P                  \        R,           4      4       RRR4       V P                  \        P                  P                  \        R,           4      4       \        P                  ! \        R,           4       K  	  R EF"  p\         P                  ! \        V4      ;_uu_ 4       pRVR&   V P                  \        P                  P                  \        R,           4      4       V P                  \        P                  P                  \        R,           4      4       RRR4       V P                  \        P                  P                  \        R,           4      4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       EK%  	  R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     L; i)r   Nr   r
   r   r-   r   r   )r$   r%   r   r   r   rQ   r   r   r   r   r   r+   r,   r   s   &  r   test_missing_index"DumbDBMTestCase.test_missing_index  s    \\&#&&! '
		&6/"E""#455VU+ 6RWW^^FVO<=RWW^^FVO<=	    Efe,,v ?@  !@A - RWW^^FVO<=IIfvo&    Efe,,"%v ?@  !@A - OOBGGNN6F?;<IIfvo&IIfvo&  ! '&& 655 -,, -,s1   L71M3A3M5A8M37M	MM03Nc           	     p   \         P                  ! \        R 4      ;_uu_ 4       p RRR4       \        P                  ! \        R,           4       R EF9  p\         P                  ! \        V4      ;_uu_ 4       pV P                  \        P                  P                  \        R,           4      4       V P                  \        P                  P                  \        R,           4      4       VP                  4        V P                  \        P                  P                  \        R,           4      4       V P                  \        P                  P                  \        R,           4      4       \        P                  ! \        R,           4       VP                  4        V P                  \        P                  P                  \        R,           4      4       V P                  \        P                  P                  \        R,           4      4       RRR4       V P                  \        P                  P                  \        R,           4      4       V P                  \        P                  P                  \        R,           4      4       EK<  	  R#   + '       g   i     ELt; i  + '       g   i     L; i)r   Nr   r
   r   
r$   r%   r   r   r   r   r   r   r   syncr   s   &  r   test_sync_empty_unmodified*DumbDBMTestCase.test_sync_empty_unmodified(  s|   \\&#&&! '
		&6/"Efe,,v ?@  !@Av ?@  !@A		&6/*  !@A  !@A - RWW^^FVO<=RWW^^FVO<=   '&& -,s   J8FJ%J"	%J5c           	        \         P                  ! \        R 4      ;_uu_ 4       p RRR4       \        P                  ! \        R,           4       R EF_  p\         P                  ! \        V4      ;_uu_ 4       pRVR&   V P                  \        P                  P                  \        R,           4      4       V P                  \        P                  P                  \        R,           4      4       VP                  4        V P                  \        P                  P                  \        R,           4      4       V P                  \        P                  P                  \        R,           4      4       \        P                  ! \        R,           4       \        P                  ! \        R,           4       VP                  4        V P                  \        P                  P                  \        R,           4      4       V P                  \        P                  P                  \        R,           4      4       RRR4       V P                  \        P                  P                  \        R,           4      4       V P                  \        P                  P                  \        R,           4      4       EKb  	  R#   + '       g   i     EL; i  + '       g   i     L; i)r   Nr   r   r-   r
   r   r   r   s   &  r   test_sync_nonempty_unmodified-DumbDBMTestCase.test_sync_nonempty_unmodified:  s   \\&#&&! '
		&6/"Efe,,"%v ?@  !@Av ?@v ?@		&6/*		&6/*  !@A  !@A - RWW^^FVO<=RWW^^FVO<=   '&& -,s   J78F>K7K	Kc                    R FE  pV P                  \        R4      ;_uu_ 4        \        P                  ! \        V4       RRR4       KG  	  R#   + '       g   i     K\  ; i)xNz)Flag must be one of 'r', 'w', 'c', or 'n')r   rfN)rM   r   r$   r%   r   )r+   flags   & r   test_invalid_flag!DumbDBMTestCase.test_invalid_flagN  sX    %D''
)@A A VT*A A &A A As   AAc           
        \         P                  ! 4       ;_uu_ 4       p\        P                  P	                  VR 4      p\
        P                  ! VR4      ;_uu_ 4       pV P                  \        VP                  4       4      . 4       V P                   F  pV P                  V,          W4&   K  	  RRR4       \        P                  ! VR,           \        P                  4       \        P                  ! VR,           \        P                  4       \        P                  ! V\        P                  \        P                  ,          4       \
        P                  ! VR4      ;_uu_ 4       pV P                  \        VP                  4       4      \        V P                  4      4       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)r   r   Nr   r	   rK   )r   temp_dirr   r   joinr$   r%   r&   r'   r(   r)   chmodr6   S_IRUSRS_IXUSRr   r4   )r+   dirfnamer,   r-   s   &    r   test_readonly_files#DumbDBMTestCase.test_readonly_filesU  s+   !!SGGLLd+EeS))Q  affh4::C!ZZ_AF & * HHUV^T\\2HHUV^T\\2HHS$,,t||34eS))Q  !16$**3EF	 * "!))) *) "!!s?   A G/AG	0B9G/)AG	6G/G	G/G,'G//H 	z*requires OS support of non-ASCII encodingsc                   \         P                  pR F)  pV P                  \         P                  W,           4       K+  	  \        P
                  ! VR4      ;_uu_ 4       pRVR&   RRR4       V P                  \        P                  P                  VR,           4      4       V P                  \        P                  P                  VR ,           4      4       \        P
                  ! VR4      ;_uu_ 4       pV P                  \        VP                  4       4      R.4       V P                  RV9   4       V P                  VR,          R4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r   r	   r!   s   values   keyNrK   r   )r   TESTFN_NONASCII
addCleanupr   r$   r%   r   r   r   r   r&   r'   r(   )r+   filenamesuffixr   s   &   r   test_nonascii_filename&DumbDBMTestCase.test_nonascii_filenamed  s     ,,.FOOI,,h.?@ /\\(C((B!BvJ )x&'89:x&'89:\\(C((BT"'')_vh7OOFbL)RZ2 )(	 )( )((s   E6AE+E(	+E<	c                    \         P                  ! \        P                  ! \        4      R 4      P                  4        R# r    )r$   r%   r   FakePathr   r4   r+   s   &r   test_open_with_pathlib_path+DumbDBMTestCase.test_open_with_pathlib_paths  s$    Y''/5;;=r   c                    \         P                  ! \        P                  ! \        4      R 4      P                  4        R# r    )r$   r%   r   fsencoder   r4   r   s   &r   test_open_with_bytes_path)DumbDBMTestCase.test_open_with_bytes_pathv  s"    R[[(#.446r   c                    \         P                  ! \        P                  ! \        P
                  ! \        4      4      R 4      P                  4        R# r    )r$   r%   r   r   r   r   r   r4   r   s   &r   !test_open_with_pathlib_bytes_path1DumbDBMTestCase.test_open_with_pathlib_bytes_pathy  s-    Y''F(;<cBHHJr   c                    \        4        R # rV   r   r   s   &r   tearDownDumbDBMTestCase.tearDown|      r   c                    \        4        R # rV   r   r   s   &r   setUpDumbDBMTestCase.setUp  r   r    N).__name__
__module____qualname____firstlineno__re   r)   r.   unittest
skipUnlesshasattrr   r   skip_unless_working_chmodr<   r@   rH   rS   rX   r^   rb   rf   rk   rz   r*   rF   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes____classdictcell__)__classdict__s   @r   r   r      sQ    3:>668;__W%E  W-/FG((B ) HB(0"'
#
1P
	,-,6
%
0,C,+4=4'4>$>(+ (( ) 22EG3G3>7K r   r   __main__)r"   rs   r   r   r6   r  dbm.dumbdumbr$   r   r   test.supportr   	functoolsr   TESTFNr   r   TestCaser   r   mainr   r   r   <module>r     sb   
  	  	     " 			fh'' fR zMMO r   