Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pyproject-api for 
openSUSE:Factory checked in at 2025-07-09 17:27:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyproject-api (Old)
 and      /work/SRC/openSUSE:Factory/.python-pyproject-api.new.7373 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pyproject-api"

Wed Jul  9 17:27:11 2025 rev:4 rq:1291241 version:1.8.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-pyproject-api/python-pyproject-api.changes    
    2023-11-09 21:36:14.982772161 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-pyproject-api.new.7373/python-pyproject-api.changes
      2025-07-09 17:27:50.922150580 +0200
@@ -1,0 +2,13 @@
+Tue Jul  8 11:46:40 UTC 2025 - Dirk Müller <dmuel...@suse.com>
+
+- update to 1.8.0:
+  * really drop python<3 support
+- update to 1.7.2:
+  * Improve the CI
+- update to 1.7.1:
+  * Move changelog to GH releases
+- update to 1.7.0:
+  * docs: correct Homepage URL
+  * Bump and fix CI for new setuptools
+
+-------------------------------------------------------------------

Old:
----
  pyproject_api-1.6.1.tar.gz

New:
----
  pyproject_api-1.8.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pyproject-api.spec ++++++
--- /var/tmp/diff_new_pack.oRg6Fe/_old  2025-07-09 17:27:51.342168056 +0200
+++ /var/tmp/diff_new_pack.oRg6Fe/_new  2025-07-09 17:27:51.346168223 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pyproject-api
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-pyproject-api
-Version:        1.6.1
+Version:        1.8.0
 Release:        0
 Summary:        API to interact with the python pyproject.toml based projects
 License:        MIT
@@ -28,28 +28,22 @@
 BuildRequires:  %{python_module hatch >= 0.3}
 BuildRequires:  %{python_module hatch-vcs >= 0.3}
 BuildRequires:  %{python_module hatchling >= 1.18}
-BuildRequires:  %{python_module importlib-metadata >= 6 if %python-base < 3.8}
-BuildRequires:  %{python_module packaging >= 23.1}
+BuildRequires:  %{python_module packaging >= 24.1}
 BuildRequires:  %{python_module pip}
-BuildRequires:  %{python_module setuptools >= 68.1.2}
+BuildRequires:  %{python_module setuptools >= 75.1}
 BuildRequires:  %{python_module setuptools_scm}
-BuildRequires:  %{python_module tomli >= 2.0.1 if %python-base < 3.11}
 BuildRequires:  %{python_module wheel >= 0.41.2}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 BuildRequires:  unzip
-BuildRequires:  (python36-importlib-metadata >= 6 if python36-base)
-Requires:       python-packaging >= 23
-Requires:       (python-importlib-metadata >= 6 if python3-base < 3.8)
-Requires:       (python-tomli >= 2.0.1 if python3-base < 3.11)
+Requires:       python-packaging >= 24.1
 BuildArch:      noarch
 # SECTION testing=
 # (except for pytest-cov and -randomly)
 BuildRequires:  %{python_module covdefaults >= 2.3}
-BuildRequires:  %{python_module pytest >= 7.4}
-BuildRequires:  %{python_module pytest-cov >= 4.1}
-BuildRequires:  %{python_module pytest-mock >= 3.11.1}
-BuildRequires:  %{python_module virtualenv >= 20.17.1}
+BuildRequires:  %{python_module pytest >= 8.3.3}
+BuildRequires:  %{python_module pytest-cov >= 5}
+BuildRequires:  %{python_module pytest-mock >= 3.14}
 # /SECTION
 %python_subpackages
 
@@ -78,7 +72,7 @@
 
 %files %{python_files}
 %license LICENSE
-%doc README.md docs/changelog.rst
+%doc README.md
 %{python_sitelib}/pyproject_api-%{version}*-info
 %{python_sitelib}/pyproject_api
 

++++++ pyproject_api-1.6.1.tar.gz -> pyproject_api-1.8.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/.github/workflows/check.yaml 
new/pyproject_api-1.8.0/.github/workflows/check.yaml
--- old/pyproject_api-1.6.1/.github/workflows/check.yaml        1970-01-01 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/.github/workflows/check.yaml        2020-02-02 
01:00:00.000000000 +0100
@@ -0,0 +1,65 @@
+name: check
+on:
+  workflow_dispatch:
+  push:
+    branches: ["main"]
+    tags-ignore: ["**"]
+  pull_request:
+  schedule:
+    - cron: "0 8 * * *"
+
+concurrency:
+  group: check-${{ github.ref }}
+  cancel-in-progress: true
+
+jobs:
+  test:
+    name: test ${{ matrix.env }} - ${{ matrix.os }}
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        env:
+          - "3.13"
+          - "3.12"
+          - "3.11"
+          - "3.10"
+          - "3.9"
+          - "3.8"
+          - type
+          - dev
+          - pkg_meta
+        os:
+          - ubuntu-latest
+          - windows-latest
+          - macos-latest
+        exclude:
+          - { os: macos-latest, env: "type" }
+          - { os: macos-latest, env: "dev" }
+          - { os: macos-latest, env: "pkg_meta" }
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+      - name: Install the latest version of uv
+        uses: astral-sh/setup-uv@v3
+        with:
+          enable-cache: true
+          cache-dependency-glob: "pyproject.toml"
+          github-token: ${{ secrets.GITHUB_TOKEN }}
+      - name: Add .local/bin to Windows PATH
+        if: runner.os == 'Windows'
+        shell: bash
+        run: echo "$USERPROFILE/.local/bin" >> $GITHUB_PATH
+      - name: Install tox
+        run: uv tool install --python-preference only-managed --python 3.13 
tox --with tox-uv
+      - name: Install Python
+        if: startsWith(matrix.env, '3.') && matrix.env != '3.13'
+        run: uv python install --python-preference only-managed ${{ matrix.env 
}}
+      - name: Setup test suite
+        run: tox run -vv --notest --skip-missing-interpreters false -e ${{ 
matrix.env }}
+      - name: Run test suite
+        run: tox run --skip-pkg-install -e ${{ matrix.env }}
+        env:
+          PYTEST_ADDOPTS: "-vv --durations=20"
+          DIFF_AGAINST: HEAD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/.github/workflows/check.yml 
new/pyproject_api-1.8.0/.github/workflows/check.yml
--- old/pyproject_api-1.6.1/.github/workflows/check.yml 2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/.github/workflows/check.yml 1970-01-01 
01:00:00.000000000 +0100
@@ -1,90 +0,0 @@
-name: check
-on:
-  push:
-    tags-ignore: ["**"]
-  pull_request:
-  schedule:
-    - cron: "0 8 * * *"
-
-concurrency:
-  group: check-${{ github.ref }}
-  cancel-in-progress: true
-
-jobs:
-  test:
-    name: test ${{ matrix.py }} on ${{ matrix.os }}
-    runs-on: ${{ matrix.os }}
-    strategy:
-      fail-fast: false
-      matrix:
-        py:
-          - "3.12.0-rc.1"
-          - "3.11"
-          - "3.10"
-          - "3.9"
-          - "3.8"
-        os:
-          - ubuntu-latest
-          - windows-latest
-          - macos-latest
-    steps:
-      - name: Setup python for tox
-        uses: actions/setup-python@v4
-        with:
-          python-version: "3.11"
-      - uses: actions/checkout@v3
-        with:
-          fetch-depth: 0
-      - name: Install tox
-        run: python -m pip install tox
-      - name: Setup python for test ${{ matrix.py }}
-        uses: actions/setup-python@v4
-        with:
-          python-version: ${{ matrix.py }}
-      - name: Pick environment to run
-        run: |
-          import os; import platform; import sys; from pathlib import Path
-          env = f'TOXENV=py{"" if platform.python_implementation() == 
"CPython" else "py"}3{sys.version_info.minor}'
-          print(f"Picked: {env} for {sys.version} based of {sys.executable}")
-          with Path(os.environ["GITHUB_ENV"]).open("ta") as file_handler:
-               file_handler.write(env)
-        shell: python
-      - name: Setup test suite
-        run: tox -vv --notest
-      - name: Run test suite
-        run: tox --skip-pkg-install
-        env:
-          PYTEST_ADDOPTS: "-vv --durations=20"
-          CI_RUN: "yes"
-          DIFF_AGAINST: HEAD
-
-  check:
-    name: tox env ${{ matrix.tox_env }} on ${{ matrix.os }}
-    runs-on: ${{ matrix.os }}
-    strategy:
-      fail-fast: false
-      matrix:
-        tox_env:
-          - type
-          - dev
-          - docs
-          - pkg_meta
-        os:
-          - ubuntu-latest
-          - windows-latest
-        exclude:
-          - { os: windows-latest, tox_env: pkg_meta }
-    steps:
-      - uses: actions/checkout@v3
-        with:
-          fetch-depth: 0
-      - name: Setup Python 3.11
-        uses: actions/setup-python@v4
-        with:
-          python-version: "3.11"
-      - name: Install tox
-        run: python -m pip install tox
-      - name: Run check for ${{ matrix.tox_env }}
-        run: tox -e ${{ matrix.tox_env }}
-        env:
-          UPGRADE_ADVISORY: "yes"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/.github/workflows/release.yaml 
new/pyproject_api-1.8.0/.github/workflows/release.yaml
--- old/pyproject_api-1.6.1/.github/workflows/release.yaml      1970-01-01 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/.github/workflows/release.yaml      2020-02-02 
01:00:00.000000000 +0100
@@ -0,0 +1,48 @@
+name: Release to PyPI
+on:
+  push:
+    tags: ["*"]
+
+env:
+  dists-artifact-name: python-package-distributions
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          fetch-depth: 0
+      - name: Install the latest version of uv
+        uses: astral-sh/setup-uv@v3
+        with:
+          enable-cache: true
+          cache-dependency-glob: "pyproject.toml"
+          github-token: ${{ secrets.GITHUB_TOKEN }}
+      - name: Build package
+        run: uv build --python 3.13 --python-preference only-managed --sdist 
--wheel . --out-dir dist
+      - name: Store the distribution packages
+        uses: actions/upload-artifact@v4
+        with:
+          name: ${{ env.dists-artifact-name }}
+          path: dist/*
+
+  release:
+    needs:
+      - build
+    runs-on: ubuntu-latest
+    environment:
+      name: release
+      url: https://pypi.org/project/pyproject-api/${{ github.ref_name }}
+    permissions:
+      id-token: write
+    steps:
+      - name: Download all the dists
+        uses: actions/download-artifact@v4
+        with:
+          name: ${{ env.dists-artifact-name }}
+          path: dist/
+      - name: Publish to PyPI
+        uses: pypa/gh-action-pypi-publish@v1.10.1
+        with:
+          attestations: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/.github/workflows/release.yml 
new/pyproject_api-1.8.0/.github/workflows/release.yml
--- old/pyproject_api-1.6.1/.github/workflows/release.yml       2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/.github/workflows/release.yml       1970-01-01 
01:00:00.000000000 +0100
@@ -1,27 +0,0 @@
-name: Release to PyPI
-on:
-  push:
-    tags: ["*"]
-
-jobs:
-  release:
-    runs-on: ubuntu-latest
-    environment:
-      name: release
-      url: https://pypi.org/p/pyproject-api
-    permissions:
-      id-token: write
-    steps:
-      - name: Setup python to build package
-        uses: actions/setup-python@v4
-        with:
-          python-version: "3.11"
-      - name: Install build
-        run: python -m pip install build
-      - uses: actions/checkout@v3
-        with:
-          fetch-depth: 0
-      - name: Build package
-        run: pyproject-build -s -w . -o dist
-      - name: Publish to PyPI
-        uses: pypa/gh-action-pypi-publish@v1.8.10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/.pre-commit-config.yaml 
new/pyproject_api-1.8.0/.pre-commit-config.yaml
--- old/pyproject_api-1.6.1/.pre-commit-config.yaml     2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/.pre-commit-config.yaml     2020-02-02 
01:00:00.000000000 +0100
@@ -1,43 +1,34 @@
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v4.4.0
+    rev: v4.6.0
     hooks:
       - id: end-of-file-fixer
       - id: trailing-whitespace
-  - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: "v0.0.286"
+  - repo: https://github.com/python-jsonschema/check-jsonschema
+    rev: 0.29.2
     hooks:
-      - id: ruff
-        exclude: src/pyproject_api/_backend.py
-        args: [--fix, --exit-non-zero-on-fix]
-  - repo: https://github.com/psf/black
-    rev: 23.7.0
+      - id: check-github-workflows
+        args: [ "--verbose" ]
+  - repo: https://github.com/codespell-project/codespell
+    rev: v2.3.0
     hooks:
-      - id: black
+      - id: codespell
+        additional_dependencies: ["tomli>=2.0.1"]
   - repo: https://github.com/tox-dev/tox-ini-fmt
-    rev: "1.3.1"
+    rev: "1.4.0"
     hooks:
       - id: tox-ini-fmt
         args: ["-p", "fix"]
   - repo: https://github.com/tox-dev/pyproject-fmt
-    rev: "1.1.0"
+    rev: "2.2.3"
     hooks:
       - id: pyproject-fmt
-        additional_dependencies: ["tox>=4.10"]
-  - repo: https://github.com/pre-commit/mirrors-prettier
-    rev: "v3.0.2"
-    hooks:
-      - id: prettier
-        args: ["--print-width=120", "--prose-wrap=always"]
-  - repo: https://github.com/asottile/blacken-docs
-    rev: 1.16.0
-    hooks:
-      - id: blacken-docs
-        additional_dependencies: [black==23.7]
-  - repo: https://github.com/pre-commit/pygrep-hooks
-    rev: v1.10.0
+  - repo: https://github.com/astral-sh/ruff-pre-commit
+    rev: "v0.6.5"
     hooks:
-      - id: rst-backticks
+      - id: ruff-format
+      - id: ruff
+        args: ["--fix", "--unsafe-fixes", "--exit-non-zero-on-fix"]
   - repo: meta
     hooks:
       - id: check-hooks-apply
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/PKG-INFO 
new/pyproject_api-1.8.0/PKG-INFO
--- old/pyproject_api-1.6.1/PKG-INFO    2020-02-02 01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/PKG-INFO    2020-02-02 01:00:00.000000000 +0100
@@ -1,8 +1,9 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.3
 Name: pyproject-api
-Version: 1.6.1
+Version: 1.8.0
 Summary: API to interact with the python pyproject.toml based projects
-Project-URL: Homepage, http://pyproject_api.readthedocs.org
+Project-URL: Changelog, https://github.com/tox-dev/pyproject-api/releases
+Project-URL: Homepage, https://pyproject-api.readthedocs.io
 Project-URL: Source, https://github.com/tox-dev/pyproject-api
 Project-URL: Tracker, https://github.com/tox-dev/pyproject-api/issues
 Author-email: Bernát Gábor <gaborjber...@gmail.com>
@@ -23,23 +24,22 @@
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
 Classifier: Topic :: Software Development :: Libraries
 Classifier: Topic :: Software Development :: Testing
 Classifier: Topic :: Utilities
 Requires-Python: >=3.8
-Requires-Dist: packaging>=23.1
+Requires-Dist: packaging>=24.1
 Requires-Dist: tomli>=2.0.1; python_version < '3.11'
 Provides-Extra: docs
-Requires-Dist: furo>=2023.8.19; extra == 'docs'
-Requires-Dist: sphinx-autodoc-typehints>=1.24; extra == 'docs'
-Requires-Dist: sphinx<7.2; extra == 'docs'
+Requires-Dist: furo>=2024.8.6; extra == 'docs'
+Requires-Dist: sphinx-autodoc-typehints>=2.4.1; extra == 'docs'
 Provides-Extra: testing
 Requires-Dist: covdefaults>=2.3; extra == 'testing'
-Requires-Dist: pytest-cov>=4.1; extra == 'testing'
-Requires-Dist: pytest-mock>=3.11.1; extra == 'testing'
-Requires-Dist: pytest>=7.4; extra == 'testing'
-Requires-Dist: setuptools>=68.1.2; extra == 'testing'
-Requires-Dist: wheel>=0.41.2; extra == 'testing'
+Requires-Dist: pytest-cov>=5; extra == 'testing'
+Requires-Dist: pytest-mock>=3.14; extra == 'testing'
+Requires-Dist: pytest>=8.3.3; extra == 'testing'
+Requires-Dist: setuptools>=75.1; extra == 'testing'
 Description-Content-Type: text/markdown
 
 # [`pyproject-api`](https://pyproject-api.readthedocs.io/en/latest/)
@@ -48,7 +48,5 @@
 [![Supported Python
 
versions](https://img.shields.io/pypi/pyversions/pyproject-api.svg)](https://pypi.org/project/pyproject-api/)
 
[![Downloads](https://static.pepy.tech/badge/pyproject-api/month)](https://pepy.tech/project/pyproject-api)
-[![check](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yml/badge.svg)](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yml)
-[![Code style:
-black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+[![check](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yaml/badge.svg)](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yaml)
 [![Documentation 
Status](https://readthedocs.org/projects/pyproject-api/badge/?version=latest)](https://pyproject-api.readthedocs.io/en/latest/?badge=latest)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/README.md 
new/pyproject_api-1.8.0/README.md
--- old/pyproject_api-1.6.1/README.md   2020-02-02 01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/README.md   2020-02-02 01:00:00.000000000 +0100
@@ -4,7 +4,5 @@
 [![Supported Python
 
versions](https://img.shields.io/pypi/pyversions/pyproject-api.svg)](https://pypi.org/project/pyproject-api/)
 
[![Downloads](https://static.pepy.tech/badge/pyproject-api/month)](https://pepy.tech/project/pyproject-api)
-[![check](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yml/badge.svg)](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yml)
-[![Code style:
-black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+[![check](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yaml/badge.svg)](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yaml)
 [![Documentation 
Status](https://readthedocs.org/projects/pyproject-api/badge/?version=latest)](https://pyproject-api.readthedocs.io/en/latest/?badge=latest)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/docs/api.rst 
new/pyproject_api-1.8.0/docs/api.rst
--- old/pyproject_api-1.6.1/docs/api.rst        1970-01-01 01:00:00.000000000 
+0100
+++ new/pyproject_api-1.8.0/docs/api.rst        2020-02-02 01:00:00.000000000 
+0100
@@ -0,0 +1,59 @@
+
+API
++++
+
+.. currentmodule:: pyproject_api
+
+.. autodata:: __version__
+
+Frontend
+--------
+.. autoclass:: Frontend
+
+.. autoclass:: OptionalHooks
+
+Exceptions
+----------
+
+Backend failed
+~~~~~~~~~~~~~~
+.. autoclass:: BackendFailed
+
+Results
+-------
+
+Build source distribution requires
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. autoclass:: RequiresBuildSdistResult
+
+Build wheel requires
+~~~~~~~~~~~~~~~~~~~~
+.. autoclass:: RequiresBuildWheelResult
+
+Editable requires
+~~~~~~~~~~~~~~~~~
+.. autoclass:: RequiresBuildEditableResult
+
+Wheel metadata
+~~~~~~~~~~~~~~
+.. autoclass:: MetadataForBuildWheelResult
+
+Editable metadata
+~~~~~~~~~~~~~~~~~
+.. autoclass:: MetadataForBuildEditableResult
+
+Source distribution
+~~~~~~~~~~~~~~~~~~~
+.. autoclass:: SdistResult
+
+Editable
+~~~~~~~~
+.. autoclass:: EditableResult
+
+Wheel
+~~~~~
+.. autoclass:: WheelResult
+
+Fresh subprocess frontend
+-------------------------
+.. autoclass:: SubprocessFrontend
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/docs/changelog.rst 
new/pyproject_api-1.8.0/docs/changelog.rst
--- old/pyproject_api-1.6.1/docs/changelog.rst  2020-02-02 01:00:00.000000000 
+0100
+++ new/pyproject_api-1.8.0/docs/changelog.rst  1970-01-01 01:00:00.000000000 
+0100
@@ -1,77 +0,0 @@
-Release History
-===============
-
-v1.6.1 - (2023-08-29)
----------------------
-- Fix :meth:`pyproject_api.Frontend.metadata_from_built` only extracts one of 
the dist info files.
-
-v1.6.0 - (2023-08-29)
----------------------
-- Remove ``build_<wheel|editable>`` from 
``prepare_metadata_for_build_<wheel|editable>`` to allow separate config
-  parametrization and instead add 
:meth:`pyproject_api.Frontend.metadata_from_built` the user can call when the 
prepare
-  fails. Pass ``None`` for ``metadata_directory`` for such temporary wheel 
builds.
-
-v1.5.4 - (2023-08-17)
----------------------
-- Make sure that the order of Requires-Dist does not matter
-
-v1.5.3 - (2023-07-06)
----------------------
-- Fix ``read_line`` to raise ``EOFError`` if nothing was read
-
-v1.5.2 - (2023-06-14)
----------------------
-- Use ruff for linting.
-- Drop 2.7 test run.
-
-v1.5.1 - (2023-03-12)
----------------------
-- docs: set html_last_updated_fmt to format string
-
-v1.5.0 - (2023-01-17)
----------------------
-- When getting metadata from a built wheel, do not pass ``metadata_directory``
-  to ``build_wheel``, which forces the backend to generate the metadata - by 
:user:`masenf`.
-  (`#47 <https://github.com/tox-dev/pyproject-api/issues/47>`_)
-
-v1.4.0 - (2022-01-04)
----------------------
-- Add minimal CLI for debugging
-
-v1.3.0 - (2022-01-03)
----------------------
-- Do not allow exceptions to propagate in backend
-
-v1.2.1 - (2022-12-04)
----------------------
-- Fix Python 2 incompatibility on the backend
-- Allow skipping prepare metadata for the full build by returning None as 
basename
-
-v1.2.0 - (2022-12-04)
----------------------
-- Expose which optional hooks are present or missing via 
:meth:`pyproject_api.Frontend.optional_hooks`
-
-v1.1.2 - (2022-10-30)
----------------------
-- Fix editable classes not exported at root level
-
-v1.1.1 - (2022-09-10)
----------------------
-- Add missed ``wheel`` as test dependency
-
-v1.1.0 - (2022-09-10)
----------------------
-- PEP-660 support
-
-v1.0.0 - (2022-09-10)
----------------------
-- Use hatchling as build backend
-- 3.11 support
-
-v0.0.1 - (2021-12-30)
----------------------
-- Drop Python 3.6 support
-
-v0.1.0 - (2021-10-21)
----------------------
-- first version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/docs/index.rst 
new/pyproject_api-1.8.0/docs/index.rst
--- old/pyproject_api-1.6.1/docs/index.rst      2020-02-02 01:00:00.000000000 
+0100
+++ new/pyproject_api-1.8.0/docs/index.rst      2020-02-02 01:00:00.000000000 
+0100
@@ -3,67 +3,8 @@
 
 ``pyproject-api`` aims to abstract away interaction with ``pyproject.toml`` 
style projects in a flexible way.
 
-API
-+++
-
-.. currentmodule:: pyproject_api
-
-.. autodata:: __version__
-
-Frontend
---------
-.. autoclass:: Frontend
-
-.. autoclass:: OptionalHooks
-
-Exceptions
-----------
-
-Backend failed
-~~~~~~~~~~~~~~
-.. autoclass:: BackendFailed
-
-Results
--------
-
-Build source distribution requires
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.. autoclass:: RequiresBuildSdistResult
-
-Build wheel requires
-~~~~~~~~~~~~~~~~~~~~
-.. autoclass:: RequiresBuildWheelResult
-
-Editable requires
-~~~~~~~~~~~~~~~~~
-.. autoclass:: RequiresBuildEditableResult
-
-Wheel metadata
-~~~~~~~~~~~~~~
-.. autoclass:: MetadataForBuildWheelResult
-
-Editable metadata
-~~~~~~~~~~~~~~~~~
-.. autoclass:: MetadataForBuildEditableResult
-
-Source distribution
-~~~~~~~~~~~~~~~~~~~
-.. autoclass:: SdistResult
-
-Editable
-~~~~~~~~
-.. autoclass:: EditableResult
-
-Wheel
-~~~~~
-.. autoclass:: WheelResult
-
-Fresh subprocess frontend
--------------------------
-.. autoclass:: SubprocessFrontend
-
 .. toctree::
    :hidden:
 
    self
-   changelog
+   api
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/pyproject.toml 
new/pyproject_api-1.8.0/pyproject.toml
--- old/pyproject_api-1.6.1/pyproject.toml      2020-02-02 01:00:00.000000000 
+0100
+++ new/pyproject_api-1.8.0/pyproject.toml      2020-02-02 01:00:00.000000000 
+0100
@@ -1,8 +1,8 @@
 [build-system]
 build-backend = "hatchling.build"
 requires = [
-  "hatch-vcs>=0.3",
-  "hatchling>=1.18",
+  "hatch-vcs>=0.4",
+  "hatchling>=1.25",
 ]
 
 [project]
@@ -17,8 +17,12 @@
   "virtual",
 ]
 license = "MIT"
-maintainers = [{ name = "Bernát Gábor", email = "gaborjber...@gmail.com" }]
-authors = [{ name = "Bernát Gábor", email = "gaborjber...@gmail.com" }]
+maintainers = [
+  { name = "Bernát Gábor", email = "gaborjber...@gmail.com" },
+]
+authors = [
+  { name = "Bernát Gábor", email = "gaborjber...@gmail.com" },
+]
 requires-python = ">=3.8"
 classifiers = [
   "Development Status :: 5 - Production/Stable",
@@ -34,6 +38,7 @@
   "Programming Language :: Python :: 3.10",
   "Programming Language :: Python :: 3.11",
   "Programming Language :: Python :: 3.12",
+  "Programming Language :: Python :: 3.13",
   "Topic :: Software Development :: Libraries",
   "Topic :: Software Development :: Testing",
   "Topic :: Utilities",
@@ -42,23 +47,22 @@
   "version",
 ]
 dependencies = [
-  "packaging>=23.1",
-  'tomli>=2.0.1; python_version < "3.11"',
+  "packaging>=24.1",
+  "tomli>=2.0.1; python_version<'3.11'",
 ]
 optional-dependencies.docs = [
-  "furo>=2023.8.19",
-  "sphinx<7.2",
-  "sphinx-autodoc-typehints>=1.24",
+  "furo>=2024.8.6",
+  "sphinx-autodoc-typehints>=2.4.1",
 ]
 optional-dependencies.testing = [
   "covdefaults>=2.3",
-  "pytest>=7.4",
-  "pytest-cov>=4.1",
-  "pytest-mock>=3.11.1",
-  "setuptools>=68.1.2",
-  "wheel>=0.41.2",
+  "pytest>=8.3.3",
+  "pytest-cov>=5",
+  "pytest-mock>=3.14",
+  "setuptools>=75.1",
 ]
-urls.Homepage = "http://pyproject_api.readthedocs.org";
+urls.Changelog = "https://github.com/tox-dev/pyproject-api/releases";
+urls.Homepage = "https://pyproject-api.readthedocs.io";
 urls.Source = "https://github.com/tox-dev/pyproject-api";
 urls.Tracker = "https://github.com/tox-dev/pyproject-api/issues";
 
@@ -66,32 +70,63 @@
 build.hooks.vcs.version-file = "src/pyproject_api/_version.py"
 version.source = "vcs"
 
-[tool.black]
-line-length = 120
-
 [tool.ruff]
-select = ["ALL"]
-line-length = 120
 target-version = "py38"
-isort = {known-first-party = ["pyproject_api"], required-imports = ["from 
__future__ import annotations"]}
-ignore = [
-  "INP001",  # no implicit namespaces here
-  "ANN101",  # Missing type annotation for `self` in method
-  "ANN102",  # Missing type annotation for `cls` in classmethod"
-  "ANN401",  # Dynamically typed expressions
-  "D203",  # `one-blank-line-before-class` (D203) and 
`no-blank-line-before-class` (D211) are incompatible
-  "D212",  # `multi-line-summary-first-line` (D212) and 
`multi-line-summary-second-line` (D213) are incompatible
-  "S104",  # Possible binding to all interface
-]
-[tool.ruff.per-file-ignores]
-"tests/**/*.py" = [
-  "S101",  # asserts allowed in tests...
-  "FBT",  # don"t care about booleans as positional arguments in tests
-  "INP001", # no implicit namespace
-  "D",  # don"t care about documentation in tests
-  "S603",  # `subprocess` call: check for execution of untrusted input
-  "PLR2004",  # Magic value used in comparison, consider replacing with a 
constant variable
-]
+line-length = 120
+format.preview = true
+format.docstring-code-line-length = 100
+format.docstring-code-format = true
+lint.select = [
+  "ALL",
+]
+lint.ignore = [
+  "ANN101", # Missing type annotation for `self` in method
+  "ANN102", # Missing type annotation for `cls` in classmethod
+  "ANN401", # Dynamically typed expressions
+  "COM812", # Conflict with formatter
+  "CPY",    # No copyright statements
+  "D203",   # `one-blank-line-before-class` (D203) and 
`no-blank-line-before-class` (D211) are incompatible
+  "D212",   # `multi-line-summary-first-line` (D212) and 
`multi-line-summary-second-line` (D213) are incompatible
+  "DOC",    # no restructuredtext support
+  "INP001", # no implicit namespaces here
+  "ISC001", # Conflict with formatter
+  "S104",   # Possible binding to all interface
+]
+lint.per-file-ignores."src/pyproject_api/_backend.py" = [
+  "ANN",
+  "I002",
+  "T201",
+  "UP",
+] # no type annotations
+lint.per-file-ignores."src/pyproject_api/_backend.pyi" = [
+  "E301",
+  "E302",
+] # https://github.com/astral-sh/ruff/issues/10077
+lint.per-file-ignores."tests/**/*.py" = [
+  "D",       # don't care about documentation in tests
+  "FBT",     # don't care about booleans as positional arguments in tests
+  "INP001",  # no implicit namespace
+  "PLC2701", # private imports
+  "PLR0913", # too many positional arguments
+  "PLR0917", # too many positional arguments
+  "PLR2004", # Magic value used in comparison, consider replacing with a 
constant variable
+  "S101",    # asserts allowed in tests
+  "S603",    # `subprocess` call: check for execution of untrusted input
+]
+lint.isort = { known-first-party = [
+  "pyproject_api",
+], required-imports = [
+  "from __future__ import annotations",
+] }
+lint.preview = true
+
+[tool.codespell]
+builtin = "clear,usage,en-GB_to_en-US"
+write-changes = true
+count = true
+
+[tool.pyproject-fmt]
+max_supported_python = "3.13"
 
 [tool.coverage]
 html.show_contexts = true
