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.7a20211216194720.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

iodict-0.0.7a20211216194720-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file iodict-0.0.7a20211216194720.tar.gz.

File metadata

  • Download URL: iodict-0.0.7a20211216194720.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.3 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.7a20211216194720.tar.gz
Algorithm Hash digest
SHA256 9fbfde36c205fd94cb3d2d91ccf69d284c542e38724496dfced8636622133533
MD5 e30f9656cd238a4d6647e70dd2a06c3d
BLAKE2b-256 307a6bcad81a0a140a12a1d776df35b6393c93cb5e2f82c41036f7f934345c47

See more details on using hashes here.

File details

Details for the file iodict-0.0.7a20211216194720-py3-none-any.whl.

File metadata

  • Download URL: iodict-0.0.7a20211216194720-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.3 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.7a20211216194720-py3-none-any.whl
Algorithm Hash digest
SHA256 e607504b3b893a63d3eb531afd7e5c07e055511b633a02a7715e4c26a1150163
MD5 205cd655d5cccb834a0da0d6737ea4a2
BLAKE2b-256 18dd504f92ce384233045bf1b656c9927c7e43fe12221213cf9f46108c9c7efe

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