Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
8fb6660
Drop Python 3.9
ariostas Nov 18, 2025
ce28bdf
Added timeouts
ariostas Nov 18, 2025
08d155d
Fixed test check logic
ariostas Nov 18, 2025
4f3b01f
Try fixing awkward-cpp installation
ariostas Nov 18, 2025
cf6ee40
Try fixing installations
ariostas Nov 18, 2025
e69c42b
Another try
ariostas Nov 18, 2025
0879e2c
Fix uproot install
ariostas Nov 18, 2025
0db449d
use uvx, no extras for awkward and editable installation
ikrommyd Nov 18, 2025
7a5a8aa
ditch packages from pyproject toml
ikrommyd Nov 18, 2025
5867743
Add fetch-depth option to vector repository checkout
ikrommyd Nov 18, 2025
4eaacf0
Fail job after artifact was uploaded
ariostas Nov 18, 2025
40cfad9
remove Java from ci
ikrommyd Nov 18, 2025
79e620a
add ml requirements for awkward too
ikrommyd Nov 18, 2025
808f634
add fetch depth to uproot and awkward too
ikrommyd Nov 18, 2025
f9d2ece
cd for all tests
ikrommyd Nov 19, 2025
35c3c31
typo
ikrommyd Nov 19, 2025
3254ece
typo
ikrommyd Nov 19, 2025
2dad807
typo
ikrommyd Nov 19, 2025
46bb426
vector is scikit-hep project
ikrommyd Nov 19, 2025
1c4f067
only use multiple workers if dask client is off for coffea
ikrommyd Nov 19, 2025
de4cdbe
add xdist and timeout to pyproject
ikrommyd Nov 19, 2025
515daf0
Needed a non-empty string
ariostas Nov 19, 2025
a939c68
Don't parallelize awkward tests on windows
ariostas Nov 19, 2025
fc77b4f
Disable uv cache
ariostas Nov 19, 2025
f80d5e8
Added retries to dask-awkward tests
ariostas Nov 24, 2025
efe3a62
Make dask-awkward tests required
ariostas Nov 24, 2025
4975a2a
Back to dask-awkward tests being optional
ariostas Nov 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,33 +28,27 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macOS-latest, windows-latest]
java-version: [17]
java-distribution: ["corretto"]
python-version: ["3.9", "3.13"]
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.10", "3.13"]
dask-client: ["with", "without"]

name: Test (${{ matrix.os }}) - 🐍 ${{ matrix.python-version }}, JDK${{ matrix.java-version }}, ${{ matrix.dask-client }} dask
name: Test (${{ matrix.os }}) - 🐍 ${{ matrix.python-version }}, ${{ matrix.dask-client }} dask

env:
FILENAME: results-${{ matrix.os }}-${{ matrix.python-version }}-JDK${{ matrix.java-version }}-${{ matrix.dask-client }}.md
FILENAME: results-${{ matrix.os }}-${{ matrix.python-version }}-${{ matrix.dask-client }}.md

steps:
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: JDK ${{ matrix.java-distribution }}/${{ matrix.java-version }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java-version }}
distribution: ${{ matrix.java-distribution }}

- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: false

- name: Sync env
run: |
Expand All @@ -68,6 +62,7 @@ jobs:
path: repo-awkward
submodules: true
ref: "main"
fetch-depth: 0

- name: Clone dask-contrib/dask-awkward
uses: actions/checkout@v4
Expand All @@ -84,13 +79,15 @@ jobs:
repository: scikit-hep/uproot5
path: repo-uproot5
ref: "main"
fetch-depth: 0

- name: Clone scikit-hep/vector
uses: actions/checkout@v4
with:
repository: scikit-hep/vector
path: repo-vector
ref: "main"
fetch-depth: 0

- name: Clone scikit-hep/coffea
uses: actions/checkout@v4
Expand All @@ -100,43 +97,31 @@ jobs:
ref: "master"
fetch-depth: 0

