Skip to content

Commit

Permalink
Fix #374 switch to Hatch for builds
Browse files Browse the repository at this point in the history
Also update the GitHub CI workflows to use the new hatch commands
  • Loading branch information
goodmami committed Dec 9, 2023
1 parent cc0e56b commit e8cabbd
Show file tree
Hide file tree
Showing 5 changed files with 178 additions and 146 deletions.
51 changes: 25 additions & 26 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,34 +7,33 @@ on:
branches: [main]

jobs:
build:

lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.8
uses: actions/setup-python@v4
with:
python-version: 3.8
- name: Install Hatch
run: pipx install hatch
- name: Lint
run: hatch run dev:lint
- name: Type Check
run: hatch run dev:typecheck
tests:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]

os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install .[tests]
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 delphin --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. PEP-8 says 99 chars is a good width
flake8 delphin --count --exit-zero --extend-ignore E221 --max-line-length=99 --statistics
# E221 = whitespace before operator
# disabled for now: --max-complexity=10
- name: Test with pytest
run: |
pytest .
- name: Type-check with mypy
run: |
mypy delphin --namespace-packages --explicit-package-bases --ignore-missing-imports
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Hatch
run: pipx install hatch
- name: Test
run: hatch run dev:test
68 changes: 68 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Build and Publish to PyPI or TestPyPI

# Adapted from https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/

on:
push

jobs:
build:
name: Build distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"
- name: Install Hatch
run: pipx install hatch
- name: Build
run: hatch build
- name: Store the distribution packages
uses: actions/upload-artifact@v3
with:
name: python-package-distributions
path: dist/

publish-to-pypi:
name: Publish distributions to PyPI
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
needs:
- build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/PyDelphin
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1

publish-to-testpypi:
name: Publish distributions to TestPyPI
needs:
- build
runs-on: ubuntu-latest
environment:
name: testpypi
url: https://test.pypi.org/p/PyDelphin
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Publish to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
skip-existing: true
26 changes: 0 additions & 26 deletions .github/workflows/pythonpublish.yml

This file was deleted.

87 changes: 85 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,86 @@
[build-system]
requires = ["setuptools>=40.8.0", "wheel"]
build-backend = "setuptools.build_meta"
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "PyDelphin"
dynamic = ["version"]
description = "Libraries and scripts for DELPH-IN data"
readme = "README.md"
requires-python = ">=3.8"
license = "MIT"
authors = [
{name = "Michael Wayne Goodman", email = "[email protected]"}
]
keywords = ["nlp", "semantics", "hpsg", "delph-in", "linguistics"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering :: Information Analysis",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Text Processing :: Linguistic",
"Topic :: Utilities",
]
dependencies = [
"penman",
"progress",
"Pygments",
]

[project.optional-dependencies]
web = [
"falcon",
"requests",
]
repp = [
"regex"
]

[projects.scripts]
delphin = "delphin.main:main"

[project.urls]
Homepage = "https://github.com/delph-in/pydelphin"
Documentation = "https://pydelphin.readthedocs.io"
Changelog = "https://github.com/delph-in/pydelphin/blob/main/CHANGELOG.md"

[tool.hatch.version]
path = "delphin/__about__.py"

[tool.hatch.build.targets.sdist]
exclude = [
"/.github",
]

[tool.hatch.envs.dev]
dependencies = [
"pytest",
"flake8",
"mypy",
"types-requests",
]
[tool.hatch.envs.dev.scripts]
test = "pytest {args:.}"
lint = "flake8 delphin --count --exit-zero --extend-ignore=E221 --max-line-length=99 --statistics"
typecheck = "mypy delphin --namespace-packages --explicit-package-bases --ignore-missing-imports"

[tool.hatch.envs.docs]
dependencies = [
"sphinx",
"sphinx-rtd-theme",
"requests",
"falcon",
]
[tool.hatch.envs.docs.scripts]
build = "make -C docs html"
clean = "make -C docs clean"
92 changes: 0 additions & 92 deletions setup.py

This file was deleted.

0 comments on commit e8cabbd

Please sign in to comment.