Memoizer for classes
Project description
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
Project details
Release history Release notifications | RSS feed
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 classmemo-1.0.2.tar.gz.
File metadata
- Download URL: classmemo-1.0.2.tar.gz
- Upload date:
- Size: 2.0 kB
- Tags: Source
- Uploaded using 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
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e4004e86b40f674bf25bea03d265d0bddaa20d4798d8eb4e6403c884f069630
|
|
| MD5 |
8a83951991659390d4cc12d0f7795289
|
|
| BLAKE2b-256 |
dd532fb4feb120f2b29f7205cee13c162a2ceec5e4ce0f26ee76d5d750aecfb4
|
File details
Details for the file classmemo-1.0.2-py2.py3-none-any.whl.
File metadata
- Download URL: classmemo-1.0.2-py2.py3-none-any.whl
- Upload date:
- Size: 3.5 kB
- Tags: Python 2, Python 3
- Uploaded using 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
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22d6e454d31f92372d0339bdbc94b5deae2b775c6e7942b4cb13c7ffdc2c1716
|
|
| MD5 |
775f6bf743907f53b745b2c92a576d71
|
|
| BLAKE2b-256 |
f5de2f7a2fd3643b830ecf45e14bf317043c531d5c3ae0f1dda7511ab4d4b68e
|