forked from Cellophil/PyPSA
-
Notifications
You must be signed in to change notification settings - Fork 0
147 lines (124 loc) · 3.71 KB
/
test.yml
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
name: Tests
on:
push:
branches: [master]
pull_request:
branches: ['*']
schedule:
- cron: "0 5 * * TUE"
# 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 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]"
# Use --compile to get pip's behavior. Otherwise the pandapower installation
# will be broken on python<3.12
# See https://github.com/astral-sh/uv/issues/1928#issuecomment-1968857514
- name: Test with pytest
run: |
coverage run -m pytest
coverage xml
cat coverage.xml
- name: Upload code coverage report
uses: codecov/codecov-action@v4
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]"
- name: Run type checker (mypy)
run: |
mypy .