aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/config.py
diff options
context:
space:
mode:
authorJeremy Bowman <jbowman@edx.org>2018-05-14 17:53:42 -0400
committerJeremy Bowman <jbowman@edx.org>2018-05-15 11:15:05 -0400
commita960ee1c3f1d1d1067ec1e3c88dc345060bd33a4 (patch)
treea3abe6957a1b67643293c3ff469b91964431919d /setuptools/config.py
parent26b75f5151a761f3206b0dbf68f4e56363ca2ed4 (diff)
downloadexternal_python_setuptools-a960ee1c3f1d1d1067ec1e3c88dc345060bd33a4.tar.gz
external_python_setuptools-a960ee1c3f1d1d1067ec1e3c88dc345060bd33a4.tar.bz2
external_python_setuptools-a960ee1c3f1d1d1067ec1e3c88dc345060bd33a4.zip
Support loading version from a file
Diffstat (limited to 'setuptools/config.py')
-rw-r--r--setuptools/config.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/setuptools/config.py b/setuptools/config.py
index 8eddcae8..6343840e 100644
--- a/setuptools/config.py
+++ b/setuptools/config.py
@@ -7,6 +7,7 @@ from functools import partial
from importlib import import_module
from distutils.errors import DistutilsOptionError, DistutilsFileError
+from setuptools.extern.packaging.version import LegacyVersion, parse
from setuptools.extern.six import string_types
@@ -427,6 +428,18 @@ class ConfigMetadataHandler(ConfigHandler):
:rtype: str
"""
+ version = self._parse_file(value)
+
+ if version != value:
+ version = version.strip()
+ # Be strict about versions loaded from file because it's easy to
+ # accidentally include newlines and other unintended content
+ if isinstance(parse(version), LegacyVersion):
+ raise DistutilsOptionError('Version loaded from %s does not comply with PEP 440: %s' % (
+ value, version
+ ))
+ return version
+
version = self._parse_attr(value)
if callable(version):