New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CI build step relies on pyproject.toml
's unpinned dependencies
#1472
Comments
I think this was a transient issue with pymssql, which is used for the pyproject.toml install here, as it's one of the dependencies. This build process doesn't use pinned dependencies. Think this issue to blame, and now fixed. At least, there are wheels for the current pymssql version. They haven't yet, I don't believe, changed their release process to make wheels available when the release is published, so this doesn't happen again. |
Have manually re-run the CI failed jobs on the affected PRs, and these are now working. |
We could still consider reworking how we manage the dependencies. Maybe the requirements should all go into I believe I tried this before and had issues with transitive dependencies not getting updated, but maybe it just works now? However, Dependabot also has issues with not updating multiple source of requirements in Python repositories, unfortunately, that I don't know are fixed. See #964 for more details. |
pyproject.toml
has unpinned dependencies
pyproject.toml
has unpinned dependenciespyproject.toml
's unpinned dependencies
Closing for now, as this is unlikely to affect users. Thanks @StevenMaude for the write-up -- if this rears its head again, we'll not be starting from square one. |
This fixes recent failures in CI, which emerged when the maintainers of pymssql released a new version without wheels. @StevenMaude did a great job of documenting the underlying issue in opensafely-core/ehrql#1472.
This fixes recent failures in CI, which emerged when the maintainers of pymssql released a new version without wheels. @StevenMaude did a great job of documenting the underlying issue in opensafely-core/ehrql#1472.
The problem
Our build CI check failed a few times at the end of July, because of the following:
pymssql
is one of our dependencies. It uses Cython.pymssql
maintainers had pushed a new release to PyPI.pymssql
release did not, at the time our build CI check ran, have the wheels published: Build packages for all platforms and publish to pypi uniformly, rather than platform-by-platform. pymssql/pymssql#832 1requirements.*.txt
files. Butpip install .
uses the dependencies inpyproject.toml
.pyproject.toml
has unpinned dependencies, and sopip install .
uses the latest version ofpymssql
:ehrql/pyproject.toml
Lines 14 to 26 in 4770ec6
pymssql
, our build CI step tried to compile the latest version ofpymssql
from source.pip install
of the ehrQL source failed becausepymssql
could not be installed. Thepymssql
build failed because the build dependencies were not all setup.Solutions
Possible solutions
pyproject.toml
. It is still possible to keep these dependencies separated out inpyproject.toml
.requirements.*.txt
files with hashes.pyproject.toml
previously (Production dependencies not getting updated by Dependabot #964), and it looked like transitive dependencies weren't always getting updated.requirements.*.txt
files, as well aspyproject.toml
or only update one of these files?pip install
?pip install
version of ehrQL: auto-completion in an editor or IDE. I've used this when testing out dev containers.Probable not-a-solution
Installing the requirements from the
requirements.*.txt
files in CI, and then doingpip install .
for ehrql. This would have fixed the build step. But is probably not a good workaround. Someone doing apip install
themselves would still have encountered a failure.Original issue
Not checked conclusively, but we were getting the following happening on new PRs in the CI build step.
Example:
This failure meant PRs wouldn't get a ✔️ because the build step failed.
Footnotes
The text was updated successfully, but these errors were encountered: