# Buggy code
def __init__(
    self,
    constraints,  # type: Iterable[str]
    candidates,  # type: Iterable[PythonInterpreter]
    failures,  # type: Iterable[InterpreterIdentificationError]
):
    # type: (...) -> None
    """
    :param constraints: The constraints that could not be satisfied.
    :param candidates: The python interpreters that were compared against the constraints.
    :param failures: Descriptions of the python interpreters that were unidentifiable.
    """
    self.constraints = tuple(constraints)
    self.candidates = tuple(candidates)
    self.failures = tuple(failures)
    super(UnsatisfiableInterpreterConstraintsError, self).__init__(
        self.create_message()
    )


# Traceback (ModuleNotFoundError)
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-req-build-kh23prp9/setup.py", line 59, in <module>
'Programming Language :: Python :: 3.8',
File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/setuptools/setuptools/__init__.py", line 169, in setup
return distutils.core.setup(**attrs)
File "/usr/lib/python3.7/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/lib/python3.7/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/wheel/wheel/bdist_wheel.py", line 228, in run
self.run_command('install')
File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/setuptools/setuptools/command/install.py", line 65, in run
return orig.install.run(self)
File "/usr/lib/python3.7/distutils/command/install.py", line 601, in run
self.run_command(cmd_name)
File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/setuptools/setuptools/command/install_scripts.py", line 22, in run
import setuptools.command.easy_install as ei  # vendor:skip
File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/setuptools/setuptools/command/easy_install.py", line 69, in <module>
from setuptools.sandbox import run_setup  # vendor:skip
File "/root/.pex/pip.pex/aef609891d42d65c887d1aeee58c46f6713a7e49/.deps/setuptools/setuptools/sandbox.py", line 24, in <module>
import pkg_resources.py31compat  # vendor:skip
ModuleNotFoundError: No module named 'pkg_resources.py31compat'
----------------------------------------
ERROR: Failed building wheel for boto3

# Fixed code
def __init__(
    self,
    constraints,  # type: Iterable[str]
    candidates,  # type: Iterable[PythonInterpreter]
    failures,  # type: Iterable[InterpreterIdentificationError]
    preamble=None,  # type: Optional[str]
):
    # type: (...) -> None
    """
    :param constraints: The constraints that could not be satisfied.
    :param candidates: The python interpreters that were compared against the constraints.
    :param failures: Descriptions of the python interpreters that were unidentifiable.
    :param preamble: An optional preamble for the exception message.
    """
    self.constraints = tuple(constraints)
    self.candidates = tuple(candidates)
    self.failures = tuple(failures)
    super(UnsatisfiableInterpreterConstraintsError, self).__init__(
        self.create_message(preamble=preamble)
    )