mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	Merged revisions 77789 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r77789 | benjamin.peterson | 2010-01-26 20:16:42 -0600 (Tue, 26 Jan 2010) | 1 line raise a clear TypeError when trying to register a non-class ........
This commit is contained in:
		
							parent
							
								
									a1f20b917a
								
							
						
					
					
						commit
						d632664a33
					
				
					 3 changed files with 9 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -94,7 +94,7 @@ def __new__(mcls, name, bases, namespace):
 | 
			
		|||
 | 
			
		||||
    def register(cls, subclass):
 | 
			
		||||
        """Register a virtual subclass of an ABC."""
 | 
			
		||||
        if not isinstance(cls, type):
 | 
			
		||||
        if not isinstance(subclass, type):
 | 
			
		||||
            raise TypeError("Can only register classes")
 | 
			
		||||
        if issubclass(subclass, cls):
 | 
			
		||||
            return  # Already a subclass
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -139,6 +139,12 @@ class C(A):
 | 
			
		|||
        self.assertRaises(RuntimeError, C.register, A)  # cycles not allowed
 | 
			
		||||
        C.register(B)  # ok
 | 
			
		||||
 | 
			
		||||
    def test_register_non_class(self):
 | 
			
		||||
        class A(metaclass=abc.ABCMeta):
 | 
			
		||||
            pass
 | 
			
		||||
        self.assertRaisesRegexp(TypeError, "Can only register classes",
 | 
			
		||||
                                A.register, 4)
 | 
			
		||||
 | 
			
		||||
    def test_registration_transitiveness(self):
 | 
			
		||||
        class A(metaclass=abc.ABCMeta):
 | 
			
		||||
            pass
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -234,6 +234,8 @@ C-API
 | 
			
		|||
Library
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
- Issue #7792: Registering non-classes to ABCs raised an obscure error.
 | 
			
		||||
 | 
			
		||||
- Issue #7785: Don't accept bytes in FileIO.write().
 | 
			
		||||
 | 
			
		||||
- Removed the functions 'verify' and 'vereq' from Lib/test/support.py.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue