From 71c4500239b5c48506be4f555ad5f83a8ca888a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 20:13:07 +0200 Subject: [PATCH 01/21] setuptools: move project data to pyproject.toml --- pyproject.toml | 76 ++++++++++++++++++++++++++++++++++++++++++++-- setup.cfg | 82 -------------------------------------------------- 2 files changed, 74 insertions(+), 84 deletions(-) delete mode 100644 setup.cfg diff --git a/pyproject.toml b/pyproject.toml index 488a001a..6b1edbda 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,85 @@ [build-system] requires = [ - "setuptools>=42", + "setuptools>=62", "wheel", - "setuptools_scm[toml]>=3.5", + "setuptools_scm[toml]>=6.4", "oldest-supported-numpy", "Cython>=0.28.3,<3.0", ] build-backend = "setuptools.build_meta" +[project] +name = "gstools" +description = "GSTools: A geostatistical toolbox." +authors = [{name = "Sebastian Müller", email = "info@geostat-framework.org"}, {name = "Lennart Schüler"}] +maintainers = [{name = "Sebastian Müller", email = "info@geostat-framework.org"}, {name = "Lennart Schüler"}] +readme = "README.md" +license = {file = "LICENSE", text = "LGPL-3.0"} +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Intended Audience :: End Users/Desktop", + "Intended Audience :: Science/Research", + "Intended Audience :: Education", + "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", + "Natural Language :: English", + "Operating System :: Unix", + "Operating System :: Microsoft", + "Operating System :: MacOS", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: GIS", + "Topic :: Scientific/Engineering :: Hydrology", + "Topic :: Scientific/Engineering :: Mathematics", + "Topic :: Scientific/Engineering :: Physics", + "Topic :: Utilities", +] +dependencies = [ + "emcee>=3.0.0", + "hankel>=1.0.0", + "meshio>=4.0.0", + "numpy>=1.14.5", + "pyevtk>=1.1.1", + "scipy>=1.1.0", +] +dynamic = ["version"] +requires-python = ">=3.6" + +[project.urls] +Changelog = "https://github.com/GeoStat-Framework/GSTools/blob/main/CHANGELOG.md" +Conda-Forge = "https://anaconda.org/conda-forge/gstools" +Documentation = "https://gstools.readthedocs.io" +Homepage = "https://geostat-framework.org/#gstools" +Source = "https://github.com/GeoStat-Framework/GSTools" +Tracker = "https://github.com/GeoStat-Framework/GSTools/issues" + +[project.optional-dependencies] +doc = [ + "m2r2>=0.2.8", + "matplotlib>=3", + "meshzoo>=0.7", + "numpydoc>=1.1", + "pykrige>=1.5,<2", + "pyvista>=0.29", + "sphinx>=4", + "sphinx-gallery>=0.8", + "sphinx-rtd-theme>=1", + "sphinxcontrib-youtube>=1.1", +] +plotting = [ + "matplotlib>=3", + "pyvista>=0.29", +] +rust = ["gstools_core>=0.2.0,<1"] +test = ["pytest-cov>=3"] + [tool.setuptools_scm] write_to = "gstools/_version.py" write_to_template = "__version__ = '{version}'" diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 8cb2d4d6..00000000 --- a/setup.cfg +++ /dev/null @@ -1,82 +0,0 @@ -[metadata] -name = gstools -description = GSTools: A geostatistical toolbox. -long_description = file: README.md -long_description_content_type = text/markdown -url = https://github.com/GeoStat-Framework/GSTools -author = Sebastian Müller, Lennart Schüler -author_email = info@geostat-framework.org -maintainer = Sebastian Müller, Lennart Schüler -maintainer_email = info@geostat-framework.org -license = LGPL-3.0 -license_file = LICENSE -platforms = any -classifiers = - Development Status :: 5 - Production/Stable - Intended Audience :: Developers - Intended Audience :: End Users/Desktop - Intended Audience :: Science/Research - Intended Audience :: Education - License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3) - Natural Language :: English - Operating System :: Unix - Operating System :: Microsoft - Operating System :: MacOS - Programming Language :: Python - Programming Language :: Python :: 3 - Programming Language :: Python :: 3 :: Only - Programming Language :: Python :: 3.6 - Programming Language :: Python :: 3.7 - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - Programming Language :: Python :: 3.10 - Topic :: Scientific/Engineering - Topic :: Scientific/Engineering :: GIS - Topic :: Scientific/Engineering :: Hydrology - Topic :: Scientific/Engineering :: Mathematics - Topic :: Scientific/Engineering :: Physics - Topic :: Utilities -project_urls = - Homepage = https://geostat-framework.org/#gstools - Documentation = https://gstools.readthedocs.io - Source = https://github.com/GeoStat-Framework/GSTools - Tracker = https://github.com/GeoStat-Framework/GSTools/issues - Changelog = https://github.com/GeoStat-Framework/GSTools/blob/main/CHANGELOG.md - Conda-Forge = https://anaconda.org/conda-forge/gstools - -[options] -packages = find: -install_requires = - emcee>=3.0.0 - hankel>=1.0.0 - meshio>=4.0.0 - numpy>=1.14.5 - pyevtk>=1.1.1 - scipy>=1.1.0 -python_requires = >=3.6 -zip_safe = False - -[options.packages.find] -exclude = - tests* - docs* - -[options.extras_require] -doc = - m2r2>=0.2.8 - matplotlib>=3 - meshzoo>=0.7 - numpydoc>=1.1 - pykrige>=1.5,<2 - pyvista>=0.29 - sphinx>=4 - sphinx-gallery>=0.8 - sphinx-rtd-theme>=1 - sphinxcontrib-youtube>=1.1 -plotting = - matplotlib>=3 - pyvista>=0.32 -rust = - gstools_core>=0.2.0,<1 -test = - pytest-cov>=3 From cd80fe32f2105bdb2f0ac3bc84267156801e2d12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 20:14:17 +0200 Subject: [PATCH 02/21] docs: zenodo link fix --- docs/source/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index 50696c8e..d5724773 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -137,7 +137,7 @@ You can cite the Zenodo code publication of GSTools by: Sebastian Müller & Lennart Schüler. GeoStat-Framework/GSTools. Zenodo. https://doi.org/10.5281/zenodo.1313628 -If you want to cite a specific version, have a look at the `Zenodo site `__. +If you want to cite a specific version, have a look at the `Zenodo site `__. Tutorials and Examples From 17314b2812645654ec4496d9027121a02f47c8be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 20:15:29 +0200 Subject: [PATCH 03/21] pyproject: license fix --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6b1edbda..c7edfaf4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ description = "GSTools: A geostatistical toolbox." authors = [{name = "Sebastian Müller", email = "info@geostat-framework.org"}, {name = "Lennart Schüler"}] maintainers = [{name = "Sebastian Müller", email = "info@geostat-framework.org"}, {name = "Lennart Schüler"}] readme = "README.md" -license = {file = "LICENSE", text = "LGPL-3.0"} +license = {file = "LICENSE"} classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", From 7a9fd3af70d6447722d0949f32dab75747e0ffc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 20:21:58 +0200 Subject: [PATCH 04/21] build: require py>3.7 --- .github/workflows/main.yml | 2 +- pyproject.toml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2501cc9b..dbc5280d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -83,7 +83,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - python-version: ['3.6', '3.7', '3.8', '3.9', '3.10'] + python-version: ['3.7', '3.8', '3.9', '3.10'] steps: - uses: actions/checkout@v2 diff --git a/pyproject.toml b/pyproject.toml index c7edfaf4..d8f0010a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,7 +50,7 @@ dependencies = [ "scipy>=1.1.0", ] dynamic = ["version"] -requires-python = ">=3.6" +requires-python = ">=3.7" [project.urls] Changelog = "https://github.com/GeoStat-Framework/GSTools/blob/main/CHANGELOG.md" @@ -144,8 +144,8 @@ target-version = [ [tool.cibuildwheel] # Switch to using build build-frontend = "build" -# Disable building PyPy wheels on all platforms, 32bit for py3.10 and musllinux builds -skip = "pp* cp310-win32 cp310-manylinux_i686 *-musllinux_*" +# Disable building PyPy wheels on all platforms, 32bit for py3.10 and musllinux builds, py3.6 +skip = ["cp36-*", "pp*", "cp310-win32", "cp310-manylinux_i686", "*-musllinux_*"] # Run the package tests using `pytest` test-extras = "test" test-command = "pytest -v {package}/tests" From eb268b15e465e424fabc8eaa901f7789a3faf38a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 20:26:14 +0200 Subject: [PATCH 05/21] CI: update cibuildwheel to 2.6 --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dbc5280d..e941baca 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -66,7 +66,7 @@ jobs: fetch-depth: '0' - name: Build wheels - uses: pypa/cibuildwheel@v2.3.1 + uses: pypa/cibuildwheel@v2.6.0 env: CIBW_ARCHS: ${{ matrix.cfg.arch }} with: From cba7878ee5b1f1e729f5a59ae163303491690475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 20:57:16 +0200 Subject: [PATCH 06/21] meshio: remove fix for py3.6 --- gstools/field/tools.py | 6 +----- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/gstools/field/tools.py b/gstools/field/tools.py index ad954402..86f3fee1 100644 --- a/gstools/field/tools.py +++ b/gstools/field/tools.py @@ -22,9 +22,6 @@ __all__ = ["fmt_mean_norm_trend", "to_vtk_helper", "generate_on_mesh"] -MESHIO_VERSION = list(map(int, meshio.__version__.split(".")[:2])) - - def _fmt_func_val(f_cls, func_val): # pragma: no cover if func_val is None: return str(None) @@ -193,8 +190,7 @@ def generate_on_mesh( raise ValueError("Field.mesh: mesh dimension too low!") pnts = np.empty((0, mesh_dim), dtype=np.double) for cell in mesh.cells: - cell_points = cell[1] if MESHIO_VERSION < [5, 1] else cell.data - pnt = np.mean(mesh.points[cell_points], axis=1) + pnt = np.mean(mesh.points[cell.data], axis=1) offset.append(pnts.shape[0]) length.append(pnt.shape[0]) pnts = np.vstack((pnts, pnt)) diff --git a/pyproject.toml b/pyproject.toml index d8f0010a..f7c86c83 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,7 +44,7 @@ classifiers = [ dependencies = [ "emcee>=3.0.0", "hankel>=1.0.0", - "meshio>=4.0.0", + "meshio>=5.1.0", "numpy>=1.14.5", "pyevtk>=1.1.1", "scipy>=1.1.0", From d51ab578ebdf75acacc9fa586962479640c0355d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 21:41:55 +0200 Subject: [PATCH 07/21] move to src/ based package structure --- {gstools => src/gstools}/__init__.py | 0 {gstools => src/gstools}/config.py | 0 {gstools => src/gstools}/covmodel/__init__.py | 0 {gstools => src/gstools}/covmodel/base.py | 0 {gstools => src/gstools}/covmodel/fit.py | 0 {gstools => src/gstools}/covmodel/models.py | 0 {gstools => src/gstools}/covmodel/plot.py | 0 {gstools => src/gstools}/covmodel/tools.py | 0 {gstools => src/gstools}/covmodel/tpl_models.py | 0 {gstools => src/gstools}/field/__init__.py | 0 {gstools => src/gstools}/field/base.py | 0 {gstools => src/gstools}/field/cond_srf.py | 0 {gstools => src/gstools}/field/generator.py | 0 {gstools => src/gstools}/field/plot.py | 0 {gstools => src/gstools}/field/srf.py | 0 {gstools => src/gstools}/field/summator.pyx | 0 {gstools => src/gstools}/field/tools.py | 0 {gstools => src/gstools}/field/upscaling.py | 0 {gstools => src/gstools}/krige/__init__.py | 0 {gstools => src/gstools}/krige/base.py | 0 {gstools => src/gstools}/krige/krigesum.pyx | 0 {gstools => src/gstools}/krige/methods.py | 0 {gstools => src/gstools}/krige/tools.py | 0 {gstools => src/gstools}/normalizer/__init__.py | 0 {gstools => src/gstools}/normalizer/base.py | 0 {gstools => src/gstools}/normalizer/methods.py | 0 {gstools => src/gstools}/normalizer/tools.py | 0 {gstools => src/gstools}/random/__init__.py | 0 {gstools => src/gstools}/random/rng.py | 0 {gstools => src/gstools}/random/tools.py | 0 {gstools => src/gstools}/tools/__init__.py | 0 {gstools => src/gstools}/tools/export.py | 0 {gstools => src/gstools}/tools/geometric.py | 0 {gstools => src/gstools}/tools/misc.py | 0 {gstools => src/gstools}/tools/special.py | 0 {gstools => src/gstools}/transform/__init__.py | 0 {gstools => src/gstools}/transform/array.py | 0 {gstools => src/gstools}/transform/field.py | 0 {gstools => src/gstools}/variogram/__init__.py | 0 {gstools => src/gstools}/variogram/binning.py | 0 {gstools => src/gstools}/variogram/estimator.pyx | 0 {gstools => src/gstools}/variogram/variogram.py | 0 42 files changed, 0 insertions(+), 0 deletions(-) rename {gstools => src/gstools}/__init__.py (100%) rename {gstools => src/gstools}/config.py (100%) rename {gstools => src/gstools}/covmodel/__init__.py (100%) rename {gstools => src/gstools}/covmodel/base.py (100%) rename {gstools => src/gstools}/covmodel/fit.py (100%) rename {gstools => src/gstools}/covmodel/models.py (100%) rename {gstools => src/gstools}/covmodel/plot.py (100%) rename {gstools => src/gstools}/covmodel/tools.py (100%) rename {gstools => src/gstools}/covmodel/tpl_models.py (100%) rename {gstools => src/gstools}/field/__init__.py (100%) rename {gstools => src/gstools}/field/base.py (100%) rename {gstools => src/gstools}/field/cond_srf.py (100%) rename {gstools => src/gstools}/field/generator.py (100%) rename {gstools => src/gstools}/field/plot.py (100%) rename {gstools => src/gstools}/field/srf.py (100%) rename {gstools => src/gstools}/field/summator.pyx (100%) rename {gstools => src/gstools}/field/tools.py (100%) rename {gstools => src/gstools}/field/upscaling.py (100%) rename {gstools => src/gstools}/krige/__init__.py (100%) rename {gstools => src/gstools}/krige/base.py (100%) rename {gstools => src/gstools}/krige/krigesum.pyx (100%) rename {gstools => src/gstools}/krige/methods.py (100%) rename {gstools => src/gstools}/krige/tools.py (100%) rename {gstools => src/gstools}/normalizer/__init__.py (100%) rename {gstools => src/gstools}/normalizer/base.py (100%) rename {gstools => src/gstools}/normalizer/methods.py (100%) rename {gstools => src/gstools}/normalizer/tools.py (100%) rename {gstools => src/gstools}/random/__init__.py (100%) rename {gstools => src/gstools}/random/rng.py (100%) rename {gstools => src/gstools}/random/tools.py (100%) rename {gstools => src/gstools}/tools/__init__.py (100%) rename {gstools => src/gstools}/tools/export.py (100%) rename {gstools => src/gstools}/tools/geometric.py (100%) rename {gstools => src/gstools}/tools/misc.py (100%) rename {gstools => src/gstools}/tools/special.py (100%) rename {gstools => src/gstools}/transform/__init__.py (100%) rename {gstools => src/gstools}/transform/array.py (100%) rename {gstools => src/gstools}/transform/field.py (100%) rename {gstools => src/gstools}/variogram/__init__.py (100%) rename {gstools => src/gstools}/variogram/binning.py (100%) rename {gstools => src/gstools}/variogram/estimator.pyx (100%) rename {gstools => src/gstools}/variogram/variogram.py (100%) diff --git a/gstools/__init__.py b/src/gstools/__init__.py similarity index 100% rename from gstools/__init__.py rename to src/gstools/__init__.py diff --git a/gstools/config.py b/src/gstools/config.py similarity index 100% rename from gstools/config.py rename to src/gstools/config.py diff --git a/gstools/covmodel/__init__.py b/src/gstools/covmodel/__init__.py similarity index 100% rename from gstools/covmodel/__init__.py rename to src/gstools/covmodel/__init__.py diff --git a/gstools/covmodel/base.py b/src/gstools/covmodel/base.py similarity index 100% rename from gstools/covmodel/base.py rename to src/gstools/covmodel/base.py diff --git a/gstools/covmodel/fit.py b/src/gstools/covmodel/fit.py similarity index 100% rename from gstools/covmodel/fit.py rename to src/gstools/covmodel/fit.py diff --git a/gstools/covmodel/models.py b/src/gstools/covmodel/models.py similarity index 100% rename from gstools/covmodel/models.py rename to src/gstools/covmodel/models.py diff --git a/gstools/covmodel/plot.py b/src/gstools/covmodel/plot.py similarity index 100% rename from gstools/covmodel/plot.py rename to src/gstools/covmodel/plot.py diff --git a/gstools/covmodel/tools.py b/src/gstools/covmodel/tools.py similarity index 100% rename from gstools/covmodel/tools.py rename to src/gstools/covmodel/tools.py diff --git a/gstools/covmodel/tpl_models.py b/src/gstools/covmodel/tpl_models.py similarity index 100% rename from gstools/covmodel/tpl_models.py rename to src/gstools/covmodel/tpl_models.py diff --git a/gstools/field/__init__.py b/src/gstools/field/__init__.py similarity index 100% rename from gstools/field/__init__.py rename to src/gstools/field/__init__.py diff --git a/gstools/field/base.py b/src/gstools/field/base.py similarity index 100% rename from gstools/field/base.py rename to src/gstools/field/base.py diff --git a/gstools/field/cond_srf.py b/src/gstools/field/cond_srf.py similarity index 100% rename from gstools/field/cond_srf.py rename to src/gstools/field/cond_srf.py diff --git a/gstools/field/generator.py b/src/gstools/field/generator.py similarity index 100% rename from gstools/field/generator.py rename to src/gstools/field/generator.py diff --git a/gstools/field/plot.py b/src/gstools/field/plot.py similarity index 100% rename from gstools/field/plot.py rename to src/gstools/field/plot.py diff --git a/gstools/field/srf.py b/src/gstools/field/srf.py similarity index 100% rename from gstools/field/srf.py rename to src/gstools/field/srf.py diff --git a/gstools/field/summator.pyx b/src/gstools/field/summator.pyx similarity index 100% rename from gstools/field/summator.pyx rename to src/gstools/field/summator.pyx diff --git a/gstools/field/tools.py b/src/gstools/field/tools.py similarity index 100% rename from gstools/field/tools.py rename to src/gstools/field/tools.py diff --git a/gstools/field/upscaling.py b/src/gstools/field/upscaling.py similarity index 100% rename from gstools/field/upscaling.py rename to src/gstools/field/upscaling.py diff --git a/gstools/krige/__init__.py b/src/gstools/krige/__init__.py similarity index 100% rename from gstools/krige/__init__.py rename to src/gstools/krige/__init__.py diff --git a/gstools/krige/base.py b/src/gstools/krige/base.py similarity index 100% rename from gstools/krige/base.py rename to src/gstools/krige/base.py diff --git a/gstools/krige/krigesum.pyx b/src/gstools/krige/krigesum.pyx similarity index 100% rename from gstools/krige/krigesum.pyx rename to src/gstools/krige/krigesum.pyx diff --git a/gstools/krige/methods.py b/src/gstools/krige/methods.py similarity index 100% rename from gstools/krige/methods.py rename to src/gstools/krige/methods.py diff --git a/gstools/krige/tools.py b/src/gstools/krige/tools.py similarity index 100% rename from gstools/krige/tools.py rename to src/gstools/krige/tools.py diff --git a/gstools/normalizer/__init__.py b/src/gstools/normalizer/__init__.py similarity index 100% rename from gstools/normalizer/__init__.py rename to src/gstools/normalizer/__init__.py diff --git a/gstools/normalizer/base.py b/src/gstools/normalizer/base.py similarity index 100% rename from gstools/normalizer/base.py rename to src/gstools/normalizer/base.py diff --git a/gstools/normalizer/methods.py b/src/gstools/normalizer/methods.py similarity index 100% rename from gstools/normalizer/methods.py rename to src/gstools/normalizer/methods.py diff --git a/gstools/normalizer/tools.py b/src/gstools/normalizer/tools.py similarity index 100% rename from gstools/normalizer/tools.py rename to src/gstools/normalizer/tools.py diff --git a/gstools/random/__init__.py b/src/gstools/random/__init__.py similarity index 100% rename from gstools/random/__init__.py rename to src/gstools/random/__init__.py diff --git a/gstools/random/rng.py b/src/gstools/random/rng.py similarity index 100% rename from gstools/random/rng.py rename to src/gstools/random/rng.py diff --git a/gstools/random/tools.py b/src/gstools/random/tools.py similarity index 100% rename from gstools/random/tools.py rename to src/gstools/random/tools.py diff --git a/gstools/tools/__init__.py b/src/gstools/tools/__init__.py similarity index 100% rename from gstools/tools/__init__.py rename to src/gstools/tools/__init__.py diff --git a/gstools/tools/export.py b/src/gstools/tools/export.py similarity index 100% rename from gstools/tools/export.py rename to src/gstools/tools/export.py diff --git a/gstools/tools/geometric.py b/src/gstools/tools/geometric.py similarity index 100% rename from gstools/tools/geometric.py rename to src/gstools/tools/geometric.py diff --git a/gstools/tools/misc.py b/src/gstools/tools/misc.py similarity index 100% rename from gstools/tools/misc.py rename to src/gstools/tools/misc.py diff --git a/gstools/tools/special.py b/src/gstools/tools/special.py similarity index 100% rename from gstools/tools/special.py rename to src/gstools/tools/special.py diff --git a/gstools/transform/__init__.py b/src/gstools/transform/__init__.py similarity index 100% rename from gstools/transform/__init__.py rename to src/gstools/transform/__init__.py diff --git a/gstools/transform/array.py b/src/gstools/transform/array.py similarity index 100% rename from gstools/transform/array.py rename to src/gstools/transform/array.py diff --git a/gstools/transform/field.py b/src/gstools/transform/field.py similarity index 100% rename from gstools/transform/field.py rename to src/gstools/transform/field.py diff --git a/gstools/variogram/__init__.py b/src/gstools/variogram/__init__.py similarity index 100% rename from gstools/variogram/__init__.py rename to src/gstools/variogram/__init__.py diff --git a/gstools/variogram/binning.py b/src/gstools/variogram/binning.py similarity index 100% rename from gstools/variogram/binning.py rename to src/gstools/variogram/binning.py diff --git a/gstools/variogram/estimator.pyx b/src/gstools/variogram/estimator.pyx similarity index 100% rename from gstools/variogram/estimator.pyx rename to src/gstools/variogram/estimator.pyx diff --git a/gstools/variogram/variogram.py b/src/gstools/variogram/variogram.py similarity index 100% rename from gstools/variogram/variogram.py rename to src/gstools/variogram/variogram.py From f2a8d7f856178a4302fa6dc0be7678ecd989ccfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 21:43:18 +0200 Subject: [PATCH 08/21] setup: cython fixes --- setup.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/setup.py b/setup.py index 1bbc7faf..6d1d9b0d 100644 --- a/setup.py +++ b/setup.py @@ -127,33 +127,33 @@ def check_openmp_support(): # cython extensions ########################################################### +CY_KWARGS = dict( + include_dirs=[np.get_include()], + extra_compile_args=FLAGS, + extra_link_args=FLAGS, + define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")], +) CY_MODULES = [] CY_MODULES.append( Extension( "gstools.field.summator", - [os.path.join("gstools", "field", "summator.pyx")], - include_dirs=[np.get_include()], - extra_compile_args=FLAGS, - extra_link_args=FLAGS, + [os.path.join("src", "gstools", "field", "summator.pyx")], + **CY_KWARGS, ) ) CY_MODULES.append( Extension( "gstools.variogram.estimator", - [os.path.join("gstools", "variogram", "estimator.pyx")], + [os.path.join("src", "gstools", "variogram", "estimator.pyx")], language="c++", - include_dirs=[np.get_include()], - extra_compile_args=FLAGS, - extra_link_args=FLAGS, + **CY_KWARGS, ) ) CY_MODULES.append( Extension( "gstools.krige.krigesum", - [os.path.join("gstools", "krige", "krigesum.pyx")], - include_dirs=[np.get_include()], - extra_compile_args=FLAGS, - extra_link_args=FLAGS, + [os.path.join("src", "gstools", "krige", "krigesum.pyx")], + **CY_KWARGS, ) ) EXT_MODULES = cythonize(CY_MODULES) # annotate=True @@ -166,4 +166,4 @@ def check_openmp_support(): # setup ####################################################################### -setup(ext_modules=EXT_MODULES, include_dirs=[np.get_include()]) +setup(ext_modules=EXT_MODULES, include_package_data=False) From 6fbba810efc0f63d7e886222eed1b3d5464b868b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 21:43:42 +0200 Subject: [PATCH 09/21] src path fixes --- .github/workflows/main.yml | 2 +- .gitignore | 2 +- MANIFEST.in | 6 +++--- pyproject.toml | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e941baca..5f869ee7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,7 @@ jobs: - name: pylint check run: | - python -m pylint gstools/ + python -m pylint src/gstools/ - name: isort check run: | diff --git a/.gitignore b/.gitignore index 1ff77bf2..a04623a1 100644 --- a/.gitignore +++ b/.gitignore @@ -112,7 +112,7 @@ info/ *.cpp # generated version file -gstools/_version.py +src/gstools/_version.py # generated docs docs/source/examples/ diff --git a/MANIFEST.in b/MANIFEST.in index 71c3bb1d..aeb73226 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,7 +1,7 @@ prune * graft tests -recursive-include gstools *.py *.pyx -recursive-exclude gstools *.c *.cpp -include LICENSE README.md pyproject.toml setup.py setup.cfg +recursive-include src/gstools *.py *.pyx +recursive-exclude src/gstools *.c *.cpp +include LICENSE README.md pyproject.toml setup.py exclude CHANGELOG.md CONTRIBUTING.md AUTHORS.md global-exclude __pycache__ *.py[cod] .* diff --git a/pyproject.toml b/pyproject.toml index f7c86c83..bab03428 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -81,7 +81,7 @@ rust = ["gstools_core>=0.2.0,<1"] test = ["pytest-cov>=3"] [tool.setuptools_scm] -write_to = "gstools/_version.py" +write_to = "src/gstools/_version.py" write_to_template = "__version__ = '{version}'" local_scheme = "no-local-version" fallback_version = "0.0.0.dev0" @@ -106,8 +106,8 @@ target-version = [ "*docs*", "*examples*", "*tests*", - "*/gstools/covmodel/plot.py", - "*/gstools/field/plot.py", + "*/src/gstools/covmodel/plot.py", + "*/src/gstools/field/plot.py", ] [tool.coverage.report] From 5a9cb480b6fe5e1e2461e4a2083284b85043e2d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 23:22:14 +0200 Subject: [PATCH 10/21] setup: use extension_helpers for openmp support --- pyproject.toml | 1 + setup.py | 174 +++++++------------------------------------------ 2 files changed, 23 insertions(+), 152 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index bab03428..cae9a9dc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,6 +5,7 @@ requires = [ "setuptools_scm[toml]>=6.4", "oldest-supported-numpy", "Cython>=0.28.3,<3.0", + "extension-helpers", ] build-backend = "setuptools.build_meta" diff --git a/setup.py b/setup.py index 6d1d9b0d..85b1651e 100644 --- a/setup.py +++ b/setup.py @@ -1,169 +1,39 @@ # -*- coding: utf-8 -*- """GSTools: A geostatistical toolbox.""" -import glob import os -import subprocess -import sys -import tempfile -from distutils.ccompiler import new_compiler -from distutils.errors import CompileError, LinkError -from distutils.sysconfig import customize_compiler import numpy as np from Cython.Build import cythonize +from extension_helpers import add_openmp_flags_if_available from setuptools import Extension, setup -HERE = os.path.abspath(os.path.dirname(__file__)) - - -# openmp finder ############################################################### -# This code is adapted for a large part from the scikit-learn openmp_helpers.py -# which can be found at: -# https://github.com/scikit-learn/scikit-learn/blob/0.24.0/sklearn/_build_utils - - -CCODE = """ -#include -#include -int main(void) { -#pragma omp parallel -printf("nthreads=%d\\n", omp_get_num_threads()); -return 0; -} -""" - - -def get_openmp_flag(compiler): - """Get the compiler dependent openmp flag.""" - if hasattr(compiler, "compiler"): - compiler = compiler.compiler[0] - else: - compiler = compiler.__class__.__name__ - - if sys.platform == "win32" and ("icc" in compiler or "icl" in compiler): - return ["/Qopenmp"] - if sys.platform == "win32": - return ["/openmp"] - if sys.platform == "darwin" and ("icc" in compiler or "icl" in compiler): - return ["-openmp"] - if sys.platform == "darwin" and "openmp" in os.getenv("CPPFLAGS", ""): - return [] - # Default flag for GCC and clang: - return ["-fopenmp"] - - -def check_openmp_support(): - """Check whether OpenMP test code can be compiled and run.""" - ccompiler = new_compiler() - customize_compiler(ccompiler) - - with tempfile.TemporaryDirectory() as tmp_dir: - try: - os.chdir(tmp_dir) - # Write test program - with open("test_openmp.c", "w") as cfile: - cfile.write(CCODE) - os.mkdir("objects") - # Compile, test program - openmp_flags = get_openmp_flag(ccompiler) - ccompiler.compile( - ["test_openmp.c"], - output_dir="objects", - extra_postargs=openmp_flags, - ) - # Link test program - extra_preargs = os.getenv("LDFLAGS", None) - if extra_preargs is not None: - extra_preargs = extra_preargs.split(" ") - else: - extra_preargs = [] - objects = glob.glob( - os.path.join("objects", "*" + ccompiler.obj_extension) - ) - ccompiler.link_executable( - objects, - "test_openmp", - extra_preargs=extra_preargs, - extra_postargs=openmp_flags, - ) - # Run test program - output = subprocess.check_output("./test_openmp") - output = output.decode(sys.stdout.encoding or "utf-8").splitlines() - # Check test program output - if "nthreads=" in output[0]: - nthreads = int(output[0].strip().split("=")[1]) - openmp_supported = len(output) == nthreads - else: - openmp_supported = False - openmp_flags = [] - except (CompileError, LinkError, subprocess.CalledProcessError): - openmp_supported = False - openmp_flags = [] - finally: - os.chdir(HERE) - return openmp_supported, openmp_flags - - -# openmp ###################################################################### - +# cython extensions +CY_FILES = [ + {"name": "gstools.field.summator", "language": "c"}, + {"name": "gstools.variogram.estimator", "language": "c++"}, + {"name": "gstools.krige.krigesum", "language": "c"}, +] +CY_MODULES = [] +for file in CY_FILES: + CY_MODULES.append( + Extension( + name=file["name"], + sources=[os.path.join("src", *file["name"].split(".")) + ".pyx"], + language=file["language"], + define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")], + ) + ) # you can set GSTOOLS_BUILD_PARALLEL=0 or GSTOOLS_BUILD_PARALLEL=1 -GS_PARALLEL = os.getenv("GSTOOLS_BUILD_PARALLEL") -USE_OPENMP = bool(int(GS_PARALLEL)) if GS_PARALLEL else False - +USE_OPENMP = bool(int(os.getenv("GSTOOLS_BUILD_PARALLEL", "0"))) if USE_OPENMP: - # just check if wanted - CAN_USE_OPENMP, FLAGS = check_openmp_support() - if CAN_USE_OPENMP: + for mod in CY_MODULES: + openmp_flags_added = add_openmp_flags_if_available(mod) + if openmp_flags_added: print("## GSTOOLS setup: OpenMP found.") - print("## OpenMP flags:", FLAGS) else: print("## GSTOOLS setup: OpenMP not found.") else: print("## GSTOOLS setup: OpenMP not wanted by the user.") - FLAGS = [] - - -# cython extensions ########################################################### - - -CY_KWARGS = dict( - include_dirs=[np.get_include()], - extra_compile_args=FLAGS, - extra_link_args=FLAGS, - define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")], -) -CY_MODULES = [] -CY_MODULES.append( - Extension( - "gstools.field.summator", - [os.path.join("src", "gstools", "field", "summator.pyx")], - **CY_KWARGS, - ) -) -CY_MODULES.append( - Extension( - "gstools.variogram.estimator", - [os.path.join("src", "gstools", "variogram", "estimator.pyx")], - language="c++", - **CY_KWARGS, - ) -) -CY_MODULES.append( - Extension( - "gstools.krige.krigesum", - [os.path.join("src", "gstools", "krige", "krigesum.pyx")], - **CY_KWARGS, - ) -) -EXT_MODULES = cythonize(CY_MODULES) # annotate=True - -# embed signatures for sphinx -for ext_m in EXT_MODULES: - ext_m.cython_directives = {"embedsignature": True} - - -# setup ####################################################################### - -setup(ext_modules=EXT_MODULES, include_package_data=False) +setup(ext_modules=cythonize(CY_MODULES), include_package_data=False) From c4927db43813a85d9ade487e319cc00ae7036183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 23:26:47 +0200 Subject: [PATCH 11/21] setup: add missing include_dirs --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 85b1651e..958403b3 100644 --- a/setup.py +++ b/setup.py @@ -20,6 +20,7 @@ name=file["name"], sources=[os.path.join("src", *file["name"].split(".")) + ".pyx"], language=file["language"], + include_dirs=[np.get_include()], define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")], ) ) From 388144117c04f31230dcb65006109c7ece7072c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 23:33:18 +0200 Subject: [PATCH 12/21] CI: verbose editable installs --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5f869ee7..c06ae055 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -31,7 +31,7 @@ jobs: run: | python -m pip install --upgrade pip pip install black 'pylint<3' 'isort[colors]<6' - pip install --editable . + pip install -v --editable . - name: black check run: | @@ -101,7 +101,7 @@ jobs: run: | python -m pip install --upgrade pip pip install build coveralls>=3.0.0 - pip install --editable .[test] + pip install -v --editable .[test] - name: Run tests env: From 9819a54ce317b7a78e5847c7515c412b1e5a41b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Fri, 27 May 2022 23:37:58 +0200 Subject: [PATCH 13/21] CI: correct gstools version for check stage by fetching all tags --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c06ae055..7ff9c1bc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,6 +21,8 @@ jobs: steps: - uses: actions/checkout@v2 + with: + fetch-depth: '0' - name: Set up Python 3.8 uses: actions/setup-python@v2 From 474cbd0b17d31a652d948dab62d4de42684426f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Sat, 28 May 2022 00:05:45 +0200 Subject: [PATCH 14/21] setup: cleanup --- setup.py | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/setup.py b/setup.py index 958403b3..579a7d57 100644 --- a/setup.py +++ b/setup.py @@ -13,21 +13,18 @@ {"name": "gstools.variogram.estimator", "language": "c++"}, {"name": "gstools.krige.krigesum", "language": "c"}, ] -CY_MODULES = [] -for file in CY_FILES: - CY_MODULES.append( - Extension( - name=file["name"], - sources=[os.path.join("src", *file["name"].split(".")) + ".pyx"], - language=file["language"], - include_dirs=[np.get_include()], - define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")], - ) +CY_MODULES = [ + Extension( + name=file["name"], + sources=[os.path.join("src", *file["name"].split(".")) + ".pyx"], + language=file["language"], + include_dirs=[np.get_include()], + define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")], ) - + for file in CY_FILES +] # you can set GSTOOLS_BUILD_PARALLEL=0 or GSTOOLS_BUILD_PARALLEL=1 -USE_OPENMP = bool(int(os.getenv("GSTOOLS_BUILD_PARALLEL", "0"))) -if USE_OPENMP: +if int(os.getenv("GSTOOLS_BUILD_PARALLEL", "0")): for mod in CY_MODULES: openmp_flags_added = add_openmp_flags_if_available(mod) if openmp_flags_added: @@ -37,4 +34,5 @@ else: print("## GSTOOLS setup: OpenMP not wanted by the user.") +# setup - do not include package data to ignore .pyx files in wheels setup(ext_modules=cythonize(CY_MODULES), include_package_data=False) From 87ea43392c65980c71a26fe84d768e14265b57f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Sat, 28 May 2022 00:22:49 +0200 Subject: [PATCH 15/21] setup: simplify cython --- setup.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/setup.py b/setup.py index 579a7d57..6b621fbd 100644 --- a/setup.py +++ b/setup.py @@ -8,31 +8,22 @@ from setuptools import Extension, setup # cython extensions -CY_FILES = [ - {"name": "gstools.field.summator", "language": "c"}, - {"name": "gstools.variogram.estimator", "language": "c++"}, - {"name": "gstools.krige.krigesum", "language": "c"}, -] CY_MODULES = [ Extension( - name=file["name"], - sources=[os.path.join("src", *file["name"].split(".")) + ".pyx"], - language=file["language"], + name=f"gstools.{ext}", + sources=[os.path.join("src", "gstools", *ext.split(".")) + ".pyx"], include_dirs=[np.get_include()], define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")], ) - for file in CY_FILES + for ext in ["field.summator", "variogram.estimator", "krige.krigesum"] ] # you can set GSTOOLS_BUILD_PARALLEL=0 or GSTOOLS_BUILD_PARALLEL=1 if int(os.getenv("GSTOOLS_BUILD_PARALLEL", "0")): for mod in CY_MODULES: openmp_flags_added = add_openmp_flags_if_available(mod) - if openmp_flags_added: - print("## GSTOOLS setup: OpenMP found.") - else: - print("## GSTOOLS setup: OpenMP not found.") + print(f"## GSTools setup: OpenMP found: {openmp_flags_added}") else: - print("## GSTOOLS setup: OpenMP not wanted by the user.") + print("## GSTools setup: OpenMP not wanted by the user.") # setup - do not include package data to ignore .pyx files in wheels setup(ext_modules=cythonize(CY_MODULES), include_package_data=False) From aeb7757e56a75b7998c7f0240d2e3b1ff7691317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Sat, 28 May 2022 01:07:47 +0200 Subject: [PATCH 16/21] setup: better check if openmp was used --- setup.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index 6b621fbd..4dd06ad7 100644 --- a/setup.py +++ b/setup.py @@ -19,9 +19,8 @@ ] # you can set GSTOOLS_BUILD_PARALLEL=0 or GSTOOLS_BUILD_PARALLEL=1 if int(os.getenv("GSTOOLS_BUILD_PARALLEL", "0")): - for mod in CY_MODULES: - openmp_flags_added = add_openmp_flags_if_available(mod) - print(f"## GSTools setup: OpenMP found: {openmp_flags_added}") + added = [add_openmp_flags_if_available(mod) for mod in CY_MODULES] + print(f"## GSTools setup: OpenMP used: {any(added)}") else: print("## GSTools setup: OpenMP not wanted by the user.") From 6f3bf7b1d75befb71cf1b68db1e73b520d939a26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Mon, 30 May 2022 11:20:57 +0200 Subject: [PATCH 17/21] update MANIFEST.in --- MANIFEST.in | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index aeb73226..24184482 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,7 +1,4 @@ -prune * -graft tests +prune ** +recursive-include tests *.py recursive-include src/gstools *.py *.pyx -recursive-exclude src/gstools *.c *.cpp -include LICENSE README.md pyproject.toml setup.py -exclude CHANGELOG.md CONTRIBUTING.md AUTHORS.md -global-exclude __pycache__ *.py[cod] .* +include AUTHORS.md LICENSE README.md pyproject.toml setup.py From afd698766d8547f14679536fab4e72df8b4562a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Mon, 30 May 2022 11:21:24 +0200 Subject: [PATCH 18/21] Metadata: reorder; add email --- pyproject.toml | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index cae9a9dc..8c5ad75b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,12 +10,20 @@ requires = [ build-backend = "setuptools.build_meta" [project] +requires-python = ">=3.7" name = "gstools" description = "GSTools: A geostatistical toolbox." -authors = [{name = "Sebastian Müller", email = "info@geostat-framework.org"}, {name = "Lennart Schüler"}] -maintainers = [{name = "Sebastian Müller", email = "info@geostat-framework.org"}, {name = "Lennart Schüler"}] +authors = [ + {name = "Sebastian Müller", email = "sebastian@geostat-framework.org"}, + {name = "Lennart Schüler", email = "lennart@geostat-framework.org"}, +] +maintainers = [ + {name = "Sebastian Müller", email = "sebastian@geostat-framework.org"}, + {name = "Lennart Schüler", email = "lennart@geostat-framework.org"}, +] readme = "README.md" license = {file = "LICENSE"} +dynamic = ["version"] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", @@ -50,16 +58,6 @@ dependencies = [ "pyevtk>=1.1.1", "scipy>=1.1.0", ] -dynamic = ["version"] -requires-python = ">=3.7" - -[project.urls] -Changelog = "https://github.com/GeoStat-Framework/GSTools/blob/main/CHANGELOG.md" -Conda-Forge = "https://anaconda.org/conda-forge/gstools" -Documentation = "https://gstools.readthedocs.io" -Homepage = "https://geostat-framework.org/#gstools" -Source = "https://github.com/GeoStat-Framework/GSTools" -Tracker = "https://github.com/GeoStat-Framework/GSTools/issues" [project.optional-dependencies] doc = [ @@ -81,6 +79,14 @@ plotting = [ rust = ["gstools_core>=0.2.0,<1"] test = ["pytest-cov>=3"] +[project.urls] +Changelog = "https://github.com/GeoStat-Framework/GSTools/blob/main/CHANGELOG.md" +Conda-Forge = "https://anaconda.org/conda-forge/gstools" +Documentation = "https://gstools.readthedocs.io" +Homepage = "https://geostat-framework.org/#gstools" +Source = "https://github.com/GeoStat-Framework/GSTools" +Tracker = "https://github.com/GeoStat-Framework/GSTools/issues" + [tool.setuptools_scm] write_to = "src/gstools/_version.py" write_to_template = "__version__ = '{version}'" From 801ebcdc088becb08cec7891e4a3b806e82fc529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Thu, 9 Jun 2022 12:41:16 +0200 Subject: [PATCH 19/21] PyProject: remove py3.6 from classifiers --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8c5ad75b..80238f25 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,6 @@ classifiers = [ "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", From b9baee3721ec1c9996fb6e60228d72c7ad6f8abe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Thu, 9 Jun 2022 12:41:33 +0200 Subject: [PATCH 20/21] Doc: update meshio min version --- README.md | 2 +- docs/source/index.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b58d48e9..2740aa9f 100644 --- a/README.md +++ b/README.md @@ -350,7 +350,7 @@ in memory for immediate 3D plotting in Python. - [hankel >= 1.0.0](https://github.com/steven-murray/hankel) - [emcee >= 3.0.0](https://github.com/dfm/emcee) - [pyevtk >= 1.1.1](https://github.com/pyscience-projects/pyevtk) -- [meshio >= 4.0.0](https://github.com/nschloe/meshio) +- [meshio >= 5.1.0](https://github.com/nschloe/meshio) ### Optional diff --git a/docs/source/index.rst b/docs/source/index.rst index d5724773..86ec0671 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -417,7 +417,7 @@ Requirements - `hankel >= 1.0.0 `_ - `emcee >= 3.0.0 `_ - `pyevtk >= 1.1.1 `_ -- `meshio >= 4.0.0 `_ +- `meshio >= 5.1.0 `_ Optional From c79cd080d9ab5976f9766fee7cd57fb3231b4b54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Thu, 9 Jun 2022 12:52:16 +0200 Subject: [PATCH 21/21] Pylint: update to v2.14 --- pyproject.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 80238f25..62cbbbf3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -124,12 +124,15 @@ target-version = [ ] [tool.pylint] - [tool.pylint.master] + [tool.pylint.main] extension-pkg-whitelist = [ "numpy", "scipy", ] ignore = "_version.py" + load-plugins = [ + "pylint.extensions.no_self_use", + ] [tool.pylint.message_control] disable = [