
    0hh              	       4   S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
  S r " S S\5      r " S S	\ R                  5      r " S
 S5      r " S S\5      r " S S\5      rS SKJr  \" \R(                  S-   5       Hx  r\\R,                  4rS\ S3r\" \\SS\005      \" 5       \'   \\R,                  4r\
" 5        H2  r\R8                  SS rS\ S\ S3r\" \\\S\0S.5      \" 5       \'   M4     Mz     \S:X  a  \ R<                  " 5         gg)    N)	os_helper)MutableMapping)dbm_iteratorc                 $    U R                  S5      $ Nlatin-1)decode)ss    9/opt/python-3.13.8/usr/lib/python3.13/test/test_shelve.pyL1r      s    88I    c                   L    \ rS rSrSrS rS rS rS rS r	S r
\
rS	 rS
 rSrg)byteskeydict   z Mapping that supports bytes keysc                     0 U l         g Ndselfs    r   __init__byteskeydict.__init__   s	    r   c                 2    U R                   [        U5         $ r   r   r   r   keys     r   __getitem__byteskeydict.__getitem__   s    vvbgr   c                 2    X R                   [        U5      '   g r   r   )r   r   values      r   __setitem__byteskeydict.__setitem__   s    r#wr   c                 0    U R                   [        U5      	 g r   r   r   s     r   __delitem__byteskeydict.__delitem__   s    FF2c7Or   c                 ,    [        U R                  5      $ r   )lenr   r   s    r   __len__byteskeydict.__len__   s    466{r   c              #   t   #    U R                   R                  5        H  nUR                  S5      v   M     g 7fr   )r   keysencode)r   ks     r   iterkeysbyteskeydict.iterkeys    s(     A((9%% s   68c                 4    [        U R                  5       5      $ r   )listr.   r   s    r   r+   byteskeydict.keys&   s    DMMO$$r   c                 ,    [        U R                  5      $ r   )r   r   r   s    r   copybyteskeydict.copy)   s    DFF##r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r!   r$   r(   r.   __iter__r+   r4   __static_attributes__ r   r   r   r      s4    & & H%$r   r   c                       \ rS rSr\R
                  r\R                  R                  \R
                  S5      r
S rSS jrS rS rS rS	 rS
 rS rS rS rS rS rS rS rSrg)TestCase-   shelftemp.dbc                 J   0 n[         R                  " USSS9n/ SQUS'   U R                  US   / SQ5        U R                  [        U5      S5        UR	                  5         U R                  [        [        U5         US     U R                  S5        g ! [         a     g f = fN   Fprotocol	writeback   rD         key1rI   z"Closed shelf should not find a key)shelveShelfassertEqualr'   closeassertRaises
ValueErrorfailr   d1r
   s      r   
test_closeTestCase.test_close1   s    LLa59&	6I.Q#		*c1-	<fI II:;  		s   >B 
B"!B"Nc                 `   [         R                  " U R                  5        U R                  [        R
                  U R                  5        [        R                  " Ub  UOU R                  US9n SUS'   U R                  US   S5        UR                  5         g ! UR                  5         f = f)N)filenamerF   rH   rL   )osmkdirdirname
addCleanupr   rmtreerM   openfnrO   rP   )r   rY   rF   r
   s       r   test_open_templateTestCase.test_open_template@   s}    
	(($,,7KKX-Atww!)+	!AfIQvY	2GGIAGGIs   0B B-c                 "    U R                  SS9  g )Nr   rF   ra   r   s    r   test_ascii_file_shelfTestCase.test_ascii_file_shelfK       +r   c                 "    U R                  SS9  g )NrI   rd   re   r   s    r   test_binary_file_shelfTestCase.test_binary_file_shelfN   rh   r   c                 "    U R                  SS9  g )NrD   rd   re   r   s    r   test_proto2_file_shelfTestCase.test_proto2_file_shelfQ   rh   r   c                 ^    U R                  [        R                  " U R                  5      S9  g N)rY   )ra   r   FakePathr`   r   s    r   test_pathlib_path_file_shelf%TestCase.test_pathlib_path_file_shelfT   s"    ););DGG)DEr   c                 ^    U R                  [        R                  " U R                  5      S9  g rp   )ra   rZ   fsencoder`   r   s    r   test_bytes_path_file_shelf#TestCase.test_bytes_path_file_shelfW   s     TWW)=>r   c                     U R                  [        R                  " [        R                  " U R
                  5      5      S9  g rp   )ra   r   rq   rZ   ru   r`   r   s    r   "test_pathlib_bytes_path_file_shelf+TestCase.test_pathlib_bytes_path_file_shelfZ   s+    ););BKK<P)QRr   c                    [        5       n[        R                  " USS9 nSUS'   U R                  US   S5        S S S 5        [        5       n[        R                  " USS9 nSUS'   U R                  US   S5        S S S 5        U R                  [	        U5      S5        U R                  [	        U5      S5        U R                  UR                  5       UR                  5       5        g ! , (       d  f       N= f! , (       d  f       N= f)Nr   rd   rH   rL   rI   )r   rM   rN   rO   r'   assertNotEqualitemsr   rU   r
   d2s       r   test_in_memory_shelfTestCase.test_in_memory_shelf]   s    ^\\"q)Q!AfIQvY	2 * ^\\"q)Q!AfIQvY	2 * 	R!$R!$BHHJ
3 *) *)s   C*"C;*
C8;
D	c                 |   [        5       n[        R                  " USSS9 n/ SQUS'   U R                  US   / SQ5        US   R	                  S5        U R                  US   / SQ5        S S S 5        [        5       n[        R                  " USSS9 n/ SQUS'   U R                  US   / SQ5        US   R	                  S5        U R                  US   / SQ5        S S S 5        U R                  [        U5      S	5        U R                  [        U5      S	5        g ! , (       d  f       N= f! , (       d  f       NV= f)
NrD   FrE   rH   rL      T)rI   rD   rJ   rK   r   rI   )r   rM   rN   rO   appendr'   r~   s       r   test_mutable_entryTestCase.test_mutable_entryk   s   ^\\"qE:a!AfIQvY	2fIQQvY	2	 ; ^\\"qD9Q!AfIQvY	2fIQQvY4	 : 	R!$R!$ ;: :9s   A
DA
D-
D*-
D;c                 f   0 nSnS/[         R                  " U5      U'   U R                  UR                  S5      U5        S/[         R                  " USS9U'   U R                  UR                  S5      U5        [         R                  " USS9nU R	                  [
        UR                  US/5        g )Nu   PÃ¶prI   utf-8r   )keyencodingascii)rM   rN   assertInr,   rQ   UnicodeEncodeErrorr!   )r   r   r   r
   s       r   test_keyencodingTestCase.test_keyencoding}   s     !sQcjj)1-78cQI.s3cjj+Q/LL0,ammS1#Fr   c                     0 nSnUR                  S5      n[        R                  " USS9 nS/XB'   X   nUS   R                  S5        S S S 5        X   nU R	                  WU5        g ! , (       d  f       N%= f)Nr   r   T)rG   rI   rD   )r,   rM   rN   r   r|   )r   r   r   
encodedkeyr
   p1p2s          r   &test_writeback_also_writes_immediately/TestCase.test_writeback_also_writes_immediately   sq    ZZ(
\\!t,SAFBeHOOA - ]B# -,s   A((
A6c                 ^   0 n[         R                  " USSS9 n/ SQUS'   U R                  US   / SQ5        U R                  [        U5      S5        S S S 5        U R	                  [
        [        W5         US     U R                  S5        g ! , (       d  f       NA= f! [
         a     g f = frC   )rM   rN   rO   r'   rQ   rR   rS   rT   s      r   	test_withTestCase.test_with   s    \\"qE:a!AfIQvY	2SVQ' ; 	*c1-	<fI II:; ;:  		s   :B7B 
B
B,+B,c                     [         R                  " 0 5       nU R                  UR                  [        R
                  5        S S S 5        g ! , (       d  f       g = fr   )rM   rN   rO   	_protocolpickleDEFAULT_PROTOCOL)r   r
   s     r   test_default_protocolTestCase.test_default_protocol   s6    \\"Q[[&*A*AB s   +A
Ar=   )NN)r6   r7   r8   r9   r   TESTFNr\   rZ   pathjoinr`   rV   ra   rf   rj   rm   rr   rv   ry   r   r   r   r   r   r   r<   r=   r   r   r?   r?   -   sq    G	i&&	7B<	,,,F?S4%$G
$<Cr   r?   c                   2    \ rS rSr\R
                  rS rSrg)TestShelveBase   c                     SSSS.$ )Nvalue1rD   )rI   rD   rJ   )rL   key2key3r=   r   s    r   
_referenceTestShelveBase._reference   s    '::r   r=   N)	r6   r7   r8   r9   rM   rN   	type2testr   r<   r=   r   r   r   r      s    I;r   r   c                       \ rS rSrS rSrg)TestShelveInMemBase   c                 T    [         R                  " [        5       40 U R                  D6$ r   )rM   rN   r   _argsr   s    r   _empty_mapping"TestShelveInMemBase._empty_mapping   s    ||LN9djj99r   r=   N)r6   r7   r8   r9   r   r<   r=   r   r   r   r      s    :r   r   c                   $    \ rS rSrSrS rS rSrg)TestShelveFileBase   r   c                     U =R                   S-  sl         [        R                  " U R                  [	        U R                   5      -   40 U R
                  D6nU R                  UR                  5        U$ )NrI   )counterrM   r_   	base_pathstrr   r]   rP   )r   xs     r   r   !TestShelveFileBase._empty_mapping   sN    KKT\\)::IdjjI r   c                 X   [         R                  n[        R                  " U5        U R	                  [         R
                  U5        [        R                  R                  US5      U l        U R	                  [        [        S[        R                  5        U R                  [        l        g )NrA   _defaultmod)r   r   rZ   r[   r]   r^   r   r   r   setattrdbmr   dbm_mod)r   r\   s     r   setUpTestShelveFileBase.setUp   sd    ""
	(('2g~>mS__E,,r   )r   N)r6   r7   r8   r9   r   r   r   r<   r=   r   r   r   r      s    G'r   r   )mapping_testsrI   	TestProto	MemShelver   rF   rK   File_Shelve)r   r   __main__)unittestr   rM   r   rZ   test.supportr   collections.abcr   test.test_dbmr   r   r   r?   r   r   r   testr   rangeHIGHEST_PROTOCOLprotoBasicTestMappingProtocolbasesnametypeglobalsr   r6   suffixmainr=   r   r   <module>r      sA    
   	 " * &$> $>yCx   yCx; ;:. :
' '$ 6**Q./E -"H"HIEugY'D4#j%%89;GIdO!G!GHE>!!!"%5'vhf5tU+2j%=PQS	$	 " 0 zMMO r   