???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5d-                     @   sR   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 dejjZd
d	dZdS )    Nerroropeni   c                   @   s   e Zd ZeZeZd+ddZdd Zdd Zdd	 ZeZ	d
d Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZeZd d! Zd"d# ZeZd$d% Zd&d' Zd(d) Zd*S ),	_Databasecc                 C   sL   || _ |dk| _|d | _|d | _|d | _d | _| | | | d S )Nrz.dirz.datz.bak)_mode	_readonly_dirfile_datfile_bakfile_index_create_update)selfZfilebasenamemodeflag r    /usr/lib64/python3.8/dbm/dumb.py__init__0   s    




z_Database.__init__c                 C   s   |dkrB| j | j| jfD ](}zt| W q tk
r>   Y qX qztj| j ddd}W nH tk
r   |dkrr tj| j ddd}| | j  W 5 Q R X Y n
X |	  d S )Nnr   Latin-1encodingr   r   w)
r
   r   r	   _osremoveOSError_ior   _chmodclose)r   r   filenamefr   r   r   r   I   s    z_Database._createc              	   C   s   d| _ i | _ztj| jddd}W n$ tk
rF   |dkr< d| _ Y nFX |: |D ].}| }t|\}}|	d}|| j|< qRW 5 Q R X d S )NFr   r   r   r   T)
	_modifiedr   r   r   r	   r   rstrip_astZliteral_evalencode)r   r   r"   linekeypos_and_siz_pairr   r   r   r   \   s    
z_Database._updatec              	   C   s   | j d ks| jsd S z| j| j W n tk
r:   Y nX z| j| j| j W n tk
rf   Y nX | jj	| jdddB}| 
| j | j  D ]$\}}d|d|f }|| qW 5 Q R X d S )Nr   r   r   %r, %r
)r   r#   r   unlinkr   r   renamer	   r   r   r   itemsdecodewrite)r   r"   r(   r)   entryr   r   r   _commitp   s    z_Database._commitc                 C   s   | j d krtdd S N"DBM object has already been closed)r   r   r   r   r   r   _verify_open   s    
z_Database._verify_openc              	   C   s\   t |tr|d}|   | j| \}}t| jd}|| |	|}W 5 Q R X |S )Nutf-8rb)

isinstancestrr&   r5   r   r   r   r
   seekread)r   r(   possizr"   Zdatr   r   r   __getitem__   s    


z_Database.__getitem__c              	   C   sr   t | jdR}|dd t| }|t d t t }|d||   |}|| W 5 Q R X |t|fS )Nrb+r             )	r   r   r
   r:   inttell
_BLOCKSIZEr/   len)r   valr"   r<   Znposr   r   r   _addval   s    z_Database._addvalc              	   C   s:   t | jd}|| || W 5 Q R X |t|fS )Nr?   )r   r   r
   r:   r/   rF   )r   r<   rG   r"   r   r   r   _setval   s    
z_Database._setvalc              	   C   sP   || j |< tj| jddd*}| | j |d|d|f  W 5 Q R X d S )Nar   r   r*   )r   r   r   r	   r   r/   r.   )r   r(   r)   r"   r   r   r   _addkey   s    
z_Database._addkeyc                 C   s   | j rtdt|tr$|d}nt|ttfs:tdt|trP|d}nt|ttfsftd|   d| _	|| j
kr| || | n^| j
| \}}|t d t }t|t d t }||kr| ||| j
|< n| || j
|< d S )N'The database is opened for reading onlyr6   zkeys must be bytes or stringszvalues must be bytes or stringsTrA   )r   r   r8   r9   r&   bytes	bytearray	TypeErrorr5   r#   r   rK   rH   rE   rF   rI   )r   r(   rG   r<   r=   Z	oldblocksZ	newblocksr   r   r   __setitem__   s(    


z_Database.__setitem__c                 C   sD   | j rtdt|tr"|d}|   d| _| j|= |   d S )NrL   r6   T)	r   r   r8   r9   r&   r5   r#   r   r1   r   r(   r   r   r   __delitem__   s    

z_Database.__delitem__c                 C   s0   zt | jW S  tk
r*   tdd Y nX d S r2   )listr   rO   r   r4   r   r   r   keys   s    z_Database.keysc                    s         fdd j D S )Nc                    s   g | ]}| | fqS r   r   ).0r(   r4   r   r   
<listcomp>   s     z#_Database.items.<locals>.<listcomp>)r5   r   rT   r4   r   r4   r   r-      s    z_Database.itemsc                 C   sR   t |tr|d}z|| jkW S  tk
rL   | jd krFtdd n Y nX d S )Nr6   r3   )r8   r9   r&   r   rO   r   rQ   r   r   r   __contains__   s    


z_Database.__contains__c                 C   s0   zt | jW S  tk
r*   tdd Y nX d S r2   )iterr   rO   r   r4   r   r   r   iterkeys  s    z_Database.iterkeysc                 C   s0   zt | jW S  tk
r*   tdd Y nX d S r2   )rF   r   rO   r   r4   r   r   r   __len__
  s    z_Database.__len__c              	   C   s,   z|   W 5 d  | _  | _ | _| _X d S N)r   r
   r	   r   r1   r4   r   r   r   r      s    z_Database.closec                 C   s   | j || j d S r[   )r   chmodr   )r   filer   r   r   r     s    z_Database._chmodc                 C   s   | S r[   r   r4   r   r   r   	__enter__  s    z_Database.__enter__c                 G   s   |    d S r[   )r    )r   argsr   r   r   __exit__  s    z_Database.__exit__N)r   )__name__
__module____qualname__r   r   r   r   r   r1   syncr5   r>   rH   rI   rK   rP   rR   rT   r-   rW   rY   __iter__rZ   r    __del__r   r^   r`   r   r   r   r   r   #   s2   

	%r   r     c                 C   sV   zt d}t | W n tk
r,   Y nX || @ }|dkrHtdt| ||d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   Zumr   r   r   r   "  s    

)r   rg   )Zastr%   ior   osr   Zcollections.abccollections__all__rE   r   r   abcMutableMappingr   r   r   r   r   r   <module>   s     