Author: Ronan Lamy <[email protected]>
Branch: extregistry-refactor
Changeset: r62294:4bc2b9dcd4a1
Date: 2013-03-11 17:43 +0000
http://bitbucket.org/pypy/pypy/changeset/4bc2b9dcd4a1/

Log:    kill ClassFamily, store Entries directly in the registries

diff --git a/rpython/rtyper/extregistry.py b/rpython/rtyper/extregistry.py
--- a/rpython/rtyper/extregistry.py
+++ b/rpython/rtyper/extregistry.py
@@ -22,11 +22,9 @@
             for k in key:
                 selfcls._register(dict, k)
         else:
-            try:
-                family = dict[key]
-            except KeyError:
-                family = dict[key] = ClassFamily()
-            family.add(selfcls)
+            if key in dict:
+                raise ValueError("duplicate extregistry entry %r" % (selfcls,))
+            dict[key] = selfcls
 
     def _register_value(selfcls, key):
         selfcls._register(EXT_REGISTRY_BY_VALUE, key)
@@ -37,21 +35,6 @@
     def _register_metatype(selfcls, key):
         selfcls._register(EXT_REGISTRY_BY_METATYPE, key)
 
-class ClassFamily(object):
-
-    def __init__(self):
-        self.default = None
-
-    def add(self, cls, cond=None):
-        assert self.default is None, (
-            "duplicate extregistry entry %r" % (cls,))
-        self.default = cls
-
-    def match(self, config):
-        if self.default:
-            return self.default
-        raise KeyError("no default extregistry entry")
-
 
 class ExtRegistryEntry(object):
     __metaclass__ = AutoRegisteringType
@@ -144,9 +127,9 @@
 
 def _lookup_type_cls(tp, config):
     try:
-        return EXT_REGISTRY_BY_TYPE[tp].match(config)
+        return EXT_REGISTRY_BY_TYPE[tp]
     except (KeyError, TypeError):
-        return EXT_REGISTRY_BY_METATYPE[type(tp)].match(config)
+        return EXT_REGISTRY_BY_METATYPE[type(tp)]
 
 def lookup_type(tp, config=None):
     Entry = _lookup_type_cls(tp, config)
@@ -161,7 +144,7 @@
 
 def _lookup_cls(instance, config):
     try:
-        return EXT_REGISTRY_BY_VALUE[instance].match(config)
+        return EXT_REGISTRY_BY_VALUE[instance]
     except (KeyError, TypeError):
         return _lookup_type_cls(type(instance), config)
 
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to