@@ -16,7 +16,7 @@ permissions:
1616 contents : read
1717
1818env :
19- PYTHON_VERSION : ' 3.11'
19+ PYTHON_VERSION : " 3.11"
2020
2121defaults :
2222 run :
3737 working-directory : icechunk-python
3838 args : --release --out dist --find-interpreter
3939 sccache : true
40+ env :
41+ CARGO_TERM_QUIET : true
4042
4143 - name : Upload wheels
4244 uses : actions/upload-artifact@v4
@@ -47,13 +49,25 @@ jobs:
4749 test :
4850 runs-on : ubuntu-latest
4951 needs : [build-wheels]
52+ strategy :
53+ matrix :
54+ deps-version :
55+ - name : minimum
56+ xarray : " 2025.01.2"
57+ dask : " 2024.11.0"
58+ distributed : " 2024.11.0"
59+ zarr : " 3.0.8"
60+ - name : latest
61+ xarray : " latest-release"
62+ dask : " latest-release"
63+ distributed : " latest-release"
64+ zarr : " latest-release"
5065 steps :
5166 - uses : actions/checkout@v5
5267 - name : Stand up MinIO
5368 run : |
5469 docker compose up -d minio
5570
56-
5771 - name : Download wheels
5872 uses : actions/download-artifact@v5
5973 with :
7589 enable-cache : true
7690 python-version : ${{ env.PYTHON_VERSION }}
7791
78- - name : Install dependencies
92+ - name : Install dependencies - ${{ matrix.deps-version.name }}
7993 shell : bash
8094 working-directory : icechunk-python
8195 run : |
8599 python --version
86100 WHEEL=$(ls dist/*-cp311-*.whl)
87101 uv pip install "${WHEEL}[test]"
102+ # Install specific versions based on matrix
103+ if [ "${{ matrix.deps-version.name }}" = "minimum" ]; then
104+ echo "Installing minimum versions:"
105+ uv pip install --upgrade 'xarray==${{ matrix.deps-version.xarray }}' 'dask==${{ matrix.deps-version.dask }}' 'distributed==${{ matrix.deps-version.distributed }}' 'zarr==${{ matrix.deps-version.zarr }}'
106+ else
107+ echo "Using latest versions (already installed)"
108+ fi
109+ echo "Installed package versions:"
110+ uv pip list | grep -E "(xarray|dask|distributed|zarr)"
88111
89112 # this is here instead of earlier to give minio more time to get up and running
90113 # checking and waiting only right before we need it
@@ -114,11 +137,20 @@ jobs:
114137 uses : actions/cache/save@v4
115138 with :
116139 path : icechunk-python/.hypothesis/
117- key : cache-hypothesis-${{ runner.os }}-${{ github.run_id }}
140+ key : cache-hypothesis-${{ runner.os }}-${{ github.run_id }}-${{ matrix.deps-version.name }}
118141
119142 xarray-backends :
120143 runs-on : ubuntu-latest
121144 needs : [build-wheels]
145+ strategy :
146+ matrix :
147+ xarray-version :
148+ - name : minimum
149+ version : " 2025.01.2"
150+ zarr : " 3.0.8"
151+ - name : latest-release
152+ version : " latest-release"
153+ zarr : " latest-release"
122154 steps :
123155 - uses : actions/checkout@v5
124156 with :
@@ -129,13 +161,6 @@ jobs:
129161 run : |
130162 docker compose up -d minio
131163
132-
133- - uses : actions/checkout@v5
134- with :
135- repository : " pydata/xarray"
136- path : " xarray"
137- fetch-depth : 0 # Fetch all history for all branches and tags.
138-
139164 - name : Download wheels
140165 uses : actions/download-artifact@v5
141166 with :
@@ -161,9 +186,39 @@ jobs:
161186 WHEEL=$(ls dist/*-cp311-*.whl)
162187 uv pip install "${WHEEL}[test]"
163188 uv pip install pytest-mypy-plugins
189+ # Install specific xarray version based on matrix
190+ if [ "${{ matrix.xarray-version.version }}" != "latest-release" ]; then
191+ echo "Installing xarray ${{ matrix.xarray-version.version }}"
192+ uv pip install --upgrade 'xarray==${{ matrix.xarray-version.version }}'
193+ fi
194+ # Install specific zarr version based on matrix
195+ if [ "${{ matrix.xarray-version.zarr }}" != "latest-release" ]; then
196+ echo "Installing zarr ${{ matrix.xarray-version.zarr }}"
197+ uv pip install --upgrade 'zarr==${{ matrix.xarray-version.zarr }}'
198+ fi
199+ echo "Installed package versions:"
200+ python -c "import xarray; import zarr; print(f'xarray: {xarray.__version__}'); print(f'zarr: {zarr.__version__}')"
201+
202+ - name : Checkout xarray at installed version
203+ shell : bash
204+ working-directory : icechunk/icechunk-python
205+ run : |
206+ set -e
207+ source .venv/bin/activate
208+ XARRAY_VERSION=$(python -c "import xarray; print(xarray.__version__)")
209+ # Convert version to tag format (e.g., 2025.1.2 -> v2025.01.2)
210+ XARRAY_TAG=$(python -c "
211+ import xarray
212+ v = xarray.__version__
213+ parts = v.split('.')
214+ # Zero-pad month to 2 digits
215+ tag = f'v{parts[0]}.{parts[1].zfill(2)}.{parts[2]}'
216+ print(tag)
217+ ")
218+ echo "Checking out xarray ${XARRAY_TAG} (version ${XARRAY_VERSION})"
219+ cd ../../
220+ git clone --depth 1 --branch "${XARRAY_TAG}" https://github.com/pydata/xarray.git xarray
164221
165- # this is here instead of earlier to give minio more time to get up and running
166- # checking and waiting only right before we need it
167222 - name : Wait for MinIO to be ready
168223 working-directory : icechunk
169224 run : |
@@ -179,7 +234,6 @@ jobs:
179234 working-directory : icechunk/icechunk-python
180235 env :
181236 ICECHUNK_XARRAY_BACKENDS_TESTS : 1
182- ICECHUNK_LOG : trace
183237 run : |
184238 set -e
185239 # pass xarray's pyproject.toml so that pytest can find the `flaky` fixture
0 commit comments