- name: Build awkward-cpp
- name: Build awkward-cpp and awkward
run: |
cd repo-awkward
pipx run nox -s prepare -- --headers --signatures --tests
uv pip install -vv ./awkward-cpp
cd ..

- name: Build awkward
run: |
cd repo-awkward
uv pip install '.[test]'
uv pip install -r requirements-test-full.txt
cd ..
uvx nox -s prepare -- --headers --signatures --tests
uv pip install -vv . ./awkward-cpp -r requirements-test-full.txt -r requirements-test-ml.txt

- name: Build dask-awkward
run: |
cd repo-dask-awkward
uv pip install '.[complete,test]'
cd ..

- name: Build uproot
run: |
cd repo-uproot5
uv pip install -e. --group=dev
cd ..
uv pip install . --group=dev

- name: Build vector
run: |
cd repo-vector
uv pip install '.[dev]'
cd ..
uv pip install . --group=dev --group=test-all

- name: Build coffea
run: |
cd repo-coffea
uv pip install '.[dev,dask]'
cd ..

- name: Add xdist
run: uv pip install pytest-xdist
Expand All @@ -147,7 +132,8 @@ jobs:
- name: Test scikit-hep/awkward
id: test-awkward
run: |
if uv run pytest -vv -rs repo-awkward/tests -n 4; then
cd repo-awkward
if uv run --project .. pytest -vv -rs tests ${{ matrix.os != 'windows-latest' && '-n 4' || '' }} --timeout=1000; then
echo "success=true" >> $GITHUB_OUTPUT
else
echo "success=false" >> $GITHUB_OUTPUT
Expand All @@ -156,7 +142,8 @@ jobs:
- name: Test dask-contrib/dask-awkward
id: test-dask-awkward
run: |
if uv run pytest -vv -rs repo-dask-awkward/tests -n 1; then
cd repo-dask-awkward
if uv run --project .. pytest -vv -rs tests --reruns 10 --reruns-delay 30 --timeout=1000; then
echo "success=true" >> $GITHUB_OUTPUT
else
echo "success=false" >> $GITHUB_OUTPUT
Expand All @@ -165,52 +152,59 @@ jobs:
- name: Test scikit-hep/uproot5
id: test-uproot
run: |
cd repo-uproot5/
if uv run --project .. pytest -vv -rs tests --reruns 10 --reruns-delay 30 --only-rerun "(?i)http|ssl|timeout|expired|connection|socket"; then
cd repo-uproot5
if uv run --project .. pytest -vv -rs tests --reruns 10 --reruns-delay 30 --only-rerun "(?i)http|ssl|timeout|expired|connection|socket" --timeout=1000; then
echo "success=true" >> $GITHUB_OUTPUT
else
echo "success=false" >> $GITHUB_OUTPUT
fi

- name: Test dask-contrib/vector
- name: Test scikit-hep/vector
id: test-vector
run: |
cd repo-vector/
if uv run --project .. pytest -vv -rs tests --ignore tests/test_notebooks.py -n 4; then
cd repo-vector
if uv run --project .. pytest -vv -rs tests --ignore tests/test_notebooks.py -n 4 --timeout=1000; then
echo "success=true" >> $GITHUB_OUTPUT
else
echo "success=false" >> $GITHUB_OUTPUT
fi

- name: Test scikit-hep/coffea, (${{ matrix.dask-client }} dask Client - run in parallel)
- name: Test scikit-hep/coffea (${{ matrix.dask-client }} dask Client)
id: test-coffea
run: |
cd repo-coffea/
if uv run --project .. pytest -vv -rs tests --deselect=test_taskvine -m "${{ matrix.dask-client == 'without' && 'not ' || '' }}dask_client" -n 4; then
cd repo-coffea
if uv run --project .. pytest -vv -rs tests --deselect=test_taskvine -m "${{ matrix.dask-client == 'without' && 'not ' || '' }}dask_client" ${{ matrix.dask-client == 'without' && '-n 4' || '' }} --timeout=1000; then
echo "success=true" >> $GITHUB_OUTPUT
else
echo "success=false" >> $GITHUB_OUTPUT
fi

