Commit a7308c3e authored by Christoph Groth's avatar Christoph Groth
Browse files

Merge removal of setup_requires from branch stable_py2 into stable

parents 48533e47 04edb898
Pipeline #1801 passed with stage
in 2 minutes and 42 seconds
......@@ -30,13 +30,20 @@ from setuptools import setup, find_packages, Extension, Command
from sysconfig import get_platform
from distutils.errors import DistutilsError, DistutilsModuleError, \
from import build
from setuptools.command.sdist import sdist
from setuptools.command.build_ext import build_ext
from import build as build_orig
from setuptools.command.sdist import sdist as sdist_orig
from setuptools.command.build_ext import build_ext as build_ext_orig
from setuptools.command.test import test as test_orig
def banner(title=''):
starred =, '*')
return '\n' + starred if title else starred
import numpy
except ImportError:
print(banner(' Caution '), 'NumPy header directory cannot be determined'
' ("import numpy" failed).', banner(), sep='\n', file=sys.stderr)
include_dirs = []
include_dirs = [numpy.get_include()]
......@@ -98,10 +105,6 @@ if use_cython:
distr_root = os.path.dirname(os.path.abspath(__file__))
def banner(title=''):
starred =, '*')
return '\n' + starred if title else starred
error_msg = """{header}
The compilation of Kwant has failed. Please examine the error message
above and consult the installation instructions in README.rst.
......@@ -115,7 +118,7 @@ Build configuration was:
error_msg = error_msg.format(header=banner(' Error '), sep=banner())
class kwant_build_ext(build_ext):
class build_ext(build_ext_orig):
def run(self):
if not config_file_present:
# Create an empty config file if none is present so that the
......@@ -126,7 +129,7 @@ class kwant_build_ext(build_ext):
f.write('# Created by - feel free to modify.\n')
except (DistutilsError, CCompilerError):
print(error_msg.format(file=CONFIG_FILE, summary=build_summary),
......@@ -136,7 +139,7 @@ class kwant_build_ext(build_ext):
class kwant_build_tut(Command):
class build_tut(Command):
description = "build the tutorial scripts"
user_options = []
......@@ -162,11 +165,11 @@ class kwant_build_tut(Command):
# Even though the tutorial is not necessary for installation, and "build" is
# supposed to make everything needed to install, this is a robust way to ensure
# that the tutorial is present.
class kwant_build(build):
sub_commands = [('build_tut', None)] + build.sub_commands
class build(build_orig):
sub_commands = [('build_tut', None)] + build_orig.sub_commands
def run(self):
write_version(os.path.join(self.build_lib, *STATIC_VERSION_PATH))
......@@ -189,8 +192,8 @@ def git_lsfiles():
# distribution in the current state actually builds. It also makes sure that
# the Cython-made C files and the tutorial will be included in the source
# distribution and that they will be up-to-date.
class kwant_sdist(sdist):
sub_commands = [('build', None)] + sdist.sub_commands
class sdist(sdist_orig):
sub_commands = [('build', None)] + sdist_orig.sub_commands
def run(self):
......@@ -222,7 +225,7 @@ class kwant_sdist(sdist):
f.write(''.join([' ', a, sep, stem, dot, 'c']))
if names is None:
print(banner(' Caution '),
......@@ -231,10 +234,23 @@ source distribution. The old {} was used.""".format(MANIFEST_IN_FILE),
banner(), sep='\n', file=sys.stderr)
def make_release_tree(self, base_dir, files):
sdist.make_release_tree(self, base_dir, files)
sdist_orig.make_release_tree(self, base_dir, files)
write_version(os.path.join(base_dir, *STATIC_VERSION_PATH))
# The only purpose of this class is to provide a better error message when
# "nose" is not available.
class test(test_orig):
def run(self):
import nose
except ImportError:
print('The Python package "nose" is required to run tests.',
def write_version(fname):
# This could be a hard link, so try to delete it first. Is there any way
# to do this atomically together with opening?
......@@ -476,13 +492,13 @@ def main():
test_suite = 'nose.collector',
cmdclass={'build': kwant_build,
'sdist': kwant_sdist,
'build_ext': kwant_build_ext,
'build_tut': kwant_build_tut},
cmdclass={'build': build,
'sdist': sdist,
'build_ext': build_ext,
'build_tut': build_tut,
'test': test},
setup_requires=['numpy > 1.6.1', 'nose >= 1.0'],
install_requires=['numpy > 1.6.1', 'scipy >= 0.9', 'tinyarray'],
extras_require={'plotting': 'matplotlib >= 1.2'},
classifiers=[c.strip() for c in CLASSIFIERS.split('\n')])
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment