pyproject-api 1.9.0__tar.gz → 1.10.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. pyproject_api-1.10.0/.github/release.yml +5 -0
  2. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/.github/workflows/check.yaml +8 -5
  3. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/.github/workflows/release.yaml +5 -5
  4. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/.pre-commit-config.yaml +7 -7
  5. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/PKG-INFO +11 -11
  6. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/pyproject.toml +12 -14
  7. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/src/pyproject_api/_frontend.py +3 -3
  8. pyproject_api-1.10.0/src/pyproject_api/_version.py +34 -0
  9. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/tests/test_frontend.py +7 -4
  10. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/tox.ini +8 -9
  11. pyproject_api-1.9.0/.github/release.yml +0 -5
  12. pyproject_api-1.9.0/src/pyproject_api/_version.py +0 -16
  13. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/.github/FUNDING.yml +0 -0
  14. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/.github/dependabot.yml +0 -0
  15. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/.gitignore +0 -0
  16. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/.readthedocs.yml +0 -0
  17. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/CODE_OF_CONDUCT.md +0 -0
  18. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/LICENSE +0 -0
  19. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/README.md +0 -0
  20. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/docs/api.rst +0 -0
  21. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/docs/conf.py +0 -0
  22. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/docs/index.rst +0 -0
  23. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/src/pyproject_api/__init__.py +0 -0
  24. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/src/pyproject_api/__main__.py +0 -0
  25. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/src/pyproject_api/_backend.py +0 -0
  26. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/src/pyproject_api/_backend.pyi +0 -0
  27. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/src/pyproject_api/_util.py +0 -0
  28. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/src/pyproject_api/_via_fresh_subprocess.py +0 -0
  29. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/src/pyproject_api/py.typed +0 -0
  30. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/tests/_build_sdist.py +0 -0
  31. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/tests/demo_pkg_inline/build.py +0 -0
  32. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/tests/demo_pkg_inline/pyproject.toml +0 -0
  33. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/tests/test_backend.py +0 -0
  34. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/tests/test_frontend_setuptools.py +0 -0
  35. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/tests/test_main.py +0 -0
  36. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/tests/test_util.py +0 -0
  37. {pyproject_api-1.9.0 → pyproject_api-1.10.0}/tests/test_version.py +0 -0
@@ -0,0 +1,5 @@
1
+ changelog:
2
+ exclude:
3
+ authors:
4
+ - dependabot[bot]
5
+ - pre-commit-ci[bot]
@@ -20,11 +20,11 @@ jobs:
20
20
  fail-fast: false
21
21
  matrix:
22
22
  env:
23
+ - "3.14"
23
24
  - "3.13"
24
25
  - "3.12"
25
26
  - "3.11"
26
27
  - "3.10"
27
- - "3.9"
28
28
  - type
29
29
  - dev
30
30
  - pkg_meta
@@ -37,11 +37,11 @@ jobs:
37
37
  - { os: macos-latest, env: "dev" }
38
38
  - { os: macos-latest, env: "pkg_meta" }
39
39
  steps:
40
- - uses: actions/checkout@v4
40
+ - uses: actions/checkout@v5
41
41
  with:
42
42
  fetch-depth: 0
43
43
  - name: Install the latest version of uv
44
- uses: astral-sh/setup-uv@v5
44
+ uses: astral-sh/setup-uv@v7
45
45
  with:
46
46
  enable-cache: true
47
47
  cache-dependency-glob: "pyproject.toml"
@@ -51,14 +51,17 @@ jobs:
51
51
  shell: bash
52
52
  run: echo "$USERPROFILE/.local/bin" >> $GITHUB_PATH
53
53
  - name: Install tox
54
- run: uv tool install --python-preference only-managed --python 3.13 tox --with tox-uv
54
+ run: uv tool install --python-preference only-managed --python 3.14 tox --with tox-uv
55
55
  - name: Install Python
56
- if: startsWith(matrix.env, '3.') && matrix.env != '3.13'
56
+ if: startsWith(matrix.env, '3.') && matrix.env != '3.14'
57
57
  run: uv python install --python-preference only-managed ${{ matrix.env }}
58
58
  - name: Setup test suite
59
59
  run: tox run -vv --notest --skip-missing-interpreters false -e ${{ matrix.env }}
60
+ env:
61
+ UV_PYTHON_PREFERENCE: only-managed
60
62
  - name: Run test suite
