-
Notifications
You must be signed in to change notification settings - Fork 35
135 lines (114 loc) · 3.94 KB
/
Copy pathpyscal.yml
File metadata and controls
135 lines (114 loc) · 3.94 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
name: pyscal
on:
push:
branches:
- main
pull_request:
branches:
- main
release:
types:
- published
schedule:
# Run CI every night and check that tests are working with latest dependencies
- cron: "0 0 * * *"
env:
# Default python version to be use to create docs
DEFAULT_PYTHON_VERSION: "3.12"
UV_SYSTEM_PYTHON: 1
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
pyscal:
timeout-minutes: 30
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.11", "3.12", "3.13", "3.14"]
os: ["ubuntu-latest"]
pandas-version: [""]
include:
- os: "macos-latest"
python-version: "3.13"
- os: "windows-latest"
python-version: "3.13"
- python-version: "3.13"
pandas-version: ">=2,<3"
os: "ubuntu-latest"
- python-version: "3.13"
pandas-version: ">=3.0.0"
os: "ubuntu-latest"
exclude:
- python-version: "3.13"
pandas-version: ""
steps:
- name: Checkout commit locally
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
python-version: ${{ matrix.python-version }}
- name: Install pyscal with dependencies
if: ${{ always() }}
run: |
uv pip install ".[tests, docs]"
- name: Install opm and res2df
if: matrix.python-version == '3.13' && matrix.os == 'ubuntu-latest'
run: |
# for extra tests
uv pip install opm res2df
- name: Pin pandas version
if: matrix.pandas-version
run: uv pip install "pandas${{ matrix.pandas-version }}"
- name: List all installed packages
if: ${{ always() }}
run: uv pip freeze
- name: Linting using pre-commit
if: ${{ always() }}
run: |
pre-commit run --all-files --show-diff-on-failure
- name: Check typing with mypy
if: ${{ always() }}
run: |
mypy src/pyscal
- name: Run tests
if: ${{ always() }}
run: |
python -c "import pyscal"
pytest -n auto --strict-markers --hypothesis-profile ci tests/
- name: Install font (xkcd) for documentation
if: ${{ matrix.os == 'ubuntu-latest' && matrix.python-version == env.DEFAULT_PYTHON_VERSION }}
run: |
sudo apt-get install -y fonts-humor-sans
- name: Build documentation
if: ${{ matrix.os == 'ubuntu-latest' && matrix.python-version == env.DEFAULT_PYTHON_VERSION }}
run: |
python docs/make_plots.py
sphinx-build -b html docs ./build/sphinx/html
- name: Update GitHub pages
if: ${{ github.event_name == 'release' && matrix.os == 'ubuntu-latest' && matrix.python-version == env.DEFAULT_PYTHON_VERSION }}
run: |
cp -R ./build/sphinx/html ../html
git config --local user.email "pyscal-github-action"
git config --local user.name "pyscal-github-action"
git fetch origin gh-pages
git stash # Due to make_plots.py above maybe having modified png files
git checkout --track origin/gh-pages
git clean -f -f -d -x # Double -f is intentional
git rm -r *
cp -R ../html/* .
git add .
if git diff-index --quiet HEAD; then
echo "No changes in documentation. Skip documentation deploy."
else
git commit -m "Update Github Pages"
git push "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git" gh-pages
fi