Permalink
Fetching contributors…
Cannot retrieve contributors at this time
111 lines (92 sloc) 4.01 KB
#!/usr/bin/env python
import os
import sys
try:
import setuptools # noqa
except ImportError:
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup, find_packages
from setuptools.extension import Extension
from setuptools.command.build_ext import build_ext as _build_ext
# workaround for installing bottleneck when numpy is not present
class build_ext(_build_ext):
# taken from: stackoverflow.com/questions/19919905/
# how-to-bootstrap-numpy-installation-in-setup-py#21621689
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
# place numpy includes first, see gh #156
self.include_dirs.insert(0, numpy.get_include())
def prepare_modules():
from bottleneck.src.template import make_c_files
make_c_files()
ext = [Extension("bottleneck.reduce",
sources=["bottleneck/src/reduce.c"],
extra_compile_args=['-O2'])]
ext += [Extension("bottleneck.move",
sources=["bottleneck/src/move.c",
"bottleneck/src/move_median/move_median.c"],
extra_compile_args=['-O2'])]
ext += [Extension("bottleneck.nonreduce",
sources=["bottleneck/src/nonreduce.c"],
extra_compile_args=['-O2'])]
ext += [Extension("bottleneck.nonreduce_axis",
sources=["bottleneck/src/nonreduce_axis.c"],
extra_compile_args=['-O2'])]
return ext
def get_long_description():
with open('README.rst', 'r') as fid:
long_description = fid.read()
idx = max(0, long_description.find("Bottleneck is a collection"))
long_description = long_description[idx:]
return long_description
def get_version_str():
ver_file = os.path.join('bottleneck', 'version.py')
with open(ver_file, 'r') as fid:
version = fid.read()
version = version.split("= ")
version = version[1].strip()
version = version.strip("\"")
return version
CLASSIFIERS = ["Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: C",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Topic :: Scientific/Engineering"]
metadata = dict(name='Bottleneck',
maintainer="Keith Goodman",
maintainer_email="bottle-neck@googlegroups.com",
description="Fast NumPy array functions written in C",
long_description=get_long_description(),
url="https://github.com/kwgoodman/bottleneck",
download_url="http://pypi.python.org/pypi/Bottleneck",
license="Simplified BSD",
classifiers=CLASSIFIERS,
platforms="OS Independent",
version=get_version_str(),
packages=find_packages(),
package_data={'bottleneck': ['LICENSE']},
requires=['numpy'],
install_requires=['numpy'],
cmdclass={'build_ext': build_ext},
setup_requires=['numpy'])
if not(len(sys.argv) >= 2 and ('--help' in sys.argv[1:] or
sys.argv[1] in ('--help-commands', 'egg_info', '--version', 'clean',
'build_sphinx'))):
# build bottleneck
metadata['ext_modules'] = prepare_modules()
elif sys.argv[1] == 'build_sphinx':
# create intro.rst (from readme file) for sphinx manual
readme = 'README.rst'
intro = os.path.join('doc', 'source', 'intro.rst')
with open(readme, 'r') as infile, open(intro, 'w') as outfile:
txt = infile.readlines()[4:] # skip travis, appveyor build status
outfile.write(''.join(txt))
setup(**metadata)