From 102baad75fdeff7f590b5cd193a30306e84d7f2d Mon Sep 17 00:00:00 2001 From: Hank Corbett Date: Fri, 14 Jul 2023 13:39:37 -0400 Subject: [PATCH 1/6] Add numpy/wheel to setup requirements, attempting to add PEP517 compliance for poetry interoperability --- source/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/setup.py b/source/setup.py index e761815..ab7c013 100644 --- a/source/setup.py +++ b/source/setup.py @@ -92,7 +92,7 @@ def get_property(prop:str, project:str): # }, author="Demitri Muna", author_email="demitri@trillianverse.org", - #setup_requires=['wheel'], # needed to package for distribution + setup_requires=['wheel', 'numpy'], # needed to package for distribution #install_requires=[], #packages=find_packages(), data_files=data_files, From 070df59313b826bd2c023079b850fd9dfe8019ce Mon Sep 17 00:00:00 2001 From: Hank Corbett Date: Fri, 14 Jul 2023 15:03:32 -0400 Subject: [PATCH 2/6] Add numpy/wheel to setup requirements, attempting to add PEP517 compliance for poetry interoperability --- source/setup.py | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/source/setup.py b/source/setup.py index ab7c013..cdb7d8e 100644 --- a/source/setup.py +++ b/source/setup.py @@ -7,26 +7,17 @@ from distutils.core import setup, Extension #from setuptools import setup, Extension #from setuptools import find_packages +from setuptools.command.build_ext import build_ext as _build_ext -import numpy as np +class build_ext(_build_ext): + def finalize_options(self): + _build_ext.finalize_options(self) + # Prevent numpy from thinking it is still in its setup process: + __builtins__.__NUMPY_SETUP__ = False + import numpy as np + self.include_dirs.append(np.get_include()) -# directions on including NumPy in a C extension: -# Ref: https://numpy.org/doc/stable/reference/c-api/array.html#importing-the-api -#copt = {} -#lopt = {} - -#class build_ext_subclass( build_ext ): -# pass -# def build_extensions(self): -# c = self.compiler.compiler_type -# if c in copt: -# for e in self.extensions: -# e.extra_compile_args = copt[ c ] -# if c in lopt: -# for e in self.extensions: -# e.extra_link_args = lopt[ c ] -# build_ext.build_extensions(self) def get_property(prop:str, project:str): ''' @@ -38,7 +29,7 @@ def get_property(prop:str, project:str): sources = ["qlsc/c_code/qlsc_c_module.c", "qlsc/c_code/q3c/q3cube.c", "qlsc/c_code/q3c/q3c_poly.c"] data_files = [] -include_dirs = ['q3c', np.get_include()] # -I directories +include_dirs = ['q3c'] # -I directories library_dirs = [] # -L directories libraries = [] # libraries to include define_macros = [('Q3C_VERSION', '"2.0.0"'), # equivalent of a bare #define in C source @@ -102,6 +93,5 @@ def get_property(prop:str, project:str): packages=setuptools.find_packages(), #['qlsc'], include_package_data = True, # add files specified in MANIFEST.in, specifically header files python_requires='>=3.6' + cmdclass={"build_ext": build_ext} ) -# cmdclass={"build_ext": build_ext_subclass} -#) From 77cf9da81d5d7ff58b4c47333fd4b52dc8715af5 Mon Sep 17 00:00:00 2001 From: Hank Corbett Date: Fri, 14 Jul 2023 15:04:31 -0400 Subject: [PATCH 3/6] Add numpy/wheel to setup requirements, attempting to add PEP517 compliance for poetry interoperability --- source/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/setup.py b/source/setup.py index cdb7d8e..61e35b8 100644 --- a/source/setup.py +++ b/source/setup.py @@ -92,6 +92,6 @@ def get_property(prop:str, project:str): include_dirs=['q3c'], packages=setuptools.find_packages(), #['qlsc'], include_package_data = True, # add files specified in MANIFEST.in, specifically header files - python_requires='>=3.6' + python_requires='>=3.6', cmdclass={"build_ext": build_ext} ) From ed31e803272cfcdad5afd4c143002669d0314c03 Mon Sep 17 00:00:00 2001 From: Hank Corbett Date: Fri, 14 Jul 2023 15:07:31 -0400 Subject: [PATCH 4/6] Add numpy/wheel to setup requirements, attempting to add PEP517 compliance for poetry interoperability --- source/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/setup.py b/source/setup.py index 61e35b8..77bff8b 100644 --- a/source/setup.py +++ b/source/setup.py @@ -84,7 +84,7 @@ def get_property(prop:str, project:str): author="Demitri Muna", author_email="demitri@trillianverse.org", setup_requires=['wheel', 'numpy'], # needed to package for distribution - #install_requires=[], + install_requires=['numpy'], #packages=find_packages(), data_files=data_files, ext_package="qlsc", # will compile the methods from the extension to the namespace "qlsc" From 88ae202ec537c1749ac0b9cf78af1bb0c017436c Mon Sep 17 00:00:00 2001 From: Hank Corbett Date: Fri, 14 Jul 2023 15:11:20 -0400 Subject: [PATCH 5/6] remove unneeded numpy setup flag --- source/setup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/setup.py b/source/setup.py index 77bff8b..220cd56 100644 --- a/source/setup.py +++ b/source/setup.py @@ -12,8 +12,7 @@ class build_ext(_build_ext): def finalize_options(self): _build_ext.finalize_options(self) - # Prevent numpy from thinking it is still in its setup process: - __builtins__.__NUMPY_SETUP__ = False + import numpy as np self.include_dirs.append(np.get_include()) From 357c0766b4b1387fca562363917ab6e6cac044d1 Mon Sep 17 00:00:00 2001 From: Hank Corbett Date: Fri, 14 Jul 2023 17:39:27 -0400 Subject: [PATCH 6/6] moving numpy prereq to pyproject.toml --- source/pyproject.toml | 7 +++++++ source/setup.py | 13 +++---------- 2 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 source/pyproject.toml diff --git a/source/pyproject.toml b/source/pyproject.toml new file mode 100644 index 0000000..6573161 --- /dev/null +++ b/source/pyproject.toml @@ -0,0 +1,7 @@ +[build-system] +requires = ["setuptools>=61", "numpy"] +build-backend = "setuptools.build_meta" + +[project] +name = "qlsc" +version = "1.0.6" diff --git a/source/setup.py b/source/setup.py index 220cd56..afa3a3e 100644 --- a/source/setup.py +++ b/source/setup.py @@ -8,6 +8,9 @@ #from setuptools import setup, Extension #from setuptools import find_packages from setuptools.command.build_ext import build_ext as _build_ext +#from setuptools import dist + +#dist.Distribution().fetch_build_eggs(['numpy>=1.19']) class build_ext(_build_ext): def finalize_options(self): @@ -17,15 +20,6 @@ def finalize_options(self): self.include_dirs.append(np.get_include()) - -def get_property(prop:str, project:str): - ''' - Read the requested property (e.g. '__version__', '__author__') from the specified Python module. - Ref: https://stackoverflow.com/a/41110107/2712652 - ''' - result = re.search(r'{}\s*=\s*[\'"]([^\'"]*)[\'"]'.format(prop), open(project + '/__init__.py').read()) - return result.group(1) - sources = ["qlsc/c_code/qlsc_c_module.c", "qlsc/c_code/q3c/q3cube.c", "qlsc/c_code/q3c/q3c_poly.c"] data_files = [] include_dirs = ['q3c'] # -I directories @@ -64,7 +58,6 @@ def get_property(prop:str, project:str): setup( name="qlsc", version=__version__, - #version=get_property('__version__', 'qlsc'), description=description, long_description=long_description, #long_description_content_type='text/markdown; charset=UTF-8; variant=GFM',