[Zodb-checkins] CVS: Zope3/src/zope/interface - interfaces.py:1.5 type.py:1.4

Jim Fulton jim@zope.com
Wed, 29 Jan 2003 13:49:26 -0500


Update of /cvs-repository/Zope3/src/zope/interface
In directory cvs.zope.org:/tmp/cvs-serv7142

Modified Files:
	interfaces.py type.py 
Log Message:
Added an unregister method to type registries.

Also change __init__ to allow a mapping object to be passed. This
is to make it things like a persistent subclass possible.


=== Zope3/src/zope/interface/interfaces.py 1.4 => 1.5 ===
--- Zope3/src/zope/interface/interfaces.py:1.4	Wed Jan 29 12:03:33 2003
+++ Zope3/src/zope/interface/interfaces.py	Wed Jan 29 13:48:52 2003
@@ -266,6 +266,12 @@
         default object.
         """
 
+    def unregister(interface):
+        """Remove the registration for the given interface
+
+        If nothing is registered for the interface, the call is ignored.
+        """
+
     def get(interface, default=None):
         """Return the object registered for the given interface.
         """


=== Zope3/src/zope/interface/type.py 1.3 => 1.4 ===
--- Zope3/src/zope/interface/type.py:1.3	Mon Dec 30 09:00:48 2002
+++ Zope3/src/zope/interface/type.py	Wed Jan 29 13:48:52 2003
@@ -40,12 +40,23 @@
     # Where the registered provides is what was registered and
     # provided may be some base interface
 
-    def __init__(self):
-        self._reg = {}
+    def __init__(self, data=None):
+        if data is None:
+            data = {}
+            
+        self._reg = data
 
     def register(self, interface, object):
         if interface is None or IInterface.isImplementedBy(interface):
             self._reg[interface] = object
+        else:
+            raise TypeError(
+                "The interface argument must be an interface (or None)")
+
+    def unregister(self, interface):
+        if interface is None or IInterface.isImplementedBy(interface):
+            if interface in self._reg:
+                del self._reg[interface]
         else:
             raise TypeError(
                 "The interface argument must be an interface (or None)")