diff options
author | Tarek Ziadé <ziade.tarek@gmail.com> | 2010-01-24 00:33:32 +0000 |
---|---|---|
committer | Tarek Ziadé <ziade.tarek@gmail.com> | 2010-01-24 00:33:32 +0000 |
commit | f14c7fc33da8ba3aa28bbb7b0305ea12ab30be09 (patch) | |
tree | c3a88b29baa9ee925ad8181c4853afe0ed582987 /Lib | |
parent | aa98058cc44ba20f35c106d20918c6196b737561 (diff) | |
download | cpython-git-f14c7fc33da8ba3aa28bbb7b0305ea12ab30be09.tar.gz |
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 | 24 | ||||
-rw-r--r-- | Lib/distutils/tests/test_register.py | 7 | ||||
-rw-r--r-- | Lib/distutils/tests/test_upload.py | 6 |
5 files changed, 22 insertions, 18 deletions
diff --git a/Lib/distutils/command/register.py b/Lib/distutils/command/register.py index fb547c93a8..dc089902f1 100644 --- a/Lib/distutils/command/register.py +++ b/Lib/distutils/command/register.py @@ -266,7 +266,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 3e18aeaad6..18a10a0b7f 100644 --- a/Lib/distutils/command/upload.py +++ b/Lib/distutils/command/upload.py @@ -145,7 +145,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 f20a92a21d..5dbdaef19c 100644 --- a/Lib/distutils/dist.py +++ b/Lib/distutils/dist.py @@ -1139,16 +1139,19 @@ 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): @@ -1161,19 +1164,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 self.author_email or "UNKNOWN" @@ -1186,10 +1190,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_register.py b/Lib/distutils/tests/test_register.py index ada77a015a..370d659893 100644 --- a/Lib/distutils/tests/test_register.py +++ b/Lib/distutils/tests/test_register.py @@ -1,4 +1,5 @@ """Tests for distutils.command.register.""" +# -*- encoding: utf8 -*- import sys import os import unittest @@ -136,9 +137,7 @@ class RegisterTestCase(PyPIRCCommandTestCase): self.assertTrue(self.conn.reqs, 2) req1 = dict(self.conn.reqs[0].headers) req2 = dict(self.conn.reqs[1].headers) - - self.assertEquals(req1['Content-length'], '1374') - self.assertEquals(req2['Content-length'], '1374') + self.assertEquals(req2['Content-length'], req1['Content-length']) self.assertTrue('xxx' in self.conn.reqs[1].data) def test_password_not_in_file(self): @@ -210,7 +209,7 @@ class RegisterTestCase(PyPIRCCommandTestCase): # metadata are OK but long_description is broken metadata = {'url': 'xxx', 'author': 'xxx', - 'author_email': 'xxx', + 'author_email': u'éxéxé', 'name': 'xxx', 'version': 'xxx', 'long_description': 'title\n==\n\ntext'} diff --git a/Lib/distutils/tests/test_upload.py b/Lib/distutils/tests/test_upload.py index 8f6701cc9b..3ae89498a1 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 @@ -107,14 +108,15 @@ 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() # what did we send ? + self.assertIn('dédé', self.last_open.req.data) headers = dict(self.last_open.req.headers) - self.assertEquals(headers['Content-length'], '2086') + self.assertEquals(headers['Content-length'], '2085') self.assertTrue(headers['Content-type'].startswith('multipart/form-data')) self.assertEquals(self.last_open.req.get_method(), 'POST') self.assertEquals(self.last_open.req.get_full_url(), |