From 4a17e5ef8a6554bb2cd5c410db23014425017485 Mon Sep 17 00:00:00 2001 From: Markus Holzer <markus.holzer@fau.de> Date: Mon, 15 Jan 2024 20:43:27 +0100 Subject: [PATCH] Align build system to pystencils --- lbmpy/phasefield/nphase_nestler.py | 5 +- lbmpy/phasefield/simplex_projection.pyx | 5 +- pyproject.toml | 100 ++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 pyproject.toml diff --git a/lbmpy/phasefield/nphase_nestler.py b/lbmpy/phasefield/nphase_nestler.py index f11e9f7c..3b0ea148 100644 --- a/lbmpy/phasefield/nphase_nestler.py +++ b/lbmpy/phasefield/nphase_nestler.py @@ -4,10 +4,7 @@ try: pyximport.install(language_level=3) from lbmpy.phasefield.simplex_projection import simplex_projection_2d # NOQA except ImportError: - try: - from lbmpy.phasefield.simplex_projection import simplex_projection_2d # NOQA - except ImportError: - raise ImportError("neither pyximport nor binary module simplex_projection_2d available.") + raise ImportError("pyximport not available. Please install Cython to use simplex_projection_2d.") import sympy as sp diff --git a/lbmpy/phasefield/simplex_projection.pyx b/lbmpy/phasefield/simplex_projection.pyx index 26fa3176..7af2ca8d 100644 --- a/lbmpy/phasefield/simplex_projection.pyx +++ b/lbmpy/phasefield/simplex_projection.pyx @@ -1,7 +1,4 @@ -# Workaround for cython bug -# see https://stackoverflow.com/questions/8024805/cython-compiled-c-extension-importerror-dynamic-module-does-not-define-init-fu -WORKAROUND = "Something" - +# cython: language_level=3str import cython diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..f815ff30 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,100 @@ +[project] +name = "pystencils" +description = "Speeding up stencil computations on CPUs and GPUs" +dynamic = ["version"] +readme = "README.md" +authors = [ + { name = "Martin Bauer" }, + { name = "Jan Hönig " }, + { name = "Markus Holzer" }, + { name = "Frederik Hennig" }, + { email = "cs10-codegen@fau.de" }, +] +license = { file = "COPYING.txt" } +requires-python = ">=3.10" +dependencies = ["sympy>=1.6,<=1.11.1", "numpy>=1.8.0", "appdirs", "joblib"] +classifiers = [ + "Development Status :: 4 - Beta", + "Framework :: Jupyter", + "Topic :: Software Development :: Code Generators", + "Topic :: Scientific/Engineering :: Physics", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", +] + +[project.urls] +"Bug Tracker" = "https://i10git.cs.fau.de/pycodegen/pystencils/-/issues" +"Documentation" = "https://pycodegen.pages.i10git.cs.fau.de/pystencils/" +"Source Code" = "https://i10git.cs.fau.de/pycodegen/pystencils" + +[project.optional-dependencies] +gpu = ['cupy'] +alltrafos = ['islpy', 'py-cpuinfo'] +bench_db = ['blitzdb', 'pymongo', 'pandas'] +interactive = [ + 'matplotlib', + 'ipy_table', + 'imageio', + 'jupyter', + 'pyevtk', + 'rich', + 'graphviz', +] +use_cython = [ + 'Cython' +] +doc = [ + 'sphinx', + 'sphinx_rtd_theme', + 'nbsphinx', + 'sphinxcontrib-bibtex', + 'sphinx_autodoc_typehints', + 'pandoc', +] +tests = [ + 'pytest', + 'pytest-cov', + 'pytest-html', + 'ansi2html', + 'pytest-xdist', + 'flake8', + 'nbformat', + 'nbconvert', + 'ipython', + 'randomgen>=1.18', +] + +[build-system] +requires = [ + "setuptools>=69", + "versioneer>=0.29", + "tomli; python_version < '3.11'", + # 'Cython' +] +build-backend = "setuptools.build_meta" + +[tool.setuptools.package-data] +pystencils = [ + "include/*.h", + "backends/cuda_known_functions.txt", + "backends/opencl1.1_known_functions.txt", + "boundaries/createindexlistcython.c", + "boundaries/createindexlistcython.pyx", +] + +[tool.setuptools.packages.find] +where = ["."] +include = ["pystencils", "pystencils.*"] +namespaces = false + +[tool.versioneer] +# See the docstring in versioneer.py for instructions. Note that you must +# re-run 'versioneer.py setup' after changing this section, and commit the +# resulting files. +VCS = "git" +style = "pep440" +versionfile_source = "pystencils/_version.py" +versionfile_build = "pystencils/_version.py" +tag_prefix = "release/" +parentdir_prefix = "pystencils-" -- GitLab