
    ;eJ-                     p    	 d dl Zd dlZd dlZd dlZddgZdZ	e
Z G d dej        j                  Zd
d	ZdS )    Nerroropeni   c                       e Zd ZeZeZddZd Zd Zd ZeZ	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd ZeZd Zd ZeZd Zd Zd ZdS )	_Databasecc                     | j                             |          }|| _        |dk    | _        |dz   | _        |dz   | _        |dz   | _        d | _        |                     |           | 	                    |           d S )Nrs   .dirs   .dats   .bak)
_osfsencode_mode	_readonly_dirfile_datfile_bakfile_index_create_update)selffilebasenamemodeflags       /usr/lib/python3.11/dbm/dumb.py__init__z_Database.__init__0   s    x((66
#+ %w. %w.$w.  	TT    c                    |dk    r<| j         | j        | j        fD ]'}	 t          j        |           # t
          $ r Y $w xY w	 t          j        | j         dd          }|                                 d S # t
          $ rY |dvr t          j        | j         dd          5 }| 	                    | j                    d d d            Y d S # 1 swxY w Y   Y d S w xY w)Nnr	   Latin-1encodingr   r   w)
r   r   r   r
   removeOSError_ior   close_chmod)r   r   filenamefs       r   r   z_Database._createJ   sR   3;;!]DM4=I  Jx((((   D	i@@@A GGIIIII  	+ 	+ 	+:%%$-yAAA +QDM***+ + + + + + + + + + + + + + + + + + + +	+sD   3
A A A6 6+C!C
<C
C	CC	CCc                 l   d| _         i | _        	 t          j        | j        dd          }|5  |D ]L}|                                }t          j        |          \  }}|                    d          }|| j        |<   M	 d d d            d S # 1 swxY w Y   d S # t          $ r |dvr d| _         Y d S w xY w)NFr	   r   r   r    T)
	_modifiedr   r$   r   r   rstrip_astliteral_evalencoder#   )r   r   r(   linekeypos_and_siz_pairs         r   r   z_Database._update]   s(   	8i@@@A  8 8 8 8D;;==D,0,=d,C,C)C)**Y//C'7DK$$	88 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8  	" 	" 	":%%!DNNNN	"s#   B ABBBB32B3c                 @   | j         | j        sd S 	 | j                            | j                   n# t
          $ r Y nw xY w	 | j                            | j        | j                   n# t
          $ r Y nw xY w| j        	                    | j        dd          5 }| 
                    | j                   | j                                         D ]5\  }}|                    d          d|d}|                    |           6	 d d d            d S # 1 swxY w Y   d S )Nr!   r   r   , 
)r   r*   r
   unlinkr   r#   renamer   r$   r   r&   itemsdecodewrite)r   r(   r0   r1   entrys        r   _commitz_Database._commitq   s    ;dnF	HOODM**** 	 	 	D		HOODM4=9999 	 	 	D	 X]]4=#	]BB 	aKK&&&)-):):)<)<  %% '*jj&;&;&;&;=M=M=MN		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s1   2 
??%A) )
A65A6A*DDDc                 2    | j         t          d          d S N"DBM object has already been closed)r   r   r   s    r   _verify_openz_Database._verify_open   s!    ;<=== r   c                 Z   t          |t                    r|                    d          }|                                  | j        |         \  }}t          j        | j        d          5 }|                    |           |	                    |          }d d d            n# 1 swxY w Y   |S )Nutf-8rb)

isinstancestrr.   r@   r   r$   r   r   seekread)r   r0   possizr(   dats         r   __getitem__z_Database.__getitem__   s    c3 	&**W%%C;s#SXdmT** 	aFF3KKK&&++C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
s   )+B  B$'B$c                    t          j        | j        d          5 }|                    dd           t	          |                                          }|t          z   dz
  t          z  t          z  }|                    d||z
  z             |}|                    |           d d d            n# 1 swxY w Y   |t          |          fS )Nrb+r             )	r$   r   r   rF   inttell
