From fce80cdb894ae2687cef5349d99972644d11328e Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 13 Nov 2024 09:11:02 -0600 Subject: [PATCH] enforce wheel size limits, README formatting in CI (#1092) Contributes to https://github.com/rapidsai/build-planning/issues/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: https://github.com/rapidsai/ucx-py/pull/1092 --- ci/build_wheel.sh | 2 ++ ci/validate_wheel.sh | 18 ++++++++++++++++++ pyproject.toml | 8 ++++++++ 3 files changed, 28 insertions(+) create mode 100755 ci/validate_wheel.sh diff --git a/ci/build_wheel.sh b/ci/build_wheel.sh index f3f69ddd..f1680e3c 100755 --- a/ci/build_wheel.sh +++ b/ci/build_wheel.sh @@ -27,4 +27,6 @@ python -m auditwheel repair \ --exclude "libuct.so.0" \ dist/* +./ci/validate_wheel.sh final_dist + RAPIDS_PY_WHEEL_NAME="ucx_py_${RAPIDS_PY_CUDA_SUFFIX}" rapids-upload-wheels-to-s3 python final_dist diff --git a/ci/validate_wheel.sh b/ci/validate_wheel.sh new file mode 100755 index 00000000..60a80fce --- /dev/null +++ b/ci/validate_wheel.sh @@ -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)" diff --git a/pyproject.toml b/pyproject.toml index c616b71a..1c7eb1af 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -134,3 +134,11 @@ exclude=["*tests*"] [tool.setuptools.dynamic] version = {file = "ucp/VERSION"} + +[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'