summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numpy/distutils/misc_util.py52
-rw-r--r--numpy/setup.py6
-rwxr-xr-xsetup.py40
3 files changed, 56 insertions, 42 deletions
diff --git a/numpy/distutils/misc_util.py b/numpy/distutils/misc_util.py
index 86e6947e7..25484d3fb 100644
--- a/numpy/distutils/misc_util.py
+++ b/numpy/distutils/misc_util.py
@@ -475,6 +475,7 @@ class Configuration(object):
_list_keys = ['packages', 'ext_modules', 'data_files', 'include_dirs',
'libraries', 'headers', 'scripts', 'py_modules']
_dict_keys = ['package_dir']
+ _extra_keys = ['name', 'version']
numpy_include_dirs = []
@@ -499,6 +500,7 @@ class Configuration(object):
caller_level -- frame level to caller namespace, internal parameter.
"""
self.name = dot_join(parent_name, package_name)
+ self.version = None
caller_frame = get_frame(caller_level)
caller_name = eval('__name__',caller_frame.f_globals,caller_frame.f_locals)
@@ -529,7 +531,7 @@ class Configuration(object):
setattr(self, n, v)
known_keys = self.list_keys + self.dict_keys
- self.extra_keys = []
+ self.extra_keys = self._extra_keys[:]
for n in attrs.keys():
if n in known_keys:
continue
@@ -574,12 +576,11 @@ class Configuration(object):
"""
self._optimize_data_files()
d = {}
- for n in self.list_keys + self.dict_keys + self.extra_keys:
+ known_keys = self.list_keys + self.dict_keys + self.extra_keys
+ for n in known_keys:
a = getattr(self,n)
if a:
d[n] = a
- if self.name:
- d['name'] = self.name
return d
def info(self, message):
@@ -589,7 +590,6 @@ class Configuration(object):
def warn(self, message):
print>>sys.stderr, 'Warning:',message
-
def set_options(self, **options):
""" Configure Configuration instance.
@@ -733,7 +733,7 @@ class Configuration(object):
if isinstance(config, Configuration):
d = config.todict()
assert isinstance(d,dict),`type(d)`
-
+
self.info('Appending %s configuration to %s' \
% (d.get('name'), self.name))
self.dict_append(**d)
@@ -1068,12 +1068,21 @@ class Configuration(object):
a.update(dict.get(key,{}))
known_keys = self.list_keys + self.dict_keys + self.extra_keys
for key in dict.keys():
- if key not in known_keys and not hasattr(self,key):
- if key not in ['version']:
- self.warn('Inheriting attribute %r from %r' \
- % (key,dict.get('name','?')))
+ if key not in known_keys:
+ a = getattr(self, key, None)
+ if a and a==dict[key]: continue
+ self.warn('Inheriting attribute %r=%r from %r' \
+ % (key,dict[key],dict.get('name','?')))
setattr(self,key,dict[key])
self.extra_keys.append(key)
+ elif key in self.extra_keys:
+ self.info('Ignoring attempt to set %r (from %r to %r)' \
+ % (key, getattr(self,key), dict[key]))
+ elif key in known_keys:
+ # key is already processed above
+ pass
+ else:
+ raise ValueError, "Don't know about key=%r" % (key)
return
def __str__(self):
@@ -1081,6 +1090,7 @@ class Configuration(object):
known_keys = self.list_keys + self.dict_keys + self.extra_keys
s = '<'+5*'-' + '\n'
s += 'Configuration of '+self.name+':\n'
+ known_keys.sort()
for k in known_keys:
a = getattr(self,k,None)
if a:
@@ -1158,7 +1168,7 @@ class Configuration(object):
revision = int(m.group('revision'))
return revision
- def get_version(self):
+ def get_version(self, version_file=None, version_variable=None):
""" Try to get version string of a package.
"""
version = getattr(self,'version',None)
@@ -1166,13 +1176,19 @@ class Configuration(object):
return version
# Get version from version file.
- files = ['__version__.py',
- self.name.split('.')[-1]+'_version.py',
- 'version.py',
- '__svn_version__.py']
- version_vars = ['version',
- '__version__',
- self.name.split('.')[-1]+'_version']
+ if version_file is None:
+ files = ['__version__.py',
+ self.name.split('.')[-1]+'_version.py',
+ 'version.py',
+ '__svn_version__.py']
+ else:
+ files = [version_file]
+ if version_variable is None:
+ version_vars = ['version',
+ '__version__',
+ self.name.split('.')[-1]+'_version']
+ else:
+ version_vars = [version_variable]
for f in files:
fn = njoin(self.local_path,f)
if os.path.isfile(fn):
diff --git a/numpy/setup.py b/numpy/setup.py
index 7a52bd0f9..ae28e0eb1 100644
--- a/numpy/setup.py
+++ b/numpy/setup.py
@@ -1,5 +1,4 @@
#!/usr/bin/env python
-import os
def configuration(parent_package='',top_path=None):
from numpy.distutils.misc_util import Configuration
@@ -14,8 +13,7 @@ def configuration(parent_package='',top_path=None):
config.add_subpackage('random')
config.add_data_dir('doc')
config.make_config_py() # installs __config__.py
-
- return config.todict()
+ return config
if __name__ == '__main__':
# Remove current working directory from sys.path
@@ -24,4 +22,4 @@ if __name__ == '__main__':
sys.path.remove(os.getcwd())
from numpy.distutils.core import setup
- setup(**configuration(top_path=''))
+ setup(configuration=configuration)
diff --git a/setup.py b/setup.py
index dd87837a8..b7721cb45 100755
--- a/setup.py
+++ b/setup.py
@@ -34,33 +34,18 @@ Operating System :: MacOS
def configuration(parent_package='',top_path=None):
from numpy.distutils.misc_util import Configuration
- config = Configuration(None, parent_package, top_path,
- maintainer = "NumPy Developers",
- maintainer_email = "numpy-discussion@lists.sourceforge.net",
- description = DOCLINES[0],
- long_description = "\n".join(DOCLINES[2:]),
- url = "http://numeric.scipy.org",
- download_url = "http://sourceforge.net/projects/numpy",
- license = 'BSD',
- classifiers=filter(None, CLASSIFIERS.split('\n')),
- author = "Travis E. Oliphant, et.al.",
- author_email = "oliphant@ee.byu.edu",
- platforms = ["Windows", "Linux", "Solaris", "Mac OS-X", "Unix"],
- )
+ 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)
config.add_subpackage('numpy')
-
- config.name = 'numpy' # used in generated file names
-
- from numpy.version import version
- config.dict_append(version=version)
-
+
config.add_data_files(('numpy',['*.txt','COMPATIBILITY',
'scipy_compatibility']))
+
+ config.get_version('numpy/version.py') # sets config.version
return config
@@ -74,7 +59,22 @@ def setup_package():
sys.path.insert(0,local_path)
try:
- setup( configuration=configuration )
+ from numpy.version import version
+ setup(
+ name = 'numpy',
+ version = version, # will be overwritten by configuration version
+ maintainer = "NumPy Developers",
+ maintainer_email = "numpy-discussion@lists.sourceforge.net",
+ description = DOCLINES[0],
+ long_description = "\n".join(DOCLINES[2:]),
+ url = "http://numeric.scipy.org",
+ download_url = "http://sourceforge.net/projects/numpy",
+ license = 'BSD',
+ classifiers=filter(None, CLASSIFIERS.split('\n')),
+ author = "Travis E. Oliphant, et.al.",
+ author_email = "oliphant@ee.byu.edu",
+ platforms = ["Windows", "Linux", "Solaris", "Mac OS-X", "Unix"],
+ configuration=configuration )
finally:
del sys.path[0]
os.chdir(old_path)