Imported Upstream version 38.2.1 upstream/38.2.1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 14 Jan 2019 01:40:24 +0000 (10:40 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 14 Jan 2019 01:40:24 +0000 (10:40 +0900)
CHANGES.rst
setup.cfg
setup.py
setuptools/tests/files.py
setuptools/tests/test_wheel.py
setuptools/wheel.py

index 63d17d5..d5fd66a 100644 (file)
@@ -1,3 +1,9 @@
+v38.2.1
+-------
+
+* #1212: fix encoding handling of metadata when installing
+  from a wheel.
+
 v38.2.0
 -------
 
index f00b544..fd93d44 100755 (executable)
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 38.2.0
+current_version = 38.2.1
 commit = True
 tag = True
 
index 7b2c100..8662816 100755 (executable)
--- a/setup.py
+++ b/setup.py
@@ -89,7 +89,7 @@ def pypi_link(pkg_filename):
 
 setup_params = dict(
     name="setuptools",
-    version="38.2.0",
+    version="38.2.1",
     description="Easily download, build, install, upgrade, and uninstall "
         "Python packages",
     author="Python Packaging Authority",
index 98de9fc..75ec740 100644 (file)
@@ -1,6 +1,7 @@
 import os
 
 
+from pkg_resources.extern.six import binary_type
 import pkg_resources.py31compat
 
 
@@ -30,5 +31,9 @@ def build_files(file_defs, prefix=""):
             pkg_resources.py31compat.makedirs(full_name, exist_ok=True)
             build_files(contents, prefix=full_name)
         else:
-            with open(full_name, 'w') as f:
-                f.write(contents)
+            if isinstance(contents, binary_type):
+                with open(full_name, 'wb') as f:
+                    f.write(contents)
+            else:
+                with open(full_name, 'w') as f:
+                    f.write(contents)
index a0c16c5..2e85725 100644 (file)
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+
 """wheel tests
 """
 
@@ -72,13 +74,14 @@ def test_wheel_info(filename, info):
 @contextlib.contextmanager
 def build_wheel(extra_file_defs=None, **kwargs):
     file_defs = {
-        'setup.py': DALS(
+        'setup.py': (DALS(
             '''
+            # -*- coding: utf-8 -*-
             from setuptools import setup
             import setuptools
             setup(**%r)
             '''
-        ) % kwargs,
+        ) % kwargs).encode('utf-8'),
     }
     if extra_file_defs:
         file_defs.update(extra_file_defs)
@@ -171,6 +174,13 @@ WHEEL_INSTALL_TESTS = (
     ),
 
     dict(
+        id='utf-8',
+        setup_kwargs=dict(
+            description='Description accentuĂ©e',
+        )
+    ),
+
+    dict(
         id='data',
         file_defs={
             'data.txt': DALS(
index 6e3df77..f711f38 100644 (file)
@@ -8,6 +8,7 @@ import re
 import zipfile
 
 from pkg_resources import Distribution, PathMetadata, parse_version
+from pkg_resources.extern.six import PY3
 from setuptools import Distribution as SetuptoolsDistribution
 from setuptools import pep425tags
 from setuptools.command.egg_info import write_requirements
@@ -55,7 +56,7 @@ class Wheel(object):
             dist_data = '%s.data' % dist_basename
             def get_metadata(name):
                 with zf.open('%s/%s' % (dist_info, name)) as fp:
-                    value = fp.read().decode('utf-8')
+                    value = fp.read().decode('utf-8') if PY3 else fp.read()
                     return email.parser.Parser().parsestr(value)
             wheel_metadata = get_metadata('WHEEL')
             dist_metadata = get_metadata('METADATA')