diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 000000000..a34c60c68 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,6 @@ +include python/zfpy.pxd +include python/zfpy.pyx +recursive-include include *.h +recursive-include src *.c *.h +include LICENSE +include pyproject.toml \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..f43c81a75 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,8 @@ +[build-system] +requires = [ + "setuptools", + "wheel", + "cython", + "oldest-supported-numpy; python_version<'3.9'", + 'numpy; python_version>="3.9"', +] \ No newline at end of file diff --git a/python/zfpy.pxd b/python/zfpy.pxd index c92c29833..067bd90a4 100644 --- a/python/zfpy.pxd +++ b/python/zfpy.pxd @@ -1,3 +1,5 @@ +# cython: language_level=3 + import cython cimport libc.stdint as stdint from libc.stddef cimport ptrdiff_t diff --git a/python/zfpy.pyx b/python/zfpy.pyx index 0b7a19e1c..0d1eb5230 100644 --- a/python/zfpy.pyx +++ b/python/zfpy.pyx @@ -1,3 +1,5 @@ +# cython: language_level=3 + import sys import operator import functools diff --git a/setup.py b/setup.py index fa2da6efc..90b37865c 100644 --- a/setup.py +++ b/setup.py @@ -1,15 +1,48 @@ from setuptools import setup, Extension -import numpy as np + +class NumpyImport: + def __repr__(self): + import numpy as np + + return np.get_include() + + __fspath__ = __repr__ setup( name="zfpy", + setup_requires=["numpy", "cython"], version="1.0.1", author="Peter Lindstrom, Danielle Asher", author_email="zfp@llnl.gov", url="https://zfp.llnl.gov", + license="License :: OSI Approved :: BSD License", description="zfp compression in Python", long_description="zfp is a compressed format for representing multidimensional floating-point and integer arrays. zfp provides compressed-array classes that support high throughput read and write random access to individual array elements. zfp also supports serial and parallel compression of whole arrays using both lossless and lossy compression with error tolerances. zfp is primarily written in C and C++ but also includes Python and Fortran bindings.", - ext_modules=[Extension("zfpy", ["build/python/zfpy.c"], - include_dirs=["include", np.get_include()], - libraries=["zfp"], library_dirs=["build/lib64", "build/lib/Release"]), language_level = "3"] + ext_modules=[ + Extension( + "zfpy", + sources=["python/zfpy.pyx"], + include_dirs=["include", str(NumpyImport())], + libraries=["zfp"], + library_dirs=["build/lib64", "build/lib/Release"], + language_level=3, + lanugage="c", + ), + ], + classifiers=[ + "Intended Audience :: Developers", + "Development Status :: 4 - Beta", + "License :: OSI Approved :: BSD License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Scientific/Engineering :: Image Processing", + "Topic :: System :: Archiving :: Compression", + "Operating System :: POSIX", + "Operating System :: MacOS", + "Operating System :: Microsoft :: Windows :: Windows 10", + ], )