MINI MINI MANI MO
3
  \.                 @   sT   d Z ddlZddlZddlZddlZddgZdZ	e
ZG dd dejZ
dd
dZdS )a  A dumb and slow but simple dbm clone.
For database spam, spam.dir contains the index (a text file),
spam.bak *may* contain a backup of the index (also a text file),
while spam.dat contains the data (a binary file).
XXX TO DO:
- seems to contain a bug when updating...
- reclaim free space (currently, space once occupied by deleted or expanded
items is never reused)
- support concurrent access (currently, if two processes take turns making
updates, they can mess up the index)
- support efficient access to large databases (currently, the whole index
is read when the database is opened, and some updates rewrite the whole index)
- support opening for read-only (flag = 'm')
    Nerroropeni   c               @   s   e Zd ZeZeZd+ddZdd Zdd Zdd	 ZeZ	d
d Z
dd
 Zdd Zdd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZeZd d! Zd"d# ZeZd$d% Zd&d' Zd(d) Zd*S ),	_Databasecc             C   sJ   || _ |dk| _|d | _|d | _|d | _d | _| j| | j  d S )Nrz.dirz.datz.bak)_mode	_readonly_dirfile_datfile_bakfile_index_create_update)selfZfilebasenamemodeflag r    /usr/lib64/python3.6/dbm/dumb.py__init__0   s    
z_Database.__init__c             C   s   |dkrFx<| j | j| jfD ](}ytj| W q tk
r@   Y qX qW ytj| j ddd}W n^ tk
r   |dkrdd l}|j	dt
dd	 tj| j d
dd}| j| j  W d Q R X Y n
X |j  d S )Nnr   zLatin-1)encodingr   r   zIThe database file is missing, the semantics of the 'c' flag will be used.   )
stacklevelw)r   r   )
r
   r   r	   _osremoveOSError_ior   warningswarnDeprecationWarning_chmodclose)r   r   filenamefr   r   r   r   r
   I   s     
z_Database._createc             C   s   i | _ ytj| jddd}W n tk
r:   | j | _Y nPX d| _|> x6|D ].}|j }tj	|\}}|j
d}|| j |<