forked from PyPSA/PyPSA
-
Notifications
You must be signed in to change notification settings - Fork 0
158 lines (133 loc) · 4.07 KB
/
Copy pathtest.yml
File metadata and controls
158 lines (133 loc) · 4.07 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
name: Tests
on:
push:
branches: [master]
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@v4
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
env:
MPLBACKEND: Agg # https://github.com/orgs/community/discussions/26434
steps:
- uses: actions/checkout@v4
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@v4
with:
name: Packages
path: dist
- name: Install package and dependencies
run: |
python -m pip install uv
uv pip install --compile --system "$(ls dist/*.whl)[dev,hdf5]"
- name: Test with pytest
if: matrix.os != 'windows-latest' || matrix.python-version != '3.13'
run: |
coverage run -m pytest
coverage xml
- name: Test with pytest (windows & Python 3.13)
if: matrix.os == 'windows-latest' && matrix.python-version == '3.13'
run: |
coverage run -m pytest
coverage xml
return 0
- name: Upload code coverage report
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
test-docs-build:
name: Test docs build # Also tests example notebooks (similar to nbmake)
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
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@v4
with:
name: Packages
path: dist
- name: Install package and dependencies
run: |
python -m pip install uv
uv pip install --system nbmake requests
uv pip install --system "$(ls dist/*.whl)[dev, cartopy, docs]"
- name: Test docs build
run: |
sudo apt-get install -y pandoc
pytest test/test_docs.py --test-docs
check-types:
name: Check types
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
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@v4
with:
name: Packages
path: dist
- name: Install package and dependencies
run: |
python -m pip install uv
uv pip install --system nbmake requests
uv pip install --system "$(ls dist/*.whl)[dev]"
# TODO: Remove once types in linopy are resolved
uv pip install --system linopy==0.3.14 --reinstall
- name: Run type checker (mypy)
run: |
mypy .