From e6db7a3a298e3bfe5064de2298ba6cdcb470793e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Araujo?= Date: Sat, 10 Sep 2011 05:22:48 +0200 Subject: Fix determination of Metadata version in packaging (#8933). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original patch by Filip GruszczyƄski. --- Lib/packaging/metadata.py | 3 ++- Lib/packaging/tests/test_metadata.py | 15 ++++++++++++++- Misc/NEWS | 6 +++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Lib/packaging/metadata.py b/Lib/packaging/metadata.py index 7d7fc6b..dbb53b2 100644 --- a/Lib/packaging/metadata.py +++ b/Lib/packaging/metadata.py @@ -61,7 +61,8 @@ _314_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', 'License', 'Classifier', 'Download-URL', 'Obsoletes', 'Provides', 'Requires') -_314_MARKERS = ('Obsoletes', 'Provides', 'Requires') +_314_MARKERS = ('Obsoletes', 'Provides', 'Requires', 'Classifier', + 'Download-URL') _345_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', 'Supported-Platform', 'Summary', 'Description', diff --git a/Lib/packaging/tests/test_metadata.py b/Lib/packaging/tests/test_metadata.py index b79f566..68b3d97 100644 --- a/Lib/packaging/tests/test_metadata.py +++ b/Lib/packaging/tests/test_metadata.py @@ -251,7 +251,11 @@ class MetadataTestCase(LoggingCatcher, self.assertNotIn('Obsoletes', metadata) metadata['Classifier'] = ['ok'] - self.assertEqual(metadata['Metadata-Version'], '1.2') + self.assertEqual(metadata['Metadata-Version'], '1.1') + + metadata = Metadata() + metadata['Download-URL'] = 'ok' + self.assertEqual(metadata['Metadata-Version'], '1.1') metadata = Metadata() metadata['Obsoletes'] = 'ok' @@ -269,6 +273,15 @@ class MetadataTestCase(LoggingCatcher, metadata['Version'] = '1' self.assertEqual(metadata['Metadata-Version'], '1.0') + # make sure the _best_version function works okay with + # non-conflicting fields from 1.1 and 1.2 (i.e. we want only the + # requires/requires-dist and co. pairs to cause a conflict, not all + # fields in _314_MARKERS) + metadata = Metadata() + metadata['Requires-Python'] = '3' + metadata['Classifier'] = ['Programming language :: Python :: 3'] + self.assertEqual(metadata['Metadata-Version'], '1.2') + PKG_INFO = os.path.join(os.path.dirname(__file__), 'SETUPTOOLS-PKG-INFO') metadata = Metadata(PKG_INFO) diff --git a/Misc/NEWS b/Misc/NEWS index 67b8cf8..3d35823 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -274,9 +274,9 @@ 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 #8933: distutils' PKG-INFO files and packaging's METADATA files will + now correctly report Metadata-Version: 1.1 instead of 1.0 if a Classifier or + Download-URL field is present. - Issue #12567: Add curses.unget_wch() function. Push a character so the next get_wch() will return it. -- cgit v0.12