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
memoizer
has never seen the given arguments, it createsSomeClass(*args, **kwargs)
and returns it. - If
memoizer
has seen the given arguments before, it returns the same instance that it returned the last time.
- If
memoizer.forget(*args, **kwargs)
- Makes
memoizer
forget 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
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 |