_BLOCKSIZEr9   len)r   valr(   rH   nposs        r   _addvalz_Database._addval   s    XdmU++ 	qFF1aLLLaffhh--C:%)j8JFDGGE48$%%%CGGCLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 SXXs   BB..B25B2c                     t          j        | j        d          5 }|                    |           |                    |           d d d            n# 1 swxY w Y   |t          |          fS )NrM   )r$   r   r   rF   r9   rT   )r   rH   rU   r(   s       r   _setvalz_Database._setval   s    XdmU++ 	qFF3KKKGGCLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 SXXs   +AAAc                    || j         |<   t          j        | j        dd          5 }|                     | j                   |                    |                    d          d|d           d d d            d S # 1 swxY w Y   d S )Nar   r   r3   r4   )r   r$   r   r   r&   r9   r8   )r   r0   r1   r(   s       r   _addkeyz_Database._addkey   s    +CXdmS9=== 	LKK&&&GG#**Y"7"7"7"79I9I9IJKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls   A	A==BBc                 <   | j         rt          d          t          |t                    r|                    d          }n+t          |t
          t          f          st          d          t          |t                    r|                    d          }n+t          |t
          t          f          st          d          |                                  d| _	        || j
        vr+|                     ||                     |                     d S | j
        |         \  }}|t          z   dz
  t          z  }t          |          t          z   dz
  t          z  }||k    r |                     ||          | j
        |<   d S |                     |          | j
        |<   d S )N'The database is opened for reading onlyrB   zkeys must be bytes or stringszvalues must be bytes or stringsTrO   )r   r   rD   rE   r.   bytes	bytearray	TypeErrorr@   r*   r   r\   rW   rS   rT   rY   )r   r0   rU   rH   rI   	oldblocks	newblockss          r   __setitem__z_Database.__setitem__   s   > 	CABBBc3 	=**W%%CCC%!344 	=;<<<c3 	?**W%%CCC%!344 	?=>>>dk!!LLdll3//00000 {3'HCz)A-*<ISJ.2zAII%%#'<<S#9#9C   
 $(<<#4#4C   r   c                     | j         rt          d          t          |t                    r|                    d          }|                                  d| _        | j        |= |                                  d S )Nr^   rB   T)	r   r   rD   rE   r.   r@   r*   r   r;   r   r0   s     r   __delitem__z_Database.__delitem__   su    > 	CABBBc3 	&**W%%CK
 	r   c                 h    	 t          | j                  S # t          $ r t          d          d w xY wr=   )listr   ra   r   r?   s    r   keysz_Database.keys   H    	H$$$ 	H 	H 	H<==4G	H    1c                 v                                         fd j                                        D             S )Nc                 $    g | ]}||         fS  ro   ).0r0   r   s     r   
<listcomp>z#_Database.items.<locals>.<listcomp>   s"    ???Sd3i ???r   )r@   r   rj   r?   s   `r   r7   z_Database.items   s=    ????DK,<,<,>,>????r   c                     t          |t                    r|                    d          }	 || j        v S # t          $ r | j        t          d          d  w xY w)NrB   r>   )rD   rE   r.   r   ra   r   rf   s     r   __contains__z_Database.__contains__   sn    c3 	&**W%%C	$+%% 	 	 	{"@AAtK		s	   5 #Ac                 h    	 t          | j                  S # t          $ r t          d          d w xY wr=   )iterr   ra   r   r?   s    r   iterkeysz_Database.iterkeys  rk   rl   c                 h    	 t          | j                  S # t          $ r t          d          d w xY wr=   )rT   r   ra   r   r?   s    r   __len__z_Database.__len__  sH    	Ht{### 	H 	H 	H<==4G	Hrl   c                     	 |                                   d x| _        x| _        x| _        | _        d S # d x| _        x| _        x| _        | _        w xY wN)r;   r   r   r   r   r?   s    r   r%   z_Database.close  s]    	OLLNNNJNNDKN$-N$-$---$NDKN$-N$-$-NNNNs	   4 Ac                 F    | j                             || j                   d S rz   )r
   chmodr   )r   files     r   r&   z_Database._chmod  s     tTZ(((((r   c                     | S rz   ro   r?   s    r   	__enter__z_Database.__enter__  s    r   c                 .    |                                   d S rz   )r%   )r   argss     r   __exit__z_Database.__exit__  s    

r   N)r   )__name__
__module____qualname__r
   r$   r   r   r   r;   syncr@   rK   rW   rY   r\   rd   rg   rj   r7   rs   rv   __iter__rx   r%   __del__r&   r   r   ro   r   r   r   r   #   sy        C
C   4  &8 8 8(  2 D> > >      L L L5 5 5J  H H H@ @ @	 	 	H H H
 HH H HO O O G) ) )      r   r   r     c                     	 	 t          j        d          }t          j        |           || z  }n# t          $ r Y nw xY w|dvrt          d          t	          | ||          S )Nr   )r	   r!   r   r   z)Flag must be one of 'r', 'w', 'c', or 'n')r   )r
   umaskAttributeError
ValueErrorr   )r}   r   r   ums       r   r   r   #  s    Yq\\	"
 s|	    
 '''DEEET4d++++s   (2 
??)r   r   )astr,   ior$   osr
   collections.abccollections__all__rS   r#   r   abcMutableMappingr   r   ro   r   r   <module>r      s   .                F

} } } } }. } } }@, , , , , ,r   