From 1a50086b55038bf70b838969fd3567695a3bfb5a Mon Sep 17 00:00:00 2001 From: Daniel Brown <ddb@star.sr.bham.ac.uk> Date: Tue, 10 Jan 2017 09:52:31 +0000 Subject: [PATCH] missing file --- pykat/freeze.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 pykat/freeze.py diff --git a/pykat/freeze.py b/pykat/freeze.py new file mode 100644 index 0000000..20a24a7 --- /dev/null +++ b/pykat/freeze.py @@ -0,0 +1,25 @@ +import warnings + +def canFreeze(cls): + + def _freeze(self): self.__dict__["____FROZEN____"] = True + def _unfreeze(self): self.__dict__["____FROZEN____"] = False + + def frozensetattr(self, name, value): + if "____FROZEN____" in self.__dict__ and self.__dict__["____FROZEN____"] and not hasattr(self, name): + if hasattr(self, "name"): + n = self.name + elif hasattr(self, "__name"): + n = self.__name + else: + n = self.__class__.__name__ + + warnings.warn("'%s' does not have attribute called '%s'" % (n, name), stacklevel=2) + + super(cls, self).__setattr__(name, value) + + cls.__setattr__ = frozensetattr + cls._freeze = _freeze + cls._unfreeze = _unfreeze + + return cls \ No newline at end of file -- GitLab