Merge pull request #235 from knutfrode/dev #750
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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/* |