Skip to content

Commit

Permalink
disable interpolation when parsing config files
Browse files Browse the repository at this point in the history
  • Loading branch information
benoit-pierre committed Jul 18, 2017
1 parent dd83a10 commit 2e31e05
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 11 deletions.
2 changes: 1 addition & 1 deletion setuptools/dist.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,7 +418,7 @@ def parse_config_files(self, filenames=None):
and loads configuration.
"""
_Distribution.parse_config_files(self, filenames=filenames)
Distribution_parse_config_files.parse_config_files(self, filenames=filenames)

parse_configuration(self, self.command_options)
if getattr(self, 'python_requires', None):
Expand Down
15 changes: 5 additions & 10 deletions setuptools/py36compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from distutils.errors import DistutilsOptionError
from distutils.util import strtobool
from distutils.debug import DEBUG
from setuptools.extern import six


class Distribution_parse_config_files:
Expand All @@ -13,10 +14,10 @@ class Distribution_parse_config_files:
as implemented in distutils.
"""
def parse_config_files(self, filenames=None):
from configparser import ConfigParser
from setuptools.extern.six.moves.configparser import ConfigParser

# Ignore install directory options if we have a venv
if sys.prefix != sys.base_prefix:
if six.PY3 and sys.prefix != sys.base_prefix:
ignore_options = [
'install-base', 'install-platbase', 'install-lib',
'install-platlib', 'install-purelib', 'install-headers',
Expand All @@ -33,7 +34,7 @@ def parse_config_files(self, filenames=None):
if DEBUG:
self.announce("Distribution.parse_config_files():")

parser = ConfigParser(interpolation=None)
parser = ConfigParser()
for filename in filenames:
if DEBUG:
self.announce(" reading %s" % filename)
Expand All @@ -44,7 +45,7 @@ def parse_config_files(self, filenames=None):

for opt in options:
if opt != '__name__' and opt not in ignore_options:
val = parser.get(section,opt)
val = parser.get(section,opt,raw=True)
opt = opt.replace('-', '_')
opt_dict[opt] = (filename, val)

Expand All @@ -69,12 +70,6 @@ def parse_config_files(self, filenames=None):
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.
Expand Down
9 changes: 9 additions & 0 deletions setuptools/tests/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,15 @@ def test_classifiers(self, tmpdir):
with get_dist(tmpdir) as dist:
assert set(dist.metadata.classifiers) == expected

def test_no_interpolation(self, tmpdir):
fake_env(
tmpdir,
'[metadata]\n'
'description = %(message)s\n'
)
with get_dist(tmpdir) as dist:
assert dist.metadata.description == '%(message)s'


class TestOptions:

Expand Down

0 comments on commit 2e31e05

Please sign in to comment.