Skip to content

Commit

Permalink
Migrate to pyproject.toml, ruff, add build CI (#400)
Browse files Browse the repository at this point in the history
Closes #209
  • Loading branch information
dcherian authored Jan 27, 2023
1 parent 2713858 commit 736dfda
Show file tree
Hide file tree
Showing 9 changed files with 300 additions and 103 deletions.
97 changes: 83 additions & 14 deletions .github/workflows/pypi.yaml
Original file line number Diff line number Diff line change
@@ -1,26 +1,95 @@
name: Upload Package to PyPI

name: Build and Upload to PyPI
on:
release:
types: [created]
types:
- published
push:
tags:
- 'v*'

jobs:
deploy:
build-artifacts:
runs-on: ubuntu-latest
if: github.repository == 'xarray-contrib/cf-xarray'
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
fetch-depth: 0
- uses: actions/setup-python@v4
name: Install Python
with:
python-version: 3.8

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools setuptools-scm wheel twine
- name: Build and publish
env:
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
python -m pip install build twine
- name: Build tarball and wheels
run: |
git clean -xdf
git restore -SW .
python -m build
- name: Check built artifacts
run: |
python -m twine check --strict dist/*
pwd
if [ -f dist/cf_xarray-0.0.0.tar.gz ]; then
echo "❌ INVALID VERSION NUMBER"
exit 1
else
echo "✅ Looks good"
fi
- uses: actions/upload-artifact@v3
with:
name: releases
path: dist

test-built-dist:
needs: build-artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v4
name: Install Python
with:
python-version: 3.8
- uses: actions/download-artifact@v3
with:
name: releases
path: dist
- name: List contents of built dist
run: |
ls -ltrh
ls -ltrh dist
- name: Verify the built dist/wheel is valid
if: github.event_name == 'push'
run: |
python setup.py sdist bdist_wheel
twine upload dist/*
python -m pip install --upgrade pip
python -m pip install dist/cf_xarray*.whl
python -m cf_xarray.scripts.print_versions
- name: Publish package to TestPyPI
if: github.event_name == 'push'
uses: pypa/gh-action-pypi-publish@v1.6.4
with:
password: ${{ secrets.TESTPYPI_TOKEN }}
repository_url: https://test.pypi.org/legacy/
verbose: true


upload-to-pypi:
needs: test-built-dist
if: github.event_name == 'release'
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
name: releases
path: dist
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@v1.6.4
with:
password: ${{ secrets.PYPI_PASSWORD }}
verbose: true
89 changes: 89 additions & 0 deletions .github/workflows/testpypi-release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: Build and Upload to TestPyPI

on:
push:
branches:
- "main"
pull_request:
types: [opened, reopened, synchronize, labeled]
branches:
- "*"
workflow_dispatch:

# no need for concurrency limits

jobs:
build-artifacts:
if: ${{ contains( github.event.pull_request.labels.*.name, 'test-build') && github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- uses: actions/setup-python@v4
name: Install Python
with:
python-version: "3.10"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install build twine
python -m pip install tomli tomli_w
# - name: Disable local versions
# run: |
# python .github/workflows/configure-testpypi-version.py pyproject.toml
# git update-index --assume-unchanged pyproject.toml
# cat pyproject.toml

- name: Build tarball and wheels
run: |
git clean -xdf
python -m build
- name: Check built artifacts
run: |
python -m twine check --strict dist/*
if [ -f dist/cf_xarray-0.0.0.tar.gz ]; then
echo "❌ INVALID VERSION NUMBER"
exit 1
else
echo "✅ Looks good"
fi
- uses: actions/upload-artifact@v3
with:
name: releases
path: dist

test-built-dist:
needs: build-artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v4
name: Install Python
with:
python-version: "3.10"
- uses: actions/download-artifact@v3
with:
name: releases
path: dist
- name: List contents of built dist
run: |
ls -ltrh
ls -ltrh dist
- name: Verify the built dist/wheel is valid
run: |
python -m pip install --upgrade pip
python -m pip install dist/cf_xarray*.whl
python -m cf_xarray.scripts.print_versions
# - name: Publish package to TestPyPI
# uses: pypa/gh-action-pypi-publish@v1.6.4
# with:
# password: ${{ secrets.TESTPYPI_TOKEN }}
# repository_url: https://test.pypi.org/legacy/
# verbose: true
29 changes: 9 additions & 20 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,24 @@ ci:
autoupdate_schedule: quarterly

repos:
- repo: https://github.com/PyCQA/isort
rev: 5.11.4
- repo: https://github.com/charliermarsh/ruff-pre-commit
# Ruff version.
rev: 'v0.0.235'
hooks:
- id: isort
files: .+\.py$
- id: ruff
args: ["--fix"]

- repo: https://github.com/psf/black
rev: 22.12.0
hooks:
- id: black

- repo: https://github.com/PyCQA/flake8
rev: 6.0.0
hooks:
- id: flake8

- repo: https://github.com/rstcheck/rstcheck
rev: v6.1.1
hooks:
- id: rstcheck
additional_dependencies: [sphinx]
additional_dependencies: [sphinx, tomli]
args: ['--config', 'pyproject.toml']

- repo: https://github.com/executablebooks/mdformat
rev: 0.7.16
Expand All @@ -36,29 +33,21 @@ repos:
rev: 1.6.0
hooks:
- id: nbqa-black
- id: nbqa-pyupgrade
args: [--py37-plus]
- id: nbqa-isort
- id: nbqa-ruff
- id: nbqa
entry: nbqa mdformat
name: nbqa-mdformat
alias: nbqa-mdformat
additional_dependencies: [mdformat==0.7.14]

- repo: https://github.com/asottile/pyupgrade
rev: v3.3.1
hooks:
- id: pyupgrade
args:
- "--py37-plus"

- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-toml
- id: check-yaml
- id: debug-statements

- repo: https://github.com/keewis/blackdoc
rev: v0.3.8
Expand Down
2 changes: 2 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
graft cf_xarray/data
exclude cf_xarray/_version.py

graft cf_xarray/scripts
prune ci
prune doc
prune cf_xarray/tests
prune *.egg-info
prune .binder/
prune .github/
Expand Down
4 changes: 4 additions & 0 deletions cf_xarray/scripts/print_versions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
if __name__ == "__main__":
import cf_xarray

print(cf_xarray.__version__)
2 changes: 1 addition & 1 deletion doc/whats-new.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ v0.7.5 (Nov 15, 2022)
By `Pascal Bourgault`_.
- Improve detection of bounds order by rellaxing check a bit (:pr:`361`).
By `Lars Buntemeyer`_.
- Performance improvements. (:pr:`358`). By `Luke Davis`
- Performance improvements. (:pr:`358`). By `Luke Davis`_
- Fix coordinate/axis detection (:pr:`359`). By `Martin Schupfner`_

v0.7.4 (July 14, 2022)
Expand Down
Loading

0 comments on commit 736dfda

Please sign in to comment.