import re
import shutil
import sysconfig
+import tokenize
from configparser import RawConfigParser
from textwrap import dedent
from hashlib import md5
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))
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("""\
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)})