
    <e              	       R   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZ d Z G d de          Z G d	 d
e j                  Z G d d          Z G d de          Z G d de          Zd dlmZ  eej        dz             D ]xZeej        fZde dZ eeeddeii           e            e<   eej        fZ e            D ]7Zej        dd         Zde de dZ eeeedeid           e            e<   8yedk    r e j                      dS dS )    N)support)	os_helper)MutableMapping)dbm_iteratorc                 ,    |                      d          S Nlatin-1)decode)ss    '/usr/lib/python3.11/test/test_shelve.pyL1r      s    88I    c                   F    e Zd ZdZd Zd Zd Zd Zd Zd Z	e	Z
d Zd	 Zd
S )byteskeydictz Mapping that supports bytes keysc                     i | _         d S N)dselfs    r   __init__zbyteskeydict.__init__   s    r   c                 6    | j         t          |                   S r   r   r   r   keys     r   __getitem__zbyteskeydict.__getitem__   s    vbggr   c                 4    || j         t          |          <   d S r   r   )r   r   values      r   __setitem__zbyteskeydict.__setitem__   s    r#wwr   c                 0    | j         t          |          = d S r   r   r   s     r   __delitem__zbyteskeydict.__delitem__   s    F2c77OOOr   c                 *    t          | j                  S r   )lenr   r   s    r   __len__zbyteskeydict.__len__   s    46{{r   c              #   p   K   | j                                         D ]}|                    d          V  d S r   )r   keysencode)r   ks     r   iterkeyszbyteskeydict.iterkeys"   sD       	& 	&A((9%%%%%%	& 	&r   c                 D    t          |                                           S r   )listr(   r   s    r   r%   zbyteskeydict.keys(   s    DMMOO$$$r   c                 *    t          | j                  S r   )r   r   r   s    r   copyzbyteskeydict.copy+   s    DF###r   N)__name__
__module____qualname____doc__r   r   r   r    r#   r(   __iter__r%   r,    r   r   r   r      s        &&             & & & H% % %$ $ $ $ $r   r   c                       e Zd Zej        Zej                            ej        d          Z	d Z
ddZd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd ZdS )TestCaseshelftemp.dbc                    i }t          j        |dd          }g d|d<   |                     |d         g d           |                     t          |          d           |                                 |                     t          t          |           	 |d          |                     d           d S # t          $ r Y d S w xY wN   Fprotocol	writeback   r8         key1r=   z"Closed shelf should not find a key)shelveShelfassertEqualr"   closeassertRaises
ValueErrorfailr   d1r   s      r   
test_closezTestCase.test_close3   s    La5999II&	6III...Q###				*c1---	<fII II:;;;;;  	 	 	DD	s   B7 7
CCNc                 ^   t          j        | j                   |                     t          j        | j                   t          j        ||n| j        |          }	 d|d<   | 	                    |d         d           |
                                 d S # |
                                 w xY w)N)filenamer:   r<   r@   )osmkdirdirname
addCleanupr   rmtreerA   openfnrC   rD   )r   rL   r:   r   s       r   test_open_templatezTestCase.test_open_templateB   s    
	($,777KX-Atw!)+ + +	!AfIQvY	222GGIIIIIAGGIIIIs   !B B,c                 2    |                      d           d S )Nr   r:   rT   r   s    r   test_ascii_file_shelfzTestCase.test_ascii_file_shelfM       +++++r   c                 2    |                      d           d S )Nr=   rV   rW   r   s    r   test_binary_file_shelfzTestCase.test_binary_file_shelfP   rY   r   c                 2    |                      d           d S )Nr8   rV   rW   r   s    r   test_proto2_file_shelfzTestCase.test_proto2_file_shelfS   rY   r   c                 `    |                      t          j        | j                             d S N)rL   )rT   r   FakePathrS   r   s    r   test_pathlib_path_file_shelfz%TestCase.test_pathlib_path_file_shelfV   s,    );DG)D)DEEEEEr   c                 `    |                      t          j        | j                             d S r_   )rT   rM   fsencoderS   r   s    r   test_bytes_path_file_shelfz#TestCase.test_bytes_path_file_shelfY   s+    TW)=)=>>>>>r   c                     |                      t          j        t          j        | j                                       d S r_   )rT   r   r`   rM   rc   rS   r   s    r   "test_pathlib_bytes_path_file_shelfz+TestCase.test_pathlib_bytes_path_file_shelf\   s6    );BK<P<P)Q)QRRRRRr   c                 z   t                      }t          j        |d          5 }d|d<   |                     |d         d           d d d            n# 1 swxY w Y   t                      }t          j        |d          5 }d|d<   |                     |d         d           d d d            n# 1 swxY w Y   |                     t	          |          d           |                     t	          |          d           |                     |                                |                                           d S )Nr   rV   r<   r@   r=   )r   rA   rB   rC   r"   assertNotEqualitemsr   rI   r   d2s       r   test_in_memory_shelfzTestCase.test_in_memory_shelf_   s   ^^\"q))) 	3Q!AfIQvY	222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 ^^\"q))) 	3Q!AfIQvY	222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	R!$$$R!$$$BHHJJ

