Skip to main content

A comprehensive python library for synchronization proxies

Project description

Door is a comprehensive python library for synchronization proxies. Door’s reliability has been established through static type checking, extensive doctests, and unit tests, achieving 93% code coverage.

Features

  • Share objects across processes without queues or pipes.

  • Synchronization proxies to enforce sound synchronous data access.

    • Supported scenarios:

      • Threading;

      • Multiprocessing;

      • Asynchronous programming.

  • Shared lock (Readers-writer lock) implementations.

  • Shared condition variable (Readers-writer condition variables) implementations.

Installation

pip install door

Usage

Below shows a sample usage of Door.

>>> from dataclasses import dataclass
>>> from multiprocessing import Process
>>> from door.multiprocessing2 import Handle, SAcquirableDoor
>>> @dataclass
... class Resource:
...     key: str = 'value'
...
>>> handle = Handle(Resource())
>>> handle.get()
Resource(key='value')
>>> door = SAcquirableDoor(handle)
>>> def func(door):
...     with door.write() as proxy:
...         proxy.key = 'VALUE'
...
>>> process = Process(target=func, args=(door,))
>>> process.start()
>>> process.join()
>>> handle.get()
Resource(key='VALUE')
>>> handle.unlink()

Testing and Validation

Door has extensive test coverage, passes mypy static type checking with strict parameter, and has been validated through extensive use in real-life scenarios.

Contributing

Contributions are welcome! Please read our Contributing Guide for more information.

License

Door is distributed under the MIT license.

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

door-0.0.4.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

door-0.0.4-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file door-0.0.4.tar.gz.

File metadata

  • Download URL: door-0.0.4.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.9

File hashes

Hashes for door-0.0.4.tar.gz
Algorithm Hash digest
SHA256 af3d88e48f48d0dcfb6be3bf15444be3a389273f2922e13e951e8689e73207b0
MD5 12e53a06e09edc9be24d96d5dfffe8c3
BLAKE2b-256 a054c3e691de7aaee958d080ae04ed766d606917396bcd7facd64b248b25c4ed

See more details on using hashes here.

File details

Details for the file door-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: door-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.9

File hashes

Hashes for door-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e541e89350011138ca0ecd8def5f19d91bcecf1052f30c5c9eef2114bb9fc6e5
MD5 e69a903c4117cb807a7adda0de084aa6
BLAKE2b-256 8074fa43943862c23c808cbe3f30f7ba3a2d15194c8e6de622476e037067642e

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