- name: Save results to file
run: |
echo -n "| ${{ matrix.os }}, Python${{ matrix.python-version }}, JDK${{ matrix.java-version }}, ${{ matrix.dask-client }} Dask | " > $FILENAME
echo -n "${{ steps.test-awkward.outputs.success && '✅' || '❌' }} | " >> $FILENAME
echo -n "${{ steps.test-dask-awkward.outputs.success && '✅' || '❌' }} | " >> $FILENAME
echo -n "${{ steps.test-uproot.outputs.success && '✅' || '❌' }} | " >> $FILENAME
echo -n "${{ steps.test-vector.outputs.success && '✅' || '❌' }} | " >> $FILENAME
echo "${{ steps.test-coffea.outputs.success && '✅' || '❌' }} |" >> $FILENAME
# Fail the job if any of the tests failed
# Ignore the output outcome of dask-awkward since it's flaky
${{ steps.test-awkward.outputs.success && steps.test-uproot.outputs.success && steps.test-vector.outputs.success && steps.test-coffea.outputs.success && 'true' || 'false' }}

echo -n "| ${{ matrix.os }}, Python${{ matrix.python-version }}, ${{ matrix.dask-client }} Dask | " > $FILENAME
echo -n "${{ steps.test-awkward.outputs.success == 'true' && '✅' || '❌' }} | " >> $FILENAME
echo -n "${{ steps.test-dask-awkward.outputs.success == 'true' && '✅' || '❌' }} | " >> $FILENAME
echo -n "${{ steps.test-uproot.outputs.success == 'true' && '✅' || '❌' }} | " >> $FILENAME
echo -n "${{ steps.test-vector.outputs.success == 'true' && '✅' || '❌' }} | " >> $FILENAME
echo "${{ steps.test-coffea.outputs.success == 'true' && '✅' || '❌' }} |" >> $FILENAME

- name: Upload results artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.FILENAME }}
path: ${{ env.FILENAME }}

- name: Check if tests failed
run: |
echo ${{ steps.test-awkward.outputs.success == 'true' && ' ' || 'Awkward tests failed' }}
echo ${{ steps.test-dask-awkward.outputs.success == 'true' && ' ' || 'Dask Awkward tests failed' }}
echo ${{ steps.test-uproot.outputs.success == 'true' && ' ' || 'Uproot tests failed' }}
echo ${{ steps.test-vector.outputs.success == 'true' && ' ' || 'Vector tests failed' }}
echo ${{ steps.test-coffea.outputs.success == 'true' && ' ' || 'Coffea tests failed' }}
# Fail the job if any of the tests failed
# Ignore the output outcome of dask-awkward since it's flaky
${{ (steps.test-awkward.outputs.success == 'true' && steps.test-uproot.outputs.success == 'true' && steps.test-vector.outputs.success == 'true' && steps.test-coffea.outputs.success == 'true') && 'true' || 'false' }}


summary:
name: Collect results
Expand Down
11 changes: 3 additions & 8 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,9 @@
name = "integration-tests"
version = "0.1.0"
readme = "README.md"
requires-python = ">=3.9"
requires-python = ">=3.10"
dependencies = [
"pytest",
"pyarrow==18.0.0", # this may need a fix in awkward-array for newer versions
# the next at their current HEAD
"awkward @ git+https://github.com/scikit-hep/awkward.git",
"uproot @ git+https://github.com/scikit-hep/uproot5.git",
"vector @ git+https://github.com/scikit-hep/vector.git",
"coffea @ git+https://github.com/scikit-hep/coffea.git",
"dask-awkward @ git+https://github.com/dask-contrib/dask-awkward.git",
"pytest-timeout",
"pytest-xdist",
]