23
23
from distutils import log
24
24
from distutils.debug import DEBUG
26
# Encoding used for the PKG-INFO files
27
PKG_INFO_ENCODING = 'utf-8'
26
29
# Regex to define acceptable Distutils command names. This is not *quite*
27
30
# the same as a Python NAME -- I don't allow leading underscores. The fact
28
31
# that they're very similar is no coincidence; the default naming scheme is
1084
1087
if self.provides or self.requires or self.obsoletes:
1085
1088
version = '1.1'
1087
file.write('Metadata-Version: %s\n' % version)
1088
file.write('Name: %s\n' % self.get_name() )
1089
file.write('Version: %s\n' % self.get_version() )
1090
file.write('Summary: %s\n' % self.get_description() )
1091
file.write('Home-page: %s\n' % self.get_url() )
1092
file.write('Author: %s\n' % self.get_contact() )
1093
file.write('Author-email: %s\n' % self.get_contact_email() )
1094
file.write('License: %s\n' % self.get_license() )
1090
self._write_field(file, 'Metadata-Version', version)
1091
self._write_field(file, 'Name', self.get_name())
1092
self._write_field(file, 'Version', self.get_version())
1093
self._write_field(file, 'Summary', self.get_description())
1094
self._write_field(file, 'Home-page', self.get_url())
1095
self._write_field(file, 'Author', self.get_contact())
1096
self._write_field(file, 'Author-email', self.get_contact_email())
1097
self._write_field(file, 'License', self.get_license())
1095
1098
if self.download_url:
1096
file.write('Download-URL: %s\n' % self.download_url)
1099
self._write_field(file, 'Download-URL', self.download_url)
1098
long_desc = rfc822_escape( self.get_long_description() )
1099
file.write('Description: %s\n' % long_desc)
1101
long_desc = rfc822_escape( self.get_long_description())
1102
self._write_field(file, 'Description', long_desc)
1101
1104
keywords = string.join( self.get_keywords(), ',')
1103
file.write('Keywords: %s\n' % keywords )
1106
self._write_field(file, 'Keywords', keywords)
1105
1108
self._write_list(file, 'Platform', self.get_platforms())
1106
1109
self._write_list(file, 'Classifier', self.get_classifiers())
1110
1113
self._write_list(file, 'Provides', self.get_provides())
1111
1114
self._write_list(file, 'Obsoletes', self.get_obsoletes())
1116
def _write_field(self, file, name, value):
1118
if isinstance(value, unicode):
1119
value = value.encode(PKG_INFO_ENCODING)
1122
file.write('%s: %s\n' % (name, value))
1113
1124
def _write_list (self, file, name, values):
1114
1126
for value in values:
1115
file.write('%s: %s\n' % (name, value))
1127
self._write_field(file, name, value)
1117
1129
# -- Metadata query methods ----------------------------------------