Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

Property caching

Project description

https://travis-ci.org/yola/property-caching.svg?branch=fix/md-to-rst

Cached version of property

Written and used by the folks at Yola to support our free website builder.

Overview

  • cached_property - stores results of decorated methods in decorated object (in _cached_properties attribute)
  • class_cached_property - stores results of decorated methods in the class of decorated object (in _class_cached_properties attribute). All instances will share cached value.
  • clear_property_cache - deletes cached value (works for object cached properties only)
  • set_property_cache - explicitly sets property cache (works for object cached properties only)
  • is_property_cached - allows to check whether property was cached or not (works for object cached properties only)

Usage

from property_caching import (cached_property,
                              class_cached_property,
                              clear_property_cache,
                              set_property_cache,
                              truthy_cached_property)

class Dummy:
    @cached_property
    def foo(self):
        return self.service.expensive_operation()

    @truthy_cached_property
    def bar(self):
        # this value will only be cached if it doesn't evaluate to false:
        return self.service.expensive_operation2()

    @class_cached_property
    def service(self):
        return expensive_service_initialization()

d = Dummy()
d.foo   # calculates result and stores it in d._cached_properties
d.foo   # uses cached value

clear_property_cache(d, 'foo')   # clears cache for property `foo`
set_property_cache(d, 'foo', 42) # explicitly set cache for property `foo`

d2 = Dummy()
d2.foo  # re-calculates value of `foo` but uses cached service

Testing

Install development requirements:

pip install -r requirements.txt

Run the tests with:

python setup.py test
https://travis-ci.org/yola/property-caching.svg?branch=fix/md-to-rst

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for property-caching, version 1.1.0
Filename, size File type Python version Upload date Hashes
Filename, size property-caching-1.1.0.tar.gz (3.9 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page