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