mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	bpo-42740: Fix get_args for PEP 585 collections.abc.Callable (GH-23963)
PR 1/2. Needs backport to 3.9.
(cherry picked from commit 4140f10a16)
Co-authored-by: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
			
			
This commit is contained in:
		
							parent
							
								
									9f6a37cc07
								
							
						
					
					
						commit
						03e571f1d5
					
				
					 2 changed files with 6 additions and 3 deletions
				
			
		|  | @ -3071,6 +3071,11 @@ class C(Generic[T]): pass | ||||||
|         self.assertEqual(get_args(Callable), ()) |         self.assertEqual(get_args(Callable), ()) | ||||||
|         self.assertEqual(get_args(list[int]), (int,)) |         self.assertEqual(get_args(list[int]), (int,)) | ||||||
|         self.assertEqual(get_args(list), ()) |         self.assertEqual(get_args(list), ()) | ||||||
|  |         self.assertEqual(get_args(collections.abc.Callable[[int], str]), ([int], str)) | ||||||
|  |         self.assertEqual(get_args(collections.abc.Callable[..., str]), (..., str)) | ||||||
|  |         self.assertEqual(get_args(collections.abc.Callable[[], str]), ([], str)) | ||||||
|  |         self.assertEqual(get_args(collections.abc.Callable[[int], str]), | ||||||
|  |                          get_args(Callable[[int], str])) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class CollectionsAbcTests(BaseTestCase): | class CollectionsAbcTests(BaseTestCase): | ||||||
|  |  | ||||||
|  | @ -1507,13 +1507,11 @@ def get_args(tp): | ||||||
|     """ |     """ | ||||||
|     if isinstance(tp, _AnnotatedAlias): |     if isinstance(tp, _AnnotatedAlias): | ||||||
|         return (tp.__origin__,) + tp.__metadata__ |         return (tp.__origin__,) + tp.__metadata__ | ||||||
|     if isinstance(tp, _GenericAlias): |     if isinstance(tp, (_GenericAlias, GenericAlias)): | ||||||
|         res = tp.__args__ |         res = tp.__args__ | ||||||
|         if tp.__origin__ is collections.abc.Callable and res[0] is not Ellipsis: |         if tp.__origin__ is collections.abc.Callable and res[0] is not Ellipsis: | ||||||
|             res = (list(res[:-1]), res[-1]) |             res = (list(res[:-1]), res[-1]) | ||||||
|         return res |         return res | ||||||
|     if isinstance(tp, GenericAlias): |  | ||||||
|         return tp.__args__ |  | ||||||
|     return () |     return () | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Miss Islington (bot)
						Miss Islington (bot)