Skip to main content

reslot

A class decorator that lets you use @cached_property on classes with __slots__.

The decorated class needs a __dict__ slot, but there won't exactly be a dictionary in it. Instead, @reslot will give it a custom MutableMapping with its own slots. @cached_property will keep its cache there.

The custom MutableMapping's slots will be exactly the slots needed to store the results of every @cached_property that was on the class at the time it was declared. This minimizes the memory footprint and makes lookup speedy.

Usage

from functools import cached_property

from reslot import reslot

BEANED = False

@reslot
class Spam:
    __slots__ = ("__dict__",)

    @cached_property
    def eggs(self):
        return {"delicious": False}

    @cached_property
    def beans(self):
        global BEANED
        BEANED = True
        return {"spam": 111000, "delicious": True}

spam = Spam()
print(spam.eggs)   # {"delicious": False}
print(BEANED)      # False
print(spam.beans)  # {"spam": 111000, "delicious": True}
print(BEANED)      # True

Metadata

Release files for reslot 0.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for reslot 0.10
File Size Uploaded
reslot-0.10.tar.gz 3.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for reslot 0.10
File Interpreter ABI Platform
reslot-0.10-py3-none-any.whl Python 3 none any Details

Total release size: 7.5 kB

Release files / reslot-0.10.tar.gz

Download URL reslot-0.10.tar.gz
Size 3.7 kB
Tags Source
SHA-256 checksum
How to use checksums
27d3dda00327cdaf72a1d045d39e46eec6324be0c9a219e73c8e69df9102037d
BLAKE2b-256 checksum
How to use checksums
be8a130f01a603f95ca7c39ecf0fb9515154de159a42cc6641e76bd469f9ec77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release files / reslot-0.10-py3-none-any.whl

Download URL reslot-0.10-py3-none-any.whl
Size 3.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2749039d152f74cb52eba4b662aad334a05a4811a7ba9831d2f72c99e69c2012
BLAKE2b-256 checksum
How to use checksums
071c9fb09787fdd0a7d2ec5d1299014f638d2be1ef876bc5cf4cc3be29800630
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.10 This release

2 release files

0.9

2 release files

0.8

2 release files

0.7

2 release files

0.6

2 release files

0.5

2 release files

0.4

2 release files

0.3

2 release files

0.2

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page