From 6a09263252bfd8e1b79052974e943809d8a05203 Mon Sep 17 00:00:00 2001 From: Tobias Kremer Date: Thu, 10 Oct 2024 09:35:27 +0200 Subject: [PATCH] Moving towards pyproject.toml Changes regarding setting up the build configuration in pyproject.toml file. - Getting rid of egg build - Updating related dependencies and stuff needed --- MANIFEST.in | 1 - pyproject.toml | 54 ++++++++++++++++++++++++++++ setup.py | 30 +++++----------- {pyfdb => src/pyfdb}/__init__.py | 0 {pyfdb => src/pyfdb}/processed_fdb.h | 0 {pyfdb => src/pyfdb}/pyfdb.py | 0 {pyfdb => src/pyfdb}/version.py | 0 tox.ini | 9 ++--- 8 files changed, 65 insertions(+), 29 deletions(-) delete mode 100644 MANIFEST.in rename {pyfdb => src/pyfdb}/__init__.py (100%) rename {pyfdb => src/pyfdb}/processed_fdb.h (100%) rename {pyfdb => src/pyfdb}/pyfdb.py (100%) rename {pyfdb => src/pyfdb}/version.py (100%) diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index e5b54e6..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1 +0,0 @@ -include pyfdb/processed_fdb.h diff --git a/pyproject.toml b/pyproject.toml index 96fa357..5e0c9a7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,60 @@ +[build-system] +requires = [ + "setuptools >= 61.0", +] +build-backend = "setuptools.build_meta" + +[project] +name = "pyfdb" +dynamic = ["version"] + +description="Python interface to FDB" +keywords = [ + "python", + "fdb", + "tools", +] + +license = { file = "LICENSE" } +authors = [ + { name = "European Centre for Medium-Range Weather Forecasts (ECMWF)", email = "software.support@ecmwf.int" }, +] + +urls.Documentation = "https://github.com/ecmwf/pyfdb" +urls.Homepage = "https://github.com/ecmwf/pyfdb" +urls.Issues = "https://github.com/ecmwf/pyfdb/issues" +urls.Repository = "https://github.com/ecmwf/pyfdb" + +requires-python = ">=3.9" + +dependencies = [ + "cffi", + "findlibs", + "pyeccodes", + "isort", + "black", + "flake8", + "tox>=4.19" +] + +optional-dependencies.tests = [ + "pytest", + "pytest-cov", + "pytest-flakes", +] + +[tool.setuptools.packages.find] +where = ["src", "tests"] + +[tool.setuptools.package-data] +pyfdb = ["processed_fdb.h"] + [tool.black] line-length = 120 [tool.isort] profile = "black" line_length = 120 +skip_glob=".*" +skip = ["setup.py"] +src_paths = ["src", "tests"] diff --git a/setup.py b/setup.py index 7f1ca84..5cfb702 100644 --- a/setup.py +++ b/setup.py @@ -1,27 +1,13 @@ import io import re -from setuptools import find_packages, setup +from setuptools import setup -__version__ = re.search( - r'__version__\s*=\s*[\'"]([^\'"]*)[\'"]', io.open("pyfdb/version.py", encoding="utf_8_sig").read() -).group(1) -setup( - name="pyfdb", - version=__version__, - description="Python interface to FDB", - url="https://github.com/ecmwf/pyfdb", - author="ECMWF", - author_email="software.support@ecmwf.int", - packages=find_packages(exclude=("docs", "tests")), - include_package_data=True, - tests_require=[ - "pytest", - "pytest-cov", - "pytest-flakes", - ], - test_suite="tests", - install_requires=["cffi", "findlibs", "pyeccodes", "packaging"], - zip_safe=False, -) +def find_version(): + return re.search( + r'__version__\s*=\s*[\'"]([^\'"]*)[\'"]', io.open("src/pyfdb/version.py", encoding="utf_8_sig").read() + ).group(1) + + +setup(version=find_version()) diff --git a/pyfdb/__init__.py b/src/pyfdb/__init__.py similarity index 100% rename from pyfdb/__init__.py rename to src/pyfdb/__init__.py diff --git a/pyfdb/processed_fdb.h b/src/pyfdb/processed_fdb.h similarity index 100% rename from pyfdb/processed_fdb.h rename to src/pyfdb/processed_fdb.h diff --git a/pyfdb/pyfdb.py b/src/pyfdb/pyfdb.py similarity index 100% rename from pyfdb/pyfdb.py rename to src/pyfdb/pyfdb.py diff --git a/pyfdb/version.py b/src/pyfdb/version.py similarity index 100% rename from pyfdb/version.py rename to src/pyfdb/version.py diff --git a/tox.ini b/tox.ini index ee48184..d93e522 100644 --- a/tox.ini +++ b/tox.ini @@ -1,3 +1,4 @@ +# Those are only in here because they aren't support pyproject.toml file... [flake8] max-line-length = 120 show-source = true @@ -5,9 +6,6 @@ exclude = .* extend-ignore = E203 per-file-ignores = */__init__.py: F401,F403 -[isort] -profile=black -skip_glob=.* [tox] env_list = @@ -20,8 +18,7 @@ package = wheel wheel_build_env = .pkg deps = pytest>=6 -setenv = - ; NB: You may need to copy build/fdb5/etc/fdb to build/etc/fdb - FDB5_HOME=../build/ +pass_env = + FDB_HOME commands = pytest {tty:--color=yes} {posargs}