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