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 <[email protected]>
+
+- 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/[email protected]
+ 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/[email protected]
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 <[email protected]>
@@ -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 @@
[](https://pypi.org/project/pyproject-api/)
[](https://pepy.tech/project/pyproject-api)
-[](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yml)
-[](https://github.com/psf/black)
+[](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yaml)
[](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 @@
[](https://pypi.org/project/pyproject-api/)
[](https://pepy.tech/project/pyproject-api)
-[](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yml)
-[](https://github.com/psf/black)
+[](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yaml)
[](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 = "[email protected]" }]
-authors = [{ name = "Bernát Gábor", email = "[email protected]" }]
+maintainers = [
+ { name = "Bernát Gábor", email = "[email protected]" },
+]
+authors = [
+ { name = "Bernát Gábor", email = "[email protected]" },
+]
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
[email protected]()
[email protected]
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)'