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.1a20211215005621.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

iodict-0.0.1a20211215005621-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file iodict-0.0.1a20211215005621.tar.gz.

File metadata

  • Download URL: iodict-0.0.1a20211215005621.tar.gz
  • Upload date:
  • Size: 8.8 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.1a20211215005621.tar.gz
Algorithm Hash digest
SHA256 6982ca0d1b566b2825f881fb7ca82bf43aea64255ab2e08f57de6ca826ca4517
MD5 301492ca699772bc5a53edbcad3095fa
BLAKE2b-256 96de4abb8f11eb22bb9bf3624827fa04bcfb51e3e4ca22b5159f4378aa32bf5d

See more details on using hashes here.

File details

Details for the file iodict-0.0.1a20211215005621-py3-none-any.whl.

File metadata

  • Download URL: iodict-0.0.1a20211215005621-py3-none-any.whl
  • Upload date:
  • Size: 9.9 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.1a20211215005621-py3-none-any.whl
Algorithm Hash digest
SHA256 f036893010cb69e23635891f98aa74a5c6d866eebb5054551dfbacfde372e557
MD5 78ab7e2a545477f68585802d9223d512
BLAKE2b-256 f82424d0f1e0d8bae99a73e3d84bacff8ab068bb087ce800ff59714c0f73ca0e

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