From 9cf6d131411f1e9bca2f094137a970b711b664c4 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 19 May 2011 21:42:47 +0200 Subject: [PATCH] Issue #12112: fix the encoding of setup.py in the packaging module * read: use tokenize.detect_encoding() * write: use 'utf-8' --- Lib/packaging/create.py | 5 ++++- Lib/packaging/util.py | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Lib/packaging/create.py b/Lib/packaging/create.py index ca827732d3..5432ffcf2c 100644 --- a/Lib/packaging/create.py +++ b/Lib/packaging/create.py @@ -32,6 +32,7 @@ import glob import re import shutil import sysconfig +import tokenize from configparser import RawConfigParser from textwrap import dedent from hashlib import md5 @@ -116,7 +117,9 @@ def load_setup(): This function load the setup file in all cases (even if it have already been loaded before, because we are monkey patching its setup function with a particular one""" - with open("setup.py") as f: + with open("setup.py", "rb") as f: + encoding, lines = tokenize.detect_encoding(f.readline) + with open("setup.py", encoding=encoding) as f: imp.load_module("setup", f, "setup.py", (".py", "r", imp.PY_SOURCE)) diff --git a/Lib/packaging/util.py b/Lib/packaging/util.py index 058f13e334..71ce819af0 100644 --- a/Lib/packaging/util.py +++ b/Lib/packaging/util.py @@ -346,9 +346,9 @@ def byte_compile(py_files, optimize=0, force=False, prefix=None, logger.info("writing byte-compilation script '%s'", script_name) if not dry_run: if script_fd is not None: - script = os.fdopen(script_fd, "w") + script = os.fdopen(script_fd, "w", encoding='utf-8') else: - script = open(script_name, "w") + script = open(script_name, "w", encoding='utf-8') with script: script.write("""\ @@ -1087,7 +1087,7 @@ def generate_setup_py(): if os.path.exists("setup.py"): raise PackagingFileError("a setup.py file alreadyexists") - with open("setup.py", "w") as fp: + with open("setup.py", "w", encoding='utf-8') as fp: fp.write(_SETUP_TMPL % {'func': getsource(cfg_to_args)}) -- 2.50.0