mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	[3.9] bpo-44815: Always show deprecation in asyncio.gather/sleep() (GH-27569)
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
This commit is contained in:
		
							parent
							
								
									ebe7e6d86c
								
							
						
					
					
						commit
						b2779b2aa1
					
				
					 3 changed files with 45 additions and 12 deletions
				
			
		|  | @ -635,16 +635,17 @@ def __sleep0(): | |||
| 
 | ||||
| async def sleep(delay, result=None, *, loop=None): | ||||
|     """Coroutine that completes after a given time (in seconds).""" | ||||
|     if loop is not None: | ||||
|         warnings.warn("The loop argument is deprecated since Python 3.8, " | ||||
|                       "and scheduled for removal in Python 3.10.", | ||||
|                       DeprecationWarning, stacklevel=2) | ||||
| 
 | ||||
|     if delay <= 0: | ||||
|         await __sleep0() | ||||
|         return result | ||||
| 
 | ||||
|     if loop is None: | ||||
|         loop = events.get_running_loop() | ||||
|     else: | ||||
|         warnings.warn("The loop argument is deprecated since Python 3.8, " | ||||
|                       "and scheduled for removal in Python 3.10.", | ||||
|                       DeprecationWarning, stacklevel=2) | ||||
| 
 | ||||
|     future = loop.create_future() | ||||
|     h = loop.call_later(delay, | ||||
|  | @ -750,13 +751,14 @@ def gather(*coros_or_futures, loop=None, return_exceptions=False): | |||
|     after catching an exception (raised by one of the awaitables) from | ||||
|     gather won't cancel any other awaitables. | ||||
|     """ | ||||
|     if not coros_or_futures: | ||||
|         if loop is None: | ||||
|             loop = events.get_event_loop() | ||||
|         else: | ||||
|     if loop is not None: | ||||
|         warnings.warn("The loop argument is deprecated since Python 3.8, " | ||||
|                       "and scheduled for removal in Python 3.10.", | ||||
|                       DeprecationWarning, stacklevel=2) | ||||
| 
 | ||||
|     if not coros_or_futures: | ||||
|         if loop is None: | ||||
|             loop = events.get_event_loop() | ||||
|         outer = loop.create_future() | ||||
|         outer.set_result([]) | ||||
|         return outer | ||||
|  |  | |||
|  | @ -1,8 +1,37 @@ | |||
| import os | ||||
| from test.support import load_package_tests, import_module | ||||
| from test import support | ||||
| import unittest | ||||
| 
 | ||||
| # Skip tests if we don't have concurrent.futures. | ||||
| import_module('concurrent.futures') | ||||
| support.import_module('concurrent.futures') | ||||
| 
 | ||||
| def load_tests(*args): | ||||
|     return load_package_tests(os.path.dirname(__file__), *args) | ||||
| 
 | ||||
| def load_tests(loader, _, pattern): | ||||
|     pkg_dir = os.path.dirname(__file__) | ||||
|     suite = AsyncioTestSuite() | ||||
|     return support.load_package_tests(pkg_dir, loader, suite, pattern) | ||||
| 
 | ||||
| 
 | ||||
| class AsyncioTestSuite(unittest.TestSuite): | ||||
|     """A custom test suite that also runs setup/teardown for the whole package. | ||||
| 
 | ||||
|     Normally unittest only runs setUpModule() and tearDownModule() within each | ||||
|     test module part of the test suite. Copying those functions to each file | ||||
|     would be tedious, let's run this once and for all. | ||||
|     """ | ||||
|     def run(self, result, debug=False): | ||||
|         ignore = support.ignore_deprecations_from | ||||
|         tokens = { | ||||
|             ignore("asyncio.base_events", like=r".*loop argument.*"), | ||||
|             ignore("asyncio.unix_events", like=r".*loop argument.*"), | ||||
|             ignore("asyncio.futures", like=r".*loop argument.*"), | ||||
|             ignore("asyncio.runners", like=r".*loop argument.*"), | ||||
|             ignore("asyncio.subprocess", like=r".*loop argument.*"), | ||||
|             ignore("asyncio.tasks", like=r".*loop argument.*"), | ||||
|             ignore("test.test_asyncio.test_queues", like=r".*loop argument.*"), | ||||
|             ignore("test.test_asyncio.test_tasks", like=r".*loop argument.*"), | ||||
|         } | ||||
|         try: | ||||
|             super().run(result, debug=debug) | ||||
|         finally: | ||||
|             support.clear_ignored_deprecations(*tokens) | ||||
|  |  | |||
|  | @ -0,0 +1,2 @@ | |||
| Always show ``loop=`` arg deprecations in :func:`asyncio.gather` and | ||||
| :func:`asyncio.sleep` | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Sam Bull
						Sam Bull