(a) build a fresh Python and pip installs pyperformance into it.
(b) for each benchmark, creates a virtual environment and installs
pyperformance (and other things) into that.
If hacking on a checkout of pyperformance, you want to make sure that it's
installing from the local checkout and never from PyPI or your changes won't be
in effect.
There are two bugs related to this one:
pyperformance detects if it's a dev version by looking for an
pyperformance.egg-link file in site-packages [1]. If that's not the case,
pyperformance is installed from PyPI. In step (a), it installs the local
pyperformance in non-editable mode, thus no .egg-link file, so when (b)
happens, pyperformance is installed from PyPI.
The check for the .egg-link file itself is broken, but perhaps because
toml changed from a module to a package at one point. It needs to look up a
directory.
The compile and compile_all commands:
pip
installspyperformance
into it.pyperformance
(and other things) into that.If hacking on a checkout of
pyperformance
, you want to make sure that it's installing from the local checkout and never from PyPI or your changes won't be in effect.There are two bugs related to this one:
pyperformance detects if it's a dev version by looking for an
pyperformance.egg-link
file insite-packages
[1]. If that's not the case, pyperformance is installed from PyPI. In step (a), it installs the localpyperformance
in non-editable mode, thus no.egg-link
file, so when (b) happens,pyperformance
is installed from PyPI.The check for the
.egg-link
file itself is broken, but perhaps becausetoml
changed from a module to a package at one point. It needs to look up a directory.[1] https://github.com/python/pyperformance/blob/main/pyperformance/__init__.py#L32