From 793c2ec5733956a073fb5568cc4a5cbd13657565 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 31 Dec 2024 11:56:02 -0600 Subject: [PATCH 1/8] simplify building and testing configs --- .github/CODEOWNERS | 9 +- ci/build_docs.sh | 28 +-- ci/release/update-version.sh | 22 +-- codecov.yml | 5 - ..._64.yaml => all_cuda-122_arch-x86_64.yaml} | 11 +- dependencies.yaml | 187 ++---------------- 6 files changed, 33 insertions(+), 229 deletions(-) delete mode 100644 codecov.yml rename conda/environments/{all_cuda-125_arch-x86_64.yaml => all_cuda-122_arch-x86_64.yaml} (79%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 21fe84b..fcd8260 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,19 +1,14 @@ # https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners # Order matters - match of highest importance goes last (last match wins) -#doc code owners -datasets/ @rapidsai/cugraph-doc-codeowners -notebooks/ @rapidsai/cugraph-doc-codeowners +# doc code owners docs/ @rapidsai/cugraph-doc-codeowners **/*.txt @rapidsai/cugraph-doc-codeowners **/*.md @rapidsai/cugraph-doc-codeowners **/*.rst @rapidsai/cugraph-doc-codeowners -**/*.ipynb @rapidsai/cugraph-doc-codeowners -**/*.pdf @rapidsai/cugraph-doc-codeowners **/*.png @rapidsai/cugraph-doc-codeowners - -#CI code owners +# CI code owners /.github/ @rapidsai/ci-codeowners /ci/ @rapidsai/ci-codeowners /.pre-commit-config.yaml @rapidsai/ci-codeowners diff --git a/ci/build_docs.sh b/ci/build_docs.sh index 66b921e..841066d 100755 --- a/ci/build_docs.sh +++ b/ci/build_docs.sh @@ -6,7 +6,6 @@ set -euo pipefail rapids-logger "Create test conda environment" . /opt/conda/etc/profile.d/conda.sh -RAPIDS_VERSION="$(rapids-version)" RAPIDS_VERSION_MAJOR_MINOR="$(rapids-version-major-minor)" rapids-dependency-file-generator \ @@ -21,35 +20,12 @@ export RAPIDS_DOCS_DIR="$(mktemp -d)" rapids-print-env -if [[ "${RAPIDS_CUDA_VERSION}" == "11.8.0" ]]; then - DGL_CHANNEL="dglteam/label/cu118" -else - DGL_CHANNEL="dglteam/label/cu121" -fi - -rapids-mamba-retry install \ - --channel conda-forge \ - --channel pyg \ - --channel nvidia \ - --channel "${DGL_CHANNEL}" \ - "libcugraph==${RAPIDS_VERSION}.*" \ - "pylibcugraph=${RAPIDS_VERSION}.*" \ - "cugraph=${RAPIDS_VERSION}.*" \ - "cugraph-pyg=${RAPIDS_VERSION}.*" \ - "cugraph-dgl=${RAPIDS_VERSION}.*" \ - "libcugraph_etl=${RAPIDS_VERSION}.*" \ - "pylibcugraphops=${RAPIDS_VERSION}.*" \ - "pylibwholegraph=${RAPIDS_VERSION}.*" \ - pytorch \ - "cuda-version=${RAPIDS_CUDA_VERSION%.*}" - PROJ_LIST=("libcugraph libcugraphops libwholegraph") for PROJECT in ${PROJ_LIST}; do rapids-logger "Download ${PROJECT} xml_tar" TMP_DIR=$(mktemp -d) export XML_DIR_${PROJECT^^}="$TMP_DIR" - curl "https://d1664dvumjb44w.cloudfront.net/${PROJECT}/xml_tar/${RAPIDS_VERSION_MAJOR_MINOR}/xml.tar.gz" | tar -xzf - -C "${TMP_DIR}" done @@ -60,8 +36,8 @@ pushd docs/cugraph-docs # type of failure well. python -c "import cugraph; print(f'Using cugraph: {cugraph}')" sphinx-build -b dirhtml source _html -mkdir -p "${RAPIDS_DOCS_DIR}/cugraph/html" -mv _html/* "${RAPIDS_DOCS_DIR}/cugraph/html" +mkdir -p "${RAPIDS_DOCS_DIR}/cugraph-docs/html" +mv _html/* "${RAPIDS_DOCS_DIR}/cugraph-docs/html" popd RAPIDS_VERSION_NUMBER="${RAPIDS_VERSION_MAJOR_MINOR}" rapids-upload-docs diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index fde6677..627fd79 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -30,7 +30,6 @@ CURRENT_SHORT_TAG=${CURRENT_MAJOR}.${CURRENT_MINOR} NEXT_MAJOR=$(echo $NEXT_FULL_TAG | awk '{split($0, a, "."); print a[1]}') NEXT_MINOR=$(echo $NEXT_FULL_TAG | awk '{split($0, a, "."); print a[2]}') NEXT_SHORT_TAG=${NEXT_MAJOR}.${NEXT_MINOR} -NEXT_UCX_PY_VERSION="$(curl -sL https://version.gpuci.io/rapids/${NEXT_SHORT_TAG})" echo "Preparing release $CURRENT_TAG => $NEXT_FULL_TAG" @@ -42,40 +41,25 @@ function sed_runner() { # Centralized version file update # NOTE: Any script that runs in CI will need to use gha-tool `rapids-generate-version` # and echo it to `VERSION` file to get an alpha spec of the current version -echo "${NEXT_FULL_TAG}" > VERSION +echo "${NEXT_FULL_TAG}" > ./VERSION # Need to distutils-normalize the original version NEXT_SHORT_TAG_PEP440=$(python -c "from packaging.version import Version; print(Version('${NEXT_SHORT_TAG}'))") DEPENDENCIES=( - cudf cugraph cugraph-dgl cugraph-pyg - cugraph-service-server - cugraph-service-client - cuxfilter - dask-cuda - dask-cudf - libcudf + libcugraph_etl libcugraphops - libraft - libraft-headers - librmm + nx-cugraph pylibcugraph pylibcugraphops pylibwholegraph - pylibraft - pyraft - raft-dask - rmm - ucx-py - rapids-dask-dependency ) for DEP in "${DEPENDENCIES[@]}"; do for FILE in dependencies.yaml conda/environments/*.yaml; do sed_runner "/-.* ${DEP}\(-cu[[:digit:]]\{2\}\)\{0,1\}==/ s/==.*/==${NEXT_SHORT_TAG_PEP440}.*/g" "${FILE}" - sed_runner "/-.* ucx-py==/ s/==.*/==${NEXT_UCX_PY_VERSION}.*/g" "${FILE}" done done diff --git a/codecov.yml b/codecov.yml deleted file mode 100644 index c0a3a2f..0000000 --- a/codecov.yml +++ /dev/null @@ -1,5 +0,0 @@ -#Configuration File for CodeCov -coverage: - status: - project: off - patch: off diff --git a/conda/environments/all_cuda-125_arch-x86_64.yaml b/conda/environments/all_cuda-122_arch-x86_64.yaml similarity index 79% rename from conda/environments/all_cuda-125_arch-x86_64.yaml rename to conda/environments/all_cuda-122_arch-x86_64.yaml index ddf7721..f996bac 100644 --- a/conda/environments/all_cuda-125_arch-x86_64.yaml +++ b/conda/environments/all_cuda-122_arch-x86_64.yaml @@ -8,8 +8,8 @@ channels: - conda-forge - nvidia dependencies: -- breathe -- cuda-version=12.5 +- breathe>=4.35 +- cuda-version=12.2 - cugraph-dgl==25.2.* - cugraph-pyg==25.2.* - cugraph==25.2.* @@ -17,15 +17,18 @@ dependencies: - doxygen - graphviz - ipython +- libcugraph==25.2.* +- libcugraph_etl==25.2.* - nbsphinx - numpydoc - pre-commit - pydata-sphinx-theme +- pylibcugraph==25.2.* - pylibcugraphops==25.2.* - pylibwholegraph==25.2.* - recommonmark - sphinx-copybutton - sphinx-markdown-tables -- sphinx<6 +- sphinx>=8 - sphinxcontrib-websupport -name: all_cuda-125_arch-x86_64 +name: all_cuda-122_arch-x86_64 diff --git a/dependencies.yaml b/dependencies.yaml index 395c2cf..f02542a 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -3,19 +3,13 @@ files: all: output: [conda] matrix: - # docs are only built on the latest CUDA version RAPIDS supports - cuda: ["12.5"] + cuda: ["12.2"] arch: [x86_64] includes: - checks - cuda_version - docs - - depends_on_cugraph - - depends_on_dgl - - depends_on_cugraph_dgl - - depends_on_cugraph_pyg - - depends_on_pylibcugraphops - - depends_on_pylibwholegraph + - run checks: output: none includes: @@ -25,12 +19,7 @@ files: includes: - cuda_version - docs - - depends_on_cugraph - - depends_on_dgl - - depends_on_cugraph_dgl - - depends_on_cugraph_pyg - - depends_on_pylibcugraphops - - depends_on_pylibwholegraph + - run channels: - pyg @@ -42,29 +31,13 @@ channels: dependencies: checks: common: - - output_types: [conda, requirements] + - output_types: [conda] packages: - pre-commit cuda_version: specific: - - output_types: conda + - output_types: [conda] matrices: - - matrix: - cuda: "11.2" - packages: - - cuda-version=11.2 - - matrix: - cuda: "11.4" - packages: - - cuda-version=11.4 - - matrix: - cuda: "11.5" - packages: - - cuda-version=11.5 - - matrix: - cuda: "11.8" - packages: - - cuda-version=11.8 - matrix: cuda: "12.0" packages: @@ -82,7 +55,7 @@ dependencies: common: - output_types: [conda] packages: - - breathe + - breathe>=4.35 - doxygen - graphviz - ipython @@ -92,143 +65,21 @@ dependencies: - recommonmark - sphinx-copybutton - sphinx-markdown-tables - - sphinx<6 + - sphinx>=8 - sphinxcontrib-websupport - depends_on_pylibwholegraph: - common: - - output_types: conda - packages: - - &pylibwholegraph_conda pylibwholegraph==25.2.* - - output_types: requirements - packages: - # pip recognizes the index as a global option for the requirements.txt file - - --extra-index-url=https://pypi.nvidia.com - - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple - specific: - - output_types: [requirements] - matrices: - - matrix: {cuda: "12.*"} - packages: - - pylibwholegraph-cu12==25.2.* - - matrix: {cuda: "11.*"} - packages: - - pylibwholegraph-cu11==25.2.* - - {matrix: null, packages: [*pylibwholegraph_conda]} - - depends_on_cugraph: - common: - - output_types: conda - packages: - - &cugraph_conda cugraph==25.2.* - - output_types: requirements - packages: - # pip recognizes the index as a global option for the requirements.txt file - - --extra-index-url=https://pypi.nvidia.com - - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple - specific: - - output_types: [requirements] - matrices: - - matrix: {cuda: "12.*"} - packages: - - cugraph-cu12==25.2.* - - matrix: {cuda: "11.*"} - packages: - - cugraph-cu11==25.2.* - - {matrix: null, packages: [*cugraph_conda]} - - depends_on_cugraph_dgl: - common: - - output_types: conda - packages: - - &cugraph_dgl_conda cugraph-dgl==25.2.* - - output_types: requirements - packages: - # pip recognizes the index as a global option for the requirements.txt file - - --extra-index-url=https://pypi.nvidia.com - - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple - specific: - - output_types: [requirements] - matrices: - - matrix: {cuda: "12.*"} - packages: - - cugraph-dgl-cu12==25.2.* - - matrix: {cuda: "11.*"} - packages: - - cugraph-dgl-cu11==25.2.* - - {matrix: null, packages: [*cugraph_dgl_conda]} - - depends_on_cugraph_pyg: + # this repo only uses conda and 1 major version of CUDA, so + # all dependencies are intentionally grouped together + run: common: - - output_types: conda - packages: - - &cugraph_pyg_unsuffixed cugraph-pyg==25.2.* - - output_types: requirements - packages: - # pip recognizes the index as a global option for the requirements.txt file - - --extra-index-url=https://pypi.nvidia.com - - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple - specific: - - output_types: [requirements] - matrices: - - matrix: {cuda: "12.*"} - packages: - - cugraph-pyg-cu12==25.2.* - - matrix: {cuda: "11.*"} - packages: - - cugraph-pyg-cu11==25.2.* - - {matrix: null, packages: [*cugraph_pyg_unsuffixed]} - - depends_on_dgl: - specific: - output_types: [conda] - matrices: - - matrix: {cuda: "12.*"} - packages: - - 'dglteam/label/th23_cu121::dgl' - - matrix: {cuda: "11.*"} - packages: - - 'dglteam/label/th23_cu118::dgl' - - {matrix: null, packages: ['dglteam/label/th23_cu121::dgl']} - - depends_on_pylibcugraph: - common: - - output_types: conda packages: - - &pylibcugraph_conda pylibcugraph==25.2.* - - output_types: requirements - packages: - # pip recognizes the index as a global option for the requirements.txt file - - --extra-index-url=https://pypi.nvidia.com - - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple - specific: - - output_types: [requirements] - matrices: - - matrix: {cuda: "12.*"} - packages: - - pylibcugraph-cu12==25.2.* - - matrix: {cuda: "11.*"} - packages: - - pylibcugraph-cu11==25.2.* - - {matrix: null, packages: [*pylibcugraph_conda]} - - depends_on_pylibcugraphops: - common: - - output_types: conda - packages: - - &pylibcugraphops_conda pylibcugraphops==25.2.* - - output_types: requirements - packages: - # pip recognizes the index as a global option for the requirements.txt file - - --extra-index-url=https://pypi.nvidia.com - - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple - specific: - - output_types: [requirements] - matrices: - - matrix: {cuda: "12.*"} - packages: - - pylibcugraphops-cu12==25.2.* - - matrix: {cuda: "11.*"} - packages: - - pylibcugraphops-cu11==25.2.* - - {matrix: null, packages: [*pylibcugraphops_conda]} + - cugraph==25.2.* + - cugraph-dgl==25.2.* + - cugraph-pyg==25.2.* + - 'dglteam/label/th23_cu121::dgl' + - libcugraph==25.2.* + - libcugraph_etl==25.2.* + - pylibcugraph==25.2.* + - pylibcugraphops==25.2.* + - pylibwholegraph==25.2.* From ec09d25f14312e23f535a0ea12270dc8bac1091f Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 31 Dec 2024 11:57:20 -0600 Subject: [PATCH 2/8] remove notebook-testing scripts --- ci/utils/nbtest.sh | 76 -------------- ci/utils/nbtestlog2junitxml.py | 175 --------------------------------- 2 files changed, 251 deletions(-) delete mode 100755 ci/utils/nbtest.sh delete mode 100644 ci/utils/nbtestlog2junitxml.py diff --git a/ci/utils/nbtest.sh b/ci/utils/nbtest.sh deleted file mode 100755 index ae8b52d..0000000 --- a/ci/utils/nbtest.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -# Copyright (c) 2019-2021, NVIDIA CORPORATION. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Any failing command will set EXITCODE to non-zero -set +e # do not abort the script on error -set -o pipefail # piped commands propagate their error -set -E # ERR traps are inherited by subcommands -trap "EXITCODE=1" ERR - -# Prepend the following code to all scripts generated from nbconvert. This -# allows all cell and line magic code to run and update the namespace as if -# running in jupyter, but will also tolerate failures due to running in a -# non-jupyter env. -# Note: depending on the assumptions of the notebook script, ignoring failures -# may not be acceptable (meaning the converted notebook simply cannot run -# outside of jupyter as-is), hence the warning. -MAGIC_OVERRIDE_CODE=" -def my_run_line_magic(*args, **kwargs): - g=globals() - l={} - for a in args: - try: - exec(str(a),g,l) - except Exception as e: - print('WARNING: %s\n While executing this magic function code:\n%s\n continuing...\n' % (e, a)) - else: - g.update(l) - -def my_run_cell_magic(*args, **kwargs): - my_run_line_magic(*args, **kwargs) - -get_ipython().run_line_magic=my_run_line_magic -get_ipython().run_cell_magic=my_run_cell_magic - -" - -NO_COLORS=--colors=NoColor -EXITCODE=0 -NBTMPDIR=${WORKSPACE}/tmp -mkdir -p ${NBTMPDIR} - -for nb in $*; do - NBFILENAME=$1 - NBNAME=${NBFILENAME%.*} - NBNAME=${NBNAME##*/} - NBTESTSCRIPT=${NBTMPDIR}/${NBNAME}-test.py - shift - - echo -------------------------------------------------------------------------------- - echo STARTING: ${NBNAME} - echo -------------------------------------------------------------------------------- - jupyter nbconvert --to script ${NBFILENAME} --output ${NBTMPDIR}/${NBNAME}-test - echo "${MAGIC_OVERRIDE_CODE}" > ${NBTMPDIR}/tmpfile - cat ${NBTESTSCRIPT} >> ${NBTMPDIR}/tmpfile - mv ${NBTMPDIR}/tmpfile ${NBTESTSCRIPT} - - echo "Running \"ipython ${NO_COLORS} ${NBTESTSCRIPT}\" on $(date)" - echo - time bash -c "ipython ${NO_COLORS} ${NBTESTSCRIPT}; EC=\$?; echo -------------------------------------------------------------------------------- ; echo DONE: ${NBNAME}; exit \$EC" - NBEXITCODE=$? - echo EXIT CODE: ${NBEXITCODE} - echo -done - -exit ${EXITCODE} diff --git a/ci/utils/nbtestlog2junitxml.py b/ci/utils/nbtestlog2junitxml.py deleted file mode 100644 index e971225..0000000 --- a/ci/utils/nbtestlog2junitxml.py +++ /dev/null @@ -1,175 +0,0 @@ -# Copyright (c) 2019-2020, NVIDIA CORPORATION. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Generate a junit-xml file from parsing a nbtest log - -import re -from xml.etree.ElementTree import Element, ElementTree -from os import path -import string -from enum import Enum - - -startingPatt = re.compile("^STARTING: ([\w\.\-]+)$") -skippingPatt = re.compile("^SKIPPING: ([\w\.\-]+)\s*(\(([\w\.\-\ \,]+)\))?\s*$") -exitCodePatt = re.compile("^EXIT CODE: (\d+)$") -folderPatt = re.compile("^FOLDER: ([\w\.\-]+)$") -timePatt = re.compile("^real\s+([\d\.ms]+)$") -linePatt = re.compile("^" + ("-" * 80) + "$") - - -def getFileBaseName(filePathName): - return path.splitext(path.basename(filePathName))[0] - - -def makeTestCaseElement(attrDict): - return Element("testcase", attrib=attrDict) - - -def makeSystemOutElement(outputLines): - e = Element("system-out") - e.text = "".join(filter(lambda c: c in string.printable, outputLines)) - return e - - -def makeFailureElement(outputLines): - e = Element("failure", message="failed") - e.text = "".join(filter(lambda c: c in string.printable, outputLines)) - return e - - -def setFileNameAttr(attrDict, fileName): - attrDict.update(file=fileName, - classname="", - line="", - name="", - time="" - ) - -def setClassNameAttr(attrDict, className): - attrDict["classname"] = className - - -def setTestNameAttr(attrDict, testName): - attrDict["name"] = testName - - -def setTimeAttr(attrDict, timeVal): - (mins, seconds) = timeVal.split("m") - seconds = float(seconds.strip("s")) + (60 * int(mins)) - attrDict["time"] = str(seconds) - - -def incrNumAttr(element, attr): - newVal = int(element.attrib.get(attr)) + 1 - element.attrib[attr] = str(newVal) - - -def parseLog(logFile, testSuiteElement): - # Example attrs: - # errors="0" failures="0" hostname="a437d6835edf" name="pytest" skipped="2" tests="6" time="6.174" timestamp="2019-11-18T19:49:47.946307" - - with open(logFile) as lf: - testSuiteElement.attrib["tests"] = "0" - testSuiteElement.attrib["errors"] = "0" - testSuiteElement.attrib["failures"] = "0" - testSuiteElement.attrib["skipped"] = "0" - testSuiteElement.attrib["time"] = "0" - testSuiteElement.attrib["timestamp"] = "" - - attrDict = {} - #setFileNameAttr(attrDict, logFile) - setFileNameAttr(attrDict, "nbtest") - - parserStateEnum = Enum("parserStateEnum", - "newTest startingLine finishLine exitCode") - parserState = parserStateEnum.newTest - - testOutput = "" - - for line in lf.readlines(): - if parserState == parserStateEnum.newTest: - m = folderPatt.match(line) - if m: - setClassNameAttr(attrDict, m.group(1)) - continue - - m = skippingPatt.match(line) - if m: - setTestNameAttr(attrDict, getFileBaseName(m.group(1))) - setTimeAttr(attrDict, "0m0s") - skippedElement = makeTestCaseElement(attrDict) - message = m.group(3) or "" - skippedElement.append(Element("skipped", message=message, type="")) - testSuiteElement.append(skippedElement) - incrNumAttr(testSuiteElement, "skipped") - incrNumAttr(testSuiteElement, "tests") - continue - - m = startingPatt.match(line) - if m: - parserState = parserStateEnum.startingLine - testOutput = "" - setTestNameAttr(attrDict, m.group(1)) - setTimeAttr(attrDict, "0m0s") - continue - - continue - - elif parserState == parserStateEnum.startingLine: - if linePatt.match(line): - parserState = parserStateEnum.finishLine - testOutput = "" - continue - - elif parserState == parserStateEnum.finishLine: - if linePatt.match(line): - parserState = parserStateEnum.exitCode - else: - testOutput += line - continue - - elif parserState == parserStateEnum.exitCode: - m = exitCodePatt.match(line) - if m: - testCaseElement = makeTestCaseElement(attrDict) - if m.group(1) != "0": - failureElement = makeFailureElement(testOutput) - testCaseElement.append(failureElement) - incrNumAttr(testSuiteElement, "failures") - else: - systemOutElement = makeSystemOutElement(testOutput) - testCaseElement.append(systemOutElement) - - testSuiteElement.append(testCaseElement) - parserState = parserStateEnum.newTest - testOutput = "" - incrNumAttr(testSuiteElement, "tests") - continue - - m = timePatt.match(line) - if m: - setTimeAttr(attrDict, m.group(1)) - continue - - continue - - -if __name__ == "__main__": - import sys - - testSuitesElement = Element("testsuites") - testSuiteElement = Element("testsuite", name="nbtest", hostname="") - parseLog(sys.argv[1], testSuiteElement) - testSuitesElement.append(testSuiteElement) - ElementTree(testSuitesElement).write(sys.argv[1]+".xml", xml_declaration=True) From bc8919483680a4679b30f5409f16974abb143250 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 31 Dec 2024 12:04:39 -0600 Subject: [PATCH 3/8] revert accidental CUDA change --- ci/build_docs.sh | 5 +++-- ...da-122_arch-x86_64.yaml => all_cuda-125_arch-x86_64.yaml} | 4 ++-- dependencies.yaml | 3 ++- 3 files changed, 7 insertions(+), 5 deletions(-) rename conda/environments/{all_cuda-122_arch-x86_64.yaml => all_cuda-125_arch-x86_64.yaml} (92%) diff --git a/ci/build_docs.sh b/ci/build_docs.sh index 841066d..0f6822d 100755 --- a/ci/build_docs.sh +++ b/ci/build_docs.sh @@ -26,6 +26,7 @@ for PROJECT in ${PROJ_LIST}; do rapids-logger "Download ${PROJECT} xml_tar" TMP_DIR=$(mktemp -d) export XML_DIR_${PROJECT^^}="$TMP_DIR" + curl "https://d1664dvumjb44w.cloudfront.net/${PROJECT}/xml_tar/${RAPIDS_VERSION_MAJOR_MINOR}/xml.tar.gz" | tar -xzf - -C "${TMP_DIR}" done @@ -36,8 +37,8 @@ pushd docs/cugraph-docs # type of failure well. python -c "import cugraph; print(f'Using cugraph: {cugraph}')" sphinx-build -b dirhtml source _html -mkdir -p "${RAPIDS_DOCS_DIR}/cugraph-docs/html" -mv _html/* "${RAPIDS_DOCS_DIR}/cugraph-docs/html" +mkdir -p "${RAPIDS_DOCS_DIR}/cugraph/html" +mv _html/* "${RAPIDS_DOCS_DIR}/cugraph/html" popd RAPIDS_VERSION_NUMBER="${RAPIDS_VERSION_MAJOR_MINOR}" rapids-upload-docs diff --git a/conda/environments/all_cuda-122_arch-x86_64.yaml b/conda/environments/all_cuda-125_arch-x86_64.yaml similarity index 92% rename from conda/environments/all_cuda-122_arch-x86_64.yaml rename to conda/environments/all_cuda-125_arch-x86_64.yaml index f996bac..7fb3e31 100644 --- a/conda/environments/all_cuda-122_arch-x86_64.yaml +++ b/conda/environments/all_cuda-125_arch-x86_64.yaml @@ -9,7 +9,7 @@ channels: - nvidia dependencies: - breathe>=4.35 -- cuda-version=12.2 +- cuda-version=12.5 - cugraph-dgl==25.2.* - cugraph-pyg==25.2.* - cugraph==25.2.* @@ -31,4 +31,4 @@ dependencies: - sphinx-markdown-tables - sphinx>=8 - sphinxcontrib-websupport -name: all_cuda-122_arch-x86_64 +name: all_cuda-125_arch-x86_64 diff --git a/dependencies.yaml b/dependencies.yaml index f02542a..db56c84 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -3,7 +3,8 @@ files: all: output: [conda] matrix: - cuda: ["12.2"] + # docs are only built on the latest CUDA version RAPIDS supports + cuda: ["12.5"] arch: [x86_64] includes: - checks From e81e738784bc65a86c9df4abafb8055363f166a6 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 31 Dec 2024 12:10:08 -0600 Subject: [PATCH 4/8] remove git script too --- ci/utils/git_helpers.py | 158 ---------------------------------------- 1 file changed, 158 deletions(-) delete mode 100644 ci/utils/git_helpers.py diff --git a/ci/utils/git_helpers.py b/ci/utils/git_helpers.py deleted file mode 100644 index a0c413b..0000000 --- a/ci/utils/git_helpers.py +++ /dev/null @@ -1,158 +0,0 @@ -# Copyright (c) 2019-2021, NVIDIA CORPORATION. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -import subprocess -import os -import re - - -def isFileEmpty(f): - return os.stat(f).st_size == 0 - - -def __git(*opts): - """Runs a git command and returns its output""" - cmd = "git " + " ".join(list(opts)) - ret = subprocess.check_output(cmd, shell=True) - return ret.decode("UTF-8") - - -def __gitdiff(*opts): - """Runs a git diff command with no pager set""" - return __git("--no-pager", "diff", *opts) - - -def branch(): - """Returns the name of the current branch""" - name = __git("rev-parse", "--abbrev-ref", "HEAD") - name = name.rstrip() - return name - - -def uncommittedFiles(): - """ - Returns a list of all changed files that are not yet committed. This - means both untracked/unstaged as well as uncommitted files too. - """ - files = __git("status", "-u", "-s") - ret = [] - for f in files.splitlines(): - f = f.strip(" ") - f = re.sub("\s+", " ", f) # noqa: W605 - tmp = f.split(" ", 1) - # only consider staged files or uncommitted files - # in other words, ignore untracked files - if tmp[0] == "M" or tmp[0] == "A": - ret.append(tmp[1]) - return ret - - -def changedFilesBetween(baseName, branchName, commitHash): - """ - Returns a list of files changed between branches baseName and latest commit - of branchName. - """ - current = branch() - # checkout "base" branch - __git("checkout", "--force", baseName) - # checkout branch for comparing - __git("checkout", "--force", branchName) - # checkout latest commit from branch - __git("checkout", "-fq", commitHash) - - files = __gitdiff("--name-only", "--ignore-submodules", - f"{baseName}..{branchName}") - - # restore the original branch - __git("checkout", "--force", current) - return files.splitlines() - - -def changesInFileBetween(file, b1, b2, pathFilter=None): - """Filters the changed lines to a file between the branches b1 and b2""" - current = branch() - __git("checkout", "--quiet", b1) - __git("checkout", "--quiet", b2) - diffs = __gitdiff("--ignore-submodules", "-w", "--minimal", "-U0", - "%s...%s" % (b1, b2), "--", file) - __git("checkout", "--quiet", current) - lines = [] - for line in diffs.splitlines(): - if pathFilter is None or pathFilter(line): - lines.append(line) - return lines - - -def modifiedFiles(pathFilter=None): - """ - If inside a CI-env (ie. TARGET_BRANCH and COMMIT_HASH are defined, and - current branch is "current-pr-branch"), then lists out all files modified - between these 2 branches. Else, lists out all the uncommitted files in the - current branch. - - Such utility function is helpful while putting checker scripts as part of - cmake, as well as CI process. This way, during development, only the files - touched (but not yet committed) by devs can be checked. But, during the CI - process ALL files modified by the dev, as submiited in the PR, will be - checked. This happens, all the while using the same script. - """ - targetBranch = os.environ.get("TARGET_BRANCH") - commitHash = os.environ.get("COMMIT_HASH") - currentBranch = branch() - print(f" [DEBUG] TARGET_BRANCH={targetBranch}, COMMIT_HASH={commitHash}, " - f"currentBranch={currentBranch}") - - if targetBranch and commitHash and (currentBranch == "current-pr-branch"): - print(" [DEBUG] Assuming a CI environment.") - allFiles = changedFilesBetween(targetBranch, currentBranch, commitHash) - else: - print(" [DEBUG] Did not detect CI environment.") - allFiles = uncommittedFiles() - - files = [] - for f in allFiles: - if pathFilter is None or pathFilter(f): - files.append(f) - - filesToCheckString = "\n\t".join(files) if files else "" - print(f" [DEBUG] Found files to check:\n\t{filesToCheckString}\n") - return files - - -def listAllFilesInDir(folder): - """Utility function to list all files/subdirs in the input folder""" - allFiles = [] - for root, dirs, files in os.walk(folder): - for name in files: - allFiles.append(os.path.join(root, name)) - return allFiles - - -def listFilesToCheck(filesDirs, pathFilter=None): - """ - Utility function to filter the input list of files/dirs based on the input - pathFilter method and returns all the files that need to be checked - """ - allFiles = [] - for f in filesDirs: - if os.path.isfile(f): - if pathFilter is None or pathFilter(f): - allFiles.append(f) - elif os.path.isdir(f): - files = listAllFilesInDir(f) - for f_ in files: - if pathFilter is None or pathFilter(f_): - allFiles.append(f_) - return allFiles From 14482d38f1196b8aa31f870ffb1564d39b29b8e6 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 31 Dec 2024 14:08:54 -0600 Subject: [PATCH 5/8] fix intersphinx mapping --- docs/cugraph-docs/source/conf.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/cugraph-docs/source/conf.py b/docs/cugraph-docs/source/conf.py index cfcc07e..2291189 100644 --- a/docs/cugraph-docs/source/conf.py +++ b/docs/cugraph-docs/source/conf.py @@ -193,8 +193,9 @@ ] # Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'https://docs.python.org/': None} - +intersphinx_mapping = { + "python": ("https://docs.python.org/", None), +} # Config numpydoc numpydoc_show_inherited_class_members = False From b871f5b228448518f1910bce99da1ebc75dc92dc Mon Sep 17 00:00:00 2001 From: James Lamb Date: Tue, 31 Dec 2024 14:55:24 -0600 Subject: [PATCH 6/8] add libcugraph --- ci/release/update-version.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index 627fd79..588756e 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -50,6 +50,7 @@ DEPENDENCIES=( cugraph cugraph-dgl cugraph-pyg + libcugraph libcugraph_etl libcugraphops nx-cugraph From 2aa832f29d6ee0c86654c3dc2f88e5f6e2586b49 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Thu, 2 Jan 2025 09:36:19 -0600 Subject: [PATCH 7/8] empty commit to re-trigger CI From f4972aa667b9433b1b3ca3200e1b30b9660ca36f Mon Sep 17 00:00:00 2001 From: James Lamb Date: Thu, 2 Jan 2025 10:07:35 -0600 Subject: [PATCH 8/8] new year, new copyrights --- ci/build_docs.sh | 2 +- ci/release/update-version.sh | 2 +- docs/cugraph-docs/source/conf.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/build_docs.sh b/ci/build_docs.sh index 0f6822d..9015c1b 100755 --- a/ci/build_docs.sh +++ b/ci/build_docs.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) 2023-2024, NVIDIA CORPORATION. +# Copyright (c) 2023-2025, NVIDIA CORPORATION. set -euo pipefail diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index 588756e..2960cf1 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) 2018-2024, NVIDIA CORPORATION. +# Copyright (c) 2018-2025, NVIDIA CORPORATION. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at diff --git a/docs/cugraph-docs/source/conf.py b/docs/cugraph-docs/source/conf.py index 2291189..84bbb5c 100644 --- a/docs/cugraph-docs/source/conf.py +++ b/docs/cugraph-docs/source/conf.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018-2024, NVIDIA CORPORATION. +# Copyright (c) 2018-2025, NVIDIA CORPORATION. # # pygdf documentation build configuration file, created by # sphinx-quickstart on Wed May 3 10:59:22 2017.