summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Mueller <30130371+cdce8p@users.noreply.github.com>2021-03-30 16:51:52 +0200
committerMarc Mueller <30130371+cdce8p@users.noreply.github.com>2021-05-22 13:17:36 +0200
commitbadfe739c61dd6f3609b4e3854519cfbe663c5a2 (patch)
tree191746ec7f1dcec39d712d47b72ff2c224b033a9
parentc6a761fd4dd86283f25d828c7b9b56d764dcf84b (diff)
downloadpython-setuptools-git-badfe739c61dd6f3609b4e3854519cfbe663c5a2.tar.gz
Write long description in message payload
-rw-r--r--changelog.d/2828.change.rst2
-rw-r--r--setuptools/dist.py8
-rw-r--r--setuptools/tests/test_egg_info.py21
3 files changed, 29 insertions, 2 deletions
diff --git a/changelog.d/2828.change.rst b/changelog.d/2828.change.rst
new file mode 100644
index 00000000..9d607cbd
--- /dev/null
+++ b/changelog.d/2828.change.rst
@@ -0,0 +1,2 @@
+Write long description in message payload of PKG-INFO file.
+Changed in metadata version 2.1
diff --git a/setuptools/dist.py b/setuptools/dist.py
index a1b7e832..71b31873 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
@@ -176,8 +176,9 @@ def write_pkg_file(self, file): # noqa: C901 # is too complex (14) # FIXME
for project_url in self.project_urls.items():
write_field('Project-URL', '%s, %s' % project_url)
- long_desc = rfc822_escape(self.get_long_description())
- write_field('Description', long_desc)
+ if version < StrictVersion('2.1'):
+ long_desc = rfc822_escape(self.get_long_description())
+ write_field('Description', long_desc)
keywords = ','.join(self.get_keywords())
if keywords:
@@ -207,6 +208,9 @@ def write_pkg_file(self, file): # noqa: C901 # is too complex (14) # FIXME
for extra in self.provides_extras:
write_field('Provides-Extra', extra)
+ if version >= StrictVersion('2.1'):
+ file.write("\n%s\n\n" % self.get_long_description())
+
sequence = tuple, list
diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py
index 0d595ad0..ba683d08 100644
--- a/setuptools/tests/test_egg_info.py
+++ b/setuptools/tests/test_egg_info.py
@@ -875,6 +875,27 @@ class TestEggInfo:
assert expected_line in pkg_info_lines
assert 'Metadata-Version: 2.1' in pkg_info_lines
+ def test_description(self, tmpdir_cwd, env):
+ self._setup_script_with_requires(
+ "long_description='This is a long description\\nover multiple lines',")
+ environ = os.environ.copy().update(
+ HOME=env.paths['home'],
+ )
+ code, data = environment.run_setup_py(
+ cmd=['egg_info'],
+ pypath=os.pathsep.join([env.paths['lib'], str(tmpdir_cwd)]),
+ data_stream=1,
+ env=environ,
+ )
+ egg_info_dir = os.path.join('.', 'foo.egg-info')
+ with open(os.path.join(egg_info_dir, 'PKG-INFO')) as pkginfo_file:
+ pkg_info_lines = pkginfo_file.read().split('\n')
+ assert 'Metadata-Version: 2.1' in pkg_info_lines
+ assert '' == pkg_info_lines[-1]
+ long_desc_lines = pkg_info_lines[pkg_info_lines.index(''):]
+ assert 'This is a long description' in long_desc_lines
+ assert 'over multiple lines' in long_desc_lines
+
def test_project_urls(self, tmpdir_cwd, env):
# Test that specifying a `project_urls` dict to the `setup`
# function results in writing multiple `Project-URL` lines to