Skip to main content

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.

Release files for door 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for door 0.0.4
File Size Uploaded
door-0.0.4.tar.gz 12.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for door 0.0.4
File Interpreter ABI Platform
door-0.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 27.9 kB

Release files / door-0.0.4.tar.gz

Download URL door-0.0.4.tar.gz
Size 12.0 kB
Tags Source
SHA-256 checksum
How to use checksums
af3d88e48f48d0dcfb6be3bf15444be3a389273f2922e13e951e8689e73207b0
BLAKE2b-256 checksum
How to use checksums
a054c3e691de7aaee958d080ae04ed766d606917396bcd7facd64b248b25c4ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.9

Release files / door-0.0.4-py3-none-any.whl

Download URL door-0.0.4-py3-none-any.whl
Size 16.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e541e89350011138ca0ecd8def5f19d91bcecf1052f30c5c9eef2114bb9fc6e5
BLAKE2b-256 checksum
How to use checksums
8074fa43943862c23c808cbe3f30f7ba3a2d15194c8e6de622476e037067642e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.9

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page