changeset: 105250:0e8aa537c565 branch: 3.6 parent: 105243:8372b9a325fb user: Gregory P. Smith date: Sun Nov 20 16:25:14 2016 -0800 files: Lib/subprocess.py Lib/test/test_subprocess.py Misc/NEWS description: Issue #20572: The subprocess.Popen.wait method's undocumented endtime parameter now raises a DeprecationWarning. It was deprecated in 3.4. It was never documented prior to that. diff -r 8372b9a325fb -r 0e8aa537c565 Lib/subprocess.py --- a/Lib/subprocess.py Sun Nov 20 08:37:21 2016 +0000 +++ b/Lib/subprocess.py Sun Nov 20 16:25:14 2016 -0800 @@ -1031,6 +1031,10 @@ """Wait for child process to terminate. Returns returncode attribute.""" if endtime is not None: + warnings.warn( + "'endtime' argument is deprecated; use 'timeout'.", + DeprecationWarning, + stacklevel=2) timeout = self._remaining_time(endtime) if timeout is None: timeout_millis = _winapi.INFINITE @@ -1392,8 +1396,11 @@ if self.returncode is not None: return self.returncode - # endtime is preferred to timeout. timeout is only used for - # printing. + if endtime is not None: + warnings.warn( + "'endtime' argument is deprecated; use 'timeout'.", + DeprecationWarning, + stacklevel=2) if endtime is not None or timeout is not None: if endtime is None: endtime = _time() + timeout diff -r 8372b9a325fb -r 0e8aa537c565 Lib/test/test_subprocess.py --- a/Lib/test/test_subprocess.py Sun Nov 20 08:37:21 2016 +0000 +++ b/Lib/test/test_subprocess.py Sun Nov 20 16:25:14 2016 -0800 @@ -1015,6 +1015,19 @@ # time to start. self.assertEqual(p.wait(timeout=3), 0) + def test_wait_endtime(self): + """Confirm that the deprecated endtime parameter warns.""" + p = subprocess.Popen([sys.executable, "-c", "pass"]) + try: + with self.assertWarns(DeprecationWarning) as warn_cm: + p.wait(endtime=time.time()+0.01) + except subprocess.TimeoutExpired: + pass # We're not testing endtime timeout behavior. + finally: + p.kill() + self.assertIn('test_subprocess.py', warn_cm.filename) + self.assertIn('endtime', str(warn_cm.warning)) + def test_invalid_bufsize(self): # an invalid type of the bufsize argument should raise # TypeError. @@ -2777,19 +2790,5 @@ self.assertTrue(proc.stdin.closed) -def test_main(): - unit_tests = (ProcessTestCase, - POSIXProcessTestCase, - Win32ProcessTestCase, - MiscTests, - ProcessTestCaseNoPoll, - CommandsWithSpaces, - ContextManagerTests, - RunFuncTestCase, - ) - - support.run_unittest(*unit_tests) - support.reap_children() - if __name__ == "__main__": unittest.main() diff -r 8372b9a325fb -r 0e8aa537c565 Misc/NEWS --- a/Misc/NEWS Sun Nov 20 08:37:21 2016 +0000 +++ b/Misc/NEWS Sun Nov 20 16:25:14 2016 -0800 @@ -40,6 +40,9 @@ Library ------- +- Issue #20572: The subprocess.Popen.wait method's undocumented + endtime parameter now raises a DeprecationWarning. + - Issue #25659: In ctypes, prevent a crash calling the from_buffer() and from_buffer_copy() methods on abstract classes like Array.