Skip to content

Commit

Permalink
enforce wheel size limits, README formatting in CI (#1726)
Browse files Browse the repository at this point in the history
Contributes to rapidsai/build-planning#110

Proposes adding 2 types of validation on wheels in CI, to ensure we continue to produce wheels that are suitable for PyPI.

* checks on wheel size (compressed),
  - *to be sure they're under PyPI limits*
  - *and to prompt discussion on PRs that significantly increase wheel sizes*
* checks on README formatting
  - *to ensure they'll render properly as the PyPI project homepages*
  - *e.g. like how https://github.com/scikit-learn/scikit-learn/blob/main/README.rst becomes https://pypi.org/project/scikit-learn/*

Authors:
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Bradley Dice (https://github.com/bdice)

URL: #1726
  • Loading branch information
jameslamb authored Nov 13, 2024
1 parent 771ccdc commit 56f3a46
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 1 deletion.
3 changes: 3 additions & 0 deletions ci/build_wheel_cpp.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,7 @@ sccache --show-adv-stats

python -m pip install wheel
python -m wheel tags --platform any dist/* --remove

../../ci/validate_wheel.sh dist

RAPIDS_PY_WHEEL_NAME="rmm_${RAPIDS_PY_CUDA_SUFFIX}" rapids-upload-wheels-to-s3 cpp dist
2 changes: 2 additions & 0 deletions ci/build_wheel_python.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ sccache --show-adv-stats
mkdir -p final_dist
python -m auditwheel repair -w final_dist dist/*

../../ci/validate_wheel.sh final_dist

RAPIDS_PY_WHEEL_NAME="${package_name}_${RAPIDS_PY_CUDA_SUFFIX}" rapids-upload-wheels-to-s3 python final_dist

# switch back to the root of the repo and check symbol visibility
Expand Down
18 changes: 18 additions & 0 deletions ci/validate_wheel.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash
# Copyright (c) 2024, NVIDIA CORPORATION.

set -euo pipefail

wheel_dir_relative_path=$1

rapids-logger "validate packages with 'pydistcheck'"

pydistcheck \
--inspect \
"$(echo ${wheel_dir_relative_path}/*.whl)"

rapids-logger "validate packages with 'twine'"

twine check \
--strict \
"$(echo ${wheel_dir_relative_path}/*.whl)"
8 changes: 8 additions & 0 deletions python/librmm/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,11 @@ wheel.py-api = "py3"
provider = "scikit_build_core.metadata.regex"
input = "librmm/VERSION"
regex = "(?P<value>.*)"

[tool.pydistcheck]
select = [
"distro-too-large-compressed",
]

# PyPI limit is 100 MiB, fail CI before we get too close to that
max_allowed_size_compressed = '75M'
5 changes: 4 additions & 1 deletion python/rmm/docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,10 @@
intersphinx_mapping = {
"python": ("https://docs.python.org/3", None),
"numba": ("https://numba.readthedocs.io/en/stable", None),
"cuda-python": ("https://nvidia.github.io/cuda-python/", None),
"cuda-python": (
"https://nvidia.github.io/cuda-python/cuda-bindings/",
None,
),
}

# Config numpydoc
Expand Down
8 changes: 8 additions & 0 deletions python/rmm/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,14 @@ requires = [
"ninja",
] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`.

[tool.pydistcheck]
select = [
"distro-too-large-compressed",
]

# PyPI limit is 100 MiB, fail CI before we get too close to that
max_allowed_size_compressed = '75M'

[tool.pytest.ini_options]
# treat warnings as errors
filterwarnings = [
Expand Down

0 comments on commit 56f3a46

Please sign in to comment.