509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \Õ.  ã               @   sP   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ƒ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   sJ   || _ |dk| _|d | _|d | _|d | _d | _| j|ƒ | jƒ  d S )NÚrz.dirz.datz.bak)Ú_modeÚ	_readonlyÚ_dirfileÚ_datfileÚ_bakfileÚ_indexÚ_createÚ_update)ÚselfZfilebasenameÚmodeÚflag© r   ú /usr/lib64/python3.6/dbm/dumb.pyÚ__init__0   s    




z_Database.__init__c             C   sÈ   |dkrFx<| j | j| jfD ](}ytj|ƒ W q tk
r@   Y qX qW ytj| j ddd�}W n^ tk
rº   |dkrŒdd l}|j	dt
dd	� tj| j d
dd��}| j| j ƒ W d Q R X Y n
X |jƒ  d S )NÚnr   zLatin-1)Úencodingr   r   zIThe database file is missing, the semantics of the 'c' flag will be used.é   )Ú
stacklevelÚw)r   r   )r
   r   r	   Ú_osÚremoveÚOSErrorÚ_ior   ÚwarningsÚwarnÚDeprecationWarningÚ_chmodÚclose)r   r   ÚfilenameÚfr   r   r   r   r   I   s     

z_Database._createc             C   sŽ   i | _ ytj| jddd�}W n tk
r:   | j | _Y nPX d| _|�> x6|D ].}|jƒ }tj	|ƒ\}}|j
dƒ}|| j |< qNW W d Q R X d S )Nr   zLatin-1)r   F)r   r   r   r	   r   r   Ú	_modifiedÚrstripÚ_astZliteral_evalÚencode)r   r$   ÚlineÚkeyÚpos_and_siz_pairr   r   r   r   _   s    

z_Database._updatec             C   sÎ   | j d ks| j rd S y| jj| jƒ W n tk
r<   Y nX y| jj| j| jƒ W n tk
rh   Y nX | jj	| jddd��F}| j
| jƒ x2| j jƒ D ]$\}}d|jdƒ|f }|j|ƒ q˜W W d Q R X d S )Nr   zLatin-1)r   z%r, %r
)r   r%   r   Úunlinkr   r   Úrenamer	   r   r   r!   ÚitemsÚdecodeÚwrite)r   r$   r*   r+   Úentryr   r   r   Ú_commitq   s    z_Database._commitc             C   s   | j d krtdƒ‚d S )Nz"DBM object has already been closed)r   r   )r   r   r   r   Ú_verify_openŒ   s    
z_Database._verify_openc          	   C   s\   t |tƒr|jdƒ}| jƒ  | j| \}}tj| jdƒ�}|j|ƒ |j	|ƒ}W d Q R X |S )Nzutf-8Úrb)
Ú
isinstanceÚstrr(   r3   r   r   r   r
   ÚseekÚread)r   r*   ÚposÚsizr$   Zdatr   r   r   Ú__getitem__�   s    


z_Database.__getitem__c             C   sr   t j| jdƒ�R}|jddƒ t|jƒ ƒ}|t d t t }|jd||  ƒ |}|j|ƒ W d Q R X |t|ƒfS )Nzrb+r   é   é   ó    )	r   r   r
   r7   ÚintÚtellÚ
_BLOCKSIZEr0   Úlen)r   Úvalr$   r9   Znposr   r   r   Ú_addvalž   s    z_Database._addvalc          
   C   s:   t j| jdƒ�}|j|ƒ |j|ƒ W d Q R X |t|ƒfS )Nzrb+)r   r   r
   r7   r0   rB   )r   r9   rC   r$   r   r   r   Ú_setval¬   s    
