Skip to content

Commit

Permalink
move setup.cfg to pyproject.toml (#5262)
Browse files Browse the repository at this point in the history
* move setup.cfg to pyproject.toml

* refactor after #5263

* refactor after #5259

* review actions - manifest pattern

* review actions

* add whatsnew entry

* follow-thru with #5226
  • Loading branch information
bjlittle authored Apr 21, 2023
1 parent d58fca7 commit 949b296
Show file tree
Hide file tree
Showing 9 changed files with 143 additions and 146 deletions.
49 changes: 49 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
[flake8]
# References:
# https://flake8.readthedocs.io/en/latest/user/configuration.html
# https://flake8.readthedocs.io/en/latest/user/error-codes.html
# https://pycodestyle.readthedocs.io/en/latest/intro.html#error-codes

max-line-length = 80
max-complexity = 50
select = C,E,F,W,B,B950
ignore =
# E203: whitespace before ':'
E203,
# E226: missing whitespace around arithmetic operator
E226,
# E231: missing whitespace after ',', ';', or ':'
E231,
# E402: module level imports on one line
E402,
# E501: line too long
E501,
# E731: do not assign a lambda expression, use a def
E731,
# W503: line break before binary operator
W503,
# W504: line break after binary operator
W504,
exclude =
#
# ignore the following directories
#
.eggs,
build,
docs/src/sphinxext/*,
tools/*,
benchmarks/*,
#
# ignore auto-generated files
#
_ff_cross_refrences.py,
std_names.py,
um_cf_map.py,
#
# ignore third-party files
#
gitwash_dumper.py,
#
# convenience imports
#
lib/iris/common/__init__.py
1 change: 0 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ repos:
hooks:
- id: flake8
types: [file, python]
args: [--config=./setup.cfg]

- repo: https://github.com/pycqa/isort
rev: 5.12.0
Expand Down
4 changes: 3 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ prune docs
prune etc
recursive-include lib *.cdl *.cml *.json *.md *.py *.template *.txt *.xml
prune requirements
recursive-include requirements *.txt
prune tools
exclude .flake8
exclude .git-blame-ignore-revs
exclude .git_archival.txt
exclude .gitattributes
Expand All @@ -20,8 +22,8 @@ exclude Makefile
exclude noxfile.py

# files required to build iris.std_names module
include tools/generate_std_names.py
include etc/cf-standard-name-table.xml
include tools/generate_std_names.py

global-exclude *.py[cod]
global-exclude __pycache__
5 changes: 5 additions & 0 deletions docs/src/whatsnew/latest.rst
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@ This document explains the changes made to Iris for this release
#. `@rcomer`_ removed a now redundant copying workaround from Resolve testing.
(:pull:`5267`)

#. `@bjlittle`_ and `@trexfeathers`_ (reviewer) migrated ``setup.cfg`` to
``pyproject.toml``, as motivated by `PEP-0621`_. (:pull:`5262`)


.. comment
Whatsnew author names (@github name) in alphabetical order. Note that,
core dev names are automatically included by the common_links.inc:
Expand All @@ -102,3 +106,4 @@ This document explains the changes made to Iris for this release
.. _sphinx-panels: https://github.com/executablebooks/sphinx-panels
.. _sphinx-design: https://github.com/executablebooks/sphinx-design
.. _check-manifest: https://github.com/mgedmin/check-manifest
.. _PEP-0621: https://peps.python.org/pep-0621/
6 changes: 3 additions & 3 deletions lib/iris/tests/test_coding_standards.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ def test_python_versions():
benchmarks_dir = root_dir / "benchmarks"

# Places that are checked:
setup_cfg_file = root_dir / "setup.cfg"
pyproject_toml_file = root_dir / "pyproject.toml"
requirements_dir = root_dir / "requirements"
nox_file = root_dir / "noxfile.py"
ci_wheels_file = workflows_dir / "ci-wheels.yml"
Expand All @@ -89,10 +89,10 @@ def test_python_versions():

text_searches: List[Tuple[Path, str]] = [
(
setup_cfg_file,
pyproject_toml_file,
"\n ".join(
[
"Programming Language :: Python :: " + ver
f'"Programming Language :: Python :: {ver}",'
for ver in all_supported
]
),
Expand Down
63 changes: 63 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,69 @@ requires = [
# Defined by PEP 517
build-backend = "setuptools.build_meta"

[project]
authors = [
{name = "Iris Contributors", email = "[email protected]"}
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)",
"Operating System :: MacOS",
"Operating System :: POSIX",
"Operating System :: POSIX :: Linux",
"Operating System :: Unix",
"Programming Language :: Python",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Atmospheric Science",
"Topic :: Scientific/Engineering :: Visualization",
]
dynamic = [
"dependencies",
"readme",
"version",
]
description = "A powerful, format-agnostic, community-driven Python package for analysing and visualising Earth science data"
keywords = [
"cf-metadata",
"data-analysis",
"earth-science",
"grib",
"netcdf",
"meteorology",
"oceanography",
"space-weather",
"ugrid",
"visualisation",
]
license = {text = "LGPL-3.0-or-later"}
name = "scitools-iris"
requires-python = ">=3.8"

[project.urls]
Code = "https://github.com/SciTools/iris"
Discussions = "https://github.com/SciTools/iris/discussions"
Documentation = "https://scitools-iris.readthedocs.io/en/stable/"
Issues = "https://github.com/SciTools/iris/issues"

[tool.setuptools]
license-files = ["COPYING", "COPYING.LESSER"]
zip-safe = false

[tool.setuptools.dynamic]
dependencies = {file = "requirements/pypi-core.txt"}
readme = {file = "README.md", content-type = "text/markdown"}

[tool.setuptools.packages.find]
include = ["iris*"]
where = ["lib"]

[tool.setuptools_scm]
write_to = "lib/iris/_version.py"
local_scheme = "dirty-tag"
Expand Down
8 changes: 8 additions & 0 deletions requirements/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# ⚠️

This directory contains:

- The `locks` directory which contains auto-generated `conda-lock` environment files for each `python` distribution and `platform` supported by `iris`.
- The **top-level** `conda` environment `*.yml` files for each `python` distribution supported by `iris`.
- The `pip` core package dependencies (`pypi-core.txt`) for the [scitools-iris](https://pypi.org/project/scitools-iris/) package on PyPI. Please reference the `pyproject.toml` in the repository root directory for further details.

12 changes: 12 additions & 0 deletions requirements/pypi-core.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
cartopy>=0.21
cf-units>=3.1
cftime>=1.5.0
dask[array]>=2022.9.0
# libnetcdf<4.9 (not available on PyPI)
matplotlib>=3.5
netcdf4
numpy>=1.19
pyproj
scipy
shapely!=1.8.3
xxhash
141 changes: 0 additions & 141 deletions setup.cfg

This file was deleted.

0 comments on commit 949b296

Please sign in to comment.