[New-bugs-announce] [issue40364] asyncio: replace _compute_returncode() with os.waitstatus_to_exitcode()

STINNER Victor report at bugs.python.org
Wed Apr 22 12:51:11 EDT 2020


New submission from STINNER Victor <vstinner at python.org>:

I added os.waitstatus_to_exitcode() in bpo-40094. I propose to replace _compute_returncode() with os.waitstatus_to_exitcode() in Lib/asyncio/unix_events.py to simplify the code *and* to raise an exception if asyncio gets an unexpected wait status from os.waitpid().

There is a comment which suggest to detect when asyncio gets an unexpected status, see the last comment of:

def _compute_returncode(status):
    if os.WIFSIGNALED(status):
        # The child process died because of a signal.
        return -os.WTERMSIG(status)
    elif os.WIFEXITED(status):
        # The child process exited (e.g sys.exit()).
        return os.WEXITSTATUS(status)
    else:
        # The child exited, but we don't understand its status.
        # This shouldn't happen, but if it does, let's just
        # return that status; perhaps that helps debug it.
        return status

Replacing _compute_returncode() with os.waitstatus_to_exitcode() in Lib/asyncio/unix_events.py is trivial. The problem is to update Lib/test/test_asyncio/test_unix_events.py which uses tons of mocks on os.W*() functions (ex: os.WIFEXITED()).

I'm not sure how tests should be updated.

Is there someone interested to propose a PR for that?

----------
components: Library (Lib), asyncio
messages: 367021
nosy: aeros, asvetlov, corona10, vstinner, yselivanov
priority: normal
severity: normal
status: open
title: asyncio: replace _compute_returncode() with os.waitstatus_to_exitcode()
versions: Python 3.9

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue40364>
_______________________________________


More information about the New-bugs-announce mailing list