This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Normalize handling of negative timeouts in subprocess.py
Type: Stage:
Components: Library (Lib) Versions: Python 3.11, Python 3.10, Python 3.9, Python 3.8
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: eryksun, jkloth, vstinner
Priority: normal Keywords:

Created on 2022-02-18 17:26 by jkloth, last changed 2022-04-11 14:59 by admin.

Messages (2)
msg413496 - (view) Author: Jeremy Kloth (jkloth) * Date: 2022-02-18 17:26
As a follow on to bpo-46716, the various timeout parameters currently deal with negative values differently in POSIX and Windows.

On POSIX, a negative value is treated the same as 0; check completion and raise TimeoutExpired is still running.

On Windows, the negative value is treated as unsigned and ultimately waits for ~49 days.

While the Windows behavior is obviously wrong and will be fixed internally as part of bpo-46716, that still leaves what to do with timeouts coming from user-space.  The current documentation just states that after `timeout` seconds TimeoutExpired is raised.  A liberal reading of the documentation could lead one to believe any value <=0 would suffice for an "active" check (the POSIX behavior).

OR, the documentation could be amended and negative values are now invalid and apply range checking in the user-facing functions.
msg413497 - (view) Author: Jeremy Kloth (jkloth) * Date: 2022-02-18 17:47
Oh, I forgot to add that I'm in favor of following the threading.py behavior of allowing <=0 to mean "non-blocking" (i.e., just check).  This would probably also benefit from a documentation update to clarify.
History
Date User Action Args
2022-04-11 14:59:56adminsetgithub: 90946
2022-02-18 17:47:08jklothsetmessages: + msg413497
2022-02-18 17:26:53jklothsetnosy: + vstinner, eryksun
2022-02-18 17:26:30jklothcreate