diff options
author | Alexandre Vassalotti <alexandre@peadrop.com> | 2008-05-11 08:25:28 (GMT) |
---|---|---|
committer | Alexandre Vassalotti <alexandre@peadrop.com> | 2008-05-11 08:25:28 (GMT) |
commit | 9510e4a9f8503421c9f589e99e697aa5f3b89b69 (patch) | |
tree | 59e7f4f21d2c0902316f91b00d98e0e8d4b6c4aa /Lib | |
parent | f602c71b077de965693c62d65d0e261bd964fbda (diff) | |
download | cpython-9510e4a9f8503421c9f589e99e697aa5f3b89b69.zip cpython-9510e4a9f8503421c9f589e99e697aa5f3b89b69.tar.gz cpython-9510e4a9f8503421c9f589e99e697aa5f3b89b69.tar.bz2 |
Added module stub for copy_reg renaming in 3.0.
Renamed copy_reg to copyreg in the standard library, to avoid
spurious warnings and ease later merging to py3k branch. Public
documentation remains intact.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/copy.py | 2 | ||||
-rw-r--r-- | Lib/copy_reg.py | 205 | ||||
-rw-r--r-- | Lib/copyreg.py | 201 | ||||
-rw-r--r-- | Lib/idlelib/rpc.py | 6 | ||||
-rw-r--r-- | Lib/os.py | 2 | ||||
-rw-r--r-- | Lib/pickle.py | 6 | ||||
-rw-r--r-- | Lib/re.py | 4 | ||||
-rw-r--r-- | Lib/test/pickletester.py | 18 | ||||
-rwxr-xr-x | Lib/test/regrtest.py | 10 | ||||
-rw-r--r-- | Lib/test/test___all__.py | 2 | ||||
-rw-r--r-- | Lib/test/test_copy.py | 6 | ||||
-rw-r--r-- | Lib/test/test_copyreg.py (renamed from Lib/test/test_copy_reg.py) | 56 |
12 files changed, 263 insertions, 255 deletions
diff --git a/Lib/copy.py b/Lib/copy.py index 3f2033f..55ea660 100644 --- a/Lib/copy.py +++ b/Lib/copy.py @@ -49,7 +49,7 @@ __getstate__() and __setstate__(). See the documentation for module """ import types -from copy_reg import dispatch_table +from copyreg import dispatch_table class Error(Exception): pass diff --git a/Lib/copy_reg.py b/Lib/copy_reg.py index db17150..700698c 100644 --- a/Lib/copy_reg.py +++ b/Lib/copy_reg.py @@ -1,201 +1,8 @@ -"""Helper to provide extensibility for pickle/cPickle. +import sys +from warnings import warnpy3k -This is only useful to add pickle support for extension types defined in -C, not for instances of user-defined classes. -""" +warnpy3k("the copy_reg module has been renamed " + "to 'copyreg' in Python 3.0", stacklevel=2) -from types import ClassType as _ClassType - -__all__ = ["pickle", "constructor", - "add_extension", "remove_extension", "clear_extension_cache"] - -dispatch_table = {} - -def pickle(ob_type, pickle_function, constructor_ob=None): - if type(ob_type) is _ClassType: - raise TypeError("copy_reg is not intended for use with classes") - - if not hasattr(pickle_function, '__call__'): - raise TypeError("reduction functions must be callable") - dispatch_table[ob_type] = pickle_function - - # The constructor_ob function is a vestige of safe for unpickling. - # There is no reason for the caller to pass it anymore. - if constructor_ob is not None: - constructor(constructor_ob) - -def constructor(object): - if not hasattr(object, '__call__'): - raise TypeError("constructors must be callable") - -# Example: provide pickling support for complex numbers. - -try: - complex -except NameError: - pass -else: - - def pickle_complex(c): - return complex, (c.real, c.imag) - - pickle(complex, pickle_complex, complex) - -# Support for pickling new-style objects - -def _reconstructor(cls, base, state): - if base is object: - obj = object.__new__(cls) - else: - obj = base.__new__(cls, state) - if base.__init__ != object.__init__: - base.__init__(obj, state) - return obj - -_HEAPTYPE = 1<<9 - -# Python code for object.__reduce_ex__ for protocols 0 and 1 - -def _reduce_ex(self, proto): - assert proto < 2 - for base in self.__class__.__mro__: - if hasattr(base, '__flags__') and not base.__flags__ & _HEAPTYPE: - break - else: - base = object # not really reachable - if base is object: - state = None - else: - if base is self.__class__: - raise TypeError, "can't pickle %s objects" % base.__name__ - state = base(self) - args = (self.__class__, base, state) - try: - getstate = self.__getstate__ - except AttributeError: - if getattr(self, "__slots__", None): - raise TypeError("a class that defines __slots__ without " - "defining __getstate__ cannot be pickled") - try: - dict = self.__dict__ - except AttributeError: - dict = None - else: - dict = getstate() - if dict: - return _reconstructor, args, dict - else: - return _reconstructor, args - -# Helper for __reduce_ex__ protocol 2 - -def __newobj__(cls, *args): - return cls.__new__(cls, *args) - -def _slotnames(cls): - """Return a list of slot names for a given class. - - This needs to find slots defined by the class and its bases, so we - can't simply return the __slots__ attribute. We must walk down - the Method Resolution Order and concatenate the __slots__ of each - class found there. (This assumes classes don't modify their - __slots__ attribute to misrepresent their slots after the class is - defined.) - """ - - # Get the value from a cache in the class if possible - names = cls.__dict__.get("__slotnames__") - if names is not None: - return names - - # Not cached -- calculate the value - names = [] - if not hasattr(cls, "__slots__"): - # This class has no slots - pass - else: - # Slots found -- gather slot names from all base classes - for c in cls.__mro__: - if "__slots__" in c.__dict__: - slots = c.__dict__['__slots__'] - # if class has a single slot, it can be given as a string - if isinstance(slots, basestring): - slots = (slots,) - for name in slots: - # special descriptors - if name in ("__dict__", "__weakref__"): - continue - # mangled names - elif name.startswith('__') and not name.endswith('__'): - names.append('_%s%s' % (c.__name__, name)) - else: - names.append(name) - - # Cache the outcome in the class if at all possible - try: - cls.__slotnames__ = names - except: - pass # But don't die if we can't - - return names - -# A registry of extension codes. This is an ad-hoc compression -# mechanism. Whenever a global reference to <module>, <name> is about -# to be pickled, the (<module>, <name>) tuple is looked up here to see -# if it is a registered extension code for it. Extension codes are -# universal, so that the meaning of a pickle does not depend on -# context. (There are also some codes reserved for local use that -# don't have this restriction.) Codes are positive ints; 0 is -# reserved. - -_extension_registry = {} # key -> code -_inverted_registry = {} # code -> key -_extension_cache = {} # code -> object -# Don't ever rebind those names: cPickle grabs a reference to them when -# it's initialized, and won't see a rebinding. - -def add_extension(module, name, code): - """Register an extension code.""" - code = int(code) - if not 1 <= code <= 0x7fffffff: - raise ValueError, "code out of range" - key = (module, name) - if (_extension_registry.get(key) == code and - _inverted_registry.get(code) == key): - return # Redundant registrations are benign - if key in _extension_registry: - raise ValueError("key %s is already registered with code %s" % - (key, _extension_registry[key])) - if code in _inverted_registry: - raise ValueError("code %s is already in use for key %s" % - (code, _inverted_registry[code])) - _extension_registry[key] = code - _inverted_registry[code] = key - -def remove_extension(module, name, code): - """Unregister an extension code. For testing only.""" - key = (module, name) - if (_extension_registry.get(key) != code or - _inverted_registry.get(code) != key): - raise ValueError("key %s is not registered with code %s" % - (key, code)) - del _extension_registry[key] - del _inverted_registry[code] - if code in _extension_cache: - del _extension_cache[code] - -def clear_extension_cache(): - _extension_cache.clear() - -# Standard extension code assignments - -# Reserved ranges - -# First Last Count Purpose -# 1 127 127 Reserved for Python standard library -# 128 191 64 Reserved for Zope -# 192 239 48 Reserved for 3rd parties -# 240 255 16 Reserved for private use (will never be assigned) -# 256 Inf Inf Reserved for future assignment - -# Extension codes are assigned by the Python Software Foundation. +import copyreg +sys.modules[__name__] = copyreg diff --git a/Lib/copyreg.py b/Lib/copyreg.py new file mode 100644 index 0000000..db17150 --- /dev/null +++ b/Lib/copyreg.py @@ -0,0 +1,201 @@ +"""Helper to provide extensibility for pickle/cPickle. + +This is only useful to add pickle support for extension types defined in +C, not for instances of user-defined classes. +""" + +from types import ClassType as _ClassType + +__all__ = ["pickle", "constructor", + "add_extension", "remove_extension", "clear_extension_cache"] + +dispatch_table = {} + +def pickle(ob_type, pickle_function, constructor_ob=None): + if type(ob_type) is _ClassType: + raise TypeError("copy_reg is not intended for use with classes") + + if not hasattr(pickle_function, '__call__'): + raise TypeError("reduction functions must be callable") + dispatch_table[ob_type] = pickle_function + + # The constructor_ob function is a vestige of safe for unpickling. + # There is no reason for the caller to pass it anymore. + if constructor_ob is not None: + constructor(constructor_ob) + +def constructor(object): + if not hasattr(object, '__call__'): + raise TypeError("constructors must be callable") + +# Example: provide pickling support for complex numbers. + +try: + complex +except NameError: + pass +else: + + def pickle_complex(c): + return complex, (c.real, c.imag) + + pickle(complex, pickle_complex, complex) + +# Support for pickling new-style objects + +def _reconstructor(cls, base, state): + if base is object: + obj = object.__new__(cls) + else: + obj = base.__new__(cls, state) + if base.__init__ != object.__init__: + base.__init__(obj, state) + return obj + +_HEAPTYPE = 1<<9 + +# Python code for object.__reduce_ex__ for protocols 0 and 1 + +def _reduce_ex(self, proto): + assert proto < 2 + for base in self.__class__.__mro__: + if hasattr(base, '__flags__') and not base.__flags__ & _HEAPTYPE: + break + else: + base = object # not really reachable + if base is object: + state = None + else: + if base is self.__class__: + raise TypeError, "can't pickle %s objects" % base.__name__ + state = base(self) + args = (self.__class__, base, state) + try: + getstate = self.__getstate__ + except AttributeError: + if getattr(self, "__slots__", None): + raise TypeError("a class that defines __slots__ without " + "defining __getstate__ cannot be pickled") + try: + dict = self.__dict__ + except AttributeError: + dict = None + else: + dict = getstate() + if dict: + return _reconstructor, args, dict + else: + return _reconstructor, args + +# Helper for __reduce_ex__ protocol 2 + +def __newobj__(cls, *args): + return cls.__new__(cls, *args) + +def _slotnames(cls): + """Return a list of slot names for a given class. + + This needs to find slots defined by the class and its bases, so we + can't simply return the __slots__ attribute. We must walk down + the Method Resolution Order and concatenate the __slots__ of each + class found there. (This assumes classes don't modify their + __slots__ attribute to misrepresent their slots after the class is + defined.) + """ + + # Get the value from a cache in the class if possible + names = cls.__dict__.get("__slotnames__") + if names is not None: + return names + + # Not cached -- calculate the value + names = [] + if not hasattr(cls, "__slots__"): + # This class has no slots + pass + else: + # Slots found -- gather slot names from all base classes + for c in cls.__mro__: + if "__slots__" in c.__dict__: + slots = c.__dict__['__slots__'] + # if class has a single slot, it can be given as a string + if isinstance(slots, basestring): + slots = (slots,) + for name in slots: + # special descriptors + if name in ("__dict__", "__weakref__"): + continue + # mangled names + elif name.startswith('__') and not name.endswith('__'): + names.append('_%s%s' % (c.__name__, name)) + else: + names.append(name) + + # Cache the outcome in the class if at all possible + try: + cls.__slotnames__ = names + except: + pass # But don't die if we can't + + return names + +# A registry of extension codes. This is an ad-hoc compression +# mechanism. Whenever a global reference to <module>, <name> is about +# to be pickled, the (<module>, <name>) tuple is looked up here to see +# if it is a registered extension code for it. Extension codes are +# universal, so that the meaning of a pickle does not depend on +# context. (There are also some codes reserved for local use that +# don't have this restriction.) Codes are positive ints; 0 is +# reserved. + +_extension_registry = {} # key -> code +_inverted_registry = {} # code -> key +_extension_cache = {} # code -> object +# Don't ever rebind those names: cPickle grabs a reference to them when +# it's initialized, and won't see a rebinding. + +def add_extension(module, name, code): + """Register an extension code.""" + code = int(code) + if not 1 <= code <= 0x7fffffff: + raise ValueError, "code out of range" + key = (module, name) + if (_extension_registry.get(key) == code and + _inverted_registry.get(code) == key): + return # Redundant registrations are benign + if key in _extension_registry: + raise ValueError("key %s is already registered with code %s" % + (key, _extension_registry[key])) + if code in _inverted_registry: + raise ValueError("code %s is already in use for key %s" % + (code, _inverted_registry[code])) + _extension_registry[key] = code + _inverted_registry[code] = key + +def remove_extension(module, name, code): + """Unregister an extension code. For testing only.""" + key = (module, name) + if (_extension_registry.get(key) != code or + _inverted_registry.get(code) != key): + raise ValueError("key %s is not registered with code %s" % + (key, code)) + del _extension_registry[key] + del _inverted_registry[code] + if code in _extension_cache: + del _extension_cache[code] + +def clear_extension_cache(): + _extension_cache.clear() + +# Standard extension code assignments + +# Reserved ranges + +# First Last Count Purpose +# 1 127 127 Reserved for Python standard library +# 128 191 64 Reserved for Zope +# 192 239 48 Reserved for 3rd parties +# 240 255 16 Reserved for private use (will never be assigned) +# 256 Inf Inf Reserved for future assignment + +# Extension codes are assigned by the Python Software Foundation. diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py index 3bac6a3..52a2eaf 100644 --- a/Lib/idlelib/rpc.py +++ b/Lib/idlelib/rpc.py @@ -37,7 +37,7 @@ import cPickle as pickle import threading import Queue import traceback -import copy_reg +import copyreg import types import marshal @@ -60,8 +60,8 @@ def pickle_code(co): # assert isinstance(fn, type.FunctionType) # return repr(fn) -copy_reg.pickle(types.CodeType, pickle_code, unpickle_code) -# copy_reg.pickle(types.FunctionType, pickle_function, unpickle_function) +copyreg.pickle(types.CodeType, pickle_code, unpickle_code) +# copyreg.pickle(types.FunctionType, pickle_function, unpickle_function) BUFSIZE = 8*1024 LOCALHOST = '127.0.0.1' @@ -729,7 +729,7 @@ if _exists("fork"): return p.stdin, p.stdout __all__.append("popen4") -import copy_reg as _copy_reg +import copyreg as _copy_reg def _make_stat_result(tup, dict): return stat_result(tup, dict) diff --git a/Lib/pickle.py b/Lib/pickle.py index 02a1b1d..1e91eef 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -27,8 +27,8 @@ Misc variables: __version__ = "$Revision$" # Code version from types import * -from copy_reg import dispatch_table -from copy_reg import _extension_registry, _inverted_registry, _extension_cache +from copyreg import dispatch_table +from copyreg import _extension_registry, _inverted_registry, _extension_cache import marshal import sys import struct @@ -295,7 +295,7 @@ class Pickler: self.save_global(obj) return - # Check copy_reg.dispatch_table + # Check copyreg.dispatch_table reduce = dispatch_table.get(t) if reduce: rv = reduce(obj) @@ -278,12 +278,12 @@ def _subx(pattern, template): # register myself for pickling -import copy_reg +import copyreg def _pickle(p): return _compile, (p.pattern, p.flags) -copy_reg.pickle(_pattern_type, _pickle, _compile) +copyreg.pickle(_pattern_type, _pickle, _compile) # -------------------------------------------------------------------- # experimental stuff (see python-dev discussions for details) diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py index e1bc078..ed3b626 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -2,7 +2,7 @@ import unittest import pickle import cPickle import pickletools -import copy_reg +import copyreg from test.test_support import TestFailed, have_unicode, TESTFN, \ run_with_locale @@ -44,21 +44,21 @@ class ExtensionSaver: # there is one). def __init__(self, code): self.code = code - if code in copy_reg._inverted_registry: - self.pair = copy_reg._inverted_registry[code] - copy_reg.remove_extension(self.pair[0], self.pair[1], code) + if code in copyreg._inverted_registry: + self.pair = copyreg._inverted_registry[code] + copyreg.remove_extension(self.pair[0], self.pair[1], code) else: self.pair = None # Restore previous registration for code. def restore(self): code = self.code - curpair = copy_reg._inverted_registry.get(code) + curpair = copyreg._inverted_registry.get(code) if curpair is not None: - copy_reg.remove_extension(curpair[0], curpair[1], code) + copyreg.remove_extension(curpair[0], curpair[1], code) pair = self.pair if pair is not None: - copy_reg.add_extension(pair[0], pair[1], code) + copyreg.add_extension(pair[0], pair[1], code) class C: def __cmp__(self, other): @@ -690,14 +690,14 @@ class AbstractPickleTests(unittest.TestCase): self.assertEqual(B(x), B(y), detail) self.assertEqual(x.__dict__, y.__dict__, detail) - # Register a type with copy_reg, with extension code extcode. Pickle + # Register a type with copyreg, with extension code extcode. Pickle # an object of that type. Check that the resulting pickle uses opcode # (EXT[124]) under proto 2, and not in proto 1. def produce_global_ext(self, extcode, opcode): e = ExtensionSaver(extcode) try: - copy_reg.add_extension(__name__, "MyList", extcode) + copyreg.add_extension(__name__, "MyList", extcode) x = MyList([1, 2, 3]) x.foo = 42 x.bar = "hello" diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 7aa22ed..85df78e 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -629,7 +629,7 @@ def cleanup_test_droppings(testname, verbose): def dash_R(the_module, test, indirect_test, huntrleaks): # This code is hackish and inelegant, but it seems to do the job. - import copy_reg, _abcoll, io + import copyreg, _abcoll, io if not hasattr(sys, 'gettotalrefcount'): raise Exception("Tracking reference leaks requires a debug build " @@ -637,7 +637,7 @@ def dash_R(the_module, test, indirect_test, huntrleaks): # Save current values for dash_R_cleanup() to restore. fs = warnings.filters[:] - ps = copy_reg.dispatch_table.copy() + ps = copyreg.dispatch_table.copy() pic = sys.path_importer_cache.copy() abcs = {} modules = _abcoll, io @@ -677,7 +677,7 @@ def dash_R(the_module, test, indirect_test, huntrleaks): refrep.close() def dash_R_cleanup(fs, ps, pic, abcs): - import gc, copy_reg + import gc, copyreg import _strptime, linecache dircache = test_support.import_module('dircache', deprecated=True) import urlparse, urllib, urllib2, mimetypes, doctest @@ -691,8 +691,8 @@ def dash_R_cleanup(fs, ps, pic, abcs): # Restore some original values. warnings.filters[:] = fs - copy_reg.dispatch_table.clear() - copy_reg.dispatch_table.update(ps) + copyreg.dispatch_table.clear() + copyreg.dispatch_table.update(ps) sys.path_importer_cache.clear() sys.path_importer_cache.update(pic) diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py index 1076c61..9c5e1f3 100644 --- a/Lib/test/test___all__.py +++ b/Lib/test/test___all__.py @@ -61,7 +61,7 @@ class AllTest(unittest.TestCase): self.check_all("commands") self.check_all("compileall") self.check_all("copy") - self.check_all("copy_reg") + self.check_all("copyreg") self.check_all("csv") self.check_all("dbhash") self.check_all("decimal") diff --git a/Lib/test/test_copy.py b/Lib/test/test_copy.py index d2899bd..8645ba1 100644 --- a/Lib/test/test_copy.py +++ b/Lib/test/test_copy.py @@ -1,7 +1,7 @@ """Unit tests for the copy module.""" import copy -import copy_reg +import copyreg import unittest from test import test_support @@ -42,7 +42,7 @@ class TestCopy(unittest.TestCase): return (C, (obj.foo,)) x = C(42) self.assertRaises(TypeError, copy.copy, x) - copy_reg.pickle(C, pickle_C, C) + copyreg.pickle(C, pickle_C, C) y = copy.copy(x) def test_copy_reduce_ex(self): @@ -215,7 +215,7 @@ class TestCopy(unittest.TestCase): return (C, (obj.foo,)) x = C(42) self.assertRaises(TypeError, copy.deepcopy, x) - copy_reg.pickle(C, pickle_C, C) + copyreg.pickle(C, pickle_C, C) y = copy.deepcopy(x) def test_deepcopy_reduce_ex(self): diff --git a/Lib/test/test_copy_reg.py b/Lib/test/test_copyreg.py index c3d3964..0b42128 100644 --- a/Lib/test/test_copy_reg.py +++ b/Lib/test/test_copyreg.py @@ -1,4 +1,4 @@ -import copy_reg +import copyreg import unittest from test import test_support @@ -27,15 +27,15 @@ class WithInherited(WithSingleString): class CopyRegTestCase(unittest.TestCase): def test_class(self): - self.assertRaises(TypeError, copy_reg.pickle, + self.assertRaises(TypeError, copyreg.pickle, C, None, None) def test_noncallable_reduce(self): - self.assertRaises(TypeError, copy_reg.pickle, + self.assertRaises(TypeError, copyreg.pickle, type(1), "not a callable") def test_noncallable_constructor(self): - self.assertRaises(TypeError, copy_reg.pickle, + self.assertRaises(TypeError, copyreg.pickle, type(1), int, "not a callable") def test_bool(self): @@ -47,42 +47,42 @@ class CopyRegTestCase(unittest.TestCase): e = ExtensionSaver(code) try: # Shouldn't be in registry now. - self.assertRaises(ValueError, copy_reg.remove_extension, + self.assertRaises(ValueError, copyreg.remove_extension, mod, func, code) - copy_reg.add_extension(mod, func, code) + copyreg.add_extension(mod, func, code) # Should be in the registry. - self.assert_(copy_reg._extension_registry[mod, func] == code) - self.assert_(copy_reg._inverted_registry[code] == (mod, func)) + self.assert_(copyreg._extension_registry[mod, func] == code) + self.assert_(copyreg._inverted_registry[code] == (mod, func)) # Shouldn't be in the cache. - self.assert_(code not in copy_reg._extension_cache) + self.assert_(code not in copyreg._extension_cache) # Redundant registration should be OK. - copy_reg.add_extension(mod, func, code) # shouldn't blow up + copyreg.add_extension(mod, func, code) # shouldn't blow up # Conflicting code. - self.assertRaises(ValueError, copy_reg.add_extension, + self.assertRaises(ValueError, copyreg.add_extension, mod, func, code + 1) - self.assertRaises(ValueError, copy_reg.remove_extension, + self.assertRaises(ValueError, copyreg.remove_extension, mod, func, code + 1) # Conflicting module name. - self.assertRaises(ValueError, copy_reg.add_extension, + self.assertRaises(ValueError, copyreg.add_extension, mod[1:], func, code ) - self.assertRaises(ValueError, copy_reg.remove_extension, + self.assertRaises(ValueError, copyreg.remove_extension, mod[1:], func, code ) # Conflicting function name. - self.assertRaises(ValueError, copy_reg.add_extension, + self.assertRaises(ValueError, copyreg.add_extension, mod, func[1:], code) - self.assertRaises(ValueError, copy_reg.remove_extension, + self.assertRaises(ValueError, copyreg.remove_extension, mod, func[1:], code) # Can't remove one that isn't registered at all. - if code + 1 not in copy_reg._inverted_registry: - self.assertRaises(ValueError, copy_reg.remove_extension, + if code + 1 not in copyreg._inverted_registry: + self.assertRaises(ValueError, copyreg.remove_extension, mod[1:], func[1:], code + 1) finally: e.restore() # Shouldn't be there anymore. - self.assert_((mod, func) not in copy_reg._extension_registry) - # The code *may* be in copy_reg._extension_registry, though, if + self.assert_((mod, func) not in copyreg._extension_registry) + # The code *may* be in copyreg._extension_registry, though, if # we happened to pick on a registered code. So don't check for # that. @@ -90,25 +90,25 @@ class CopyRegTestCase(unittest.TestCase): for code in 1, 0x7fffffff: e = ExtensionSaver(code) try: - copy_reg.add_extension(mod, func, code) - copy_reg.remove_extension(mod, func, code) + copyreg.add_extension(mod, func, code) + copyreg.remove_extension(mod, func, code) finally: e.restore() # Ensure invalid codes blow up. for code in -1, 0, 0x80000000L: - self.assertRaises(ValueError, copy_reg.add_extension, + self.assertRaises(ValueError, copyreg.add_extension, mod, func, code) def test_slotnames(self): - self.assertEquals(copy_reg._slotnames(WithoutSlots), []) - self.assertEquals(copy_reg._slotnames(WithWeakref), []) + self.assertEquals(copyreg._slotnames(WithoutSlots), []) + self.assertEquals(copyreg._slotnames(WithWeakref), []) expected = ['_WithPrivate__spam'] - self.assertEquals(copy_reg._slotnames(WithPrivate), expected) - self.assertEquals(copy_reg._slotnames(WithSingleString), ['spam']) + self.assertEquals(copyreg._slotnames(WithPrivate), expected) + self.assertEquals(copyreg._slotnames(WithSingleString), ['spam']) expected = ['eggs', 'spam'] expected.sort() - result = copy_reg._slotnames(WithInherited) + result = copyreg._slotnames(WithInherited) result.sort() self.assertEquals(result, expected) |