-
Notifications
You must be signed in to change notification settings - Fork 145
/
setup.py
executable file
·127 lines (101 loc) · 4.31 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/usr/bin/env python
import sys
from glob import glob
from distutils import log
from distutils.cmd import Command
# monkey-patch numpy distutils to use Cython instead of Pyrex
from build_helpers import generate_a_pyrex_source, package_check
from numpy.distutils.command.build_src import build_src
build_src.generate_a_pyrex_source = generate_a_pyrex_source
def configuration(parent_package='',top_path=None):
from numpy.distutils.misc_util import Configuration
config = Configuration(None, parent_package, top_path)
config.set_options(ignore_setup_xxx_py=True,
assume_default_configuration=True,
delegate_options_to_subpackages=True,
quiet=True)
# The quiet=True option will silence all of the name setting warnings:
# Ignoring attempt to set 'name' (from 'nipy.core' to
# 'nipy.core.image')
# Robert Kern recommends setting quiet=True on the numpy list, stating
# these messages are probably only used in debugging numpy distutils.
config.get_version('nipy/version.py') # sets config.version
config.add_subpackage('nipy', 'nipy')
return config
################################################################################
# For some commands, use setuptools
if len(set(('develop', 'bdist_egg', 'bdist_rpm', 'bdist', 'bdist_dumb',
'bdist_wininst', 'install_egg_info', 'egg_info', 'easy_install',
)).intersection(sys.argv)) > 0:
from setup_egg import extra_setuptools_args
# extra_setuptools_args can be defined from the line above, but it can
# also be defined here because setup.py has been exec'ed from
# setup_egg.py.
if not 'extra_setuptools_args' in globals():
extra_setuptools_args = dict()
# Hard and soft dependency checking
package_check('scipy', '0.5')
package_check('sympy', '0.6.6')
def _mayavi_version(pkg_name):
from enthought.mayavi import version
return version.version
package_check('mayavi', '3.0', optional=True,
version_getter=_mayavi_version)
def _cython_version(pkg_name):
from Cython.Compiler.Version import version
return version
# Cython is a build dependency
package_check('cython', '0.12', optional=False,
version_getter=_cython_version)
################################################################################
# Import the documentation building classes.
try:
from build_helpers import cmdclass
except ImportError:
""" Pass by the doc build gracefully if sphinx is not installed """
print "Sphinx is not installed, docs cannot be built"
cmdclass = {}
################################################################################
# commands for installing the data
from numpy.distutils.command.install_data import install_data
from numpy.distutils.command.build_ext import build_ext
def data_install_msgs():
from nipy.utils import make_datasource, DataError
for name in ('templates', 'data'):
try:
make_datasource('nipy', name)
except DataError, exception:
log.warn('%s\n%s' % ('_'*80, exception))
class MyInstallData(install_data):
""" Subclass the install_data to generate data install warnings if necessary
"""
def run(self):
install_data.run(self)
data_install_msgs()
class MyBuildExt(build_ext):
""" Subclass the build_ext to generate data install warnings if
necessary: warn at build == warn early
This is also important to get a warning when run a 'develop'.
"""
def run(self):
build_ext.run(self)
data_install_msgs()
cmdclass['install_data'] = MyInstallData
cmdclass['build_ext'] = MyBuildExt
################################################################################
# We need to import nipy as late as possible,
from nipy import __doc__
def main(**extra_args):
from numpy.distutils.core import setup
setup( name = 'nipy',
description = 'This is a neuroimaging python package',
author = 'Various',
author_email = 'nipy-devel@neuroimaging.scipy.org',
url = 'http://neuroimaging.scipy.org',
long_description = __doc__,
configuration = configuration,
cmdclass = cmdclass,
scripts = glob('scripts/*.py'),
**extra_args)
if __name__ == "__main__":
main(**extra_setuptools_args)