====
Door
====
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
------------
.. code-block:: bash
pip install door
Usage
-----
Below shows a sample usage of Door.
.. code-block:: pycon
>>> 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.
Raw data
{
"_id": null,
"home_page": "https://github.com/blueskysolarracing/door",
"name": "door",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": "",
"keywords": "python,synchronization",
"author": "Blue Sky Solar Racing",
"author_email": "blueskysolar@studentorg.utoronto.ca",
"download_url": "https://files.pythonhosted.org/packages/f4/87/1c8bcd22e1a36f3adfbe438ef49e0b52ae7770c6279df1f78f63c29d62a5/door-0.0.3.tar.gz",
"platform": null,
"description": "====\nDoor\n====\n\nDoor is a comprehensive python library for synchronization proxies. Door's\nreliability has been established through static type checking, extensive\ndoctests, and unit tests, achieving 93% code coverage.\n\n\nFeatures\n--------\n\n- Share objects across processes without queues or pipes.\n- Synchronization proxies to enforce sound synchronous data access.\n\n - Supported scenarios:\n \n - Threading;\n - Multiprocessing;\n - Asynchronous programming.\n\n- Shared lock (Readers-writer lock) implementations.\n- Shared condition variable (Readers-writer condition variables)\n implementations.\n\nInstallation\n------------\n\n.. code-block:: bash\n\n pip install door\n\nUsage\n-----\n\nBelow shows a sample usage of Door.\n\n.. code-block:: pycon\n\n >>> from dataclasses import dataclass\n >>> from multiprocessing import Process\n >>> from door.multiprocessing2 import Handle, SAcquirableDoor\n >>> @dataclass\n ... class Resource:\n ... key: str = 'value'\n ... \n >>> handle = Handle(Resource())\n >>> handle.get()\n Resource(key='value')\n >>> door = SAcquirableDoor(handle)\n >>> def func(door):\n ... with door.write() as proxy:\n ... proxy.key = 'VALUE'\n ... \n >>> process = Process(target=func, args=(door,))\n >>> process.start()\n >>> process.join()\n >>> handle.get()\n Resource(key='VALUE')\n >>> handle.unlink()\n\nTesting and Validation\n----------------------\n\nDoor has extensive test coverage, passes mypy static type checking with\nstrict parameter, and has been validated through extensive use in real-life\nscenarios.\n\nContributing\n------------\n\nContributions are welcome! Please read our Contributing Guide for more\ninformation.\n\nLicense\n-------\n\nDoor is distributed under the MIT license.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A comprehensive python library for synchronization proxies",
"version": "0.0.3",
"project_urls": {
"Documentation": "https://door.readthedocs.io/en/latest/",
"Homepage": "https://github.com/blueskysolarracing/door",
"Source": "https://github.com/blueskysolarracing/door",
"Tracker": "https://github.com/blueskysolarracing/door/issues"
},
"split_keywords": [
"python",
"synchronization"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "dcb8e8c3a2d95430d071ae6292be63039f7d3a520bbc1127e807e2a08af77a91",
"md5": "b8a4f57373853e6acfc9c04621714746",
"sha256": "e815898b3a572172992a9168feb2e358fc719f09b36bfb048a75f505aa4b21c7"
},
"downloads": -1,
"filename": "door-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b8a4f57373853e6acfc9c04621714746",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 15951,
"upload_time": "2023-12-04T03:10:38",
"upload_time_iso_8601": "2023-12-04T03:10:38.327084Z",
"url": "https://files.pythonhosted.org/packages/dc/b8/e8c3a2d95430d071ae6292be63039f7d3a520bbc1127e807e2a08af77a91/door-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f4871c8bcd22e1a36f3adfbe438ef49e0b52ae7770c6279df1f78f63c29d62a5",
"md5": "64a5f9a483f56be34adbc15fbe8c3d93",
"sha256": "555f81165f4182bc9e99c321dc25406a640572c8ae7589ce9394692bd5f39121"
},
"downloads": -1,
"filename": "door-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "64a5f9a483f56be34adbc15fbe8c3d93",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 12049,
"upload_time": "2023-12-04T03:10:40",
"upload_time_iso_8601": "2023-12-04T03:10:40.236940Z",
"url": "https://files.pythonhosted.org/packages/f4/87/1c8bcd22e1a36f3adfbe438ef49e0b52ae7770c6279df1f78f63c29d62a5/door-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-12-04 03:10:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "blueskysolarracing",
"github_project": "door",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "door"
}