From 43436c7d1ce529cd758aa309134b6180367d8040 Mon Sep 17 00:00:00 2001 From: Dominic Davis-Foster Date: Sun, 11 Jul 2021 16:39:35 +0100 Subject: [PATCH 1/3] Use UTF-8 encoding when reading pyproject.toml --- pep517/build.py | 3 ++- pep517/check.py | 3 ++- pep517/envbuild.py | 7 +++++-- tests/samples/pkg1/pyproject.toml | 4 ++++ tests/test_call_hooks.py | 3 ++- tests/test_hook_fallbacks.py | 3 ++- tests/test_inplace_hooks.py | 3 ++- 7 files changed, 19 insertions(+), 7 deletions(-) diff --git a/pep517/build.py b/pep517/build.py index 573005b..a45cabb 100644 --- a/pep517/build.py +++ b/pep517/build.py @@ -1,6 +1,7 @@ """Build a project using PEP 517 hooks. """ import argparse +import io import logging import os import toml @@ -31,7 +32,7 @@ def load_system(source_dir): Load the build system from a source dir (pyproject.toml). """ pyproject = os.path.join(source_dir, 'pyproject.toml') - with open(pyproject) as f: + with io.open(pyproject, encoding="utf-8") as f: pyproject_data = toml.load(f) return pyproject_data['build-system'] diff --git a/pep517/check.py b/pep517/check.py index 8985007..568c719 100644 --- a/pep517/check.py +++ b/pep517/check.py @@ -1,6 +1,7 @@ """Check a project and backend by attempting to build using PEP 517 hooks. """ import argparse +import io import logging import os from os.path import isfile, join as pjoin @@ -141,7 +142,7 @@ def check(source_dir): return False try: - with open(pyproject) as f: + with io.open(pyproject, encoding="utf-8") as f: pyproject_data = toml_load(f) # Ensure the mandatory data can be loaded buildsys = pyproject_data['build-system'] diff --git a/pep517/envbuild.py b/pep517/envbuild.py index cacd2b1..7718df7 100644 --- a/pep517/envbuild.py +++ b/pep517/envbuild.py @@ -1,6 +1,6 @@ """Build wheels/sdists by installing build deps to a temporary environment. """ - +import io import os import logging import toml @@ -16,7 +16,10 @@ def _load_pyproject(source_dir): - with open(os.path.join(source_dir, 'pyproject.toml')) as f: + with io.open( + os.path.join(source_dir, 'pyproject.toml'), + encoding="utf-8", + ) as f: pyproject_data = toml.load(f) buildsys = pyproject_data['build-system'] return ( diff --git a/tests/samples/pkg1/pyproject.toml b/tests/samples/pkg1/pyproject.toml index 95ff87f..a44147b 100644 --- a/tests/samples/pkg1/pyproject.toml +++ b/tests/samples/pkg1/pyproject.toml @@ -1,3 +1,7 @@ [build-system] requires = ["eg_buildsys"] build-backend = "buildsys" + +[project] +description = "Factory ⸻ A code generator 🏭" +maintainers = [{name = "Łukasz Langa"}] diff --git a/tests/test_call_hooks.py b/tests/test_call_hooks.py index 43f22b9..de603a4 100644 --- a/tests/test_call_hooks.py +++ b/tests/test_call_hooks.py @@ -1,3 +1,4 @@ +import io import os from os.path import dirname, abspath, join as pjoin import tarfile @@ -28,7 +29,7 @@ def get_hooks(pkg, **kwargs): source_dir = pjoin(SAMPLES_DIR, pkg) - with open(pjoin(source_dir, 'pyproject.toml')) as f: + with io.open(pjoin(source_dir, 'pyproject.toml'), encoding="utf-8") as f: data = toml.load(f) return Pep517HookCaller( source_dir, data['build-system']['build-backend'], **kwargs diff --git a/tests/test_hook_fallbacks.py b/tests/test_hook_fallbacks.py index c8d4f21..11a3869 100644 --- a/tests/test_hook_fallbacks.py +++ b/tests/test_hook_fallbacks.py @@ -1,3 +1,4 @@ +import io from os.path import dirname, abspath, join as pjoin import pytest import toml @@ -12,7 +13,7 @@ def get_hooks(pkg): source_dir = pjoin(SAMPLES_DIR, pkg) - with open(pjoin(source_dir, 'pyproject.toml')) as f: + with io.open(pjoin(source_dir, 'pyproject.toml'), encoding="utf-8") as f: data = toml.load(f) return Pep517HookCaller(source_dir, data['build-system']['build-backend']) diff --git a/tests/test_inplace_hooks.py b/tests/test_inplace_hooks.py index 527cf60..3b64805 100644 --- a/tests/test_inplace_hooks.py +++ b/tests/test_inplace_hooks.py @@ -1,3 +1,4 @@ +import io from os.path import dirname, abspath, join as pjoin import toml from testpath import modified_env @@ -12,7 +13,7 @@ def get_hooks(pkg, backend=None, path=None): source_dir = pjoin(SAMPLES_DIR, pkg) - with open(pjoin(source_dir, 'pyproject.toml')) as f: + with io.open(pjoin(source_dir, 'pyproject.toml'), encoding="utf-8") as f: data = toml.load(f) if backend is None: backend = data['build-system']['build-backend'] From 31b49ede01be2dc5c8888e7a5b59f4c604f21010 Mon Sep 17 00:00:00 2001 From: Dominic Davis-Foster Date: Sun, 11 Jul 2021 17:05:37 +0100 Subject: [PATCH 2/3] Lint --- pep517/envbuild.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pep517/envbuild.py b/pep517/envbuild.py index 7718df7..ce18148 100644 --- a/pep517/envbuild.py +++ b/pep517/envbuild.py @@ -1,5 +1,6 @@ """Build wheels/sdists by installing build deps to a temporary environment. """ + import io import os import logging From c24eec51ef5c5590f63753fef87b68e95cf15ab2 Mon Sep 17 00:00:00 2001 From: Dominic Davis-Foster Date: Sun, 11 Jul 2021 17:08:33 +0100 Subject: [PATCH 3/3] Lint --- pep517/envbuild.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pep517/envbuild.py b/pep517/envbuild.py index ce18148..d2b7701 100644 --- a/pep517/envbuild.py +++ b/pep517/envbuild.py @@ -18,9 +18,9 @@ def _load_pyproject(source_dir): with io.open( - os.path.join(source_dir, 'pyproject.toml'), - encoding="utf-8", - ) as f: + os.path.join(source_dir, 'pyproject.toml'), + encoding="utf-8", + ) as f: pyproject_data = toml.load(f) buildsys = pyproject_data['build-system'] return (