forked from PyPSA/PyPSA
-
Notifications
You must be signed in to change notification settings - Fork 0
131 lines (112 loc) · 3.31 KB
/
test.yml
File metadata and controls
131 lines (112 loc) · 3.31 KB
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
name: Tests
on:
push:
branches:
- master
- release-branch-v*
pull_request:
branches: ['*']
schedule:
- cron: "0 5 * * *"
# Cancel any in-progress runs when a new run is triggered
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
# Build the Python SDist and wheel, performs metadata and readme linting
name: Build and verify package
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0 # Needed for setuptools_scm
- uses: hynek/build-and-inspect-python-package@v2
id: baipp
outputs:
python-versions: ${{ steps.baipp.outputs.supported_python_classifiers_json_array }}
test:
# Test package build in matrix of OS and Python versions
name: Test package
needs: [build]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ${{ fromJSON(needs.build.outputs.python-versions) }}
os:
- ubuntu-latest
- macos-latest
- windows-latest
api: [default, new_api]
exclude:
- os: macos-latest
api: new_api
- os: windows-latest
api: new_api
env:
MPLBACKEND: Agg # https://github.com/orgs/community/discussions/26434
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0 # Needed for setuptools_scm
- name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install macos dependencies
if: matrix.os == 'macos-latest'
run: |
brew update
# pkg-config is deprecated but still installed in runner
# Can be removed once it is removed from the runner
brew unlink pkg-config@0.29.2 || true
brew install hdf5
- name: Download package
uses: actions/download-artifact@v5
with:
name: Packages
path: dist
- name: Install package and dependencies
run: |
python -m pip install uv
uv sync --all-extras --no-install-project
uv pip install "$(ls dist/*.whl)"
- name: Run unit tests (old API)
if: matrix.api == 'default'
run: |
uv run pytest --mpl --cov=pypsa && uv run coverage xml
- name: Run unit tests (new API)
if: matrix.api == 'new_api'
run: |
uv run pytest --new-components-api
- name: Upload code coverage report
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.13'
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
check-types:
name: Check types
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0 # Needed for setuptools_scm
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: 3.12
- name: Download package
uses: actions/download-artifact@v5
with:
name: Packages
path: dist
- name: Install package and dependencies
run: |
python -m pip install uv
uv sync --all-extras --no-install-project
uv pip install "$(ls dist/*.whl)"
- name: Run type checker (mypy)
run: |
uv run mypy .