33333s#   "AAA"B00B47B4c                    t                      }t          j        |dd          5 }g d|d<   |                     |d         g d           |d                             d           |                     |d         g d           d d d            n# 1 swxY w Y   t                      }t          j        |dd          5 }g d|d<   |                     |d         g d           |d                             d           |                     |d         g d           d d d            n# 1 swxY w Y   |                     t          |          d	           |                     t          |          d	           d S )
Nr8   Fr9   r<   r@      T)r=   r8   r>   r?   rn   r=   )r   rA   rB   rC   appendr"   rj   s       r   test_mutable_entryzTestCase.test_mutable_entrym   s   ^^\"qE::: 	3a!		AfIQvY			222fIQQvY			222		3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 ^^\"qD999 	5Q!		AfIQvY			222fIQQvY444		5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	R!$$$R!$$$$$s%   ABBBAD,,D03D0c                    i }d}dgt          j        |          |<   |                     |                    d          |           dgt          j        |d          |<   |                     |                    d          |           t          j        |d          }|                     t
          |j        |dg           d S )Nu   PÃ¶pr=   utf-8r	   )keyencodingascii)rA   rB   assertInr&   rE   UnicodeEncodeErrorr   )r   r   r   r   s       r   test_keyencodingzTestCase.test_keyencoding   s     !sQcjj))1---78cQI...s3cjj++Q///L000,amS1#FFFFFr   c                 "   i }d}|                     d          }t          j        |d          5 }dg||<   ||         }|d                             d           d d d            n# 1 swxY w Y   ||         }|                     ||           d S )Nr   rr   T)r;   r=   r8   )r&   rA   rB   ro   rh   )r   r   r   
encodedkeyr   p1p2s          r   &test_writeback_also_writes_immediatelyz/TestCase.test_writeback_also_writes_immediately   s    ZZ((
\!t,,, 	SAcF:BeHOOA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 z]B#####s   *A&&A*-A*c                    i }t          j        |dd          5 }g d|d<   |                     |d         g d           |                     t          |          d           d d d            n# 1 swxY w Y   |                     t
          t          |           	 |d          |                     d           d S # t
          $ r Y d S w xY wr7   )rA   rB   rC   r"   rE   rF   rG   rH   s      r   	test_withzTestCase.test_with   s   \"qE::: 	(a!		AfIQvY			222SVVQ'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	*c1---	<fII II:;;;;;  	 	 	DD	s$   A	A//A36A3B; ;
C	C	c                     t          j        i           5 }|                     |j        t          j                   d d d            d S # 1 swxY w Y   d S r   )rA   rB   rC   	_protocolpickleDEFAULT_PROTOCOL)r   r   s     r   test_default_protocolzTestCase.test_default_protocol   s    \" 	CQ[&*ABBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   &AAA)NN)r-   r.   r/   r   TESTFNrO   rM   pathjoinrS   rJ   rT   rX   r[   r]   ra   rd   rf   rl   rp   rw   r|   r~   r   r2   r   r   r4   r4   /   s       G	i&	7	7B< < <	 	 	 	, , ,, , ,, , ,F F F? ? ?S S S4 4 4% % %$G G G
$ 
$ 
$< < <C C C C Cr   r4   c                   "    e Zd Zej        Zd ZdS )TestShelveBasec                     ddddS )Nvalue1r8   )r=   r8   r>   )r@   key2key3r2   r   s    r   
_referencezTestShelveBase._reference   s    ':::r   N)r-   r.   r/   rA   rB   	type2testr   r2   r   r   r   r      s*        I; ; ; ; ;r   r   c                       e Zd Zd ZdS )TestShelveInMemBasec                 H    t          j        t                      fi | j        S r   )rA   rB   r   _argsr   s    r   _empty_mappingz"TestShelveInMemBase._empty_mapping   s     |LNN99dj999r   N)r-   r.   r/   r   r2   r   r   r   r      s#        : : : : :r   r   c                       e Zd ZdZd Zd ZdS )TestShelveFileBaser   c                     | xj         dz  c_         t          j        | j        t	          | j                   z   fi | j        }|                     |j                   |S )Nr=   )counterrA   rR   	base_pathstrr   rP   rD   )r   xs     r   r   z!TestShelveFileBase._empty_mapping   sU    KT\):)::IIdjII   r   c                 J   t           j        }t          j        |           |                     t           j        |           t          j                            |d          | _        |                     t          t          dt          j                   | j        t          _        d S )Nr5   _defaultmod)r   r   rM   rN   rP   rQ   r   r   r   setattrdbmr   dbm_mod)r   rO   s     r   setUpzTestShelveFileBase.setUp   so    "
	('222g~>>mS_EEE,r   N)r-   r.   r/   r   r   r   r2   r   r   r   r      s7        G  ' ' ' ' 'r   r   )mapping_testsr=   	TestProto	MemShelver   r:   r?   File_Shelve)r   r   __main__)!unittestr   rA   globr   rM   testr   test.supportr   collections.abcr   test.test_dbmr   r   r   r4   r   r   r   r   rangeHIGHEST_PROTOCOLprotoBasicTestMappingProtocolbasesnametypeglobalsr   r-   suffixmainr2   r   r   <module>r      s    



    				       " " " " " " * * * * * * & & & & & &  $ $ $ $ $> $ $ $>yC yC yC yC yCx  yC yC yCx; ; ; ; ; ; ; ;: : : : :. : : :
' ' ' ' ' ' ' '$      U6*Q.// S SE -"HIE'u'''Dd4#j%%89; ;GGIIdO!GHE<>> S S!!""%5555v555$tU+2j%=PQQS S		$	S zHMOOOOO r   