Skip to content

Commit

Permalink
Always read metadata files as UTF-8 in setup.py
Browse files Browse the repository at this point in the history
This passes `encoding="utf-8"` to the `open` calls in setup.py, so
the readme, version, and requirements files are always read as
UTF-8, even on systems whose locale is not UTF-8. This fixes the
bug described in #1747 where installation other than from a
pre-built wheel would fail on many Windows systems using
non-European languages.

The specific problem occurred with the README.md file. The
requirements files are less likely to contain characters not in the
ASCII subset, though maybe they could come to contain them, perhaps
in comments. The VERSION file is even less likely to ever contain
such characters. Nonetheless, for consistency, because it is a best
practice, and because it appears to be the intent of the existing
code, encoding="utf=8" is added for opening all of them.

This change is tested on a system whose locale uses Windows code
page 936. Editable installation, as well as the other affected ways
of installing (and building) described in #1747, are now working.
  • Loading branch information
EliahKagan committed Nov 29, 2023
1 parent 5c6a4f4 commit 6727d0e
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@
import os
import sys

with open(os.path.join(os.path.dirname(__file__), "VERSION")) as ver_file:
with open(os.path.join(os.path.dirname(__file__), "VERSION"), encoding="utf-8") as ver_file:
VERSION = ver_file.readline().strip()

with open("requirements.txt") as reqs_file:
with open("requirements.txt", encoding="utf-8") as reqs_file:
requirements = reqs_file.read().splitlines()

with open("test-requirements.txt") as reqs_file:
with open("test-requirements.txt", encoding="utf-8") as reqs_file:
test_requirements = reqs_file.read().splitlines()

with open("README.md") as rm_file:
with open("README.md", encoding="utf-8") as rm_file:
long_description = rm_file.read()


Expand Down

0 comments on commit 6727d0e

Please sign in to comment.