def cached_property(getter):
    @wraps(getter)
    def decorator(self):
        key = "_cached_property_" + getter.__name__

        if not hasattr(self, key):
            setattr(self, key, getter(self))

        return getattr(self, key)

    return property(decorator)
this function gets called whenever
dataset/ETHPy150Open miso-belica/sumy/sumy/utils.py/cached_property--crossover with--dataset/ETHPy150Open ilastik/ilastik-0.5/ilastik/modules/example_module/core/exampleMgr.py/ExampleModuleMgr.deserialize