def __set__(self, obj, value):
        if not self.allow_setting:
            raise Exception("cannot set values for [%s]" % self.name)

        # Get the cache or set a default one if needed
        cache = getattr(obj, '_cache', None)
        if cache is None:
            try:
                cache = obj._cache = {}
            except (AttributeError):
                return

        cache[self.name] = value
dataset/ETHPy150Open cloudera/ibis/ibis/util.py/cache_readonly.__set__/original