diff --git a/README.rst b/README.rst index eb6c615..a035f33 100644 --- a/README.rst +++ b/README.rst @@ -26,7 +26,7 @@ Usage—you are responsible for ensuring build requirements are available: from pep517.wrappers import Pep517HookCaller src = 'path/to/source' # Folder containing 'pyproject.toml' - with open(os.path.join(src, 'pyproject.toml')) as f: + with open(os.path.join(src, 'pyproject.toml'), 'rb') as f: build_sys = tomli.load(f)['build-system'] print(build_sys['requires']) # List of static requirements diff --git a/dev-requirements.txt b/dev-requirements.txt index 34c422c..1384c9c 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,6 +1,6 @@ pytest pytest-flake8 -flake8 < 4 # https://github.com/tholo/pytest-flake8/issues/81 +flake8 testpath tomli setuptools>=30 diff --git a/pep517/_compat.py b/pep517/_compat.py new file mode 100644 index 0000000..c06d7fe --- /dev/null +++ b/pep517/_compat.py @@ -0,0 +1,8 @@ +__all__ = ("tomllib",) + +import sys + +if sys.version_info >= (3, 11): + import tomllib +else: + import tomli as tomllib diff --git a/pep517/build.py b/pep517/build.py index ad1c253..b30909c 100644 --- a/pep517/build.py +++ b/pep517/build.py @@ -6,8 +6,7 @@ import shutil import tempfile -import tomli - +from ._compat import tomllib from .envbuild import BuildEnvironment from .wrappers import Pep517HookCaller @@ -32,7 +31,7 @@ def load_system(source_dir): """ pyproject = os.path.join(source_dir, 'pyproject.toml') with open(pyproject, 'rb') as f: - pyproject_data = tomli.load(f) + pyproject_data = tomllib.load(f) return pyproject_data['build-system'] diff --git a/pep517/check.py b/pep517/check.py index a5f9305..b79f627 100644 --- a/pep517/check.py +++ b/pep517/check.py @@ -12,8 +12,7 @@ from subprocess import CalledProcessError from tempfile import mkdtemp -import tomli - +from ._compat import tomllib from .colorlog import enable_colourful_output from .envbuild import BuildEnvironment from .wrappers import Pep517HookCaller @@ -144,14 +143,14 @@ def check(source_dir): try: with open(pyproject, 'rb') as f: - pyproject_data = tomli.load(f) + pyproject_data = tomllib.load(f) # Ensure the mandatory data can be loaded buildsys = pyproject_data['build-system'] requires = buildsys['requires'] backend = buildsys['build-backend'] backend_path = buildsys.get('backend-path') log.info('Loaded pyproject.toml') - except (tomli.TOMLDecodeError, KeyError): + except (tomllib.TOMLDecodeError, KeyError): log.error("Invalid pyproject.toml", exc_info=True) return False diff --git a/pep517/envbuild.py b/pep517/envbuild.py index 8437e1b..c0415c4 100644 --- a/pep517/envbuild.py +++ b/pep517/envbuild.py @@ -9,8 +9,7 @@ from sysconfig import get_paths from tempfile import mkdtemp -import tomli - +from ._compat import tomllib from .wrappers import LoggerWrapper, Pep517HookCaller log = logging.getLogger(__name__) @@ -21,7 +20,7 @@ def _load_pyproject(source_dir): os.path.join(source_dir, 'pyproject.toml'), 'rb', ) as f: - pyproject_data = tomli.load(f) + pyproject_data = tomllib.load(f) buildsys = pyproject_data['build-system'] return ( buildsys['requires'], diff --git a/pyproject.toml b/pyproject.toml index bd3650f..f24e689 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ author-email = "thomas@kluyver.me.uk" home-page = "https://github.com/pypa/pep517" description-file = "README.rst" requires = [ - "tomli >=1.1.0", + "tomli >=1.1.0;python_version<'3.11'", "importlib_metadata;python_version<'3.8'", "zipp;python_version<'3.8'", ]