mirror of
				https://github.com/python/cpython.git
				synced 2025-10-27 03:34:32 +00:00 
			
		
		
		
	Merged revisions 77791 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
................
  r77791 | benjamin.peterson | 2010-01-26 20:25:58 -0600 (Tue, 26 Jan 2010) | 9 lines
  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
							
								
									ccea47ea86
								
							
						
					
					
						commit
						69de157237
					
				
					 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 | ||||
|  |  | |||
|  | @ -73,6 +73,8 @@ Core and Builtins | |||
| Library | ||||
| ------- | ||||
| 
 | ||||
| - Issue #7792: Registering non-classes to ABCs raised an obscure error. | ||||
| 
 | ||||
| - Issue #7785: Don't accept bytes in FileIO.write(). | ||||
| 
 | ||||
| - Issue #7773: Fix an UnboundLocalError in platform.linux_distribution() when | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Benjamin Peterson
						Benjamin Peterson