-
Notifications
You must be signed in to change notification settings - Fork 5
104 lines (94 loc) · 3.21 KB
/
Copy pathpython.yml
File metadata and controls
104 lines (94 loc) · 3.21 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
name: Python
on:
push:
branches:
- main
tags:
- v*
pull_request:
jobs:
tests:
name: pytests (${{ matrix.os }} - ${{ matrix.python-version }}, Miniforge)
runs-on: ${{ matrix.os }}-latest
defaults:
run:
shell: bash -l {0}
strategy:
fail-fast: false
matrix:
os: ["ubuntu", "macos", "windows"]
python-version: [ '3.12', '3.13', '3.14' ]
steps:
- uses: actions/checkout@v4
- uses: mamba-org/setup-micromamba@v2
with:
environment-file: environment.yml
cache-environment: true
post-cleanup: 'all'
init-shell: >-
bash
powershell
create-args: python=${{ matrix.python-version }}
- name: Cache cartopy maps
id: cache-cartopy
uses: actions/cache@v4
with:
path: ~/.local/share/cartopy
key: cartopy-maps-gshhg-2.3.7-ne50m
- name: Download cartopy shapefiles
if: steps.cache-cartopy.outputs.cache-hit != 'true'
run: |
mkdir -p ~/.local/share/cartopy/shapefiles/
cd ~/.local/share/cartopy/shapefiles/
curl -L -o gshhg-shp-2.3.7.zip https://github.com/GenericMappingTools/gshhg-gmt/releases/download/2.3.7/gshhg-shp-2.3.7.zip
unzip -o gshhg-shp-2.3.7.zip
mv GSHHS_shp gshhs
rm gshhg-shp-2.3.7.zip
python -c "import cartopy; list(map(cartopy.io.shapereader.gshhs, ('c', 'l', 'i', 'h', 'f')))"
python -c "import cartopy; cartopy.io.shapereader.natural_earth(resolution='110m', category='cultural', name='admin_0_countries')"
python -c "import cartopy; cartopy.io.shapereader.natural_earth(resolution='50m', category='physical', name='coastline')"
- name: Run tests
run: |
pytest -vs --log-cli-level=debug ${{ matrix.os != 'macos' && '--mpl --mpl-results-path=mpl-results --mpl-generate-summary=html' || '' }}
- name: Upload mpl diff results
if: always()
uses: actions/upload-artifact@v4
with:
name: mpl-results-${{ matrix.os }}-py${{ matrix.python-version }}
path: mpl-results
if-no-files-found: ignore
- name: Build wheels
run: |
pip install build
python -m build
ls -l dist/*
- name: Upload wheels
if: matrix.python-version == '3.14' && matrix.os == 'ubuntu'
uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.os }}
path: dist
overwrite: true
release:
name: Release
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs: [ tests ]
steps:
- uses: actions/download-artifact@v4
with:
path: wheels
pattern: wheels-*
merge-multiple: true
- uses: conda-incubator/setup-miniconda@v2
with:
python-version: '3.14'
- name: Publish to PyPi
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
ls -l wheels/*
pip install --upgrade typing-extensions twine==6.0.1 pkginfo setuptools wheel build
pip list
twine upload --skip-existing wheels/*