Packaged selections from Python Decorator Library on wiki.python.org
Project description
###Singleton Decorator Library
A decorator based on wiki.python.org Python Decorators Library, namely https://wiki.python.org/moin/PythonDecoratorLibrary#Singleton, with significant improvements.
Features (assuming you decorate a class definition of MyClass)
- Every call of MyClass() results in the same instance, which persists from the first instantiation until the end of execution
- Even if you delete all your references to the instance, it still persists to be returned on the next call of MyClass()
- That instance is only initiallized once (the first time)
- is_instance(MyClass(), MyClass) is True (that is, we do not wrap the class)
- Using copy() or deepcopy() simply gives another reference to the single instance
- The overhead of locking in the threaded version is low enough that you may use it even before adding threading to your class.
- If MyClass is threadsafe, then annotating with @threaded_singleton will give a threadsafe singleton (only the safety of creating the first instance requires locking, as all other singleton actions are no-ops or simply return a reference to the single instance)
- If MyClass has locking (either Lock or RLock) in the initialization (new and init) the singleton locking does not deadlock.
- The test suite is included, so you can tell if I verified correctly [working on this]
- The singleton decorator and test bench pass black and mypy
- The test suite is automatically run before publishing
This has some fixes, plus a threadsafe version
from singleton_decorator1 import singleton
@singleton
class MyClass...
or
from singleton_decorator1 import threaded_singleton
@threaded_singleton
class MyThreadsafeClass...
Note that if MyThreadsafeClass is not threadsafe, then the decorator will not fix that -- it only ensures that the singleton functionality is thread safe.
The library can be built with poetry >= 2.0: [Recommended] if needed, install pyenv pyenv install 3.10 pyenv local 3.10
[required] (pip show poetry | grep -q "Version: 2") || pip install --ignore installed poetry==2
poetry env use $(pyenv which python) or poetry env use $(which python)
poetry install
poetry build
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file singleton_decorator1-0.5.0.tar.gz.
File metadata
- Download URL: singleton_decorator1-0.5.0.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.17 Linux/6.8.0-63-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d99a2cd9ddc1010606836579983146e70bf47f9de12107b0609a1f667c7f6952
|
|
| MD5 |
44e4d63588a72294a50a90d58e0e1921
|
|
| BLAKE2b-256 |
7a0b4c3bbece597c30086910740fb7bfc5bf38813dee985f072f4f3defb820f6
|
File details
Details for the file singleton_decorator1-0.5.0-py3-none-any.whl.
File metadata
- Download URL: singleton_decorator1-0.5.0-py3-none-any.whl
- Upload date:
- Size: 19.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.17 Linux/6.8.0-63-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10665eff5bcf5ea3047d5f0be9b9e1ce767c1afbd8dfff41f61acc8e8fd3558b
|
|
| MD5 |
bc323396b8485e0e71c42c25de1ff8ec
|
|
| BLAKE2b-256 |
880de204502e3f8a434a1928f6279783b53a74e29eaf91f78788862326da37c9
|