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