diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 48949e15..8aa723d2 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -28,7 +28,7 @@ concurrency: jobs: python-build: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-24.12 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -37,7 +37,7 @@ jobs: upload-conda: needs: [python-build] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@branch-24.12 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -47,7 +47,7 @@ jobs: if: github.ref_type == 'branch' needs: python-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-24.12 with: arch: "amd64" branch: ${{ inputs.branch }} @@ -59,7 +59,7 @@ jobs: sha: ${{ inputs.sha }} wheel-build: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-24.12 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -71,7 +71,7 @@ jobs: wheel-publish: needs: wheel-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-24.12 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 05ee9412..04d8bf9d 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -12,6 +12,7 @@ concurrency: jobs: pr-builder: needs: + - changed-files - checks - conda-python-build - conda-python-tests @@ -20,27 +21,51 @@ jobs: - wheel-build - wheel-tests secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-24.12 + if: always() + with: + needs: ${{ toJSON(needs) }} + changed-files: + secrets: inherit + uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@branch-24.12 + with: + files_yaml: | + test_notebooks: + - '**' + - '!.pre-commit-config.yaml' + - '!CONTRIBUTING.md' + - '!EXTERNAL_TESTS.md' + - '!README.md' + test_python: + - '**' + - '!.pre-commit-config.yaml' + - '!CONTRIBUTING.md' + - '!EXTERNAL_TESTS.md' + - '!README.md' + - '!docs/**' + - '!notebooks/**' checks: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@branch-24.12 conda-python-build: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-24.12 with: build_type: pull-request conda-python-tests: - needs: conda-python-build + needs: [conda-python-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-24.12 + if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: build_type: pull-request run_codecov: false conda-notebook-tests: - needs: conda-python-build + needs: [conda-python-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-24.12 + if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_notebooks with: build_type: pull-request node_type: "gpu-v100-latest-1" @@ -50,7 +75,7 @@ jobs: docs-build: needs: conda-python-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-24.12 with: build_type: pull-request node_type: "gpu-v100-latest-1" @@ -60,16 +85,17 @@ jobs: wheel-build: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-24.12 with: build_type: pull-request script: ci/build_wheel.sh # This selects "ARCH=amd64 + the latest supported Python + CUDA". matrix_filter: map(select(.ARCH == "amd64")) | group_by(.CUDA_VER|split(".")|map(tonumber)|.[0]) | map(max_by([(.PY_VER|split(".")|map(tonumber)), (.CUDA_VER|split(".")|map(tonumber))])) wheel-tests: - needs: wheel-build + needs: [wheel-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-24.12 + if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: build_type: pull-request script: ci/test_wheel.sh diff --git a/.github/workflows/test-external.yaml b/.github/workflows/test-external.yaml index 614d65b5..67567296 100644 --- a/.github/workflows/test-external.yaml +++ b/.github/workflows/test-external.yaml @@ -23,7 +23,7 @@ on: jobs: test-external: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-24.12 with: build_type: branch node_type: "gpu-v100-latest-1" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 8c94dabc..cd423859 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -16,7 +16,7 @@ on: jobs: conda-python-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-24.12 with: build_type: nightly branch: ${{ inputs.branch }} @@ -24,7 +24,7 @@ jobs: sha: ${{ inputs.sha }} wheel-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-24.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-24.12 with: build_type: nightly branch: ${{ inputs.branch }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1d8a944f..356b5b9f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: hooks: - id: verify-alpha-spec - repo: https://github.com/rapidsai/dependency-file-generator - rev: v1.13.11 + rev: v1.16.0 hooks: - id: rapids-dependency-file-generator args: ["--clean"] diff --git a/CHANGELOG.md b/CHANGELOG.md index c8a208ff..0856ae57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +# cuxfilter 24.12.00 (11 Dec 2024) + +## 🛠️ Improvements + +- enforce wheel size limits, README formatting in CI ([#643](https://github.com/rapidsai/cuxfilter/pull/643)) [@jameslamb](https://github.com/jameslamb) +- remove unnecessary sccache configuration, reduce verbosity of wheel-building scripts ([#641](https://github.com/rapidsai/cuxfilter/pull/641)) [@jameslamb](https://github.com/jameslamb) +- make conda installs in CI stricter ([#639](https://github.com/rapidsai/cuxfilter/pull/639)) [@jameslamb](https://github.com/jameslamb) +- Prune workflows based on changed files ([#635](https://github.com/rapidsai/cuxfilter/pull/635)) [@KyleFromNVIDIA](https://github.com/KyleFromNVIDIA) + # cuxfilter 24.10.00 (9 Oct 2024) ## 🐛 Bug Fixes diff --git a/README.md b/README.md index 1e03d58b..9220fc20 100644 --- a/README.md +++ b/README.md @@ -156,11 +156,11 @@ For the nightly version of `cuxfilter`: ```bash # for CUDA 12.5 conda install -c rapidsai-nightly -c conda-forge -c nvidia \ - cuxfilter=24.10 python=3.12 cuda-version=12.5 + cuxfilter=24.12 python=3.12 cuda-version=12.5 # for CUDA 11.8 conda install -c rapidsai-nightly -c conda-forge -c nvidia \ - cuxfilter=24.10 python=3.12 cuda-version=11.8 + cuxfilter=24.12 python=3.12 cuda-version=11.8 ``` For the stable version of `cuxfilter`: diff --git a/VERSION b/VERSION index 7c7ba044..af28c42b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -24.10.00 +24.12.00 diff --git a/ci/build_docs.sh b/ci/build_docs.sh index 6d39b97c..80702ed8 100755 --- a/ci/build_docs.sh +++ b/ci/build_docs.sh @@ -5,6 +5,8 @@ set -euo pipefail rapids-logger "Create test conda environment" . /opt/conda/etc/profile.d/conda.sh +RAPIDS_VERSION="$(rapids-version)" + rapids-dependency-file-generator \ --output conda \ --file-key docs \ @@ -21,11 +23,8 @@ PYTHON_CHANNEL=$(rapids-download-conda-from-s3 python) rapids-mamba-retry install \ --channel "${PYTHON_CHANNEL}" \ - cuxfilter + "cuxfilter=${RAPIDS_VERSION}" -export RAPIDS_VERSION="$(rapids-version)" -export RAPIDS_VERSION_MAJOR_MINOR="$(rapids-version-major-minor)" -export RAPIDS_VERSION_NUMBER="$RAPIDS_VERSION_MAJOR_MINOR" export RAPIDS_DOCS_DIR="$(mktemp -d)" rapids-logger "Build Python docs" @@ -35,4 +34,4 @@ mkdir -p "${RAPIDS_DOCS_DIR}/cuxfilter/"html mv _html/* "${RAPIDS_DOCS_DIR}/cuxfilter/html" popd -rapids-upload-docs +RAPIDS_VERSION_NUMBER="$(rapids-version-major-minor)" rapids-upload-docs diff --git a/ci/build_python.sh b/ci/build_python.sh index 9c0bbc83..be4cd892 100755 --- a/ci/build_python.sh +++ b/ci/build_python.sh @@ -5,8 +5,6 @@ set -euo pipefail rapids-configure-conda-channels -source rapids-configure-sccache - source rapids-date-string rapids-print-env diff --git a/ci/build_wheel.sh b/ci/build_wheel.sh index 78e2bed2..4fb8091c 100755 --- a/ci/build_wheel.sh +++ b/ci/build_wheel.sh @@ -6,7 +6,6 @@ set -euo pipefail package_name="cuxfilter" package_dir="python" -source rapids-configure-sccache source rapids-date-string rapids-generate-version > ./VERSION @@ -15,6 +14,8 @@ RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})" cd "${package_dir}" -python -m pip wheel . -w dist -vvv --no-deps --disable-pip-version-check +python -m pip wheel . -w dist -v --no-deps --disable-pip-version-check + +../ci/validate_wheel.sh dist RAPIDS_PY_WHEEL_NAME="${package_name}_${RAPIDS_PY_CUDA_SUFFIX}" RAPIDS_PY_WHEEL_PURE="1" rapids-upload-wheels-to-s3 dist diff --git a/ci/test_notebooks.sh b/ci/test_notebooks.sh index 730129f0..949525bd 100755 --- a/ci/test_notebooks.sh +++ b/ci/test_notebooks.sh @@ -5,6 +5,8 @@ set -euo pipefail . /opt/conda/etc/profile.d/conda.sh +RAPIDS_VERSION="$(rapids-version)" + rapids-logger "Generate notebook testing dependencies" rapids-dependency-file-generator \ --output conda \ @@ -25,7 +27,7 @@ PYTHON_CHANNEL=$(rapids-download-conda-from-s3 python) rapids-mamba-retry install \ --channel "${PYTHON_CHANNEL}" \ - cuxfilter + "cuxfilter=${RAPIDS_VERSION}" NBTEST="$(realpath "$(dirname "$0")/utils/nbtest.sh")" diff --git a/ci/test_python.sh b/ci/test_python.sh index 0d6c834b..60cc36ab 100755 --- a/ci/test_python.sh +++ b/ci/test_python.sh @@ -5,6 +5,8 @@ set -euo pipefail . /opt/conda/etc/profile.d/conda.sh +RAPIDS_VERSION="$(rapids-version)" + rapids-logger "Generate Python testing dependencies" rapids-dependency-file-generator \ --output conda \ @@ -29,7 +31,7 @@ rapids-print-env rapids-mamba-retry install \ --channel "${PYTHON_CHANNEL}" \ - cuxfilter + "cuxfilter=${RAPIDS_VERSION}" rapids-logger "Check GPU usage" nvidia-smi 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/conda/environments/all_cuda-118_arch-x86_64.yaml b/conda/environments/all_cuda-118_arch-x86_64.yaml index 97b51aef..050d8e2e 100644 --- a/conda/environments/all_cuda-118_arch-x86_64.yaml +++ b/conda/environments/all_cuda-118_arch-x86_64.yaml @@ -10,12 +10,12 @@ dependencies: - bokeh_sampledata - cuda-version=11.8 - cudatoolkit -- cudf==24.10.*,>=0.0.0a0 -- cugraph==24.10.*,>=0.0.0a0 +- cudf==24.12.*,>=0.0.0a0 +- cugraph==24.12.*,>=0.0.0a0 - cupy>=12.0.0 -- cuspatial==24.10.*,>=0.0.0a0 -- dask-cuda==24.10.*,>=0.0.0a0 -- dask-cudf==24.10.*,>=0.0.0a0 +- cuspatial==24.12.*,>=0.0.0a0 +- dask-cuda==24.12.*,>=0.0.0a0 +- dask-cudf==24.12.*,>=0.0.0a0 - datashader>=0.15 - geopandas>=0.11.0 - holoviews>=1.16.0 diff --git a/conda/environments/all_cuda-125_arch-x86_64.yaml b/conda/environments/all_cuda-125_arch-x86_64.yaml index fed4204a..6f5ca234 100644 --- a/conda/environments/all_cuda-125_arch-x86_64.yaml +++ b/conda/environments/all_cuda-125_arch-x86_64.yaml @@ -9,12 +9,12 @@ dependencies: - bokeh>=3.1 - bokeh_sampledata - cuda-version=12.5 -- cudf==24.10.*,>=0.0.0a0 -- cugraph==24.10.*,>=0.0.0a0 +- cudf==24.12.*,>=0.0.0a0 +- cugraph==24.12.*,>=0.0.0a0 - cupy>=12.0.0 -- cuspatial==24.10.*,>=0.0.0a0 -- dask-cuda==24.10.*,>=0.0.0a0 -- dask-cudf==24.10.*,>=0.0.0a0 +- cuspatial==24.12.*,>=0.0.0a0 +- dask-cuda==24.12.*,>=0.0.0a0 +- dask-cudf==24.12.*,>=0.0.0a0 - datashader>=0.15 - geopandas>=0.11.0 - holoviews>=1.16.0 diff --git a/dependencies.yaml b/dependencies.yaml index c48e2e5d..5feed7bd 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -159,8 +159,8 @@ dependencies: - notebook>=0.5.0 - output_types: [conda] packages: - - cugraph==24.10.*,>=0.0.0a0 - - dask-cuda==24.10.*,>=0.0.0a0 + - cugraph==24.12.*,>=0.0.0a0 + - dask-cuda==24.12.*,>=0.0.0a0 py_version: specific: - output_types: conda @@ -201,10 +201,10 @@ dependencies: - panel>=1.0 - output_types: conda packages: - - &cudf_unsuffixed cudf==24.10.*,>=0.0.0a0 + - &cudf_unsuffixed cudf==24.12.*,>=0.0.0a0 - cupy>=12.0.0 - - &cuspatial_unsuffixed cuspatial==24.10.*,>=0.0.0a0 - - &dask_cudf_unsuffixed dask-cudf==24.10.*,>=0.0.0a0 + - &cuspatial_unsuffixed cuspatial==24.12.*,>=0.0.0a0 + - &dask_cudf_unsuffixed dask-cudf==24.12.*,>=0.0.0a0 - nodejs>=18 - libwebp-base specific: @@ -214,10 +214,10 @@ dependencies: cuda: "12.*" cuda_suffixed: "true" packages: - - cudf-cu12==24.10.*,>=0.0.0a0 + - cudf-cu12==24.12.*,>=0.0.0a0 - &cupy_cu12 cupy-cuda12x>=12.0.0 - - cuspatial-cu12==24.10.*,>=0.0.0a0 - - dask-cudf-cu12==24.10.*,>=0.0.0a0 + - cuspatial-cu12==24.12.*,>=0.0.0a0 + - dask-cudf-cu12==24.12.*,>=0.0.0a0 - matrix: cuda: "12.*" cuda_suffixed: "false" @@ -232,10 +232,10 @@ dependencies: cuda: "11.*" cuda_suffixed: "true" packages: - - cudf-cu11==24.10.*,>=0.0.0a0 + - cudf-cu11==24.12.*,>=0.0.0a0 - &cupy_cu11 cupy-cuda11x>=12.0.0 - - cuspatial-cu11==24.10.*,>=0.0.0a0 - - dask-cudf-cu11==24.10.*,>=0.0.0a0 + - cuspatial-cu11==24.12.*,>=0.0.0a0 + - dask-cudf-cu11==24.12.*,>=0.0.0a0 - matrix: cuda: "11.*" cuda_suffixed: "false" @@ -269,7 +269,7 @@ dependencies: - cupy>=12.0.0 - *cuspatial_unsuffixed - *dask_cudf_unsuffixed - - cuxfilter==24.10.*,>=0.0.0a0 + - cuxfilter==24.12.*,>=0.0.0a0 - python>=3.10,<3.13 - pytest-benchmark - pytest-xdist diff --git a/docs/source/user_guide/installation.rst b/docs/source/user_guide/installation.rst index edd62dc6..6af07c8b 100644 --- a/docs/source/user_guide/installation.rst +++ b/docs/source/user_guide/installation.rst @@ -9,11 +9,11 @@ For the most customized way of installing RAPIDS and cuxfilter, visit the select # for CUDA 12.5 conda install -c rapidsai -c conda-forge -c nvidia \ - cuxfilter=24.10 python=3.10 cuda-version=12.5 + cuxfilter=24.12 python=3.10 cuda-version=12.5 # for CUDA 11.8 conda install -c rapidsai -c conda-forge -c nvidia \ - cuxfilter=24.10 python=3.10 cuda-version=11.8 + cuxfilter=24.12 python=3.10 cuda-version=11.8 PyPI ---- diff --git a/python/pyproject.toml b/python/pyproject.toml index bb780ba5..e2c1d374 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -19,10 +19,10 @@ license = { text = "Apache 2.0" } requires-python = ">=3.10" dependencies = [ "bokeh>=3.1", - "cudf==24.10.*,>=0.0.0a0", + "cudf==24.12.*,>=0.0.0a0", "cupy-cuda11x>=12.0.0", - "cuspatial==24.10.*,>=0.0.0a0", - "dask-cudf==24.10.*,>=0.0.0a0", + "cuspatial==24.12.*,>=0.0.0a0", + "dask-cudf==24.12.*,>=0.0.0a0", "datashader>=0.15", "geopandas>=0.11.0", "holoviews>=1.16.0", @@ -69,6 +69,14 @@ license-files = ["LICENSE"] [tool.setuptools.dynamic] version = {file = "cuxfilter/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' + [tool.pytest.ini_options] filterwarnings = [ "error::FutureWarning",