| Index: third_party/google-endpoints/setuptools/py36compat.py
|
| diff --git a/third_party/google-endpoints/setuptools/py36compat.py b/third_party/google-endpoints/setuptools/py36compat.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f5279696457b690024f9bd0456293f027056bcf1
|
| --- /dev/null
|
| +++ b/third_party/google-endpoints/setuptools/py36compat.py
|
| @@ -0,0 +1,82 @@
|
| +import sys
|
| +from distutils.errors import DistutilsOptionError
|
| +from distutils.util import strtobool
|
| +from distutils.debug import DEBUG
|
| +
|
| +
|
| +class Distribution_parse_config_files:
|
| + """
|
| + Mix-in providing forward-compatibility for functionality to be
|
| + included by default on Python 3.7.
|
| +
|
| + Do not edit the code in this class except to update functionality
|
| + as implemented in distutils.
|
| + """
|
| + def parse_config_files(self, filenames=None):
|
| + from configparser import ConfigParser
|
| +
|
| + # Ignore install directory options if we have a venv
|
| + if sys.prefix != sys.base_prefix:
|
| + ignore_options = [
|
| + 'install-base', 'install-platbase', 'install-lib',
|
| + 'install-platlib', 'install-purelib', 'install-headers',
|
| + 'install-scripts', 'install-data', 'prefix', 'exec-prefix',
|
| + 'home', 'user', 'root']
|
| + else:
|
| + ignore_options = []
|
| +
|
| + ignore_options = frozenset(ignore_options)
|
| +
|
| + if filenames is None:
|
| + filenames = self.find_config_files()
|
| +
|
| + if DEBUG:
|
| + self.announce("Distribution.parse_config_files():")
|
| +
|
| + parser = ConfigParser(interpolation=None)
|
| + for filename in filenames:
|
| + if DEBUG:
|
| + self.announce(" reading %s" % filename)
|
| + parser.read(filename)
|
| + for section in parser.sections():
|
| + options = parser.options(section)
|
| + opt_dict = self.get_option_dict(section)
|
| +
|
| + for opt in options:
|
| + if opt != '__name__' and opt not in ignore_options:
|
| + val = parser.get(section,opt)
|
| + opt = opt.replace('-', '_')
|
| + opt_dict[opt] = (filename, val)
|
| +
|
| + # Make the ConfigParser forget everything (so we retain
|
| + # the original filenames that options come from)
|
| + parser.__init__()
|
| +
|
| + # If there was a "global" section in the config file, use it
|
| + # to set Distribution options.
|
| +
|
| + if 'global' in self.command_options:
|
| + for (opt, (src, val)) in self.command_options['global'].items():
|
| + alias = self.negative_opt.get(opt)
|
| + try:
|
| + if alias:
|
| + setattr(self, alias, not strtobool(val))
|
| + elif opt in ('verbose', 'dry_run'): # ugh!
|
| + setattr(self, opt, strtobool(val))
|
| + else:
|
| + setattr(self, opt, val)
|
| + except ValueError as msg:
|
| + raise DistutilsOptionError(msg)
|
| +
|
| +
|
| +if sys.version_info < (3,):
|
| + # Python 2 behavior is sufficient
|
| + class Distribution_parse_config_files:
|
| + pass
|
| +
|
| +
|
| +if False:
|
| + # When updated behavior is available upstream,
|
| + # disable override here.
|
| + class Distribution_parse_config_files:
|
| + pass
|
|
|