core.cache module¶
Provides caching functionality.
- class core.cache.CachedProperty¶
Bases:
instance
- static wrap_descriptor((object)arg1[, (object)owner=None[, (str)name=''[, (tuple)args=()[, (object)kwargs=None]]]]) CachedProperty : ¶
Wraps a descriptor as a cached property.
- Parameters:
descriptor (property) – Property descriptor to wrap. Must have a __get__, __set__ and a __delete__ methods bound to it, either callable or set to None.
owner (class) – The class the wrapped property should be bound to.
name (str) – The name of this property.
args (tuple) – Extra arguments passed to the getter, setter and deleter functions.
kwargs (dict) – Extra keyword arguments passed to the getter, setter and deleter functions.
- Raises:
AttributeError – If the given descriptor doesn’t have the required methods.
TypeError – If the getter, setter or deleter are not callable.
- __init__((object)self[, (object)fget=None[, (object)fset=None[, (object)fdel=None[, (object)doc=None[, (tuple)args=()[, (object)kwargs=None]]]]]]) None : ¶
Represents a property attribute that is only computed once and cached.
- Parameters:
fget (function) –
Optional getter function. Once the value has been computed, the result is cached and returned if this property is requested again.
fset (function) –
Optional setter function. When a new value is assigned to this property, that function is called and the cache is invalidated if nothing was returned otherwise the cached value is updated accordingly.
fdel (function) –
Optional deleter function. When this property is deleted, that function is called and the cached value (if any) is invalidated.
doc (str) – Documentation string for this property.
args (tuple) – Extra arguments passed to the getter, setter and deleter functions.
kwargs (dict) – Extra keyword arguments passed to the getter, setter and deleter functions.
- Raises:
TypeError – If the given getter, setter or deleter is not callable.
Note
Generator values cannot be cached.
Example:
from random import randint from core.cache import cached_property class Test: @cached_property(kwargs=dict(range=(0, 1000))) def test(self, range): return randint(*range) @test.setter def set_test(self, value, range): return int(value / 2) test = Test() # Compute and cache the value for the first time i = test.test # The first computed value was cached, so it should always be the same assert i is test.test assert i is test.test assert i is test.test assert i is test.test # Deleting the property is invalidating the cache del test.test assert i is not test.test # The cache will be updated to 5, because our setter computes value / 2 test.test = 10 assert test.test is 5 # The new value should be 1, because we updated our userdata Test.test['range'] = (1, 1) del test.test assert test.test is 1
- bind((object)self, (object)owner, (str)name) object : ¶
Binds this property to the given class as the given name.
- Parameters:
owner (class) – The class the property should be bound to.
name (str) – The name of this property.
- Return type:
- delete_cached_value((CachedProperty)self, (object)instance) None : ¶
Deletes the cached value for the given instance.
- Parameters:
instance (object) – The instance to delete the cached value for.
- deleter((CachedProperty)self, (object)fdel) object : ¶
Decorator used to register the deleter function for this property.
- Parameters:
fdel (function) – The function to register as deleter function.
- Return type:
function
- get_cached_value((CachedProperty)self, (object)instance) object : ¶
Returns the cached value for the given instance.
- getter((CachedProperty)self, (object)fget) object : ¶
Decorator used to register the getter function for this property.
- Parameters:
fget (function) – The function to register as getter function.
- Return type:
function
- set_cached_value((CachedProperty)self, (object)instance, (object)value) None : ¶
Sets the cached value for the given instance.
- setter((CachedProperty)self, (object)fset) object : ¶
Decorator used to register the setter function for this property.
- Parameters:
fset (function) – The function to register as setter function.
- Return type:
function
- property args¶
The extra arguments passed to the getter, setter and deleter functions.
- Return type:
- property fdel¶
The deleter function used to delete this property.
- Return type:
function
- property fget¶
The getter function used to compute the value of this property.
- Return type:
function
- property fset¶
The setter function used to assign the value of this property.
- Return type:
function
- property kwargs¶
The extra keyword arguments passed to the getter, setter and deleter functions.
- Return type:
- core.cache.cached_property(fget=None, *args, **kwargs)[source]¶
Decorator used to register or wrap a cached property.
- core.cache.cached_result(fget)[source]¶
Decorator used to register a cached method.
- Parameters:
fget (function) – Method that is only called once and its result cached for subsequent calls.
- Return type:
- class _core._cache.CachedProperty¶
Bases:
instance
- static wrap_descriptor((object)arg1[, (object)owner=None[, (str)name=''[, (tuple)args=()[, (object)kwargs=None]]]]) CachedProperty : ¶
Wraps a descriptor as a cached property.
- Parameters:
descriptor (property) – Property descriptor to wrap. Must have a __get__, __set__ and a __delete__ methods bound to it, either callable or set to None.
owner (class) – The class the wrapped property should be bound to.
name (str) – The name of this property.
args (tuple) – Extra arguments passed to the getter, setter and deleter functions.
kwargs (dict) – Extra keyword arguments passed to the getter, setter and deleter functions.
- Raises:
AttributeError – If the given descriptor doesn’t have the required methods.
TypeError – If the getter, setter or deleter are not callable.
- __init__((object)self[, (object)fget=None[, (object)fset=None[, (object)fdel=None[, (object)doc=None[, (tuple)args=()[, (object)kwargs=None]]]]]]) None : ¶
Represents a property attribute that is only computed once and cached.
- Parameters:
fget (function) –
Optional getter function. Once the value has been computed, the result is cached and returned if this property is requested again.
fset (function) –
Optional setter function. When a new value is assigned to this property, that function is called and the cache is invalidated if nothing was returned otherwise the cached value is updated accordingly.
fdel (function) –
Optional deleter function. When this property is deleted, that function is called and the cached value (if any) is invalidated.
doc (str) – Documentation string for this property.
args (tuple) – Extra arguments passed to the getter, setter and deleter functions.
kwargs (dict) – Extra keyword arguments passed to the getter, setter and deleter functions.
- Raises:
TypeError – If the given getter, setter or deleter is not callable.
Note
Generator values cannot be cached.
Example:
from random import randint from core.cache import cached_property class Test: @cached_property(kwargs=dict(range=(0, 1000))) def test(self, range): return randint(*range) @test.setter def set_test(self, value, range): return int(value / 2) test = Test() # Compute and cache the value for the first time i = test.test # The first computed value was cached, so it should always be the same assert i is test.test assert i is test.test assert i is test.test assert i is test.test # Deleting the property is invalidating the cache del test.test assert i is not test.test # The cache will be updated to 5, because our setter computes value / 2 test.test = 10 assert test.test is 5 # The new value should be 1, because we updated our userdata Test.test['range'] = (1, 1) del test.test assert test.test is 1
- bind((object)self, (object)owner, (str)name) object : ¶
Binds this property to the given class as the given name.
- Parameters:
owner (class) – The class the property should be bound to.
name (str) – The name of this property.
- Return type:
- delete_cached_value((CachedProperty)self, (object)instance) None : ¶
Deletes the cached value for the given instance.
- Parameters:
instance (object) – The instance to delete the cached value for.
- deleter((CachedProperty)self, (object)fdel) object : ¶
Decorator used to register the deleter function for this property.
- Parameters:
fdel (function) – The function to register as deleter function.
- Return type:
function
- get_cached_value((CachedProperty)self, (object)instance) object : ¶
Returns the cached value for the given instance.
- getter((CachedProperty)self, (object)fget) object : ¶
Decorator used to register the getter function for this property.
- Parameters:
fget (function) – The function to register as getter function.
- Return type:
function
- set_cached_value((CachedProperty)self, (object)instance, (object)value) None : ¶
Sets the cached value for the given instance.
- setter((CachedProperty)self, (object)fset) object : ¶
Decorator used to register the setter function for this property.
- Parameters:
fset (function) – The function to register as setter function.
- Return type:
function
- property args¶
The extra arguments passed to the getter, setter and deleter functions.
- Return type:
- property fdel¶
The deleter function used to delete this property.
- Return type:
function
- property fget¶
The getter function used to compute the value of this property.
- Return type:
function
- property fset¶
The setter function used to assign the value of this property.
- Return type:
function
- property kwargs¶
The extra keyword arguments passed to the getter, setter and deleter functions.
- Return type: