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) else: self.pair = None
def restore(self): code = self.code curpair = copy_reg._inverted_registry.get(code) if curpair is not None: copy_reg.remove_extension(curpair[0], curpair[1], code) pair = self.pair if pair is not None: copy_reg.add_extension(pair[0], pair[1], code)
def test_extension_registry(self): mod, func, code = 'junk1 ', ' junk2', 0xabcd e = ExtensionSaver(code) try: # Shouldn't be in registry now. self.assertRaises(ValueError, copy_reg.remove_extension, mod, func, code) copy_reg.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)) # Shouldn't be in the cache. self.assert_(code not in copy_reg._extension_cache) # Redundant registration should be OK. copy_reg.add_extension(mod, func, code) # shouldn't blow up # Conflicting code. self.assertRaises(ValueError, copy_reg.add_extension, mod, func, code + 1) self.assertRaises(ValueError, copy_reg.remove_extension, mod, func, code + 1) # Conflicting module name. self.assertRaises(ValueError, copy_reg.add_extension, mod[1:], func, code) self.assertRaises(ValueError, copy_reg.remove_extension, mod[1:], func, code) # Conflicting function name. self.assertRaises(ValueError, copy_reg.add_extension, mod, func[1:], code) self.assertRaises(ValueError, copy_reg.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, 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 # we happened to pick on a registered code. So don't check for # that. # Check valid codes at the limits. for code in 1, 0x7fffffff: e = ExtensionSaver(code) try: copy_reg.add_extension(mod, func, code) copy_reg.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, mod, func, code)
def test_extension_registry(self): mod, func, code = 'junk1 ', ' junk2', 0xabcd e = ExtensionSaver(code) try: # Shouldn't be in registry now. self.assertRaises(ValueError, copy_reg.remove_extension, mod, func, code) copy_reg.add_extension(mod, func, code) # Should be in the registry. self.assertTrue(copy_reg._extension_registry[mod, func] == code) self.assertTrue(copy_reg._inverted_registry[code] == (mod, func)) # Shouldn't be in the cache. self.assertNotIn(code, copy_reg._extension_cache) # Redundant registration should be OK. copy_reg.add_extension(mod, func, code) # shouldn't blow up # Conflicting code. self.assertRaises(ValueError, copy_reg.add_extension, mod, func, code + 1) self.assertRaises(ValueError, copy_reg.remove_extension, mod, func, code + 1) # Conflicting module name. self.assertRaises(ValueError, copy_reg.add_extension, mod[1:], func, code ) self.assertRaises(ValueError, copy_reg.remove_extension, mod[1:], func, code ) # Conflicting function name. self.assertRaises(ValueError, copy_reg.add_extension, mod, func[1:], code) self.assertRaises(ValueError, copy_reg.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, mod[1:], func[1:], code + 1) finally: e.restore() # Shouldn't be there anymore. self.assertNotIn((mod, func), copy_reg._extension_registry) # The code *may* be in copy_reg._extension_registry, though, if # we happened to pick on a registered code. So don't check for # that. # Check valid codes at the limits. for code in 1, 0x7fffffff: e = ExtensionSaver(code) try: copy_reg.add_extension(mod, func, code) copy_reg.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, mod, func, code)
def test_remove_extension(): #delete extension copy_reg.remove_extension(_random, obj, 100) import argu1 copy_reg.remove_extension(argu1, obj, 1) module = True copy_reg.remove_extension(module, obj, 6) #remove extension which has not been registed AssertError(ValueError, copy_reg.remove_extension, _random, obj, 2) AssertError(ValueError, copy_reg.remove_extension, _random, object(), 100) AssertError(ValueError, copy_reg.remove_extension, argu1, obj, 1) copy_reg.add_extension(argu1, obj, 1) AssertError(ValueError, copy_reg.remove_extension, argu1, obj, 0)
def test_remove_extension(self): #delete extension copy_reg.remove_extension(random,obj,100) import argu1 copy_reg.remove_extension(argu1,obj,1) module = True copy_reg.remove_extension(module,obj,6) #remove extension which has not been registed self.assertRaises(ValueError,copy_reg.remove_extension,random,obj,2) self.assertRaises(ValueError,copy_reg.remove_extension,random,object(),100) self.assertRaises(ValueError,copy_reg.remove_extension,argu1,obj,1) copy_reg.add_extension(argu1,obj,1) self.assertRaises(ValueError,copy_reg.remove_extension,argu1,obj,0)
def test_remove_extension(): #delete extension copy_reg.remove_extension(_random,obj,100) import argu1 copy_reg.remove_extension(argu1,obj,1) module = True copy_reg.remove_extension(module,obj,6) #remove extension which has not been registed AssertError(ValueError,copy_reg.remove_extension,_random,obj,2) AssertError(ValueError,copy_reg.remove_extension,_random,object(),100) AssertError(ValueError,copy_reg.remove_extension,argu1,obj,1) copy_reg.add_extension(argu1,obj,1) AssertError(ValueError,copy_reg.remove_extension,argu1,obj,0)
def test_remove_extension(self): #delete extension copy_reg.remove_extension(random, obj, 100) import argu1 copy_reg.remove_extension(argu1, obj, 1) module = True copy_reg.remove_extension(module, obj, 6) #remove extension which has not been registed self.assertRaises(ValueError, copy_reg.remove_extension, random, obj, 2) self.assertRaises(ValueError, copy_reg.remove_extension, random, object(), 100) self.assertRaises(ValueError, copy_reg.remove_extension, argu1, obj, 1) copy_reg.add_extension(argu1, obj, 1) self.assertRaises(ValueError, copy_reg.remove_extension, argu1, obj, 0)