A disk backed dictionary implementation.
Project description
IODict
iodict is a thread safe dictionary implementation which uses a pure python
object store. The dictionary implementation follows the Dict
API, but stores
items using their birthtime allowing users to treat this datastore as a
file system backed OrderedDict
.
Items in the object store use file system attributes, when available to store key and birthtime information. File system attributes enhance the capability of the object store; however, they're not required. In the event xattrs are not available, file stat is used for file creation time along with base64 encoding for object keys.
Usage
import iodict
data = iodict.IODict(path='/tmp/iodict') # Could be any path on the file system
data["key"] = "value"
data
{'key': "value"}
dir(data)
['__class__',
'__delattr__',
'__delitem__',
'__dict__',
'__dir__',
'__doc__',
'__enter__',
'__eq__',
'__exit__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__module__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__setitem__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'_db_path',
'_encoder',
'_lock',
'clear',
'copy',
'fromkeys',
'get',
'items',
'keys',
'pop',
'popitem',
'setdefault',
'update',
'values']
When running in a multiprocessing / threading application, a lock is required to be passed into the iodict class.
import threading
import iodict
data = iodict.IODict(path='/tmp/iodict', lock=threading.Lock)
By default, if no lock is provided, a multiprocessing lock will be created.
The lock object allows the iodict
to respect the locking paradigm of the
executing application.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for iodict-0.0.0a20211214152702.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc99b7578c15598af0648f5142f88510c8c8e9b8228335fe7dbb8471cc01a085 |
|
MD5 | f13cf35563bbf9c25de4c44c7acdd223 |
|
BLAKE2b-256 | 253a4edd39eaf7f4227ff60ac492b1a8f670e33af98b40ab0482844d95189d01 |
Hashes for iodict-0.0.0a20211214152702-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 851b2dba1881b0b1cf78918aec0772d3e44c8cca5f72cf589d24e8bdd35f8b58 |
|
MD5 | e0f3c1e89b661c8ef43a6da8ca01e5ed |
|
BLAKE2b-256 | 431df68a42e82e186a9c07a5f2f2b25b60197acbdc763fd47a9449ae205db506 |