From 7bba5227798be382807abdc06ffa293fb45ce33c Mon Sep 17 00:00:00 2001 From: Fabian Joswig Date: Fri, 21 Aug 2026 10:47:32 +0200 Subject: [PATCH] [build] Modernize build by moving to pyproject.toml only. Remove binder workflow --- .github/workflows/binder.yml | 18 ----------- .github/workflows/docs.yml | 1 - .github/workflows/examples.yml | 1 - .github/workflows/pytest.yml | 1 - pyerrors/__init__.py | 2 +- pyerrors/version.py | 2 +- pyproject.toml | 59 +++++++++++++++++++++++++++++++++- setup.py | 41 ----------------------- 8 files changed, 60 insertions(+), 65 deletions(-) delete mode 100644 .github/workflows/binder.yml delete mode 100644 setup.py diff --git a/.github/workflows/binder.yml b/.github/workflows/binder.yml deleted file mode 100644 index c30dfb39..00000000 --- a/.github/workflows/binder.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: binder -on: - push: - branches: - - master - -permissions: - contents: read - -jobs: - Create-MyBinderOrg-Cache: - runs-on: ubuntu-latest - steps: - - name: cache binder build on mybinder.org - uses: jupyterhub/repo2docker-action@master - with: - NO_PUSH: true - MYBINDERORG_TAG: ${{ github.event.ref }} # This builds the container on mybinder.org with the branch that was pushed on. diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index ee6f01e6..9de4d7a3 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -27,7 +27,6 @@ jobs: git pull git merge --allow-unrelated-histories -X theirs develop python -m pip install --upgrade pip - pip install wheel pip install . pip install pdoc echo $(ls -l docs) diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index a44ce691..d32d624b 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -41,7 +41,6 @@ jobs: - name: Install run: | - uv pip install wheel --system uv pip install . --system uv pip install pytest pytest-xdist nbmake --system uv pip install -U matplotlib!=3.7.0 --system # Exclude version 3.7.0 of matplotlib as this breaks local imports of style files. diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index e4dae391..bde82704 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -40,7 +40,6 @@ jobs: - name: Install run: | - uv pip install wheel --system uv pip install . --system uv pip install pytest pytest-cov pytest-benchmark hypothesis --system uv pip freeze --system diff --git a/pyerrors/__init__.py b/pyerrors/__init__.py index 42c8f817..7fb5f75d 100644 --- a/pyerrors/__init__.py +++ b/pyerrors/__init__.py @@ -8,7 +8,7 @@ - non-linear fits with x- and y-errors and exact linear error propagation based on automatic differentiation as introduced in [arXiv:1809.01289](https://arxiv.org/abs/1809.01289). - real and complex matrix operations and their error propagation based on automatic differentiation (Matrix inverse, Cholesky decomposition, calculation of eigenvalues and eigenvectors, singular value decomposition...). -More detailed examples can found in the [GitHub repository](https://github.com/fjosw/pyerrors/tree/develop/examples) [![badge](https://img.shields.io/badge/-try%20it%20out-579ACA.svg?logo=data:image/png;base64,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)](https://mybinder.org/v2/gh/fjosw/pyerrors/HEAD?labpath=examples). +More detailed examples can be found in the [GitHub repository](https://github.com/fjosw/pyerrors/tree/develop/examples). If you use `pyerrors` for research that leads to a publication please consider citing: - Fabian Joswig, Simon Kuberski, Justus T. Kuhlmann, Jan Neuendorf, *pyerrors: a python framework for error analysis of Monte Carlo data*. Comput.Phys.Commun. 288 (2023) 108750. diff --git a/pyerrors/version.py b/pyerrors/version.py index 36d18f6c..a7529560 100644 --- a/pyerrors/version.py +++ b/pyerrors/version.py @@ -1 +1 @@ -__version__ = "2.18.0-dev" +__version__ = "2.18.0.dev0" diff --git a/pyproject.toml b/pyproject.toml index 02507dad..11173bdb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,64 @@ [build-system] -requires = ["setuptools >= 63.0.0", "wheel"] +requires = ["setuptools>=77"] build-backend = "setuptools.build_meta" +[project] +name = "pyerrors" +dynamic = ["version"] +description = "Error propagation and statistical analysis for Monte Carlo simulations" +readme = "README.md" +requires-python = ">=3.10.0" +license = "MIT" +license-files = ["LICENSE"] +authors = [ + { name = "Fabian Joswig", email = "fabian.joswig@ed.ac.uk" }, +] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Science/Research", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Topic :: Scientific/Engineering :: Physics", +] +dependencies = [ + "numpy>=2.0", + "autograd>=1.7.0", + "numdifftools>=0.9.41", + "matplotlib>=3.9", + "scipy>=1.13", + "iminuit>=2.28", + "h5py>=3.11", + "lxml>=5.0", + "python-rapidjson>=1.20", + "pandas>=2.2", + "odrpack>=0.5", +] + +[project.optional-dependencies] +test = [ + "pytest", + "pytest-cov", + "pytest-benchmark", + "hypothesis", + "nbmake", +] + +[project.urls] +Homepage = "https://github.com/fjosw/pyerrors" +Documentation = "https://fjosw.github.io/pyerrors/pyerrors.html" +"Bug Tracker" = "https://github.com/fjosw/pyerrors/issues" +Changelog = "https://github.com/fjosw/pyerrors/blob/master/CHANGELOG.md" + +[tool.setuptools.dynamic] +version = { attr = "pyerrors.version.__version__" } + +[tool.setuptools.packages.find] +include = ["pyerrors*"] + [tool.ruff] target-version = "py310" diff --git a/setup.py b/setup.py deleted file mode 100644 index f34638e1..00000000 --- a/setup.py +++ /dev/null @@ -1,41 +0,0 @@ -from setuptools import setup, find_packages -from pathlib import Path -from distutils.util import convert_path - -this_directory = Path(__file__).parent -long_description = (this_directory / "README.md").read_text() - -version = {} -with open(convert_path('pyerrors/version.py')) as ver_file: - exec(ver_file.read(), version) - -setup(name='pyerrors', - version=version['__version__'], - description='Error propagation and statistical analysis for Monte Carlo simulations', - long_description=long_description, - long_description_content_type='text/markdown', - url="https://github.com/fjosw/pyerrors", - project_urls= { - 'Documentation': 'https://fjosw.github.io/pyerrors/pyerrors.html', - 'Bug Tracker': 'https://github.com/fjosw/pyerrors/issues', - 'Changelog' : 'https://github.com/fjosw/pyerrors/blob/master/CHANGELOG.md' - }, - author='Fabian Joswig', - author_email='fabian.joswig@ed.ac.uk', - license="MIT", - packages=find_packages(), - python_requires='>=3.10.0', - install_requires=['numpy>=2.0', 'autograd>=1.7.0', 'numdifftools>=0.9.41', 'matplotlib>=3.9', 'scipy>=1.13', 'iminuit>=2.28', 'h5py>=3.11', 'lxml>=5.0', 'python-rapidjson>=1.20', 'pandas>=2.2', 'odrpack>=0.5'], - extras_require={'test': ['pytest', 'pytest-cov', 'pytest-benchmark', 'hypothesis', 'nbmake']}, - classifiers=[ - 'Development Status :: 5 - Production/Stable', - 'Intended Audience :: Science/Research', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3.11', - 'Programming Language :: Python :: 3.12', - 'Programming Language :: Python :: 3.13', - 'Programming Language :: Python :: 3.14', - 'Topic :: Scientific/Engineering :: Physics' - ], - )