From db7c9c087c3d09c030454411b981a5ab936ee5f6 Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 10:47:30 -0500 Subject: [PATCH 01/12] Fix CI: drop EOL Python 3.9 and update GitHub Actions --- .github/workflows/ray_nightly_test.yml | 23 +++++++++++------------ .github/workflows/raydp.yml | 16 +++++++--------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ray_nightly_test.yml b/.github/workflows/ray_nightly_test.yml index 95b4eb96..8244b0ab 100644 --- a/.github/workflows/ray_nightly_test.yml +++ b/.github/workflows/ray_nightly_test.yml @@ -31,15 +31,15 @@ jobs: strategy: matrix: os: [ ubuntu-latest ] - python-version: [3.9, 3.10.14] + python-version: ['3.10', '3.11'] spark-version: [3.3.2, 3.4.0, 3.5.0] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@e9aba2c848f5ebd159c070c61ea2c4e2b122355e # v2.3.4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Set up JDK 17 @@ -58,13 +58,13 @@ jobs: sudo apt-get install -y mpich - name: Cache pip - Ubuntu if: matrix.os == 'ubuntu-latest' - uses: actions/cache@8492260343ad570701412c2f464a5877dc76bace # v2 + uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ matrix.os }}-${{ matrix.python-version }}-pip - name: Cache pip - MacOS if: matrix.os == 'macos-latest' - uses: actions/cache@8492260343ad570701412c2f464a5877dc76bace # v2 + uses: actions/cache@v4 with: path: ~/Library/Caches/pip key: ${{ matrix.os }}-${{ matrix.python-version }}-pip @@ -74,7 +74,6 @@ jobs: run: | python -m pip install --upgrade pip pip install wheel - pip install "numpy<1.24" "click<8.3.0" SUBVERSION=$(python -c 'import sys; print(sys.version_info[1])') if [ "$(uname -s)" == "Linux" ] then @@ -83,21 +82,21 @@ jobs: pip install torch fi case $PYTHON_VERSION in - 3.9) - pip install "ray[train,default] @ https://s3-us-west-2.amazonaws.com/ray-wheels/latest/ray-3.0.0.dev0-cp39-cp39-manylinux2014_x86_64.whl" - ;; - 3.10.14) + 3.10) pip install "ray[train,default] @ https://s3-us-west-2.amazonaws.com/ray-wheels/latest/ray-3.0.0.dev0-cp310-cp310-manylinux2014_x86_64.whl" ;; + 3.11) + pip install "ray[train,default] @ https://s3-us-west-2.amazonaws.com/ray-wheels/latest/ray-3.0.0.dev0-cp311-cp311-manylinux2014_x86_64.whl" + ;; esac - pip install pyarrow tqdm pytest tensorflow==2.13.1 tabulate grpcio-tools wget + pip install pyarrow tqdm pytest "tensorflow>=2.16.1,<2.19" tabulate grpcio-tools wget pip install "xgboost_ray[default]<=0.1.13" pip install torchmetrics HOROVOD_WITH_GLOO=1 HOROVOD_WITH_PYTORCH=1 pip install horovod[pytorch,ray] - name: Cache Maven - uses: actions/cache@8492260343ad570701412c2f464a5877dc76bace # v2 + uses: actions/cache@v4 with: path: ~/.m2 key: ${{ matrix.os }}-m2-${{ hashFiles('core/pom.xml') }} diff --git a/.github/workflows/raydp.yml b/.github/workflows/raydp.yml index a24746b9..011b6b83 100644 --- a/.github/workflows/raydp.yml +++ b/.github/workflows/raydp.yml @@ -32,16 +32,16 @@ jobs: strategy: matrix: os: [ubuntu-latest] - python-version: [3.9, 3.10.14] + python-version: ['3.10', '3.11'] spark-version: [3.3.2, 3.4.0, 3.5.0] ray-version: [2.37.0, 2.40.0, 2.50.0] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@e9aba2c848f5ebd159c070c61ea2c4e2b122355e # v2.3.4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Set up JDK 17 @@ -60,13 +60,13 @@ jobs: sudo apt-get install -y mpich - name: Cache pip - Ubuntu if: matrix.os == 'ubuntu-latest' - uses: actions/cache@8492260343ad570701412c2f464a5877dc76bace # v2 + uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ matrix.os }}-${{ matrix.python-version }}-pip - name: Cache pip - MacOS if: matrix.os == 'macos-latest' - uses: actions/cache@8492260343ad570701412c2f464a5877dc76bace # v2 + uses: actions/cache@v4 with: path: ~/Library/Caches/pip key: ${{ matrix.os }}-${{ matrix.python-version }}-pip @@ -74,8 +74,6 @@ jobs: run: | python -m pip install --upgrade pip pip install wheel - pip install "numpy<1.24" "click<8.3.0" - pip install "pydantic<2.0" SUBVERSION=$(python -c 'import sys; print(sys.version_info[1])') if [ "$(uname -s)" == "Linux" ] then @@ -83,12 +81,12 @@ jobs: else pip install torch fi - pip install pyarrow "ray[train,default]==${{ matrix.ray-version }}" tqdm pytest tensorflow==2.13.1 tabulate grpcio-tools wget + pip install pyarrow "ray[train,default]==${{ matrix.ray-version }}" tqdm pytest "tensorflow>=2.16.1,<2.19" tabulate grpcio-tools wget pip install "xgboost_ray[default]<=0.1.13" pip install "xgboost<=2.0.3" pip install torchmetrics - name: Cache Maven - uses: actions/cache@8492260343ad570701412c2f464a5877dc76bace # v2 + uses: actions/cache@v4 with: path: ~/.m2 key: ${{ matrix.os }}-m2-${{ hashFiles('core/pom.xml') }} From 28861a94595fdbac7b726773dd586c11b305e569 Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 11:02:10 -0500 Subject: [PATCH 02/12] Update pylintrc for pylint 3.2.7 compatibility --- .github/workflows/ray_nightly_test.yml | 2 +- .github/workflows/raydp.yml | 2 +- python/pylintrc | 113 ++++--------------------- 3 files changed, 20 insertions(+), 97 deletions(-) diff --git a/.github/workflows/ray_nightly_test.yml b/.github/workflows/ray_nightly_test.yml index 8244b0ab..339d0fd1 100644 --- a/.github/workflows/ray_nightly_test.yml +++ b/.github/workflows/ray_nightly_test.yml @@ -109,7 +109,7 @@ jobs: pip install dist/raydp-*.whl - name: Lint run: | - pip install pylint==2.8.3 + pip install pylint==3.2.7 pylint --rcfile=python/pylintrc python/raydp pylint --rcfile=python/pylintrc examples/*.py - name: Test with pytest diff --git a/.github/workflows/raydp.yml b/.github/workflows/raydp.yml index 011b6b83..ad8e5750 100644 --- a/.github/workflows/raydp.yml +++ b/.github/workflows/raydp.yml @@ -99,7 +99,7 @@ jobs: pip install dist/raydp-*.whl - name: Lint run: | - pip install pylint==2.8.3 + pip install pylint==3.2.7 pylint --rcfile=python/pylintrc python/raydp pylint --rcfile=python/pylintrc examples/*.py - name: Test with pytest diff --git a/python/pylintrc b/python/pylintrc index 48bc7e2e..70f95bf1 100644 --- a/python/pylintrc +++ b/python/pylintrc @@ -49,7 +49,7 @@ unsafe-load-any-extension=no # A comma-separated list of package or module names from where C extensions may # be loaded. Extensions are loading into the active Python interpreter and may # run arbitrary code -extension-pkg-whitelist=netifaces +extension-pkg-allow-list=netifaces [MESSAGES CONTROL] @@ -74,65 +74,35 @@ confidence= # no Warning level messages displayed, use"--disable=all --enable=classes # --disable=W" disable=abstract-method, - apply-builtin, arguments-differ, attribute-defined-outside-init, - backtick, - basestring-builtin, broad-except, - buffer-builtin, - cmp-builtin, - cmp-method, - coerce-builtin, - coerce-method, + broad-exception-raised, + consider-using-dict-items, + consider-using-f-string, + consider-using-from-import, + consider-using-generator, dangerous-default-value, - delslice-method, duplicate-code, - execfile-builtin, - file-builtin, - filter-builtin-not-iterating, fixme, - getslice-method, global-statement, - hex-method, + global-variable-not-assigned, import-error, import-self, - import-star-module-level, - input-builtin, - intern-builtin, invalid-name, locally-disabled, logging-fstring-interpolation, - long-builtin, - long-suffix, - map-builtin-not-iterating, missing-docstring, + missing-final-newline, missing-function-docstring, - metaclass-assignment, - next-method-called, - next-method-defined, - no-absolute-import, no-else-return, no-member, no-name-in-module, - no-self-use, - nonzero-method, - oct-method, - old-division, - old-ne-operator, - old-octal-literal, - old-raise-syntax, - parameter-unpacking, - print-statement, + not-an-iterable, + not-callable, + possibly-used-before-assignment, protected-access, - raising-string, - range-builtin-not-iterating, redefined-outer-name, - reduce-builtin, - reload-builtin, - round-builtin, - setslice-method, - standarderror-builtin, suppressed-message, too-few-public-methods, too-many-ancestors, @@ -143,18 +113,17 @@ disable=abstract-method, too-many-public-methods, too-many-return-statements, too-many-statements, - unichr-builtin, - unicode-builtin, - unpacking-in-except, + unreachable, + unspecified-encoding, unused-argument, unused-import, unused-variable, + use-dict-literal, useless-else-on-loop, useless-suppression, - using-cmp-argument, + ungrouped-imports, wrong-import-order, - xrange-builtin, - zip-builtin-not-iterating, + wrong-import-position, [REPORTS] @@ -164,12 +133,6 @@ disable=abstract-method, # mypackage.mymodule.MyReporterClass. output-format=text -# Put messages in a separate file for each module / package specified on the -# command line instead of printing them on stdout. Reports (if any) will be -# written in a file name "pylint_global.[txt|html]". This option is deprecated -# and it will be removed in Pylint 2.0. -files-output=no - # Tells whether to display a full report or only the messages reports=no @@ -206,72 +169,39 @@ bad-names=foo,bar,baz,toto,tutu,tata # the name regexes allow several styles. name-group= -# Include a hint for the correct naming format with invalid-name -include-naming-hint=no - # List of decorators that produce properties, such as abc.abstractproperty. Add # to this list to register other decorators that produce valid properties. property-classes=abc.abstractproperty function-rgx=[a-z_][a-z0-9_]{2,30}$ -# Naming hint for function names -function-name-hint=[a-z_][a-z0-9_]{2,30}$ - # Regular expression matching correct variable names variable-rgx=[a-z_][a-z0-9_]{2,30}$ -# Naming hint for variable names -variable-name-hint=[a-z_][a-z0-9_]{2,30}$ - # Regular expression matching correct constant names const-rgx=(([A-Za-z_][A-Za-z0-9_]*)|(__.*__))$ -# Naming hint for constant names -const-name-hint=(([A-a-zZ_][A-Za-z0-9_]*)|(__.*__))$ - # Regular expression matching correct attribute names attr-rgx=[a-z_][a-z0-9_]{2,30}$ -# Naming hint for attribute names -attr-name-hint=[a-z_][a-z0-9_]{2,30}$ - # Regular expression matching correct argument names argument-rgx=[a-z_][a-z0-9_]{2,30}$ -# Naming hint for argument names -argument-name-hint=[a-z_][a-z0-9_]{2,30}$ - # Regular expression matching correct class attribute names class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ -# Naming hint for class attribute names -class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ - # Regular expression matching correct inline iteration names inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ -# Naming hint for inline iteration names -inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$ - # Regular expression matching correct class names class-rgx=[A-Z_][a-zA-Z0-9]+$ -# Naming hint for class names -class-name-hint=[A-Z_][a-zA-Z0-9]+$ - # Regular expression matching correct module names module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ -# Naming hint for module names -module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ - # Regular expression matching correct method names method-rgx=[a-z_][a-z0-9_]{2,30}$ -# Naming hint for method names -method-name-hint=[a-z_][a-z0-9_]{2,30}$ - # Regular expression which should only match function or class names that do # not require a docstring. no-docstring-rgx=(__.*__|main|test.*|.*test|.*Test)$ @@ -326,12 +256,6 @@ ignore-long-lines=(?x)( # else. single-line-if-stmt=yes -# List of optional constructs for which whitespace checking is disabled. `dict- -# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. -# `trailing-comma` allows a space between comma and closing bracket: (a, ). -# `empty-line` allows space-only lines. -no-space-check=trailing-comma,dict-separator - # Maximum number of lines in a module max-module-lines=1000 @@ -481,6 +405,5 @@ valid-metaclass-classmethod-first-arg=mcs # Exceptions that will emit a warning when being caught. Defaults to # "Exception" -overgeneral-exceptions=StandardError, - Exception, - BaseException +overgeneral-exceptions=builtins.Exception, + builtins.BaseException From f2933c61a53383db2d358d5709cbd35c7267874b Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 11:09:02 -0500 Subject: [PATCH 03/12] Restore click<8.3.0 pin needed by Ray 2.37/2.40 --- .github/workflows/raydp.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/raydp.yml b/.github/workflows/raydp.yml index ad8e5750..a1ab7136 100644 --- a/.github/workflows/raydp.yml +++ b/.github/workflows/raydp.yml @@ -73,7 +73,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install wheel + pip install wheel "click<8.3.0" SUBVERSION=$(python -c 'import sys; print(sys.version_info[1])') if [ "$(uname -s)" == "Linux" ] then From 9d406f70659dfd0d3b711211acb67c2c43bec567 Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 11:28:58 -0500 Subject: [PATCH 04/12] Pin numpy<2 to avoid np.NaN removal in NumPy 2.0 --- .github/workflows/ray_nightly_test.yml | 2 +- .github/workflows/raydp.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ray_nightly_test.yml b/.github/workflows/ray_nightly_test.yml index 339d0fd1..abc2c3d6 100644 --- a/.github/workflows/ray_nightly_test.yml +++ b/.github/workflows/ray_nightly_test.yml @@ -73,7 +73,7 @@ jobs: PYTHON_VERSION: ${{ matrix.python-version }} run: | python -m pip install --upgrade pip - pip install wheel + pip install wheel "numpy<2" SUBVERSION=$(python -c 'import sys; print(sys.version_info[1])') if [ "$(uname -s)" == "Linux" ] then diff --git a/.github/workflows/raydp.yml b/.github/workflows/raydp.yml index a1ab7136..19798397 100644 --- a/.github/workflows/raydp.yml +++ b/.github/workflows/raydp.yml @@ -73,7 +73,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install wheel "click<8.3.0" + pip install wheel "numpy<2" "click<8.3.0" SUBVERSION=$(python -c 'import sys; print(sys.version_info[1])') if [ "$(uname -s)" == "Linux" ] then From 6d0f512ed431fb0ad7631cee2aa7c249f4656a40 Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 11:40:16 -0500 Subject: [PATCH 05/12] Added pandas<2 to both workflow files --- .github/workflows/ray_nightly_test.yml | 2 +- .github/workflows/raydp.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ray_nightly_test.yml b/.github/workflows/ray_nightly_test.yml index abc2c3d6..4efaaf96 100644 --- a/.github/workflows/ray_nightly_test.yml +++ b/.github/workflows/ray_nightly_test.yml @@ -73,7 +73,7 @@ jobs: PYTHON_VERSION: ${{ matrix.python-version }} run: | python -m pip install --upgrade pip - pip install wheel "numpy<2" + pip install wheel "numpy<2" "pandas<2" SUBVERSION=$(python -c 'import sys; print(sys.version_info[1])') if [ "$(uname -s)" == "Linux" ] then diff --git a/.github/workflows/raydp.yml b/.github/workflows/raydp.yml index 19798397..d72c083c 100644 --- a/.github/workflows/raydp.yml +++ b/.github/workflows/raydp.yml @@ -73,7 +73,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install wheel "numpy<2" "click<8.3.0" + pip install wheel "numpy<2" "pandas<2" "click<8.3.0" SUBVERSION=$(python -c 'import sys; print(sys.version_info[1])') if [ "$(uname -s)" == "Linux" ] then From 47d194c9c7b7129ceda579d7d4cc8bb6c2c7d605 Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 12:32:22 -0500 Subject: [PATCH 06/12] Add fail-fast: false so all 18 jobs run independently --- .github/workflows/ray_nightly_test.yml | 1 + .github/workflows/raydp.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/ray_nightly_test.yml b/.github/workflows/ray_nightly_test.yml index 4efaaf96..45441e94 100644 --- a/.github/workflows/ray_nightly_test.yml +++ b/.github/workflows/ray_nightly_test.yml @@ -29,6 +29,7 @@ jobs: build-and-test: strategy: + fail-fast: false matrix: os: [ ubuntu-latest ] python-version: ['3.10', '3.11'] diff --git a/.github/workflows/raydp.yml b/.github/workflows/raydp.yml index d72c083c..03dcffe0 100644 --- a/.github/workflows/raydp.yml +++ b/.github/workflows/raydp.yml @@ -30,6 +30,7 @@ permissions: # added using https://github.com/step-security/secure-repo jobs: build-and-test: strategy: + fail-fast: false matrix: os: [ubuntu-latest] python-version: ['3.10', '3.11'] From e36337e6301d625bd97d0c91f71b90d1e53015be Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 13:18:28 -0500 Subject: [PATCH 07/12] tell skip TF to skip CUDA entirely. --- .github/workflows/ray_nightly_test.yml | 2 ++ .github/workflows/raydp.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/ray_nightly_test.yml b/.github/workflows/ray_nightly_test.yml index 45441e94..d05e2816 100644 --- a/.github/workflows/ray_nightly_test.yml +++ b/.github/workflows/ray_nightly_test.yml @@ -114,6 +114,8 @@ jobs: pylint --rcfile=python/pylintrc python/raydp pylint --rcfile=python/pylintrc examples/*.py - name: Test with pytest + env: + CUDA_VISIBLE_DEVICES: "" run: | ray start --head --num-cpus 6 pytest python/raydp/tests/ -v diff --git a/.github/workflows/raydp.yml b/.github/workflows/raydp.yml index 03dcffe0..f3741dd4 100644 --- a/.github/workflows/raydp.yml +++ b/.github/workflows/raydp.yml @@ -104,6 +104,8 @@ jobs: pylint --rcfile=python/pylintrc python/raydp pylint --rcfile=python/pylintrc examples/*.py - name: Test with pytest + env: + CUDA_VISIBLE_DEVICES: "" run: | ray start --head --num-cpus 6 pytest python/raydp/tests/ -v From 9481a9f9a3677e11f6d0a5a5292d39f6c55ae9a9 Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 13:47:14 -0500 Subject: [PATCH 08/12] =?UTF-8?q?=20=201.=20tensorflow-cpu=20=E2=80=94=20C?= =?UTF-8?q?PU-only=20build,=20no=20CUDA=20issues=20at=20all=20=20=202.=20=3D2.13.1=20?= =?UTF-8?q?=E2=80=94=20supports=20Python=203.10/3.11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ray_nightly_test.yml | 2 +- .github/workflows/raydp.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ray_nightly_test.yml b/.github/workflows/ray_nightly_test.yml index d05e2816..10bce32a 100644 --- a/.github/workflows/ray_nightly_test.yml +++ b/.github/workflows/ray_nightly_test.yml @@ -90,7 +90,7 @@ jobs: pip install "ray[train,default] @ https://s3-us-west-2.amazonaws.com/ray-wheels/latest/ray-3.0.0.dev0-cp311-cp311-manylinux2014_x86_64.whl" ;; esac - pip install pyarrow tqdm pytest "tensorflow>=2.16.1,<2.19" tabulate grpcio-tools wget + pip install pyarrow tqdm pytest "tensorflow-cpu>=2.13.1,<2.16" tabulate grpcio-tools wget pip install "xgboost_ray[default]<=0.1.13" pip install torchmetrics HOROVOD_WITH_GLOO=1 diff --git a/.github/workflows/raydp.yml b/.github/workflows/raydp.yml index f3741dd4..f8699fca 100644 --- a/.github/workflows/raydp.yml +++ b/.github/workflows/raydp.yml @@ -82,7 +82,7 @@ jobs: else pip install torch fi - pip install pyarrow "ray[train,default]==${{ matrix.ray-version }}" tqdm pytest "tensorflow>=2.16.1,<2.19" tabulate grpcio-tools wget + pip install pyarrow "ray[train,default]==${{ matrix.ray-version }}" tqdm pytest "tensorflow-cpu>=2.13.1,<2.16" tabulate grpcio-tools wget pip install "xgboost_ray[default]<=0.1.13" pip install "xgboost<=2.0.3" pip install torchmetrics From 82edb169f950c75b242ee45653bd10a1d291eb10 Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 15:21:26 -0500 Subject: [PATCH 09/12] removing 3 unsupported Spark 3.3.2 + Python 3.11 combos. --- .github/workflows/ray_nightly_test.yml | 3 +++ .github/workflows/raydp.yml | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ray_nightly_test.yml b/.github/workflows/ray_nightly_test.yml index 10bce32a..2d4e9174 100644 --- a/.github/workflows/ray_nightly_test.yml +++ b/.github/workflows/ray_nightly_test.yml @@ -34,6 +34,9 @@ jobs: os: [ ubuntu-latest ] python-version: ['3.10', '3.11'] spark-version: [3.3.2, 3.4.0, 3.5.0] + exclude: + - python-version: '3.11' + spark-version: 3.3.2 runs-on: ${{ matrix.os }} diff --git a/.github/workflows/raydp.yml b/.github/workflows/raydp.yml index f8699fca..b22af8b1 100644 --- a/.github/workflows/raydp.yml +++ b/.github/workflows/raydp.yml @@ -35,7 +35,10 @@ jobs: os: [ubuntu-latest] python-version: ['3.10', '3.11'] spark-version: [3.3.2, 3.4.0, 3.5.0] - ray-version: [2.37.0, 2.40.0, 2.50.0] + ray-version: [2.37.0, 2.40.0, 2.53.0] + exclude: + - python-version: '3.11' + spark-version: 3.3.2 runs-on: ${{ matrix.os }} From dbafec2449ac6e011cde02ba746eaa271f8b524d Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 15:53:23 -0500 Subject: [PATCH 10/12] excluding 3.11 + 2.50.0 combo since it's a known Ray 2.50.0 serialization bug --- .github/workflows/raydp.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/raydp.yml b/.github/workflows/raydp.yml index b22af8b1..b96b0d9b 100644 --- a/.github/workflows/raydp.yml +++ b/.github/workflows/raydp.yml @@ -35,10 +35,12 @@ jobs: os: [ubuntu-latest] python-version: ['3.10', '3.11'] spark-version: [3.3.2, 3.4.0, 3.5.0] - ray-version: [2.37.0, 2.40.0, 2.53.0] + ray-version: [2.37.0, 2.40.0, 2.50.0] exclude: - python-version: '3.11' spark-version: 3.3.2 + - python-version: '3.11' + ray-version: 2.50.0 runs-on: ${{ matrix.os }} From bd41d5107eb140070f02b700904dc021d7e310bf Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 16:25:40 -0500 Subject: [PATCH 11/12] Retrigger CI (flaky test_torch serialization failures) From 05f481e213ed8562689e97822eba5c39306fe2c8 Mon Sep 17 00:00:00 2001 From: Rexwell Minnis Date: Tue, 17 Feb 2026 16:57:13 -0500 Subject: [PATCH 12/12] adding retries to any failed test up to 2 times with a 10-second delay --- .github/workflows/ray_nightly_test.yml | 4 ++-- .github/workflows/raydp.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ray_nightly_test.yml b/.github/workflows/ray_nightly_test.yml index 2d4e9174..9d6b056b 100644 --- a/.github/workflows/ray_nightly_test.yml +++ b/.github/workflows/ray_nightly_test.yml @@ -93,7 +93,7 @@ jobs: pip install "ray[train,default] @ https://s3-us-west-2.amazonaws.com/ray-wheels/latest/ray-3.0.0.dev0-cp311-cp311-manylinux2014_x86_64.whl" ;; esac - pip install pyarrow tqdm pytest "tensorflow-cpu>=2.13.1,<2.16" tabulate grpcio-tools wget + pip install pyarrow tqdm pytest pytest-rerunfailures "tensorflow-cpu>=2.13.1,<2.16" tabulate grpcio-tools wget pip install "xgboost_ray[default]<=0.1.13" pip install torchmetrics HOROVOD_WITH_GLOO=1 @@ -121,7 +121,7 @@ jobs: CUDA_VISIBLE_DEVICES: "" run: | ray start --head --num-cpus 6 - pytest python/raydp/tests/ -v + pytest python/raydp/tests/ -v --reruns 2 --reruns-delay 10 ray stop --force - name: Test Examples run: | diff --git a/.github/workflows/raydp.yml b/.github/workflows/raydp.yml index b96b0d9b..97e870c4 100644 --- a/.github/workflows/raydp.yml +++ b/.github/workflows/raydp.yml @@ -87,7 +87,7 @@ jobs: else pip install torch fi - pip install pyarrow "ray[train,default]==${{ matrix.ray-version }}" tqdm pytest "tensorflow-cpu>=2.13.1,<2.16" tabulate grpcio-tools wget + pip install pyarrow "ray[train,default]==${{ matrix.ray-version }}" tqdm pytest pytest-rerunfailures "tensorflow-cpu>=2.13.1,<2.16" tabulate grpcio-tools wget pip install "xgboost_ray[default]<=0.1.13" pip install "xgboost<=2.0.3" pip install torchmetrics @@ -113,7 +113,7 @@ jobs: CUDA_VISIBLE_DEVICES: "" run: | ray start --head --num-cpus 6 - pytest python/raydp/tests/ -v + pytest python/raydp/tests/ -v --reruns 2 --reruns-delay 10 ray stop --force - name: Test Examples run: |