Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iodict-0.0.2a20211215030016.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

iodict-0.0.2a20211215030016-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file iodict-0.0.2a20211215030016.tar.gz.

File metadata

  • Download URL: iodict-0.0.2a20211215030016.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for iodict-0.0.2a20211215030016.tar.gz
Algorithm Hash digest
SHA256 a3a69b1dd03f44fa829e84b00337fb4d9c9fdb641858161378a1d96c8b99d6a4
MD5 dac70262da39cf320d63b0766adba276
BLAKE2b-256 6e765fb8a548ece1580baf863768f199c01b2d150eab0426c09098aafa53d7d9

See more details on using hashes here.

File details

Details for the file iodict-0.0.2a20211215030016-py3-none-any.whl.

File metadata

  • Download URL: iodict-0.0.2a20211215030016-py3-none-any.whl
  • Upload date:
  • Size: 9.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for iodict-0.0.2a20211215030016-py3-none-any.whl
Algorithm Hash digest
SHA256 bbefdc2f2e48011a5f0fe65fe3b26fcf325c2074f2636fe8fe4d0357322ac658
MD5 5aca2ef187e387c7455d65a2931be918
BLAKE2b-256 2cefbe713c21104146312979e831f8244c12e4f22f614fab65481920ebeed742

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page