podpac.utils.cached_property

Decorator that creates a property that is cached.

keyword use_cache_ctrl:

If True, the property is cached using the Node cache_ctrl. If False, the property is only cached as a private attribute. Default False.

kwtype use_cache_ctrl:

bool

keyword expires:

Expiration date. If a timedelta is supplied, the expiration date will be calculated from the current time. Ignored if use_cache_ctrl=False.

kwtype expires:

float, datetime, timedelta

Notes

Podpac caching using the cache_ctrl will be unreliable if the property depends on any non-tagged traits. The property should only use node attrs (traits tagged with attr=True).

Examples

>>> class MyNode(Node):
    # property that is recomputed every time
    @property
    def my_property(self):
        return 0

# property is computed once for each object @cached_property def my_cached_property(self):

return 1

# property that is computed once and can be reused by other Nodes or sessions, depending on the cache_ctrl @cached_property(use_cache_ctrl=True) def my_persistent_cached_property(self):

return 2