diff options
author | Tarek Ziadé <ziade.tarek@gmail.com> | 2010-01-24 00:57:20 (GMT) |
---|---|---|
committer | Tarek Ziadé <ziade.tarek@gmail.com> | 2010-01-24 00:57:20 (GMT) |
commit | 495517cd38cf655e23cc70ba04b9085619c6a04a (patch) | |
tree | a8f870dc0b29d468ce3d55bf60036241752dee2c /Lib | |
parent | 6411a53d7d0565b92580feb6c408accf52f3d3a3 (diff) | |
download | cpython-495517cd38cf655e23cc70ba04b9085619c6a04a.zip cpython-495517cd38cf655e23cc70ba04b9085619c6a04a.tar.gz cpython-495517cd38cf655e23cc70ba04b9085619c6a04a.tar.bz2 |
Merged revisions 77717 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r77717 | tarek.ziade | 2010-01-24 01:33:32 +0100 (Sun, 24 Jan 2010) | 1 line
Fixed #7748: now upload and register commands don't need to force the encoding anymore : DistributionMetada returns utf8 strings
........
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/distutils/command/register.py | 1 | ||||
-rw-r--r-- | Lib/distutils/command/upload.py | 2 | ||||
-rw-r--r-- | Lib/distutils/dist.py | 27 | ||||
-rw-r--r-- | Lib/distutils/tests/test_upload.py | 6 |
4 files changed, 19 insertions, 17 deletions
diff --git a/Lib/distutils/command/register.py b/Lib/distutils/command/register.py index bf7be96..f531d0f 100644 --- a/Lib/distutils/command/register.py +++ b/Lib/distutils/command/register.py @@ -261,7 +261,6 @@ Your selection [default 1]: ''', log.INFO) if type(value) not in (type([]), type( () )): value = [value] for value in value: - value = unicode(value).encode("utf-8") body.write(sep_boundary) body.write('\nContent-Disposition: form-data; name="%s"'%key) body.write("\n\n") diff --git a/Lib/distutils/command/upload.py b/Lib/distutils/command/upload.py index 9f1aae6..93727ae 100644 --- a/Lib/distutils/command/upload.py +++ b/Lib/distutils/command/upload.py @@ -133,7 +133,7 @@ class upload(PyPIRCCommand): value = value[1] else: fn = "" - value = str(value) + body.write(sep_boundary) body.write('\nContent-Disposition: form-data; name="%s"'%key) body.write(fn) diff --git a/Lib/distutils/dist.py b/Lib/distutils/dist.py index c15ca97..30260f3 100644 --- a/Lib/distutils/dist.py +++ b/Lib/distutils/dist.py @@ -1114,18 +1114,20 @@ class DistributionMetadata: self._write_list(file, 'Obsoletes', self.get_obsoletes()) def _write_field(self, file, name, value): - - if isinstance(value, unicode): - value = value.encode(PKG_INFO_ENCODING) - else: - value = str(value) - file.write('%s: %s\n' % (name, value)) + file.write('%s: %s\n' % (name, self._encode_field(value))) def _write_list (self, file, name, values): for value in values: self._write_field(file, name, value) + def _encode_field(self, value): + if value is None: + return None + if isinstance(value, unicode): + return value.encode(PKG_INFO_ENCODING) + return str(value) + # -- Metadata query methods ---------------------------------------- def get_name (self): @@ -1138,21 +1140,20 @@ class DistributionMetadata: return "%s-%s" % (self.get_name(), self.get_version()) def get_author(self): - return self.author or "UNKNOWN" + return self._encode_field(self.author) or "UNKNOWN" def get_author_email(self): return self.author_email or "UNKNOWN" def get_maintainer(self): - return self.maintainer or "UNKNOWN" + return self._encode_field(self.maintainer) or "UNKNOWN" def get_maintainer_email(self): return self.maintainer_email or "UNKNOWN" def get_contact(self): - return (self.maintainer or - self.author or - "UNKNOWN") + return (self._encode_field(self.maintainer) or + self._encode_field(self.author) or "UNKNOWN") def get_contact_email(self): return (self.maintainer_email or @@ -1167,10 +1168,10 @@ class DistributionMetadata: get_licence = get_license def get_description(self): - return self.description or "UNKNOWN" + return self._encode_field(self.description) or "UNKNOWN" def get_long_description(self): - return self.long_description or "UNKNOWN" + return self._encode_field(self.long_description) or "UNKNOWN" def get_keywords(self): return self.keywords or [] diff --git a/Lib/distutils/tests/test_upload.py b/Lib/distutils/tests/test_upload.py index 322beb7..382697f 100644 --- a/Lib/distutils/tests/test_upload.py +++ b/Lib/distutils/tests/test_upload.py @@ -1,4 +1,5 @@ """Tests for distutils.command.upload.""" +# -*- encoding: utf8 -*- import sys import os import unittest @@ -95,7 +96,7 @@ class uploadTestCase(PyPIRCCommandTestCase): self.write_file(self.rc, PYPIRC_LONG_PASSWORD) # lets run it - pkg_dir, dist = self.create_dist(dist_files=dist_files) + pkg_dir, dist = self.create_dist(dist_files=dist_files, author=u'dédé') cmd = upload(dist) cmd.ensure_finalized() cmd.run() @@ -104,7 +105,8 @@ class uploadTestCase(PyPIRCCommandTestCase): res = _CONNECTIONS[-1] headers = res.headers - self.assertEquals(headers['Content-length'], '2086') + self.assert_('dédé' in res.body) + self.assertEquals(headers['Content-length'], '2085') self.assertTrue(headers['Content-type'].startswith('multipart/form-data')) method, request = res.requests[-1] |