Skip to content

Commit

Permalink
Write long description in message payload
Browse files Browse the repository at this point in the history
  • Loading branch information
cdce8p committed Apr 3, 2021
1 parent ee6a5ff commit 75b2f94
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 3 deletions.
2 changes: 2 additions & 0 deletions changelog.d/2828.change.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Write long description in message payload of PKG-INFO file.
Changed in metadata version 2.1
14 changes: 11 additions & 3 deletions setuptools/dist.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,11 @@ def get_metadata_version(self):
mv = getattr(self, 'metadata_version', None)

if mv is None:
if self.long_description_content_type or self.provides_extras:
if (
self.long_description_content_type
or self.provides_extras
or self.long_description
):
mv = StrictVersion('2.1')
elif (self.maintainer is not None or
self.maintainer_email is not None or
Expand Down Expand Up @@ -167,8 +171,9 @@ def write_field(key, value):
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:
Expand Down Expand Up @@ -201,6 +206,9 @@ def write_field(key, value):
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

Expand Down
21 changes: 21 additions & 0 deletions setuptools/tests/test_egg_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -855,6 +855,27 @@ def test_long_description_content_type(self, tmpdir_cwd, env):
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
Expand Down

0 comments on commit 75b2f94

Please sign in to comment.