File: test.yml

package info (click to toggle)
zarr 3.1.5-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,068 kB
  • sloc: python: 31,589; makefile: 10
file content (155 lines) | stat: -rw-r--r-- 4,678 bytes parent folder | download
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Test

on:
  push:
    branches: [ main, 3.1.x ]
  pull_request:
    branches: [ main, 3.1.x ]
  workflow_dispatch:

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

jobs:
  test:
    name: os=${{ matrix.os }}, py=${{ matrix.python-version }}, np=${{ matrix.numpy-version }}, deps=${{ matrix.dependency-set }}

    strategy:
      matrix:
        python-version: ['3.11', '3.12', '3.13']
        numpy-version: ['1.26', '2.2']
        dependency-set: ["minimal", "optional"]
        os: ["ubuntu-latest"]
        include:
          - python-version: '3.11'
            numpy-version: '1.26'
            dependency-set: 'optional'
            os: 'macos-latest'
          - python-version: '3.13'
            numpy-version: '2.2'
            dependency-set: 'optional'
            os: 'macos-latest'
          - python-version: '3.11'
            numpy-version: '1.26'
            dependency-set: 'optional'
            os: 'windows-latest'
          - python-version: '3.13'
            numpy-version: '2.2'
            dependency-set: 'optional'
            os: 'windows-latest'
    runs-on: ${{ matrix.os }}

    steps:
    - uses: actions/checkout@v5
      with:
        fetch-depth: 0  # grab all branches and tags
    - name: Set up Python
      uses: actions/setup-python@v6
      with:
        python-version: ${{ matrix.python-version }}
        cache: 'pip'
    - name: Install Hatch
      run: |
        python -m pip install --upgrade pip
        pip install hatch
    - name: Set Up Hatch Env
      run: |
        hatch env create test.py${{ matrix.python-version }}-${{ matrix.numpy-version }}-${{ matrix.dependency-set }}
        hatch env run -e test.py${{ matrix.python-version }}-${{ matrix.numpy-version }}-${{ matrix.dependency-set }} list-env
    - name: Run Tests
      env:
        HYPOTHESIS_PROFILE: ci
      run: |
        hatch env run --env test.py${{ matrix.python-version }}-${{ matrix.numpy-version }}-${{ matrix.dependency-set }} run-coverage
    - name: Upload coverage
      if: ${{ matrix.dependency-set == 'optional' && matrix.os == 'ubuntu-latest' }}
      uses: codecov/codecov-action@v5
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        verbose: true # optional (default = false)

  test-upstream-and-min-deps:
    name: py=${{ matrix.python-version }}-${{ matrix.dependency-set }}

    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.11', "3.13"]
        dependency-set: ["upstream", "min_deps"]
        exclude:
          - python-version: "3.13"
            dependency-set: min_deps
          - python-version: "3.11"
            dependency-set: upstream
    steps:
    - uses: actions/checkout@v5
      with:
        fetch-depth: 0
    - name: Set up Python
      uses: actions/setup-python@v6
      with:
        python-version: ${{ matrix.python-version }}
        cache: 'pip'
    - name: Install Hatch
      run: |
        python -m pip install --upgrade pip
        pip install hatch
    - name: Set Up Hatch Env
      run: |
        hatch env create ${{ matrix.dependency-set }}
        hatch env run -e ${{ matrix.dependency-set }} list-env
    - name: Run Tests
      run: |
        hatch env run --env ${{ matrix.dependency-set }} run-coverage
    - name: Upload coverage
      uses: codecov/codecov-action@v5
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        verbose: true # optional (default = false)

  doctests:
    name: doctests
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
      with:
        fetch-depth: 0 # required for hatch version discovery, which is needed for numcodecs.zarr3
    - name: Set up Python
      uses: actions/setup-python@v6
      with:
        python-version: '3.13'
        cache: 'pip'
    - name: Install Hatch
      run: |
        python -m pip install --upgrade pip
        pip install hatch
    - name: Set Up Hatch Env
      run: |
        hatch run doctest:pip list
    - name: Run Tests
      run: |
        hatch run doctest:test

  test-complete:
    name: Test complete

    needs:
      [
        test,
        test-upstream-and-min-deps,
        doctests
      ]
    if: always()
    runs-on: ubuntu-latest
    steps:
      - name: Check failure
        if: |
          contains(needs.*.result, 'failure') ||
          contains(needs.*.result, 'cancelled')
        run: exit 1
      - name: Success
        run: echo Success!