z_Database._setvalc             C   sP   || j |< tj| jddd��*}| j| jƒ |jd|jdƒ|f ƒ W d Q R X d S )NÚazLatin-1)r   z%r, %r
)r   r   r   r	   r!   r0   r/   )r   r*   r+   r$   r   r   r   Ú_addkeyµ   s    
z_Database._addkeyc             C   s  | j rdd l}|jdtdd� t|tƒr4|jdƒ}nt|ttfƒsJt	dƒ‚t|tƒr`|jdƒ}nt|ttfƒsvt	dƒ‚| j
ƒ  d| _|| jkr¢| j|| j|ƒƒ n^| j| \}}|t d	 t }t|ƒt d	 t }||krð| j||ƒ| j|< n| j|ƒ| j|< d S )
Nr   z'The database is opened for reading onlyr<   )r   zutf-8zkeys must be bytes or stringszvalues must be bytes or stringsTr=   )r   r   r   r    r5   r6   r(   ÚbytesÚ	bytearrayÚ	TypeErrorr3   r%   r   rG   rD   rA   rB   rE   )r   r*   rC   r   r9   r:   Z	oldblocksZ	newblocksr   r   r   Ú__setitem__»   s,    



z_Database.__setitem__c             C   sT   | j rdd l}|jdtdd� t|tƒr2|jdƒ}| jƒ  d| _| j	|= | j
ƒ  d S )Nr   z'The database is opened for reading onlyr<   )r   zutf-8T)r   r   r   r    r5   r6   r(   r3   r%   r   r2   )r   r*   r   r   r   r   Ú__delitem__â   s    


z_Database.__delitem__c             C   s.   y
t | jƒS  tk
r(   tdƒd ‚Y nX d S )Nz"DBM object has already been closed)Úlistr   rJ   r   )r   r   r   r   Úkeysó   s    
z_Database.keysc                s    ˆ j ƒ  ‡ fdd„ˆ jjƒ D ƒS )Nc                s   g | ]}|ˆ | f‘qS r   r   )Ú.0r*   )r   r   r   ú
<listcomp>û   s    z#_Database.items.<locals>.<listcomp>)r3   r   rN   )r   r   )r   r   r.   ù   s    z_Database.itemsc             C   sP   t |tƒr|jdƒ}y
|| jkS  tk
rJ   | jd krDtdƒd ‚n‚ Y nX d S )Nzutf-8z"DBM object has already been closed)r5   r6   r(   r   rJ   r   )r   r*   r   r   r   Ú__contains__ý   s    



z_Database.__contains__c             C   s.   y
t | jƒS  tk
r(   tdƒd ‚Y nX d S )Nz"DBM object has already been closed)Úiterr   rJ   r   )r   r   r   r   Úiterkeys  s    
z_Database.iterkeysc             C   s.   y
t | jƒS  tk
r(   tdƒd ‚Y nX d S )Nz"DBM object has already been closed)rB   r   rJ   r   )r   r   r   r   Ú__len__  s    
z_Database.__len__c             C   s,   z| j ƒ  W d d  | _ | _ | _| _X d S )N)r2   r   r
   r	   r   )r   r   r   r   r"     s    z_Database.closec             C   s    t | jdƒr| jj|| jƒ d S )NÚchmod)Úhasattrr   rU   r   )r   Úfiler   r   r   r!     s    z_Database._chmodc             C   s   | S )Nr   )r   r   r   r   Ú	__enter__!  s    z_Database.__enter__c             G   s   | j ƒ  d S )N)r"   )r   Úargsr   r   r   Ú__exit__$  s    z_Database.__exit__N)r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r2   Úsyncr3   r;   rD   rE   rG   rK   rL   rN   r.   rQ   rS   Ú__iter__rT   r"   Ú__del__r!   rX   rZ   r   r   r   r   r   #   s2   

	'r   r   é¶  c             C   sf   yt jdƒ}t j|ƒ W n tk
r,   Y nX || @ }|d
krXdd l}|jdtdd� t| ||d	�S )Nr   r   r   r   r   z)Flag must be one of 'r', 'w', 'c', or 'n'r<   )r   )r   )r   r   r   r   )r   ÚumaskÚAttributeErrorr   r   r    r   )rW   r   r   Zumr   r   r   r   r   (  s    


)r   ra   )Zastr'   Úior   Úosr   ÚcollectionsÚ__all__rA   r   r   ÚMutableMappingr   r   r   r   r   r   Ú<module>   s     