You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CI for RAPIDS libraries fails on pull requests when wheel builds produce wheels that:
do not pass twine check --strict
are too large (compressed)
Approach
Such checks should run in wheel-building CI jobs, on PRs... they don't require GPUs, and should run so quickly that it isn't worth the spin-up time and cost of a dedicated wheel-validation CI job.
This could be accomplished with something like the following in wheel-build scripts, after the wheel file is finalized (e.g. has gone through auditwheel repair).
# check README formatting
twine check --strict dist/*# assert size, and print a summary of contents
pydistcheck \
--inspect \
--select 'distro-too-large-compressed' \
--max-allowed-size-compressed '100M' \
./delete-me/*
example of this using 24.12 libcudf-cu12 nightlies (click me)
This should be rolled out to all RAPIDS projects producing wheels, starting with those targeting publishing to https://pypi.org/.
Notes
Disclaimer
pydistcheck is something I (@jameslamb) created and am currently the sole contributor on, so I'm biased about it being the best tool for this purpose.
The narrow goal here, "assert files are not too big", could be accomplished other ways... like unzipping the wheel and using some mix of stat / du / find -size, or with a Python script.
I think the summaries pydistcheck generates (see "Approach" section) and all the others things we could ask it to check in the future (docs link) make it preferable to those approaches, but I shouldn't be the one to decide that.
The text was updated successfully, but these errors were encountered:
I took a brief look at pydistcheck and would support adopting it. It seems like a great tool for this job. It's also good to lean into your expertise in this area. 👍
Yup I'm happy with trying out pydistcheck. Maybe we should do a group review of it in a future build-infra team meeting to make sure we're all aligned. Adding a size check to CI is definitely critical so that we know when someone tries to add a feature that suddenly bloats binary size.
Description
As we start to publish more RAPIDS wheels directly to https://pypi.org/, it'll be important to validate the following characteristics:
These and any other non-functional characteristics of wheels that can be validated easily, quickly, and programmatically should be validated in CI.
Benefits of this work
Acceptance Criteria
twine check --strict
Approach
Such checks should run in wheel-building CI jobs, on PRs... they don't require GPUs, and should run so quickly that it isn't worth the spin-up time and cost of a dedicated
wheel-validation
CI job.This could be accomplished with something like the following in wheel-build scripts, after the wheel file is finalized (e.g. has gone through
auditwheel repair
).example of this using 24.12 libcudf-cu12 nightlies (click me)
On an x86_64 linux system:
mkdir -p ./delete-me pip download \ --extra-index-url https://pypi.anaconda.org/rapidsai-wheels-nightly/simple/ \ --no-deps \ -d ./delete-me \ 'libcudf-cu12==24.12.*,>=0.0.0a0'
Checking the formatting.
twine check --strict ./delete-me/*
And checking the size (using
5M
just to show how this would fail in CI if the wheels got too big):This should be rolled out to all RAPIDS projects producing wheels, starting with those targeting publishing to https://pypi.org/.
Notes
Disclaimer
pydistcheck
is something I (@jameslamb) created and am currently the sole contributor on, so I'm biased about it being the best tool for this purpose.The narrow goal here, "assert files are not too big", could be accomplished other ways... like unzipping the wheel and using some mix of
stat
/du
/find -size
, or with a Python script.I think the summaries
pydistcheck
generates (see "Approach" section) and all the others things we could ask it to check in the future (docs link) make it preferable to those approaches, but I shouldn't be the one to decide that.The text was updated successfully, but these errors were encountered: