
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a-  ã                   @   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   ú-/opt/alt/python38/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 }| |¡ q”W 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     