Skip to content
Snippets Groups Projects
Commit d5ead943 authored by Markus Holzer's avatar Markus Holzer
Browse files

Align build system to pystencils

parent 4a17e5ef
No related branches found
No related tags found
1 merge request!163Refactor build system
...@@ -2,4 +2,4 @@ ...@@ -2,4 +2,4 @@
max-line-length=120 max-line-length=120
exclude=lbmpy/plot.py exclude=lbmpy/plot.py
lbmpy/session.py lbmpy/session.py
ignore = W293 W503 W291 E741 ignore = W293 W503 W291 C901 E741
include README.md
include COPYING.txt
include AUTHORS.txt include AUTHORS.txt
include CONTRIBUTING.md include CONTRIBUTING.md
global-include *.pyx include CHANGELOG.md
include versioneer.py
include lbmpy/_version.py
[project] [project]
name = "pystencils" name = "lbmpy"
description = "Speeding up stencil computations on CPUs and GPUs" description = "Code Generation for Lattice Boltzmann Methods"
dynamic = ["version"] dynamic = ["version"]
readme = "README.md" readme = "README.md"
authors = [ authors = [
{ name = "Martin Bauer" }, { name = "Martin Bauer" },
{ name = "Jan Hönig " },
{ name = "Markus Holzer" }, { name = "Markus Holzer" },
{ name = "Frederik Hennig" }, { name = "Frederik Hennig" },
{ email = "cs10-codegen@fau.de" }, { email = "cs10-codegen@fau.de" },
...@@ -24,9 +23,9 @@ classifiers = [ ...@@ -24,9 +23,9 @@ classifiers = [
] ]
[project.urls] [project.urls]
"Bug Tracker" = "https://i10git.cs.fau.de/pycodegen/pystencils/-/issues" "Bug Tracker" = "https://i10git.cs.fau.de/pycodegen/lbmpy/-/issues"
"Documentation" = "https://pycodegen.pages.i10git.cs.fau.de/pystencils/" "Documentation" = "https://pycodegen.pages.i10git.cs.fau.de/lbmpy/"
"Source Code" = "https://i10git.cs.fau.de/pycodegen/pystencils" "Source Code" = "https://i10git.cs.fau.de/pycodegen/lbmpy"
[project.optional-dependencies] [project.optional-dependencies]
gpu = ['cupy'] gpu = ['cupy']
...@@ -40,6 +39,8 @@ interactive = [ ...@@ -40,6 +39,8 @@ interactive = [
'pyevtk', 'pyevtk',
'rich', 'rich',
'graphviz', 'graphviz',
'scipy',
'scikit-image'
] ]
use_cython = [ use_cython = [
'Cython' 'Cython'
...@@ -70,22 +71,14 @@ requires = [ ...@@ -70,22 +71,14 @@ requires = [
"setuptools>=69", "setuptools>=69",
"versioneer>=0.29", "versioneer>=0.29",
"tomli; python_version < '3.11'", "tomli; python_version < '3.11'",
# 'Cython'
] ]
build-backend = "setuptools.build_meta" build-backend = "setuptools.build_meta"
[tool.setuptools.package-data] [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] [tool.setuptools.packages.find]
where = ["."] where = ["."]
include = ["pystencils", "pystencils.*"] include = ["lbmpy", "lbmpy.*"]
namespaces = false namespaces = false
[tool.versioneer] [tool.versioneer]
...@@ -94,7 +87,7 @@ namespaces = false ...@@ -94,7 +87,7 @@ namespaces = false
# resulting files. # resulting files.
VCS = "git" VCS = "git"
style = "pep440" style = "pep440"
versionfile_source = "pystencils/_version.py" versionfile_source = "lbmpy/_version.py"
versionfile_build = "pystencils/_version.py" versionfile_build = "lbmpy/_version.py"
tag_prefix = "release/" tag_prefix = "release/"
parentdir_prefix = "pystencils-" parentdir_prefix = "lbmpy-"
#!/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()
# 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
import os from setuptools import setup
import io
from setuptools import setup, find_packages
import distutils
from contextlib import redirect_stdout
from importlib import import_module
import versioneer 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(): def get_cmdclass():
cmdclass = {"quicktest": SimpleTestRunner} return versioneer.get_cmdclass()
cmdclass.update(versioneer.get_cmdclass())
return cmdclass
major_version = versioneer.get_version().split("+")[0] setup(
setup(name='lbmpy', version=versioneer.get_version(),
version=versioneer.get_version(), cmdclass=get_cmdclass(),
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()
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment