From 389e9c23a9e622ee6090d902cc5f56c5f76cdee9 Mon Sep 17 00:00:00 2001 From: Taneli Hukkinen <3275109+hukkin@users.noreply.github.com> Date: Tue, 21 Dec 2021 18:03:07 +0200 Subject: [PATCH] Disable universal newlines when reading TOML (#2408) --- CHANGES.md | 1 + Pipfile | 2 +- setup.py | 2 +- src/black/files.py | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 0452f1820c4..252f2cc8863 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,6 +4,7 @@ ### _Black_ +- Do not accept bare carriage return line endings in pyproject.toml (#2408) - Improve error message for invalid regular expression (#2678) - Improve error message when parsing fails during AST safety check by embedding the underlying SyntaxError (#2693) diff --git a/Pipfile b/Pipfile index a3af5fd8844..90d4a2a78c1 100644 --- a/Pipfile +++ b/Pipfile @@ -42,7 +42,7 @@ platformdirs= ">=2" click = ">=8.0.0" mypy_extensions = ">=0.4.3" pathspec = ">=0.8.1" -tomli = ">=0.2.6, <2.0.0" +tomli = ">=1.1.0, <3.0.0" typed-ast = "==1.4.3" typing_extensions = {markers = "python_version < '3.10'", version = ">=3.10.0.0"} black = {editable = true,extras = ["d"],path = "."} diff --git a/setup.py b/setup.py index a21bc87264d..d314bb283f2 100644 --- a/setup.py +++ b/setup.py @@ -99,7 +99,7 @@ def find_python_files(base: Path) -> List[Path]: install_requires=[ "click>=7.1.2", "platformdirs>=2", - "tomli>=0.2.6,<2.0.0", + "tomli>=1.1.0,<3.0.0", "typed-ast>=1.4.2; python_version < '3.8' and implementation_name == 'cpython'", "pathspec>=0.9.0, <1", "dataclasses>=0.6; python_version < '3.7'", diff --git a/src/black/files.py b/src/black/files.py index 560aa05080d..dfab9f73039 100644 --- a/src/black/files.py +++ b/src/black/files.py @@ -95,8 +95,8 @@ def parse_pyproject_toml(path_config: str) -> Dict[str, Any]: If parsing fails, will raise a tomli.TOMLDecodeError """ - with open(path_config, encoding="utf8") as f: - pyproject_toml = tomli.loads(f.read()) + with open(path_config, "rb") as f: + pyproject_toml = tomli.load(f) config = pyproject_toml.get("tool", {}).get("black", {}) return {k.replace("--", "").replace("-", "_"): v for k, v in config.items()}