61
63
  run: tox run --skip-pkg-install -e ${{ matrix.env }}
62
64
  env:
63
65
  PYTEST_ADDOPTS: "-vv --durations=20"
64
66
  DIFF_AGAINST: HEAD
67
+ UV_PYTHON_PREFERENCE: only-managed
@@ -10,17 +10,17 @@ jobs:
10
10
  build:
11
11
  runs-on: ubuntu-latest
12
12
  steps:
13
- - uses: actions/checkout@v4
13
+ - uses: actions/checkout@v5
14
14
  with:
15
15
  fetch-depth: 0
16
16
  - name: Install the latest version of uv
17
- uses: astral-sh/setup-uv@v5
17
+ uses: astral-sh/setup-uv@v7
18
18
  with:
19
19
  enable-cache: true
20
20
  cache-dependency-glob: "pyproject.toml"
21
21
  github-token: ${{ secrets.GITHUB_TOKEN }}
22
22
  - name: Build package
23
- run: uv build --python 3.13 --python-preference only-managed --sdist --wheel . --out-dir dist
23
+ run: uv build --python 3.14 --python-preference only-managed --sdist --wheel . --out-dir dist
24
24
  - name: Store the distribution packages
25
25
  uses: actions/upload-artifact@v4
26
26
  with:
@@ -38,11 +38,11 @@ jobs:
38
38
  id-token: write
39
39
  steps:
40
40
  - name: Download all the dists
41
- uses: actions/download-artifact@v4
41
+ uses: actions/download-artifact@v5
42
42
  with:
43
43
  name: ${{ env.dists-artifact-name }}
44
44
  path: dist/
45
45
  - name: Publish to PyPI
46
- uses: pypa/gh-action-pypi-publish@v1.12.3
46
+ uses: pypa/gh-action-pypi-publish@v1.13.0
47
47
  with:
48
48
  attestations: true
@@ -1,30 +1,30 @@
1
1
  repos:
2
2
  - repo: https://github.com/pre-commit/pre-commit-hooks
3
- rev: v5.0.0
3
+ rev: v6.0.0
4
4
  hooks:
5
5
  - id: end-of-file-fixer
6
6
  - id: trailing-whitespace
7
7
  - repo: https://github.com/python-jsonschema/check-jsonschema
8
- rev: 0.31.0
8
+ rev: 0.34.0
9
9
  hooks:
10
10
  - id: check-github-workflows
11
11
  args: [ "--verbose" ]
12
12
  - repo: https://github.com/codespell-project/codespell
13
- rev: v2.3.0
13
+ rev: v2.4.1
14
14
  hooks:
15
15
  - id: codespell
16
- additional_dependencies: ["tomli>=2.2.1"]
16
+ additional_dependencies: ["tomli>=2.3"]
17
17
  - repo: https://github.com/tox-dev/tox-ini-fmt
18
- rev: "1.4.1"
18
+ rev: "1.6.0"
19
19
  hooks:
20
20
  - id: tox-ini-fmt
21
21
  args: ["-p", "fix"]
22
22
  - repo: https://github.com/tox-dev/pyproject-fmt
23
- rev: "v2.5.0"
23
+ rev: "v2.10.0"
24
24
  hooks:
25
25
  - id: pyproject-fmt
26
26
  - repo: https://github.com/astral-sh/ruff-pre-commit
27
- rev: "v0.9.2"
27
+ rev: "v0.14.0"
28
28
  hooks:
29
29
  - id: ruff-format
30
30
  - id: ruff
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyproject-api
3
- Version: 1.9.0
3
+ Version: 1.10.0
4
4
  Summary: API to interact with the python pyproject.toml based projects
5
5
  Project-URL: Changelog, https://github.com/tox-dev/pyproject-api/releases
6
6
  Project-URL: Homepage, https://pyproject-api.readthedocs.io
@@ -19,26 +19,26 @@ Classifier: Operating System :: MacOS :: MacOS X
19
19
  Classifier: Operating System :: Microsoft :: Windows
20
20
  Classifier: Operating System :: POSIX
21
21
  Classifier: Programming Language :: Python :: 3 :: Only
22
- Classifier: Programming Language :: Python :: 3.9
23
22
  Classifier: Programming Language :: Python :: 3.10
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
26
+ Classifier: Programming Language :: Python :: 3.14
27
27
  Classifier: Topic :: Software Development :: Libraries
