chore: import upstream snapshot with attribution
Build / Build and test on ubuntu-latest for x86_64 (push) Failing after 1s
Build / Build and test on ubuntu-latest (numpy 1.26) for x86_64 (push) Failing after 0s
Build / Build and test on ubuntu-24.04-arm for aarch64 (push) Has been cancelled
Build / Build and test on windows-11-arm for aarch64 (push) Has been cancelled
Build / Build and test on macos-latest for x86_64 (push) Has been cancelled
Build / Build and test on windows-latest for x86_64 (push) Has been cancelled
Build / Build and test on ubuntu-latest for x86_64 (push) Failing after 1s
Build / Build and test on ubuntu-latest (numpy 1.26) for x86_64 (push) Failing after 0s
Build / Build and test on ubuntu-24.04-arm for aarch64 (push) Has been cancelled
Build / Build and test on windows-11-arm for aarch64 (push) Has been cancelled
Build / Build and test on macos-latest for x86_64 (push) Has been cancelled
Build / Build and test on windows-latest for x86_64 (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
#!/usr/bin/env python3
|
||||
###################################################################
|
||||
# NumExpr - Fast numerical array expression evaluator for NumPy.
|
||||
#
|
||||
# License: MIT
|
||||
# Author: See AUTHORS.txt
|
||||
#
|
||||
# See LICENSE.txt and LICENSES/*.txt for details about copyright and
|
||||
# rights to use.
|
||||
####################################################################
|
||||
|
||||
import configparser
|
||||
import os
|
||||
import os.path as op
|
||||
import platform
|
||||
|
||||
import numpy as np
|
||||
from setuptools import Extension, setup
|
||||
|
||||
with open('requirements.txt') as f:
|
||||
requirements = f.read().splitlines()
|
||||
|
||||
version = open("VERSION").read().strip()
|
||||
with open('numexpr/version.py', 'w') as fh:
|
||||
# Create the version.py file
|
||||
fh.write("# THIS FILE IS GENERATED BY `setup.py`\n")
|
||||
fh.write(f"__version__ = '{version}'\n")
|
||||
fh.write(f"version = '{version}'\n")
|
||||
try:
|
||||
fh.write("numpy_build_version = '%s'\n" % np.__version__)
|
||||
except ImportError:
|
||||
pass
|
||||
fh.write("platform_machine = '%s'\n" % platform.machine())
|
||||
|
||||
# Read the contents of your README file
|
||||
with open('README.rst', encoding='utf-8') as f:
|
||||
long_description = f.read()
|
||||
|
||||
lib_dirs = []
|
||||
inc_dirs = [np.get_include()]
|
||||
libs = [] # Pre-built libraries ONLY, like python36.so
|
||||
clibs = []
|
||||
def_macros = [
|
||||
# keep in sync with minimal runtime requirement (requirements.txt)
|
||||
('NPY_TARGET_VERSION', 'NPY_1_23_API_VERSION')
|
||||
]
|
||||
sources = ['numexpr/interpreter.cpp',
|
||||
'numexpr/module.cpp',
|
||||
'numexpr/numexpr_object.cpp']
|
||||
extra_cflags = []
|
||||
extra_link_args = []
|
||||
|
||||
if platform.uname().system == 'Windows':
|
||||
# For MSVC only
|
||||
if "MSC" in platform.python_compiler():
|
||||
extra_cflags = ['/O2']
|
||||
extra_link_args = []
|
||||
sources.append('numexpr/win32/pthread.c')
|
||||
else:
|
||||
extra_cflags = []
|
||||
extra_link_args = []
|
||||
|
||||
|
||||
def parse_site_cfg():
|
||||
"""
|
||||
Parses `site.cfg`, if it exists, to determine the location of Intel oneAPI MKL.
|
||||
|
||||
To compile NumExpr with MKL (VML) support, typically you need to copy the
|
||||
provided `site.cfg.example` to `site.cfg` and then edit the paths in the
|
||||
configuration lines for `include_dirs` and `library_dirs` paths to point
|
||||
to the appropriate directories on your machine.
|
||||
"""
|
||||
site = configparser.ConfigParser()
|
||||
if not op.isfile('site.cfg'):
|
||||
return
|
||||
|
||||
site.read('site.cfg')
|
||||
|
||||
if 'mkl' in site.sections():
|
||||
inc_dirs.extend(
|
||||
site['mkl']['include_dirs'].split(os.pathsep))
|
||||
lib_dirs.extend(
|
||||
site['mkl']['library_dirs'].split(os.pathsep))
|
||||
# numpy's site.cfg splits libraries by comma, but numexpr historically split by os.pathsep.
|
||||
# For compatibility, we split by both.
|
||||
libs.extend(
|
||||
site['mkl']['libraries'].replace(os.pathsep, ',').split(','))
|
||||
def_macros.append(('USE_VML', None))
|
||||
print(f'FOUND MKL IMPORT')
|
||||
|
||||
|
||||
def setup_package():
|
||||
|
||||
parse_site_cfg()
|
||||
|
||||
numexpr_extension = Extension(
|
||||
'numexpr.interpreter',
|
||||
include_dirs=inc_dirs,
|
||||
define_macros=def_macros,
|
||||
sources=sources,
|
||||
library_dirs=lib_dirs,
|
||||
libraries=libs,
|
||||
extra_compile_args=extra_cflags,
|
||||
extra_link_args=extra_link_args,
|
||||
)
|
||||
|
||||
metadata = dict(
|
||||
version=version,
|
||||
long_description=long_description,
|
||||
long_description_content_type='text/x-rst',
|
||||
install_requires=requirements,
|
||||
libraries=clibs,
|
||||
ext_modules=[
|
||||
numexpr_extension
|
||||
],
|
||||
)
|
||||
setup(**metadata)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
setup_package()
|
||||
Reference in New Issue
Block a user