summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author?ric Araujo <merwok@netwok.org>2011-02-09 21:08:20 +0100
committer?ric Araujo <merwok@netwok.org>2011-02-09 21:08:20 +0100
commitb1bd0f37c556fd24b8cb45cf9d8989a61224144f (patch)
treec2a756de8542e5c77471eb232f0927603d6a135d
parenteee4def4ed89e58b43d50b69cebf958226a5f274 (diff)
downloaddisutils2-b1bd0f37c556fd24b8cb45cf9d8989a61224144f.tar.gz
Clean up metadata
-rw-r--r--distutils2/metadata.py71
1 files changed, 36 insertions, 35 deletions
diff --git a/distutils2/metadata.py b/distutils2/metadata.py
index 740f929..10e81c0 100644
--- a/distutils2/metadata.py
+++ b/distutils2/metadata.py
@@ -3,8 +3,6 @@
Supports all metadata formats (1.0, 1.1, 1.2).
"""
-import os
-import sys
import re
from StringIO import StringIO
from email import message_from_file
@@ -82,6 +80,7 @@ _ALL_FIELDS.update(_241_FIELDS)
_ALL_FIELDS.update(_314_FIELDS)
_ALL_FIELDS.update(_345_FIELDS)
+
def _version2fieldlist(version):
if version == '1.0':
return _241_FIELDS
@@ -138,46 +137,48 @@ def _best_version(fields):
# default marker when 1.0 is disqualified
return '1.2'
-_ATTR2FIELD = {'metadata_version': 'Metadata-Version',
- 'name': 'Name',
- 'version': 'Version',
- 'platform': 'Platform',
- 'supported_platform': 'Supported-Platform',
- 'summary': 'Summary',
- 'description': 'Description',
- 'keywords': 'Keywords',
- 'home_page': 'Home-page',
- 'author': 'Author',
- 'author_email': 'Author-email',
- 'maintainer': 'Maintainer',
- 'maintainer_email': 'Maintainer-email',
- 'license': 'License',
- 'classifier': 'Classifier',
- 'download_url': 'Download-URL',
- 'obsoletes_dist': 'Obsoletes-Dist',
- 'provides_dist': 'Provides-Dist',
- 'requires_dist': 'Requires-Dist',
- 'requires_python': 'Requires-Python',
- 'requires_external': 'Requires-External',
- 'requires': 'Requires',
- 'provides': 'Provides',
- 'obsoletes': 'Obsoletes',
- 'project_url': 'Project-URL',
- }
+_ATTR2FIELD = {
+ 'metadata_version': 'Metadata-Version',
+ 'name': 'Name',
+ 'version': 'Version',
+ 'platform': 'Platform',
+ 'supported_platform': 'Supported-Platform',
+ 'summary': 'Summary',
+ 'description': 'Description',
+ 'keywords': 'Keywords',
+ 'home_page': 'Home-page',
+ 'author': 'Author',
+ 'author_email': 'Author-email',
+ 'maintainer': 'Maintainer',
+ 'maintainer_email': 'Maintainer-email',
+ 'license': 'License',
+ 'classifier': 'Classifier',
+ 'download_url': 'Download-URL',
+ 'obsoletes_dist': 'Obsoletes-Dist',
+ 'provides_dist': 'Provides-Dist',
+ 'requires_dist': 'Requires-Dist',
+ 'requires_python': 'Requires-Python',
+ 'requires_external': 'Requires-External',
+ 'requires': 'Requires',
+ 'provides': 'Provides',
+ 'obsoletes': 'Obsoletes',
+ 'project_url': 'Project-URL',
+}
_PREDICATE_FIELDS = ('Requires-Dist', 'Obsoletes-Dist', 'Provides-Dist')
_VERSIONS_FIELDS = ('Requires-Python',)
_VERSION_FIELDS = ('Version',)
_LISTFIELDS = ('Platform', 'Classifier', 'Obsoletes',
- 'Requires', 'Provides', 'Obsoletes-Dist',
- 'Provides-Dist', 'Requires-Dist', 'Requires-External',
- 'Project-URL', 'Supported-Platform')
+ 'Requires', 'Provides', 'Obsoletes-Dist',
+ 'Provides-Dist', 'Requires-Dist', 'Requires-External',
+ 'Project-URL', 'Supported-Platform')
_LISTTUPLEFIELDS = ('Project-URL',)
_ELEMENTSFIELD = ('Keywords',)
_UNICODEFIELDS = ('Author', 'Maintainer', 'Summary', 'Description')
+
class NoDefault(object):
"""Marker object used for clean representation"""
def __repr__(self):
@@ -185,6 +186,7 @@ class NoDefault(object):
_MISSING = NoDefault()
+
class Metadata(object):
"""The metadata of a release.
@@ -474,7 +476,7 @@ class Metadata(object):
missing.append(attr)
if strict and missing != []:
- msg = "missing required metadata: %s" % ', '.join(missing)
+ msg = 'missing required metadata: %s' % ', '.join(missing)
raise MetadataMissingError(msg)
for attr in ('Home-page', 'Author'):
@@ -504,14 +506,13 @@ class Metadata(object):
return missing, warnings
+ # Mapping API
+
def keys(self):
- """Dict like api"""
return _version2fieldlist(self.version)
def values(self):
- """Dict like api"""
return [self[key] for key in self.keys()]
def items(self):
- """Dict like api"""
return [(key, self[key]) for key in self.keys()]