Your IP : 3.142.197.111
U
i�f- � @ sV d Z ddlZddlZddlZddlZddgZ dZ
eZG dd� dej
j�Zdd
d�ZdS )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')
� N�error�openi c @ s� e Zd ZeZeZd+dd�Zdd� 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 ),� _Database�cc C sL || _ |dk| _|d | _|d | _|d | _d | _| �|� | �|� d S )N�rz.dirz.datz.bak)�_mode� _readonly�_dirfile�_datfile�_bakfile�_index�_create�_update)�selfZfilebasename�mode�flag� r �-/opt/alt/python38/lib64/python3.8/dbm/dumb.py�__init__0 s
z_Database.__init__c C s� |dkrB| j | j| jfD ](}zt�|� W q tk
r> Y qX qztj| j ddd�}W nH tk
r� |dkrr� tj| j ddd��}| �| 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 | _ztj| jddd�}W n$ tk
rF |dkr<� d| _ Y nFX |�: |D ].}|�� }t�|�\}}|� d�}|| j|<