Skip to content

Commit a51fa3b

Browse files
committed
Ignore newlines when processing keywords/platforms
Newlines in `keywords` or `platforms` can break the produced metadata in PKG-INFO or METADATA files. Fixes: pypa/setuptools#4887
1 parent 6c0427b commit a51fa3b

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

distutils/dist.py

+1
Original file line numberDiff line numberDiff line change
@@ -644,6 +644,7 @@ def finalize_options(self) -> None:
644644
if value is None:
645645
continue
646646
if isinstance(value, str):
647+
value = value.replace("\n", " ")
647648
value = [elm.strip() for elm in value.split(',')]
648649
setattr(self.metadata, attr, value)
649650

distutils/tests/test_dist.py

+13
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,19 @@ def test_finalize_options(self):
217217
assert dist.metadata.platforms == ['foo bar']
218218
assert dist.metadata.keywords == ['foo bar']
219219

220+
# finalize_option removes '\n' from keywords and platforms
221+
attrs = {'keywords': 'one,two,\nthree,four\n', 'platforms': 'one,two,\nthree,four\n'}
222+
dist = Distribution(attrs=attrs)
223+
dist.finalize_options()
224+
assert dist.metadata.platforms == ['one', 'two', 'three', 'four']
225+
assert dist.metadata.keywords == ['one', 'two', 'three', 'four']
226+
227+
attrs = {'keywords': 'one two\nthree four\n', 'platforms': 'one two\nthree four\n'}
228+
dist = Distribution(attrs=attrs)
229+
dist.finalize_options()
230+
assert dist.metadata.platforms == ['one two three four']
231+
assert dist.metadata.keywords == ['one two three four']
232+
220233
def test_get_command_packages(self):
221234
dist = Distribution()
222235
assert dist.command_packages is None

0 commit comments

Comments
 (0)