B $j @ sV d Z ddlZddlZddlZddlZddgZ dZ eZG dd dej jZdd 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 sL || _ |dk| _|d | _|d | _|d | _d | _| | | | d S )Nrz.dirz.datz.bak)_mode _readonly_dirfile_datfile_bakfile_index_create_update)selfZfilebasenamemodeflag r -/opt/alt/python37/lib64/python3.7/dbm/dumb.py__init__0 s z_Database.__init__c C s |dkrFx<| j | j| jfD ](}yt| W q tk r@ Y qX qW ytj| j ddd}W n^ tk r |dkrdd l}|j dt dd tj| j d dd}| | j W d Q R X Y n X | d S )Nnr zLatin-1)encoding)r r r zIThe database file is missing, the semantics of the 'c' flag will be used. ) stacklevelw) 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 rZ | j | _|dkrVdd l}|jdt dd Y nPX d | _|> x6|D ].}| }t|\}}| d}|| j |<