Memoizer
API
A Memoizer can be used as a factory for creating objects of a certain class.
It exposes a constructor and 2 methods
memoizer = Memoizer(SomeClass)memoizer.get(*args, **kwargs)- If
memoizerhas never seen the given arguments, it createsSomeClass(*args, **kwargs)and returns it. - If
memoizerhas seen the given arguments before, it returns the same instance that it returned the last time.
- If
memoizer.forget(*args, **kwargs)- Makes
memoizerforget that is has seen the given arguments.
- Makes
Usage
The original application was for a MeasurementQueue class that processes incoming sensor data from many sensors,
where the sensor ID's were not known ahead of time:
queue_manager = Memoizer(MeasurementQueue)
for sensor_id, data in event_stream():
queue = queue_manager.get(sensor_id)
queue.push(data)
When the first measurement comes in for a given sensor_id, a new MeasurementQueue will be created and returned for
that sensor. On subsequent events with the same sensor ID, the same MeasurementQueue instance will be
used to process the data.
Installation
pip install classmemo
The only dependencies are Python 3.6 and the frozendict package.
Contributing
- Ensure the tests pass:
pytest . - Format the code with
black . -t py36
Metadata
Release files for classmemo 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| classmemo-1.0.2.tar.gz | 2.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| classmemo-1.0.2-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 5.6 kB
Release files / classmemo-1.0.2.tar.gz
| Download URL | classmemo-1.0.2.tar.gz |
|---|---|
| Size | 2.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9e4004e86b40f674bf25bea03d265d0bddaa20d4798d8eb4e6403c884f069630
|
|
BLAKE2b-256 checksum How to use checksums |
dd532fb4feb120f2b29f7205cee13c162a2ceec5e4ce0f26ee76d5d750aecfb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.4
|
Release files / classmemo-1.0.2-py2.py3-none-any.whl
| Download URL | classmemo-1.0.2-py2.py3-none-any.whl |
|---|---|
| Size | 3.5 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
22d6e454d31f92372d0339bdbc94b5deae2b775c6e7942b4cb13c7ffdc2c1716
|
|
BLAKE2b-256 checksum How to use checksums |
f5de2f7a2fd3643b830ecf45e14bf317043c531d5c3ae0f1dda7511ab4d4b68e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.4
|