diff --git a/Lib/distutils/dist.py b/Lib/distutils/dist.py index 597909ea1a8..e025313dbd9 100644 --- a/Lib/distutils/dist.py +++ b/Lib/distutils/dist.py @@ -1111,7 +1111,8 @@ class DistributionMetadata: """Write the PKG-INFO format data to a file object. """ version = '1.0' - if self.provides or self.requires or self.obsoletes: + if (self.provides or self.requires or self.obsoletes or + self.classifiers or self.download_url): version = '1.1' self._write_field(file, 'Metadata-Version', version) diff --git a/Lib/distutils/tests/test_dist.py b/Lib/distutils/tests/test_dist.py index ff9fa8fc588..4b7bbeb33ec 100644 --- a/Lib/distutils/tests/test_dist.py +++ b/Lib/distutils/tests/test_dist.py @@ -245,6 +245,20 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard, sys.argv[:] = self.argv[1] super(MetadataTestCase, self).tearDown() + def test_classifier(self): + attrs = {'name': 'Boa', 'version': '3.0', + 'classifiers': ['Programming Language :: Python :: 3']} + dist = Distribution(attrs) + meta = self.format_metadata(dist) + self.assertIn('Metadata-Version: 1.1', meta) + + def test_download_url(self): + attrs = {'name': 'Boa', 'version': '3.0', + 'download_url': 'http://example.org/boa'} + dist = Distribution(attrs) + meta = self.format_metadata(dist) + self.assertIn('Metadata-Version: 1.1', meta) + def test_long_description(self): long_desc = textwrap.dedent("""\ example:: diff --git a/Misc/NEWS b/Misc/NEWS index 2b6a8907cfc..9375d8fd0fb 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -39,7 +39,11 @@ Core and Builtins Library ------- - + +- Issue #8933: distutils' PKG-INFO files will now correctly report + Metadata-Version: 1.1 instead of 1.0 if a Classifier or Download-URL field is + present. + - Issue #8286: The distutils command sdist will print a warning message instead of crashing when an invalid path is given in the manifest template.