28
28
  Classifier: Topic :: Software Development :: Testing
29
29
  Classifier: Topic :: Utilities
30
- Requires-Python: >=3.9
31
- Requires-Dist: packaging>=24.2
32
- Requires-Dist: tomli>=2.2.1; python_version < '3.11'
30
+ Requires-Python: >=3.10
31
+ Requires-Dist: packaging>=25
32
+ Requires-Dist: tomli>=2.3; python_version < '3.11'
33
33
  Provides-Extra: docs
34
- Requires-Dist: furo>=2024.8.6; extra == 'docs'
35
- Requires-Dist: sphinx-autodoc-typehints>=3; extra == 'docs'
34
+ Requires-Dist: furo>=2025.9.25; extra == 'docs'
35
+ Requires-Dist: sphinx-autodoc-typehints>=3.5.1; extra == 'docs'
36
36
  Provides-Extra: testing
37
37
  Requires-Dist: covdefaults>=2.3; extra == 'testing'
38
- Requires-Dist: pytest-cov>=6; extra == 'testing'
39
- Requires-Dist: pytest-mock>=3.14; extra == 'testing'
40
- Requires-Dist: pytest>=8.3.4; extra == 'testing'
41
- Requires-Dist: setuptools>=75.8; extra == 'testing'
38
+ Requires-Dist: pytest-cov>=7; extra == 'testing'
39
+ Requires-Dist: pytest-mock>=3.15.1; extra == 'testing'
40
+ Requires-Dist: pytest>=8.4.2; extra == 'testing'
41
+ Requires-Dist: setuptools>=80.9; extra == 'testing'
42
42
  Description-Content-Type: text/markdown
43
43
 
44
44
  # [`pyproject-api`](https://pyproject-api.readthedocs.io/en/latest/)
@@ -1,7 +1,7 @@
1
1
  [build-system]
2
2
  build-backend = "hatchling.build"
3
3
  requires = [
4
- "hatch-vcs>=0.4",
4
+ "hatch-vcs>=0.5",
5
5
  "hatchling>=1.27",
6
6
  ]
7
7
 
