src/modules/misc.py
changeset 838 aafbe4737188
parent 835 34ec4401dc48
child 873 b95d76c53b5e
--- a/src/modules/misc.py	Tue Jan 27 10:15:43 2009 -0800
+++ b/src/modules/misc.py	Tue Jan 27 14:20:53 2009 -0800
@@ -676,3 +676,40 @@
 except:
         CLIENT_DEFAULT_MEM_USE_KB = 100
         SERVER_DEFAULT_MEM_USE_KB = 500
+
+# ImmutableDict and EmptyI for argument defaults
+EmptyI = tuple()
+
+class ImmutableDict(dict):
+        def __init__(self, default=EmptyI):
+                dict.__init__(self, default)
+
+        def __setitem__(self, item, value):
+                self.__oops()
+
+        def __delitem__(self, item, value):
+                self.__oops()
+
+        def pop(self, item, default=None):
+                self.__oops()
+
+        def popitem(self):
+                self.__oops()
+
+        def setdefault(self, item, default=None):
+                self.__oops()
+
+        def update(self, d):
+                self.__oops()
+
+        def copy(self):
+                return ImmutableDict()
+
+        def clear(self):
+                self.__oops()
+
+        def __oops(self):
+                raise TypeError, "Item assignment to ImmutableDict"
+
+EmptyDict = ImmutableDict()
+