diff options
author | cookedm <cookedm@localhost> | 2007-05-25 11:41:16 +0000 |
---|---|---|
committer | cookedm <cookedm@localhost> | 2007-05-25 11:41:16 +0000 |
commit | 5267b3e16654ef326f525fdb9a1287a88396c616 (patch) | |
tree | 9e7137815415c08577f5451266cdc70f7caa3ea7 /numpy/distutils/environment.py | |
parent | d11dbc78c0df5055a6ed57285775cc18dbe1721a (diff) | |
download | numpy-5267b3e16654ef326f525fdb9a1287a88396c616.tar.gz |
merge from distutils-revamp branch (step 2)
- fcompiler changes. All flags, executables, etc., should be overridable
by the user with config_fc (either command line or setup.cfg) or by
environment variables
Diffstat (limited to 'numpy/distutils/environment.py')
-rw-r--r-- | numpy/distutils/environment.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/numpy/distutils/environment.py b/numpy/distutils/environment.py new file mode 100644 index 000000000..fa4a77905 --- /dev/null +++ b/numpy/distutils/environment.py @@ -0,0 +1,49 @@ +import os +from distutils.dist import Distribution + +__metaclass__ = type + +class EnvironmentConfig: + def __init__(self, distutils_section='DEFAULT', **kw): + self._distutils_section = distutils_section + self._conf_keys = kw + self._conf = None + self._hook_handler = None + + def __getattr__(self, name): + try: + conf_desc = self._conf_keys[name] + except KeyError: + raise AttributeError(name) + return self._get_var(name, conf_desc) + + def get(self, name, default=None): + try: + conf_desc = self._conf_keys[name] + except KeyError: + return default + var = self._get_var(name, conf_desc) + if var is None: + var = default + return var + + def _get_var(self, name, conf_desc): + hook, envvar, confvar = conf_desc + var = self._hook_handler(name, hook) + if envvar is not None: + var = os.environ.get(envvar, var) + if confvar is not None and self._conf: + var = self._conf.get(confvar, (None, var))[1] + return var + + def clone(self, hook_handler): + ec = self.__class__(distutils_section=self._distutils_section, + **self._conf_keys) + ec._hook_handler = hook_handler + return ec + + def use_distribution(self, dist): + if isinstance(dist, Distribution): + self._conf = dist.get_option_dict(self._distutils_section) + else: + self._conf = dist |