From 35de5ac44db5c42c792b71077520a6b3ef29b199 Mon Sep 17 00:00:00 2001
From: Victor Stinner <victor.stinner@haypocalc.com>
Date: Thu, 19 May 2011 15:09:57 +0200
Subject: packaging: don't use locale encoding to compute MD5 checksums

Open the file in binary mode or use UTF-8 encoding.
---
 Lib/packaging/command/install_distinfo.py            | 4 ++--
 Lib/packaging/create.py                              | 6 +++---
 Lib/packaging/tests/test_command_install_distinfo.py | 4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/Lib/packaging/command/install_distinfo.py b/Lib/packaging/command/install_distinfo.py
index 41fe734..a25a15a 100644
--- a/Lib/packaging/command/install_distinfo.py
+++ b/Lib/packaging/command/install_distinfo.py
@@ -133,9 +133,9 @@ class install_distinfo(Command):
                             writer.writerow((fpath, '', ''))
                         else:
                             size = os.path.getsize(fpath)
-                            with open(fpath, 'r') as fp:
+                            with open(fpath, 'rb') as fp:
                                 hash = hashlib.md5()
-                                hash.update(fp.read().encode())
+                                hash.update(fp.read())
                             md5sum = hash.hexdigest()
                             writer.writerow((fpath, md5sum, size))
 
diff --git a/Lib/packaging/create.py b/Lib/packaging/create.py
index 837d0b6..0676cf1 100644
--- a/Lib/packaging/create.py
+++ b/Lib/packaging/create.py
@@ -400,10 +400,10 @@ class MainProgram:
                                  self.data['description']).lower().encode())
                 ref = ref.digest()
                 for readme in glob.glob('README*'):
-                    with open(readme) as fp:
+                    with open(readme, encoding='utf-8') as fp:
                         contents = fp.read()
-                    val = md5(re.sub('\s', '',
-                                     contents.lower()).encode()).digest()
+                    contents = re.sub('\s', '', contents.lower()).encode()
+                    val = md5(contents).digest()
                     if val == ref:
                         del data['description']
                         data['description-file'] = readme
diff --git a/Lib/packaging/tests/test_command_install_distinfo.py b/Lib/packaging/tests/test_command_install_distinfo.py
index 3d33691..6d40f66 100644
--- a/Lib/packaging/tests/test_command_install_distinfo.py
+++ b/Lib/packaging/tests/test_command_install_distinfo.py
@@ -168,8 +168,8 @@ class InstallDistinfoTestCase(support.TempdirManager,
             else:
                 size = os.path.getsize(f)
                 md5 = hashlib.md5()
-                with open(f) as fp:
-                    md5.update(fp.read().encode())
+                with open(f, 'rb') as fp:
+                    md5.update(fp.read())
                 hash = md5.hexdigest()
                 expected.append([f, hash, str(size)])
 
-- 
cgit v0.12