Skip to content

Commit

Permalink
Migrate project metadata from setup.py to pyproject.toml following PE…
Browse files Browse the repository at this point in the history
…P621 (GenericMappingTools#1848)

Delete setup.py and move all project metadata to pyproject.toml as per https://peps.python.org/pep-0621.

* Migrate project metadata from setup.py to pyproject.toml following PEP621
* Add docstrings to setup.py
* Use the new email address for pygmt team
* Update the link for development mode
* Set include-package-data to include baseline and data files
* Remove setup.py completely. Requires setuptools>=64.0.0
* Fix the minimum required numpy version to 1.20
* Add package data
* Update the command to check README syntax
* Run tests in editable mode
* Multi-line dependencies

Co-authored-by: Wei Ji <[email protected]>
  • Loading branch information
2 people authored and Josh Sixsmith committed Dec 21, 2022
1 parent da4f159 commit f4fac97
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 72 deletions.
4 changes: 1 addition & 3 deletions .github/workflows/ci_tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,7 @@ jobs:
# Install the package that we want to test
- name: Install the package
run: |
python -m build --sdist
pip install dist/*
run: make install

# Run the regular tests
- name: Run tests
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/ci_tests_dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,7 @@ jobs:
# Install the package that we want to test
- name: Install the package
run: |
python -m build --sdist
pip install dist/*
run: make install

- name: Add GMT's bin to PATH (Linux/macOS)
run: echo ${GITHUB_WORKSPACE}/gmt-install-dir/bin >> $GITHUB_PATH
Expand Down
8 changes: 4 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ TESTDIR=tmp-test-dir-with-unique-name
PYTEST_COV_ARGS=--cov=$(PROJECT) --cov-config=../pyproject.toml \
--cov-report=term-missing --cov-report=xml --cov-report=html \
--pyargs ${PYTEST_EXTRA}
BLACK_FILES=$(PROJECT) setup.py doc/conf.py examples
BLACK_FILES=$(PROJECT) doc/conf.py examples
BLACKDOC_OPTIONS=--line-length 79
DOCFORMATTER_FILES=$(PROJECT) setup.py doc/conf.py examples
DOCFORMATTER_FILES=$(PROJECT) doc/conf.py examples
DOCFORMATTER_OPTIONS=--recursive --pre-summary-newline --make-summary-multi-line --wrap-summaries 79 --wrap-descriptions 79
FLAKEHEAVEN_FILES=$(PROJECT) setup.py doc/conf.py examples
LINT_FILES=$(PROJECT) setup.py doc/conf.py
FLAKEHEAVEN_FILES=$(PROJECT) doc/conf.py examples
LINT_FILES=$(PROJECT) doc/conf.py

help:
@echo "Commands:"
Expand Down
4 changes: 2 additions & 2 deletions doc/maintenance.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ alongside the rest of the Scientific Python ecosystem, and therefore supports:
* All minor versions of NumPy released in the 24 months prior to the project,
and at minimum the last three minor versions.

In `setup.py`, the `python_requires` variable should be set to the minimum
In `pyproject.toml`, the `requires-python` key should be set to the minimum
supported version of Python. Minimum Python and NumPy version support should be
adjusted upward on every major and minor release, but never on a patch release.

Expand Down Expand Up @@ -277,7 +277,7 @@ So slightly broken RST can cause the PyPI page to not render the correct content
using the `rst2html.py` script that comes with docutils:
```
python setup.py --long-description | rst2html.py --no-raw > index.html
rst2html.py --no-raw README.rst > index.html
```
Open `index.html` and check for any flaws or error messages.
Expand Down
49 changes: 48 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,54 @@
[build-system]
requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"]
requires = ["setuptools>=64", "setuptools_scm[toml]>=6.2"]
build-backend = "setuptools.build_meta"

[project]
name = "pygmt"
description = "A Python interface for the Generic Mapping Tools"
readme = "README.rst"
requires-python = ">=3.8"
license = {text = "BSD License"}
authors = [{name = "The PyGMT Developers", email = "[email protected]"}]
maintainers = [{name = "The PyGMT Developers", email = "[email protected]"}]
keywords = []
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Science/Research",
"Intended Audience :: Developers",
"Intended Audience :: Education",
"Topic :: Scientific/Engineering",
"Topic :: Software Development :: Libraries",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"License :: OSI Approved :: BSD License",
]
dependencies = [
"numpy>=1.20",
"pandas",
"xarray",
"netCDF4",
"packaging"
]
dynamic = ["version"]

[project.urls]
homepage = "https://www.pygmt.org"
documentation = "https://www.pygmt.org"
repository = "https://github.com/GenericMappingTools/pygmt"
changelog = "https://www.pygmt.org/latest/changes.html"

[tool.setuptools]
platforms = ["Any"]
include-package-data = true

[tool.setuptools.packages.find]
include = ["pygmt*"]
exclude = ["doc"]

[tool.setuptools.package-data]
tests = ["data/*", "baseline/*"]

[tool.setuptools_scm]
local_scheme = "node-and-date"
fallback_version = "999.999.999+unknown"
Expand Down
59 changes: 0 additions & 59 deletions setup.py

This file was deleted.

0 comments on commit f4fac97

Please sign in to comment.