@@ -104,12 +139,19 @@
   "*/src",
   "*\\src",
 ]
-report.omit = []
+report.omit = [
+]
 run.parallel = true
-run.plugins = ["covdefaults"]
+run.plugins = [
+  "covdefaults",
+]
 
 [tool.mypy]
-python_version = "3.11"
+python_version = "3.12"
 show_error_codes = true
 strict = true
-overrides = [{ module = ["virtualenv.*"], ignore_missing_imports = true }]
+overrides = [
+  { module = [
+    "virtualenv.*",
+  ], ignore_missing_imports = true },
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/src/pyproject_api/__init__.py 
new/pyproject_api-1.8.0/src/pyproject_api/__init__.py
--- old/pyproject_api-1.6.1/src/pyproject_api/__init__.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/src/pyproject_api/__init__.py       2020-02-02 
01:00:00.000000000 +0100
@@ -1,4 +1,5 @@
 """PyProject API interface."""
+
 from __future__ import annotations
 
 from ._frontend import (
@@ -22,18 +23,18 @@
 __version__ = version
 
 __all__ = [
-    "__version__",
-    "Frontend",
     "BackendFailed",
     "CmdStatus",
+    "EditableResult",
+    "Frontend",
+    "MetadataForBuildEditableResult",
+    "MetadataForBuildWheelResult",
+    "OptionalHooks",
+    "RequiresBuildEditableResult",
     "RequiresBuildSdistResult",
     "RequiresBuildWheelResult",
-    "RequiresBuildEditableResult",
-    "MetadataForBuildWheelResult",
-    "MetadataForBuildEditableResult",
     "SdistResult",
-    "WheelResult",
-    "EditableResult",
     "SubprocessFrontend",
-    "OptionalHooks",
+    "WheelResult",
+    "__version__",
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/src/pyproject_api/_backend.py 
new/pyproject_api-1.8.0/src/pyproject_api/_backend.py
--- old/pyproject_api-1.6.1/src/pyproject_api/_backend.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/src/pyproject_api/_backend.py       2020-02-02 
01:00:00.000000000 +0100
@@ -1,19 +1,20 @@
-"""Handles communication on the backend side between frontend and backend
+"""
+Handles communication on the backend side between frontend and backend.
 
 Please keep this file Python 2.7 compatible.
 See https://tox.readthedocs.io/en/rewrite/development.html#code-style-guide
 """
-from __future__ import print_function
 
 import importlib
 import json
+import locale
 import os
 import sys
 import traceback
 
 
-class MissingCommand(TypeError):
-    """Missing command"""
+class MissingCommand(TypeError):  # noqa: N818
+    """Missing command."""
 
 
 class BackendProxy:
@@ -28,13 +29,14 @@
     def __call__(self, name, *args, **kwargs):
         on_object = self if name.startswith("_") else self.backend
         if not hasattr(on_object, name):
-            raise MissingCommand("{!r} has no attribute 
{!r}".format(on_object, name))
+            msg = f"{on_object!r} has no attribute {name!r}"
+            raise MissingCommand(msg)
         return getattr(on_object, name)(*args, **kwargs)
 
     def __str__(self):
-        return "{}(backend={})".format(self.__class__.__name__, self.backend)
+        return f"{self.__class__.__name__}(backend={self.backend})"
 
-    def _exit(self):
+    def _exit(self):  # noqa: PLR6301
         return 0
 
     def _optional_hooks(self):
@@ -56,16 +58,16 @@
     sys.stdout.flush()
 
 
-def run(argv):
+def run(argv):  # noqa: C901, PLR0912, PLR0915
     reuse_process = argv[0].lower() == "true"
 
     try:
-        backend_proxy = BackendProxy(argv[1], None if len(argv) == 2 else 
argv[2])
+        backend_proxy = BackendProxy(argv[1], None if len(argv) == 2 else 
argv[2])  # noqa: PLR2004
     except BaseException:
         print("failed to start backend", file=sys.stderr)
         raise
     else:
-        print("started backend {}".format(backend_proxy), file=sys.stdout)
+        print(f"started backend {backend_proxy}", file=sys.stdout)
     finally:
         flush()  # pragma: no branch
     while True:
@@ -74,13 +76,14 @@
             continue
         flush()  # flush any output generated before
         try:
-            if sys.version_info[0] == 2:  # pragma: no branch # python 2 does 
not support loading from bytearray
+            # python 2 does not support loading from bytearray
+            if sys.version_info[0] == 2:  # pragma: no branch # noqa: PLR2004
                 content = content.decode()  # pragma: no cover
             parsed_message = json.loads(content)
             result_file = parsed_message["result"]
-        except Exception:
+        except Exception:  # noqa: BLE001
             # ignore messages that are not valid JSON and contain a valid 
result path
-            print("Backend: incorrect request to backend: {}".format(content), 
file=sys.stderr)
+            print(f"Backend: incorrect request to backend: {content}", 
file=sys.stderr)
             flush()
         else:
             result = {}
@@ -91,7 +94,7 @@
                 result["return"] = outcome
                 if cmd == "_exit":
                     break
-            except BaseException as exception:
+            except BaseException as exception:  # noqa: BLE001
                 result["code"] = exception.code if isinstance(exception, 
SystemExit) else 1
                 result["exc_type"] = exception.__class__.__name__
                 result["exc_msg"] = str(exception)
@@ -99,13 +102,14 @@
                     traceback.print_exc()
             finally:
                 try:
-                    with open(result_file, "w") as file_handler:
+                    encoding = locale.getpreferredencoding(do_setlocale=False)
+                    with open(result_file, "w", encoding=encoding) as 
file_handler:  # noqa: PTH123
                         json.dump(result, file_handler)
-                except Exception:
+                except Exception:  # noqa: BLE001
                     traceback.print_exc()
                 finally:
                     # used as done marker by frontend
-                    print("Backend: Wrote response {} to {}".format(result, 
result_file))
+                    print(f"Backend: Wrote response {result} to {result_file}")
                     flush()  # pragma: no branch
         if reuse_process is False:  # pragma: no branch # no test for reuse 
process in root test env
             break
@@ -119,7 +123,8 @@
         char = os.read(fd, 1)
         if not char:
             if not content:
-                raise EOFError("EOF without reading anything")  # we didn't 
get a line at all, let the caller know
+                msg = "EOF without reading anything"
+                raise EOFError(msg)  # we didn't get a line at all, let the 
caller know
             break  # pragma: no cover
         if char == b"\n":
             break
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/src/pyproject_api/_backend.pyi 
new/pyproject_api-1.8.0/src/pyproject_api/_backend.pyi
--- old/pyproject_api-1.6.1/src/pyproject_api/_backend.pyi      2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/src/pyproject_api/_backend.pyi      2020-02-02 
01:00:00.000000000 +0100
@@ -6,6 +6,7 @@
     backend_module: str
     backend_object: str | None
     backend: Any
+
     def __init__(self, backend_module: str, backend_obj: str | None) -> None: 
...
     def __call__(self, name: str, *args: Any, **kwargs: Any) -> Any: ...
     def _exit(self) -> None: ...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/src/pyproject_api/_frontend.py 
new/pyproject_api-1.8.0/src/pyproject_api/_frontend.py
--- old/pyproject_api-1.6.1/src/pyproject_api/_frontend.py      2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/src/pyproject_api/_frontend.py      2020-02-02 
01:00:00.000000000 +0100
@@ -1,4 +1,5 @@
 """Build frontend for PEP-517."""
+
 from __future__ import annotations
 
 import json
@@ -174,7 +175,7 @@
     #: backend requirements when the ``pyproject.toml`` does not specify it
     LEGACY_REQUIRES: tuple[Requirement, ...] = (Requirement("setuptools >= 
40.8.0"), Requirement("wheel"))
 
-    def __init__(  # noqa: PLR0913
+    def __init__(  # noqa: PLR0913, PLR0917
         self,
         root: Path,
         backend_paths: tuple[Path, ...],
@@ -439,7 +440,7 @@
             self._unexpected_response("build_editable", basename, str, out, 
err)
         return EditableResult(wheel_directory / basename, out, err)
 
-    def _unexpected_response(  # noqa: PLR0913
+    def _unexpected_response(
         self,
         cmd: str,
         got: Any,
@@ -486,7 +487,7 @@
         return metadata_directory / basename, out, err
 
     @contextmanager
-    def _wheel_directory(self) -> Iterator[Path]:
+    def _wheel_directory(self) -> Iterator[Path]:  # noqa: PLR6301
         with TemporaryDirectory() as wheel_directory:
             yield Path(wheel_directory)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/src/pyproject_api/_version.py 
new/pyproject_api-1.8.0/src/pyproject_api/_version.py
--- old/pyproject_api-1.6.1/src/pyproject_api/_version.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/src/pyproject_api/_version.py       2020-02-02 
01:00:00.000000000 +0100
@@ -1,4 +1,16 @@
 # file generated by setuptools_scm
 # don't change, don't track in version control
-__version__ = version = '1.6.1'
-__version_tuple__ = version_tuple = (1, 6, 1)
+TYPE_CHECKING = False
+if TYPE_CHECKING:
+    from typing import Tuple, Union
+    VERSION_TUPLE = Tuple[Union[int, str], ...]
+else:
+    VERSION_TUPLE = object
+
+version: str
+__version__: str
+__version_tuple__: VERSION_TUPLE
+version_tuple: VERSION_TUPLE
+
+__version__ = version = '1.8.0'
+__version_tuple__ = version_tuple = (1, 8, 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyproject_api-1.6.1/src/pyproject_api/_via_fresh_subprocess.py 
new/pyproject_api-1.8.0/src/pyproject_api/_via_fresh_subprocess.py
--- old/pyproject_api-1.6.1/src/pyproject_api/_via_fresh_subprocess.py  
2020-02-02 01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/src/pyproject_api/_via_fresh_subprocess.py  
2020-02-02 01:00:00.000000000 +0100
@@ -3,7 +3,7 @@
 import os
 import sys
 from contextlib import contextmanager
-from subprocess import PIPE, Popen
+from subprocess import PIPE, Popen  # noqa: S404
 from threading import Thread
 from typing import IO, TYPE_CHECKING, Any, Iterator, Tuple, cast
 
@@ -36,7 +36,7 @@
 class SubprocessFrontend(Frontend):
     """A frontend that creates fresh subprocess at every call to communicate 
with the backend."""
 
-    def __init__(  # noqa: PLR0913
+    def __init__(
         self,
         root: Path,
         backend_paths: tuple[Path, ...],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/tests/demo_pkg_inline/build.py 
new/pyproject_api-1.8.0/tests/demo_pkg_inline/build.py
--- old/pyproject_api-1.6.1/tests/demo_pkg_inline/build.py      2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/tests/demo_pkg_inline/build.py      2020-02-02 
01:00:00.000000000 +0100
@@ -2,6 +2,7 @@
 Please keep this file Python 2.7 compatible.
 See https://tox.readthedocs.io/en/rewrite/development.html#code-style-guide
 """
+
 from __future__ import annotations
 
 import os
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyproject_api-1.6.1/tests/demo_pkg_inline/pyproject.toml 
new/pyproject_api-1.8.0/tests/demo_pkg_inline/pyproject.toml
--- old/pyproject_api-1.6.1/tests/demo_pkg_inline/pyproject.toml        
2020-02-02 01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/tests/demo_pkg_inline/pyproject.toml        
2020-02-02 01:00:00.000000000 +0100
@@ -1,4 +1,4 @@
-[build-system]  # noqa: D100
+[build-system] # noqa: D100
 build-backend = "build"
 requires = [
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/tests/test_frontend.py 
new/pyproject_api-1.8.0/tests/test_frontend.py
--- old/pyproject_api-1.6.1/tests/test_frontend.py      2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/tests/test_frontend.py      2020-02-02 
01:00:00.000000000 +0100
@@ -11,7 +11,7 @@
 from pyproject_api._via_fresh_subprocess import SubprocessFrontend
 
 
-@pytest.fixture()
+@pytest.fixture
 def local_builder(tmp_path: Path) -> Callable[[str], Path]:
     def _f(content: str) -> Path:
         toml = '[build-system]\nrequires=[]\nbuild-backend = 
"build_tester"\nbackend-path=["."]'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pyproject_api-1.6.1/tests/test_frontend_setuptools.py 
new/pyproject_api-1.8.0/tests/test_frontend_setuptools.py
--- old/pyproject_api-1.6.1/tests/test_frontend_setuptools.py   2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/tests/test_frontend_setuptools.py   2020-02-02 
01:00:00.000000000 +0100
@@ -6,7 +6,6 @@
 from typing import TYPE_CHECKING, Iterator, NamedTuple
 
 import pytest
-from packaging.requirements import Requirement
 
 from pyproject_api._frontend import BackendFailed
 from pyproject_api._via_fresh_subprocess import SubprocessFrontend
@@ -59,9 +58,7 @@
 
 def test_setuptools_get_requires_for_build_wheel(frontend_setuptools: 
SubprocessFrontend) -> None:
     result = frontend_setuptools.get_requires_for_build_wheel()
-    for left, right in zip(result.requires, (Requirement("wheel"),)):
-        assert isinstance(left, Requirement)
-        assert str(left) == str(right)
+    assert not result.requires
     assert isinstance(result.out, str)
     assert isinstance(result.err, str)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/tests/test_main.py 
new/pyproject_api-1.8.0/tests/test_main.py
--- old/pyproject_api-1.6.1/tests/test_main.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/pyproject_api-1.8.0/tests/test_main.py  2020-02-02 01:00:00.000000000 
+0100
@@ -59,7 +59,7 @@
         ),
     ],
 )
-def test_parse_args(  # noqa: PLR0913
+def test_parse_args(
     mocker: pytest_mock.MockerFixture,
     capsys: pytest.CaptureFixture[str],
     cli_args: list[str],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/tests/test_version.py 
new/pyproject_api-1.8.0/tests/test_version.py
--- old/pyproject_api-1.6.1/tests/test_version.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/tests/test_version.py       2020-02-02 
01:00:00.000000000 +0100
@@ -2,6 +2,6 @@
 
 
 def test_version() -> None:
-    from pyproject_api import __version__
+    from pyproject_api import __version__  # noqa: PLC0415
 
     assert __version__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyproject_api-1.6.1/tox.ini 
new/pyproject_api-1.8.0/tox.ini
--- old/pyproject_api-1.6.1/tox.ini     2020-02-02 01:00:00.000000000 +0100
+++ new/pyproject_api-1.8.0/tox.ini     2020-02-02 01:00:00.000000000 +0100
@@ -1,85 +1,88 @@
 [tox]
 requires =
     tox>=4.2
+    tox-uv>=1.11
 env_list =
     fix
-    py312
-    py311
-    py310
-    py39
-    py38
-    py37
-    type
+    3.13
+    3.12
+    3.11
+    3.10
+    3.9
+    3.8
     docs
+    type
     pkg_meta
 skip_missing_interpreters = true
 
 [testenv]
-description = run the tests with pytest under {envname}
+description = run the unit tests with pytest under {base_python}
 package = wheel
 wheel_build_env = .pkg
 extras =
     testing
 pass_env =
+    DIFF_AGAINST
     PYTEST_*
-    SSL_CERT_FILE
 set_env =
-    COVERAGE_FILE = {env:COVERAGE_FILE:{toxworkdir}{/}.coverage.{envname}}
-commands =
-    pytest {tty:--color=yes} {posargs: --no-cov-on-fail --cov-context=test \
-      --cov={envsitepackagesdir}{/}pyproject_api --cov={toxinidir}{/}tests 
--cov-config={toxinidir}{/}pyproject.toml \
-      --cov-report=term-missing:skip-covered 
--cov-report=html:{envtmpdir}{/}htmlcov \
-      --cov-report=xml:{toxworkdir}{/}coverage.{envname}.xml 
--junitxml={toxworkdir}{/}junit.{envname}.xml \
+    COVERAGE_FILE = {work_dir}/.coverage.{env_name}
+    COVERAGE_PROCESS_START = {tox_root}/pyproject.toml
+    _COVERAGE_SRC = {env_site_packages_dir}/sphinx_argparse_cli
+commands =
+    pytest {tty:--color=yes} {posargs: \
+      --junitxml {work_dir}{/}junit.{env_name}.xml --cov 
{env_site_packages_dir}{/}pyproject_api \
+      --cov {tox_root}{/}tests --cov-fail-under=100 \
+      --cov-config=pyproject.toml --no-cov-on-fail --cov-report 
term-missing:skip-covered --cov-context=test \
+      --cov-report html:{env_tmp_dir}{/}htmlcov --cov-report 
xml:{work_dir}{/}coverage.{env_name}.xml \
       tests}
-labels = test
 
 [testenv:fix]
-description = run formatter and linters
-skip_install = true
+description = run static analysis and style check using flake8
+package = skip
 deps =
-    pre-commit>=3.3.3
+    pre-commit-uv>=4.1.1
 pass_env =
-    {[testenv]passenv}
+    HOMEPATH
     PROGRAMDATA
 commands =
-    pre-commit run --all-files --show-diff-on-failure {tty:--color=always} 
{posargs}
+    pre-commit run --all-files --show-diff-on-failure
+    python -c 'print("hint: run {envdir}/bin/pre-commit install to add checks 
as pre-commit hook")'
+
+[testenv:docs]
+description = build documentation
+extras =
+    docs
+commands =
+    sphinx-build -d "{env_tmp_dir}{/}doc_tree" docs "{work_dir}{/}docs_out" 
--color -b html {posargs} -W
+    python -c 'print(r"documentation available under 
file://{work_dir}{/}docs_out{/}index.html")'
 
 [testenv:type]
 description = run type check on code base
 deps =
-    mypy==1.5.1
+    mypy==1.11.2
 set_env =
     {tty:MYPY_FORCE_COLOR = 1}
 commands =
-    mypy src/pyproject_api --strict
-    mypy tests --strict
-
-[testenv:docs]
-description = build documentation
-extras =
-    docs
-commands =
-    sphinx-build -d "{envtmpdir}{/}doctree" docs "{toxworkdir}{/}docs_out" 
--color -b html {posargs} -W
-    python -c 'print(r"documentation available under 
file://{toxworkdir}{/}docs_out{/}index.html")'
+    mypy src
+    mypy tests
 
 [testenv:pkg_meta]
 description = check that the long description is valid
 skip_install = true
 deps =
-    build[virtualenv]>=0.10
-    check-wheel-contents>=0.4
-    twine>=4.0.2
-commands =
-    python -m build -o {envtmpdir} -s -w .
-    twine check --strict {envtmpdir}{/}*
-    check-wheel-contents --no-config {envtmpdir}
+    check-wheel-contents>=0.6
+    twine>=5.1.1
+    uv>=0.4.10
+commands =
+    uv build --sdist --wheel --out-dir {env_tmp_dir} .
+    twine check {env_tmp_dir}{/}*
+    check-wheel-contents --no-config {env_tmp_dir}
 
 [testenv:dev]
-description = dev environment with all deps at {envdir}
+description = generate a DEV environment
 package = editable
 extras =
-    docs
     testing
 commands =
-    python -m pip list --format=columns
-    python -c "print(r'{envpython}')"
+    uv pip tree
+    python -c 'import sys; print(sys.executable)'

Reply via email to