tmp
/
pip-install-ghxuqwgs
/numpy_78e94bf2b6094bf9a1f3d92042f9bf46
/numpy
/distutils
/environment.py
| from __future__ import division, absolute_import, print_function | |
| import os | |
| from distutils.dist import Distribution | |
| __metaclass__ = type | |
| class EnvironmentConfig(object): | |
| def __init__(self, distutils_section='ALL', **kw): | |
| self._distutils_section = distutils_section | |
| self._conf_keys = kw | |
| self._conf = None | |
| self._hook_handler = None | |
| def dump_variable(self, name): | |
| conf_desc = self._conf_keys[name] | |
| hook, envvar, confvar, convert = conf_desc | |
| if not convert: | |
| convert = lambda x : x | |
| print('%s.%s:' % (self._distutils_section, name)) | |
| v = self._hook_handler(name, hook) | |
| print(' hook : %s' % (convert(v),)) | |
| if envvar: | |
| v = os.environ.get(envvar, None) | |
| print(' environ: %s' % (convert(v),)) | |
| if confvar and self._conf: | |
| v = self._conf.get(confvar, (None, None))[1] | |
| print(' config : %s' % (convert(v),)) | |
| def dump_variables(self): | |
| for name in self._conf_keys: | |
| self.dump_variable(name) | |
| 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, convert = 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] | |
| if convert is not None: | |
| var = convert(var) | |
| 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 | |