From d01d3ee286d4aab0ca0d78bd7a47b2556f81f499 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 6 Dec 2020 11:21:30 -0500 Subject: [PATCH] Quick fix for #1390. Now description cannot contain a newline. --- changelog.d/1390.change.rst | 1 + setuptools/dist.py | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 changelog.d/1390.change.rst diff --git a/changelog.d/1390.change.rst b/changelog.d/1390.change.rst new file mode 100644 index 0000000000..fcb57f54c5 --- /dev/null +++ b/changelog.d/1390.change.rst @@ -0,0 +1 @@ +Newlines in metadata description/Summary now trigger a ValueError. diff --git a/setuptools/dist.py b/setuptools/dist.py index 662fbe67c5..2d0aac333d 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -118,6 +118,13 @@ def _read_list(name): self.obsoletes = None +def single_line(val): + # quick and dirty validation for description pypa/setuptools#1390 + if '\n' in val: + raise ValueError("newlines not allowed") + return val + + # Based on Python 3.5 version def write_pkg_file(self, file): # noqa: C901 # is too complex (14) # FIXME """Write the PKG-INFO format data to a file object. @@ -130,7 +137,7 @@ def write_field(key, value): write_field('Metadata-Version', str(version)) write_field('Name', self.get_name()) write_field('Version', self.get_version()) - write_field('Summary', self.get_description()) + write_field('Summary', single_line(self.get_description())) write_field('Home-page', self.get_url()) if version < StrictVersion('1.2'):