From 2e8a3198289e56d4055aac2f8ef7af1e42b71545 Mon Sep 17 00:00:00 2001 From: Shantanu <12621235+hauntsaninja@users.noreply.github.com> Date: Sun, 17 Apr 2022 11:11:17 -0700 Subject: [PATCH] Use tomllib on Python 3.11 (#9741) --- changelog/9741.improvement.rst | 3 +++ setup.cfg | 2 +- src/_pytest/config/findpaths.py | 10 +++++++--- 3 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 changelog/9741.improvement.rst diff --git a/changelog/9741.improvement.rst b/changelog/9741.improvement.rst new file mode 100644 index 000000000..1f9ab3ead --- /dev/null +++ b/changelog/9741.improvement.rst @@ -0,0 +1,3 @@ +On Python 3.11, use the standard library's :mod:`tomllib` to parse TOML. + +:mod:`tomli`` is no longer a dependency on Python 3.11. diff --git a/setup.cfg b/setup.cfg index fe6ea4095..c4f5bd9d2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -46,10 +46,10 @@ install_requires = packaging pluggy>=0.12,<2.0 py>=1.8.2 - tomli>=1.0.0 atomicwrites>=1.0;sys_platform=="win32" colorama;sys_platform=="win32" importlib-metadata>=0.12;python_version<"3.8" + tomli>=1.0.0;python_version<"3.11" python_requires = >=3.7 package_dir = =src diff --git a/src/_pytest/config/findpaths.py b/src/_pytest/config/findpaths.py index c082e652d..ead344baa 100644 --- a/src/_pytest/config/findpaths.py +++ b/src/_pytest/config/findpaths.py @@ -1,4 +1,5 @@ import os +import sys from pathlib import Path from typing import Dict from typing import Iterable @@ -64,12 +65,15 @@ def load_config_dict_from_file( # '.toml' files are considered if they contain a [tool.pytest.ini_options] table. elif filepath.suffix == ".toml": - import tomli + if sys.version_info >= (3, 11): + import tomllib + else: + import tomli as tomllib toml_text = filepath.read_text(encoding="utf-8") try: - config = tomli.loads(toml_text) - except tomli.TOMLDecodeError as exc: + config = tomllib.loads(toml_text) + except tomllib.TOMLDecodeError as exc: raise UsageError(f"{filepath}: {exc}") from exc result = config.get("tool", {}).get("pytest", {}).get("ini_options", None)