From d5ead943aa4535b315a6159dab2ffb9717d434d3 Mon Sep 17 00:00:00 2001
From: Markus Holzer <markus.holzer@fau.de>
Date: Mon, 15 Jan 2024 20:43:50 +0100
Subject: [PATCH] Align build system to pystencils

---
 .flake8        |   2 +-
 MANIFEST.in    |   6 +--
 pyproject.toml |  29 +++++-------
 quicktest.py   |  22 +++++++++
 setup.cfg      |  11 -----
 setup.py       | 121 +++----------------------------------------------
 6 files changed, 41 insertions(+), 150 deletions(-)
 create mode 100644 quicktest.py
 delete mode 100644 setup.cfg

diff --git a/.flake8 b/.flake8
index e642613b..4ce483e2 100644
--- a/.flake8
+++ b/.flake8
@@ -2,4 +2,4 @@
 max-line-length=120
 exclude=lbmpy/plot.py
         lbmpy/session.py
-ignore = W293 W503 W291 E741
+ignore = W293 W503 W291 C901 E741
diff --git a/MANIFEST.in b/MANIFEST.in
index 8d256aa5..db0bf635 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,7 +1,3 @@
-include README.md
-include COPYING.txt
 include AUTHORS.txt
 include CONTRIBUTING.md
-global-include *.pyx
-include versioneer.py
-include lbmpy/_version.py
+include CHANGELOG.md
diff --git a/pyproject.toml b/pyproject.toml
index f815ff30..e91b2256 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,11 +1,10 @@
 [project]
-name = "pystencils"
-description = "Speeding up stencil computations on CPUs and GPUs"
+name = "lbmpy"
+description = "Code Generation for Lattice Boltzmann Methods"
 dynamic = ["version"]
 readme = "README.md"
 authors = [
     { name = "Martin Bauer" },
-    { name = "Jan Hönig " },
     { name = "Markus Holzer" },
     { name = "Frederik Hennig" },
     { email = "cs10-codegen@fau.de" },
@@ -24,9 +23,9 @@ classifiers = [
 ]
 
 [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"
+"Bug Tracker" = "https://i10git.cs.fau.de/pycodegen/lbmpy/-/issues"
+"Documentation" = "https://pycodegen.pages.i10git.cs.fau.de/lbmpy/"
+"Source Code" = "https://i10git.cs.fau.de/pycodegen/lbmpy"
 
 [project.optional-dependencies]
 gpu = ['cupy']
@@ -40,6 +39,8 @@ interactive = [
     'pyevtk',
     'rich',
     'graphviz',
+    'scipy',
+    'scikit-image'
 ]
 use_cython = [
     'Cython'
@@ -70,22 +71,14 @@ 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.*"]
+include = ["lbmpy", "lbmpy.*"]
 namespaces = false
 
 [tool.versioneer]
@@ -94,7 +87,7 @@ namespaces = false
 # resulting files.
 VCS = "git"
 style = "pep440"
-versionfile_source = "pystencils/_version.py"
-versionfile_build = "pystencils/_version.py"
+versionfile_source = "lbmpy/_version.py"
+versionfile_build = "lbmpy/_version.py"
 tag_prefix = "release/"
-parentdir_prefix = "pystencils-"
+parentdir_prefix = "lbmpy-"
diff --git a/quicktest.py b/quicktest.py
new file mode 100644
index 00000000..76daf8b4
--- /dev/null
+++ b/quicktest.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+
+from contextlib import redirect_stdout
+import io
+from lbmpy_tests.test_quicktests import (
+    test_poiseuille_channel_quicktest,
+    test_entropic_methods,
+    test_cumulant_ldc
+)
+
+quick_tests = [
+    test_poiseuille_channel_quicktest,
+    test_entropic_methods,
+    test_cumulant_ldc,
+]
+
+if __name__ == "__main__":
+    print("Running lbmpy quicktests")
+    for qt in quick_tests:
+        print(f"   -> {qt.__name__}")
+        with redirect_stdout(io.StringIO()):
+            qt()
diff --git a/setup.cfg b/setup.cfg
deleted file mode 100644
index 60699171..00000000
--- a/setup.cfg
+++ /dev/null
@@ -1,11 +0,0 @@
-# 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.
-
-[versioneer]
-VCS = git
-style = pep440
-versionfile_source = lbmpy/_version.py
-versionfile_build = lbmpy/_version.py
-tag_prefix = release/
-parentdir_prefix = lbmpy-
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 87ca1837..e5b34490 100644
--- a/setup.py
+++ b/setup.py
@@ -1,121 +1,12 @@
-import os
-import io
-from setuptools import setup, find_packages
-import distutils
-from contextlib import redirect_stdout
-from importlib import import_module
-
+from setuptools import setup
 import versioneer
 
-try:
-    import cython  # noqa
-
-    USE_CYTHON = True
-except ImportError:
-    USE_CYTHON = False
-
-quick_tests = [
-    'test_quicktests.test_poiseuille_channel_quicktest',
-    'test_quicktests.test_entropic_methods',
-    'test_quicktests.test_cumulant_ldc',
-]
-
-
-class SimpleTestRunner(distutils.cmd.Command):
-    """A custom command to run selected tests"""
-
-    description = 'run some quick tests'
-    user_options = []
-
-    @staticmethod
-    def _run_tests_in_module(test):
-        """Short test runner function - to work also if py.test is not installed."""
-        test = 'lbmpy_tests.' + test
-        mod, function_name = test.rsplit('.', 1)
-        if isinstance(mod, str):
-            mod = import_module(mod)
-
-        func = getattr(mod, function_name)
-        with redirect_stdout(io.StringIO()):
-            func()
-
-    def initialize_options(self):
-        pass
-
-    def finalize_options(self):
-        pass
-
-    def run(self):
-        """Run command."""
-        for test in quick_tests:
-            self._run_tests_in_module(test)
-
-
-def readme():
-    with open('README.md') as f:
-        return f.read()
-
-
-def cython_extensions(*extensions):
-    from distutils.extension import Extension
-    if USE_CYTHON:
-        ext = '.pyx'
-        result = [Extension(e, [os.path.join(*e.split(".")) + ext]) for e in extensions]
-        from Cython.Build import cythonize
-        result = cythonize(result, language_level=3)
-        return result
-    elif all([os.path.exists(os.path.join(*e.split(".")) + '.c') for e in extensions]):
-        ext = '.c'
-        result = [Extension(e, [os.path.join(*e.split(".")) + ext]) for e in extensions]
-        return result
-    else:
-        return None
-
 
 def get_cmdclass():
-    cmdclass = {"quicktest": SimpleTestRunner}
-    cmdclass.update(versioneer.get_cmdclass())
-    return cmdclass
+    return versioneer.get_cmdclass()
 
 
-major_version = versioneer.get_version().split("+")[0]
-setup(name='lbmpy',
-      version=versioneer.get_version(),
-      description='Code Generation for Lattice Boltzmann Methods',
-      long_description=readme(),
-      long_description_content_type="text/markdown",
-      author='Martin Bauer, Markus Holzer, Frederik Hennig',
-      license='AGPLv3',
-      author_email='cs10-codegen@fau.de',
-      url='https://i10git.cs.fau.de/pycodegen/lbmpy/',
-      packages=['lbmpy'] + ['lbmpy.' + s for s in find_packages('lbmpy')],
-      install_requires=[f'pystencils>=0.4.0,<={major_version}', 'sympy>=1.5.1,<=1.11.1', 'numpy>=1.11.0'],
-      package_data={'lbmpy': ['phasefield/simplex_projection.pyx', 'phasefield/simplex_projection.c']},
-      ext_modules=cython_extensions("lbmpy.phasefield.simplex_projection"),
-      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/lbmpy/-/issues",
-          "Documentation": "https://pycodegen.pages.i10git.cs.fau.de/lbmpy/",
-          "Source Code": "https://i10git.cs.fau.de/pycodegen/lbmpy",
-      },
-      extras_require={
-          'gpu': ['cupy'],
-          'opencl': ['pyopencl'],
-          'alltrafos': ['islpy', 'py-cpuinfo'],
-          'interactive': ['scipy', 'scikit-image', 'cython', 'matplotlib',
-                          'ipy_table', 'imageio', 'jupyter', 'pyevtk'],
-          'doc': ['sphinx', 'sphinx_rtd_theme', 'nbsphinx',
-                  'sphinxcontrib-bibtex', 'sphinx_autodoc_typehints', 'pandoc'],
-          'phasefield': ['Cython']
-      },
-      python_requires=">=3.8",
-      cmdclass=get_cmdclass()
-      )
+setup(
+    version=versioneer.get_version(),
+    cmdclass=get_cmdclass(),
+)
-- 
GitLab