[Python-3000-checkins] r57223 - in python/branches/py3k/Lib: abc.py test/regrtest.py

guido.van.rossum python-3000-checkins at python.org
Mon Aug 20 21:29:54 CEST 2007


Author: guido.van.rossum
Date: Mon Aug 20 21:29:24 2007
New Revision: 57223

Modified:
   python/branches/py3k/Lib/abc.py
   python/branches/py3k/Lib/test/regrtest.py
Log:
Rename __whatever variables defined by ABCMeta to _abc_whatever, so as
to simplify legitimate use of these.


Modified: python/branches/py3k/Lib/abc.py
==============================================================================
--- python/branches/py3k/Lib/abc.py	(original)
+++ python/branches/py3k/Lib/abc.py	Mon Aug 20 21:29:24 2007
@@ -116,7 +116,7 @@
     # A global counter that is incremented each time a class is
     # registered as a virtual subclass of anything.  It forces the
     # negative cache to be cleared before its next use.
-    __invalidation_counter = 0
+    _abc_invalidation_counter = 0
 
     def __new__(mcls, name, bases, namespace):
         bases = _fix_bases(bases)
@@ -132,10 +132,10 @@
                     abstracts.add(name)
         cls.__abstractmethods__ = abstracts
         # Set up inheritance registry
-        cls.__registry = set()
-        cls.__cache = set()
-        cls.__negative_cache = set()
-        cls.__negative_cache_version = ABCMeta.__invalidation_counter
+        cls._abc_registry = set()
+        cls._abc_cache = set()
+        cls._abc_negative_cache = set()
+        cls._abc_negative_cache_version = ABCMeta._abc_invalidation_counter
         return cls
 
     def register(cls, subclass):
@@ -149,15 +149,15 @@
         if issubclass(cls, subclass):
             # This would create a cycle, which is bad for the algorithm below
             raise RuntimeError("Refusing to create an inheritance cycle")
-        cls.__registry.add(subclass)
-        ABCMeta.__invalidation_counter += 1  # Invalidate negative cache
+        cls._abc_registry.add(subclass)
+        ABCMeta._abc_invalidation_counter += 1  # Invalidate negative cache
 
     def _dump_registry(cls, file=None):
         """Debug helper to print the ABC registry."""
         print("Class: %s.%s" % (cls.__module__, cls.__name__), file=file)
-        print("Inv.counter: %s" % ABCMeta.__invalidation_counter, file=file)
+        print("Inv.counter: %s" % ABCMeta._abc_invalidation_counter, file=file)
         for name in sorted(cls.__dict__.keys()):
-            if name.startswith("_ABCMeta__"):
+            if name.startswith("_abc_"):
                 value = getattr(cls, name)
                 print("%s: %r" % (name, value), file=file)
 
@@ -169,38 +169,38 @@
     def __subclasscheck__(cls, subclass):
         """Override for issubclass(subclass, cls)."""
         # Check cache
-        if subclass in cls.__cache:
+        if subclass in cls._abc_cache:
             return True
         # Check negative cache; may have to invalidate
-        if cls.__negative_cache_version < ABCMeta.__invalidation_counter:
+        if cls._abc_negative_cache_version < ABCMeta._abc_invalidation_counter:
             # Invalidate the negative cache
-            cls.__negative_cache = set()
-            cls.__negative_cache_version = ABCMeta.__invalidation_counter
-        elif subclass in cls.__negative_cache:
+            cls._abc_negative_cache = set()
+            cls._abc_negative_cache_version = ABCMeta._abc_invalidation_counter
+        elif subclass in cls._abc_negative_cache:
             return False
         # Check the subclass hook
         ok = cls.__subclasshook__(subclass)
         if ok is not NotImplemented:
             assert isinstance(ok, bool)
             if ok:
-                cls.__cache.add(subclass)
+                cls._abc_cache.add(subclass)
             else:
-                cls.__negative_cache.add(subclass)
+                cls._abc_negative_cache.add(subclass)
             return ok
         # Check if it's a direct subclass
         if cls in subclass.__mro__:
-            cls.__cache.add(subclass)
+            cls._abc_cache.add(subclass)
             return True
         # Check if it's a subclass of a registered class (recursive)
-        for rcls in cls.__registry:
+        for rcls in cls._abc_registry:
             if issubclass(subclass, rcls):
-                cls.__registry.add(subclass)
+                cls._abc_registry.add(subclass)
                 return True
         # Check if it's a subclass of a subclass (recursive)
         for scls in cls.__subclasses__():
             if issubclass(subclass, scls):
-                cls.__registry.add(subclass)
+                cls._abc_registry.add(subclass)
                 return True
         # No dice; update negative cache
-        cls.__negative_cache.add(subclass)
+        cls._abc_negative_cache.add(subclass)
         return False

Modified: python/branches/py3k/Lib/test/regrtest.py
==============================================================================
--- python/branches/py3k/Lib/test/regrtest.py	(original)
+++ python/branches/py3k/Lib/test/regrtest.py	Mon Aug 20 21:29:24 2007
@@ -680,7 +680,7 @@
     fs = warnings.filters[:]
     ps = copy_reg.dispatch_table.copy()
     pic = sys.path_importer_cache.copy()
-    abcs = {obj: obj._ABCMeta__registry.copy()
+    abcs = {obj: obj._abc_registry.copy()
             for abc in [getattr(_abcoll, a) for a in _abcoll.__all__]
             for obj in abc.__subclasses__() + [abc]}
 
@@ -731,9 +731,9 @@
     # Clear ABC registries, restoring previously saved ABC registries.
     for abc in [getattr(_abcoll, a) for a in _abcoll.__all__]:
         for obj in abc.__subclasses__() + [abc]:
-            obj._ABCMeta__registry = abcs.get(obj, {}).copy()
-            obj._ABCMeta__cache.clear()
-            obj._ABCMeta__negative_cache.clear()
+            obj._abc_registry = abcs.get(obj, {}).copy()
+            obj._abc_cache.clear()
+            obj._abc_negative_cache.clear()
 
     # Clear assorted module caches.
     _path_created.clear()


More information about the Python-3000-checkins mailing list