Commit c34962d0 authored by Paul Ganssle's avatar Paul Ganssle

Use write_field in write_pkg_file

This creates a wrapper function for writing fields in the PKG-INFO file,
both to simplify the syntax and to add a point where we can inject an
encoding function in order to support Python 2.7 compatibility.
parent 9ffb099b
...@@ -123,15 +123,23 @@ def write_pkg_file(self, file): ...@@ -123,15 +123,23 @@ def write_pkg_file(self, file):
""" """
version = self.get_metadata_version() version = self.get_metadata_version()
file.write('Metadata-Version: %s\n' % version) if six.PY2:
file.write('Name: %s\n' % self.get_name()) def write_field(key, value):
file.write('Version: %s\n' % self.get_version()) file.write("%s: %s\n" % (key, self._encode_field(value)))
file.write('Summary: %s\n' % self.get_description()) else:
file.write('Home-page: %s\n' % self.get_url()) def write_field(key, value):
file.write("%s: %s\n" % (key, value))
write_field('Metadata-Version', str(version))
write_field('Name', self.get_name())
write_field('Version', self.get_version())
write_field('Summary', self.get_description())
write_field('Home-page', self.get_url())
if version < StrictVersion('1.2'): if version < StrictVersion('1.2'):
file.write('Author: %s\n' % self.get_contact()) write_field('Author:', self.get_contact())
file.write('Author-email: %s\n' % self.get_contact_email()) write_field('Author-email:', self.get_contact_email())
else: else:
optional_fields = ( optional_fields = (
('Author', 'author'), ('Author', 'author'),
...@@ -142,28 +150,26 @@ def write_pkg_file(self, file): ...@@ -142,28 +150,26 @@ def write_pkg_file(self, file):
for field, attr in optional_fields: for field, attr in optional_fields:
attr_val = getattr(self, attr) attr_val = getattr(self, attr)
if six.PY2:
attr_val = self._encode_field(attr_val)
if attr_val is not None: if attr_val is not None:
file.write('%s: %s\n' % (field, attr_val)) write_field(field, attr_val)
file.write('License: %s\n' % self.get_license()) write_field('License', self.get_license())
if self.download_url: if self.download_url:
file.write('Download-URL: %s\n' % self.download_url) write_field('Download-URL', self.download_url)
for project_url in self.project_urls.items(): for project_url in self.project_urls.items():
file.write('Project-URL: %s, %s\n' % project_url) write_field('Project-URL', '%s, %s' % project_url)
long_desc = rfc822_escape(self.get_long_description()) long_desc = rfc822_escape(self.get_long_description())
file.write('Description: %s\n' % long_desc) write_field('Description', long_desc)
keywords = ','.join(self.get_keywords()) keywords = ','.join(self.get_keywords())
if keywords: if keywords:
file.write('Keywords: %s\n' % keywords) write_field('Keywords', keywords)
if version >= StrictVersion('1.2'): if version >= StrictVersion('1.2'):
for platform in self.get_platforms(): for platform in self.get_platforms():
file.write('Platform: %s\n' % platform) write_field('Platform', platform)
else: else:
self._write_list(file, 'Platform', self.get_platforms()) self._write_list(file, 'Platform', self.get_platforms())
...@@ -176,17 +182,17 @@ def write_pkg_file(self, file): ...@@ -176,17 +182,17 @@ def write_pkg_file(self, file):
# Setuptools specific for PEP 345 # Setuptools specific for PEP 345
if hasattr(self, 'python_requires'): if hasattr(self, 'python_requires'):
file.write('Requires-Python: %s\n' % self.python_requires) write_field('Requires-Python', self.python_requires)
# PEP 566 # PEP 566
if self.long_description_content_type: if self.long_description_content_type:
file.write( write_field(
'Description-Content-Type: %s\n' % 'Description-Content-Type',
self.long_description_content_type self.long_description_content_type
) )
if self.provides_extras: if self.provides_extras:
for extra in self.provides_extras: for extra in self.provides_extras:
file.write('Provides-Extra: %s\n' % extra) write_field('Provides-Extra', extra)
sequence = tuple, list sequence = tuple, list
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment