Backblaze / boardwalk

A linear remote execution workflow engine built on top of Ansible
Other
18 stars 1 forks source link

Python 3.12: Reimplement `distutils.util.strtobool` #67

Closed asullivan-blze closed 7 months ago

asullivan-blze commented 7 months ago

Per PEP-632, distutils was deprecated, and as of Python 3.12 has been removed.

Guidance in the PEP for projects using distutils.util.strtobool was to reimplement it.

Per the docs for distutils.util.strtobool:

distutils.util.strtobool(val)[¶](https://docs.python.org/3.9/distutils/apiref.html#distutils.util.strtobool)
Convert a string representation of truth to true (1) or false (0).

True values are y, yes, t, true, on and 1; false values are n, no, f, false, off and 0. Raises
[ValueError](https://docs.python.org/3.9/library/exceptions.html#ValueError) if val is anything else.
asullivan-blze commented 7 months ago

From cpython:Lib/distutils/util.py@3.11:

def strtobool (val):
    """Convert a string representation of truth to true (1) or false (0).

    True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values
    are 'n', 'no', 'f', 'false', 'off', and '0'.  Raises ValueError if
    'val' is anything else.
    """
    val = val.lower()
    if val in ('y', 'yes', 't', 'true', 'on', '1'):
        return 1
    elif val in ('n', 'no', 'f', 'false', 'off', '0'):
        return 0
    else:
        raise ValueError("invalid truth value %r" % (val,))