File: ci.yaml

package info (click to toggle)
flox 0.11.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 3,884 kB
  • sloc: python: 8,581; makefile: 154
file content (137 lines) | stat: -rw-r--r-- 4,875 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
name: CI
on:
  push:
    branches:
      - "main"
  pull_request:
    branches:
      - "*"
  schedule:
    - cron: "0 0 * * *" # Daily “At 00:00”
  workflow_dispatch: # allows you to trigger manually

concurrency:
  group: ${{ github.ref }}
  cancel-in-progress: true

jobs:
  test:
    name: Test (${{matrix.env}}, ${{ matrix.python-version }}, ${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: ["ubuntu-latest"]
        env: ["complete"]
        python-version: ["3.11", "3.14"]
        include:
          - os: "windows-latest"
            env: "complete"
            python-version: "3.14"
          - os: "ubuntu-latest"
            env: "no-dask"
            python-version: "3.14"
          - os: "ubuntu-latest"
            env: "minimal"
            python-version: "3.11"
          - os: "windows-latest"
            env: "numpy1"
            python-version: "3.11"
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0 # Fetch all history for all branches and tags.
      - name: Set environment variables
        run: |
          echo "PYTHON_VERSION=${{ matrix.python-version }}" >> $GITHUB_ENV
      - name: Set up Python and uv
        uses: astral-sh/setup-uv@v7
        with:
          python-version: ${{ matrix.python-version }}
          enable-cache: true
          cache-dependency-glob: "pyproject.toml"
      - name: Install dependencies (with config file)
        if: matrix.env == 'numpy1'
        run: uv sync --group ${{ matrix.env }} --config-file uv-numpy1.toml --no-dev
      - name: Install dependencies (without config file)
        if: matrix.env != 'numpy1'
        run: uv sync --group ${{ matrix.env }} --no-dev

      # https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache
      - name: Restore cached hypothesis directory
        id: restore-hypothesis-cache
        uses: actions/cache/restore@v5
        with:
          path: .hypothesis/
          key: cache-hypothesis-${{ runner.os }}-${{ matrix.python-version }}-${{ github.run_id }}
          restore-keys: |
            cache-hypothesis-${{ runner.os }}-${{ matrix.python-version }}-

      - name: Run Tests
        id: status
        run: |
          uv run --no-dev python -c "import xarray; xarray.show_versions()" || true
          uv run --no-dev pytest --durations=20 --durations-min=0.5 -n auto --cov=./ --cov-report=xml --hypothesis-profile ci
      - name: Upload code coverage to Codecov
        uses: codecov/codecov-action@v5.5.2
        with:
          file: ./coverage.xml
          flags: unittests
          env_vars: RUNNER_OS,PYTHON_VERSION
          name: codecov-umbrella
          fail_ci_if_error: false

      # explicitly save the cache so it gets updated, also do this even if it fails.
      - name: Save cached hypothesis directory
        id: save-hypothesis-cache
        if: always() && steps.status.outcome != 'skipped'
        uses: actions/cache/save@v5
        with:
          path: .hypothesis/
          key: cache-hypothesis-${{ runner.os }}-${{ matrix.python-version }}-${{ github.run_id }}

  xarray-groupby:
    name: xarray-groupby
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          repository: "pydata/xarray"
          fetch-depth: 0 # Fetch all history for all branches and tags.
      - name: Set up Python and uv
        uses: astral-sh/setup-uv@v7
        with:
          python-version: "3.14"
          enable-cache: true
          cache-dependency-glob: "pyproject.toml"
      - name: Install xarray and dependencies
        run: |
          uv add --dev ".[dev]" "pint>=0.22"
          uv pip uninstall h5netcdf
          uv pip install pytz
      - name: Install upstream flox
        run: |
          uv add git+https://github.com/dcherian/flox.git@${{ github.ref }}
      - name: Version info
        run: |
          uv tree
          uv run --no-dev python xarray/util/print_versions.py
      - name: import xarray
        run: |
          uv run --no-dev python -c 'import xarray'
      - name: import flox
        run: |
          uv run --no-dev python -c 'import flox'
      - name: Run Tests
        if: success()
        id: status
        run: |
          set -euo pipefail
          uv run --no-dev python -m pytest -n auto \
              xarray/tests/test_groupby.py \
              xarray/tests/test_units.py::TestDataArray::test_computation_objects \
              xarray/tests/test_units.py::TestDataArray::test_grouped_operations \
              xarray/tests/test_units.py::TestDataArray::test_resample \
              xarray/tests/test_units.py::TestDataset::test_computation_objects \
              xarray/tests/test_units.py::TestDataset::test_grouped_operations \
              xarray/tests/test_units.py::TestDataset::test_resample