diff options
-rw-r--r-- | numpy/distutils/misc_util.py | 52 | ||||
-rw-r--r-- | numpy/setup.py | 6 | ||||
-rwxr-xr-x | setup.py | 40 |
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) @@ -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) |