@@ -23,7 +23,7 @@ maintainers = [
23
23
  authors = [
24
24
  { name = "Bernát Gábor", email = "gaborjbernat@gmail.com" },
25
25
  ]
26
- requires-python = ">=3.9"
26
+ requires-python = ">=3.10"
27
27
  classifiers = [
28
28
  "Development Status :: 5 - Production/Stable",
29
29
  "Framework :: tox",
@@ -33,11 +33,11 @@ classifiers = [
33
33
  "Operating System :: Microsoft :: Windows",
34
34
  "Operating System :: POSIX",
35
35
  "Programming Language :: Python :: 3 :: Only",
36
- "Programming Language :: Python :: 3.9",
37
36
  "Programming Language :: Python :: 3.10",
38
37
  "Programming Language :: Python :: 3.11",
39
38
  "Programming Language :: Python :: 3.12",
40
39
  "Programming Language :: Python :: 3.13",
40
+ "Programming Language :: Python :: 3.14",
41
41
  "Topic :: Software Development :: Libraries",
42
42
  "Topic :: Software Development :: Testing",
43
43
  "Topic :: Utilities",
@@ -46,19 +46,19 @@ dynamic = [
46
46
  "version",
47
47
  ]
48
48
  dependencies = [
49
- "packaging>=24.2",
50
- "tomli>=2.2.1; python_version<'3.11'",
49
+ "packaging>=25",
50
+ "tomli>=2.3; python_version<'3.11'",
51
51
  ]
52
52
  optional-dependencies.docs = [
53
- "furo>=2024.8.6",
54
- "sphinx-autodoc-typehints>=3",
53
+ "furo>=2025.9.25",
54
+ "sphinx-autodoc-typehints>=3.5.1",
55
55
  ]
56
56
  optional-dependencies.testing = [
57
57
  "covdefaults>=2.3",
58
- "pytest>=8.3.4",
59
- "pytest-cov>=6",
60
- "pytest-mock>=3.14",
61
- "setuptools>=75.8",
58
+ "pytest>=8.4.2",
59
+ "pytest-cov>=7",
60
+ "pytest-mock>=3.15.1",
61
+ "setuptools>=80.9",
62
62
  ]
63
63
  urls.Changelog = "https://github.com/tox-dev/pyproject-api/releases"
64
64
  urls.Homepage = "https://pyproject-api.readthedocs.io"
@@ -121,9 +121,6 @@ builtin = "clear,usage,en-GB_to_en-US"
121
121
  write-changes = true
122
122
  count = true
123
123
 
124
- [tool.pyproject-fmt]
125
- max_supported_python = "3.13"
126
-
127
124
  [tool.coverage]
128
125
  html.show_contexts = true
129
126
  html.skip_covered = false
@@ -138,6 +135,7 @@ paths.source = [
138
135
  report.omit = [
139
136
  ]
140
137
  run.parallel = true
138
+ run.patch = [ "subprocess" ]
141
139
  run.plugins = [
142
140
  "covdefaults",
143
141
  ]
@@ -9,7 +9,7 @@ from contextlib import contextmanager
9
9
  from pathlib import Path
10
10
  from tempfile import NamedTemporaryFile, TemporaryDirectory
11
11
  from time import sleep
12
- from typing import TYPE_CHECKING, Any, Literal, NamedTuple, NoReturn, Optional, TypedDict, cast
12
+ from typing import TYPE_CHECKING, Any, Literal, NamedTuple, NoReturn, TypedDict, cast
13
13
  from zipfile import ZipFile
14
14
 
15
15
  from packaging.requirements import Requirement
@@ -25,7 +25,7 @@ else: # pragma: no cover (py311+)
25
25
  import tomli as tomllib
26
26
 
27
27
  _HERE = Path(__file__).parent
28
- ConfigSettings = Optional[dict[str, Any]]
28
+ ConfigSettings = dict[str, Any] | None
29
29
 
30
30
 
31
31
  class OptionalHooks(TypedDict, total=True):
@@ -176,7 +176,7 @@ class Frontend(ABC):
176
176
  #: backend key when the ``pyproject.toml`` does not specify it
177
177
  LEGACY_BUILD_BACKEND: str = "setuptools.build_meta:__legacy__"
178
178
  #: backend requirements when the ``pyproject.toml`` does not specify it
179
- LEGACY_REQUIRES: tuple[Requirement, ...] = (Requirement("setuptools >= 40.8.0"), Requirement("wheel"))
179
+ LEGACY_REQUIRES: tuple[Requirement, ...] = (Requirement("setuptools >= 40.8.0"),)
180
180
 
181
181
  def __init__( # noqa: PLR0913, PLR0917
182
182
  self,
@@ -0,0 +1,34 @@
1
+ # file generated by setuptools-scm
2
+ # don't change, don't track in version control
3
+
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
12
+
13
+ TYPE_CHECKING = False
14
+ if TYPE_CHECKING:
15
+ from typing import Tuple
16
+ from typing import Union
17
+
18
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
20
+ else:
21
+ VERSION_TUPLE = object
22
+ COMMIT_ID = object
23
+
24
+ version: str
25
+ __version__: str
26
+ __version_tuple__: VERSION_TUPLE
27
+ version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
30
+
31
+ __version__ = version = '1.10.0'
32
+ __version_tuple__ = version_tuple = (1, 10, 0)
33
+
34
+ __commit_id__ = commit_id = None
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
4
  from textwrap import dedent
5
- from typing import Callable, Literal
5
+ from typing import TYPE_CHECKING, Literal
6
6
 
7
7
  import pytest
8
8
  from packaging.requirements import Requirement
@@ -10,6 +10,9 @@ from packaging.requirements import Requirement
10
10
  from pyproject_api._frontend import BackendFailed
11
11
  from pyproject_api._via_fresh_subprocess import SubprocessFrontend
12
12
 
13
+ if TYPE_CHECKING:
14
+ from collections.abc import Callable
15
+
13
16
 
14
17
  @pytest.fixture
15
18
  def local_builder(tmp_path: Path) -> Callable[[str], Path]:
@@ -55,7 +58,7 @@ def test_empty_pyproject(tmp_path: Path) -> None:
55
58
  assert backend_paths == ()
56
59
  assert backend_module == "setuptools.build_meta"
57
60
  assert backend_obj == "__legacy__"
58
- for left, right in zip(requires, (Requirement("setuptools>=40.8.0"), Requirement("wheel"))):
61
+ for left, right in zip(requires, (Requirement("setuptools>=40.8.0"), Requirement("wheel")), strict=False):
59
62
  assert isinstance(left, Requirement)
60
63
  assert str(left) == str(right)
61
64
 
@@ -98,7 +101,7 @@ def test_backend_obj(tmp_path: Path) -> None:
98
101
  (build / "api.py").write_text(dedent(api))
99
102
  frontend = SubprocessFrontend(*SubprocessFrontend.create_args_from_folder(tmp_path)[:-1])
100
103
  result = frontend.get_requires_for_build_sdist()
101
- for left, right in zip(result.requires, (Requirement("a"),)):
104
+ for left, right in zip(result.requires, (Requirement("a"),), strict=False):
102
105
  assert isinstance(left, Requirement)
103
106
  assert str(left) == str(right)
104
107
 
@@ -225,7 +228,7 @@ def test_create_no_pyproject(tmp_path: Path) -> None:
225
228
  assert result[2] == "setuptools.build_meta"
226
229
  assert result[3] == "__legacy__"
227
230
  assert all(isinstance(i, Requirement) for i in result[4])
228
- assert [str(i) for i in result[4]] == ["setuptools>=40.8.0", "wheel"]
231
+ assert [str(i) for i in result[4]] == ["setuptools>=40.8.0"]
229
232
  assert result[5] is True
230
233
 
231
234
 
@@ -1,14 +1,14 @@
1
1
  [tox]
2
2
  requires =
3
- tox>=4.23.2
4
- tox-uv>=1.17
3
+ tox>=4.31
4
+ tox-uv>=1.28.1
5
5
  env_list =
6
6
  fix
7
+ 3.14
7
8
  3.13
8
9
  3.12
9
10
  3.11
10
11
  3.10
11
- 3.9
12
12
  docs
13
13
  type
14
14
  pkg_meta
@@ -26,7 +26,6 @@ pass_env =
26
26
  set_env =
27
27
  COVERAGE_FILE = {work_dir}/.coverage.{env_name}
28
28
  COVERAGE_PROCESS_START = {tox_root}/pyproject.toml
29
- _COVERAGE_SRC = {env_site_packages_dir}/sphinx_argparse_cli
30
29
  commands =
31
30
  pytest {tty:--color=yes} {posargs: \
32
31
  --junitxml {work_dir}{/}junit.{env_name}.xml --cov {env_site_packages_dir}{/}pyproject_api \
@@ -39,7 +38,7 @@ commands =
39
38
  description = run static analysis and style check using flake8
40
39
  package = skip
41
40
  deps =
42
- pre-commit-uv>=4.1.4
41
+ pre-commit-uv>=4.1.5
43
42
  pass_env =
44
43
  HOMEPATH
45
44
  PROGRAMDATA
@@ -58,7 +57,7 @@ commands =
58
57
  [testenv:type]
59
58
  description = run type check on code base
60
59
  deps =
61
- mypy==1.14.1
60
+ mypy==1.18.2
62
61
  set_env =
63
62
  {tty:MYPY_FORCE_COLOR = 1}
64
63
  commands =
@@ -69,9 +68,9 @@ commands =
69
68
  description = check that the long description is valid
70
69
  skip_install = true
71
70
  deps =
72
- check-wheel-contents>=0.6.1
73
- twine>=6.0.1
74
- uv>=0.5.18
71
+ check-wheel-contents>=0.6.3
72
+ twine>=6.2
73
+ uv>=0.9
75
74
  commands =
76
75
  uv build --sdist --wheel --out-dir {env_tmp_dir} .
77
76
  twine check {env_tmp_dir}{/}*
@@ -1,5 +0,0 @@
1
- changelog:
2
- exclude:
3
- authors:
4
- - dependabot
5
- - pre-commit-ci
@@ -1,16 +0,0 @@
1
- # file generated by setuptools_scm
2
- # don't change, don't track in version control
3
- TYPE_CHECKING = False
4
- if TYPE_CHECKING:
5
- from typing import Tuple, Union
6
- VERSION_TUPLE = Tuple[Union[int, str], ...]
7
- else:
8
- VERSION_TUPLE = object
9
-
10
- version: str
11
- __version__: str
12
- __version_tuple__: VERSION_TUPLE
13
- version_tuple: VERSION_TUPLE
14
-
15
- __version__ = version = '1.9.0'
16
- __version_tuple__ = version_tuple = (1, 9, 0)
File without changes
File without changes
File without changes