pyproject-api 1.12.3__tar.gz → 1.12.5__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.
- pyproject_api-1.12.5/.github/workflows/check.yaml +67 -0
- pyproject_api-1.12.5/.github/workflows/codeql.yaml +22 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/.github/workflows/news.yaml +3 -6
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/.github/workflows/prepare-release.yaml +9 -2
- pyproject_api-1.12.5/.github/workflows/release.yaml +56 -0
- pyproject_api-1.12.5/.github/workflows/scorecard.yaml +26 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/.github/workflows/upgrade-release-tools.yaml +1 -1
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/.pre-commit-config.yaml +3 -3
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/CONTRIBUTING.md +4 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/PKG-INFO +7 -6
- pyproject_api-1.12.5/README.md +11 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/docs/api.rst +8 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/docs/changelog.rst +21 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/pylock.toml +204 -205
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/pyproject.toml +6 -5
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/src/pyproject_api/_frontend.py +2 -5
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/src/pyproject_api/_util.py +5 -2
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/src/pyproject_api/_version.py +2 -2
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/tests/test_frontend.py +27 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/tests/test_frontend_setuptools.py +1 -2
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/tests/test_util.py +41 -0
- pyproject_api-1.12.3/.github/workflows/check.yaml +0 -83
- pyproject_api-1.12.3/.github/workflows/codeql.yaml +0 -41
- pyproject_api-1.12.3/.github/workflows/release.yaml +0 -118
- pyproject_api-1.12.3/README.md +0 -10
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/.github/FUNDING.yaml +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/.github/SECURITY.md +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/.github/THREAT_MODEL.md +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/.github/dependabot.yaml +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/.github/release.yaml +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/.gitignore +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/.readthedocs.yml +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/CODE_OF_CONDUCT.md +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/LICENSE +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/docs/changelog.d/.gitkeep +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/docs/changelog.d/template.jinja2 +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/docs/conf.py +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/docs/contributing.rst +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/docs/index.rst +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/src/pyproject_api/__init__.py +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/src/pyproject_api/__main__.py +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/src/pyproject_api/_backend.py +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/src/pyproject_api/_backend.pyi +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/src/pyproject_api/_via_fresh_subprocess.py +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/src/pyproject_api/py.typed +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/tests/_build_sdist.py +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/tests/demo_pkg_inline/build.py +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/tests/demo_pkg_inline/pyproject.toml +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/tests/test_backend.py +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/tests/test_main.py +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/tests/test_version.py +0 -0
- {pyproject_api-1.12.3 → pyproject_api-1.12.5}/tox.toml +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
name: 🧪 check
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
tags-ignore: ["**"]
|
|
7
|
+
pull_request:
|
|
8
|
+
types: [opened, synchronize, reopened]
|
|
9
|
+
schedule:
|
|
10
|
+
- cron: "43 7 * * *"
|
|
11
|
+
concurrency:
|
|
12
|
+
group: check-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
jobs:
|
|
17
|
+
test:
|
|
18
|
+
name: 🧪 Test
|
|
19
|
+
uses: tox-dev/github-workflows/.github/workflows/check.yaml@13381289334b15375958be7f7438f3c3d860e575 # 6.5.5
|
|
20
|
+
permissions:
|
|
21
|
+
contents: read
|
|
22
|
+
with:
|
|
23
|
+
include: |
|
|
24
|
+
[
|
|
25
|
+
{"env": "3.15"},
|
|
26
|
+
{"env": "3.15t", "python": "3.15t"},
|
|
27
|
+
{"env": "3.14", "python": "3.14"},
|
|
28
|
+
{"env": "3.13", "python": "3.13"},
|
|
29
|
+
{"env": "3.12", "python": "3.12"},
|
|
30
|
+
{"env": "3.11", "python": "3.11"},
|
|
31
|
+
{"env": "type"},
|
|
32
|
+
{"env": "dev"},
|
|
33
|
+
{"env": "pkg_meta"},
|
|
34
|
+
{"env": "3.15", "os": "windows-2025-vs2026"},
|
|
35
|
+
{"env": "3.15t", "python": "3.15t", "os": "windows-2025-vs2026"},
|
|
36
|
+
{"env": "3.14", "python": "3.14", "os": "windows-2025-vs2026"},
|
|
37
|
+
{"env": "3.13", "python": "3.13", "os": "windows-2025-vs2026"},
|
|
38
|
+
{"env": "3.12", "python": "3.12", "os": "windows-2025-vs2026"},
|
|
39
|
+
{"env": "3.11", "python": "3.11", "os": "windows-2025-vs2026"},
|
|
40
|
+
{"env": "type", "os": "windows-2025-vs2026"},
|
|
41
|
+
{"env": "dev", "os": "windows-2025-vs2026"},
|
|
42
|
+
{"env": "pkg_meta", "os": "windows-2025-vs2026"},
|
|
43
|
+
{"env": "3.15", "os": "macos-26"}
|
|
44
|
+
]
|
|
45
|
+
release:
|
|
46
|
+
name: 🏷️ Release dry run
|
|
47
|
+
uses: $/.github/workflows/prepare-release.yaml
|
|
48
|
+
permissions:
|
|
49
|
+
contents: read
|
|
50
|
+
pull-requests: read
|
|
51
|
+
with:
|
|
52
|
+
dry-run: true
|
|
53
|
+
hooks:
|
|
54
|
+
name: 🧹 Hooks under the cooldown
|
|
55
|
+
uses: tox-dev/github-workflows/.github/workflows/cooled-hooks.yaml@0c4cffd63033d38196319524d101caae1eef925b # 6.7.2
|
|
56
|
+
permissions:
|
|
57
|
+
contents: read
|
|
58
|
+
gate:
|
|
59
|
+
name: 🚦 ${{ github.event_name == 'pull_request' && 'Required checks pass' || 'Non-PR checks pass' }}
|
|
60
|
+
if: ${{ !cancelled() }} # codespell:ignore cancelled
|
|
61
|
+
needs: [test, release, hooks]
|
|
62
|
+
runs-on: ubuntu-26.04
|
|
63
|
+
steps:
|
|
64
|
+
- name: 🚦 Require all needed jobs to pass
|
|
65
|
+
uses: tox-dev/github-workflows/required-checks@13381289334b15375958be7f7438f3c3d860e575 # 6.5.5
|
|
66
|
+
with:
|
|
67
|
+
needs: ${{ toJSON(needs) }}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: 🛡️ CodeQL
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
pull_request:
|
|
7
|
+
schedule:
|
|
8
|
+
- cron: "0 9 * * 2"
|
|
9
|
+
concurrency:
|
|
10
|
+
group: codeql-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
permissions: {}
|
|
13
|
+
jobs:
|
|
14
|
+
analyze:
|
|
15
|
+
name: 🛡️ Analyze
|
|
16
|
+
uses: tox-dev/github-workflows/.github/workflows/codeql.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
security-events: write
|
|
20
|
+
with:
|
|
21
|
+
languages: '["actions","python"]'
|
|
22
|
+
paths-ignore: '["tests"]'
|
|
@@ -2,9 +2,6 @@ name: 📝 Changelog
|
|
|
2
2
|
on:
|
|
3
3
|
pull_request:
|
|
4
4
|
types: [opened, reopened, synchronize, labeled, unlabeled]
|
|
5
|
-
concurrency:
|
|
6
|
-
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
|
|
7
|
-
cancel-in-progress: true
|
|
8
5
|
permissions:
|
|
9
6
|
contents: read
|
|
10
7
|
pull-requests: read
|
|
@@ -19,15 +16,15 @@ jobs:
|
|
|
19
16
|
fetch-depth: 0
|
|
20
17
|
persist-credentials: false
|
|
21
18
|
- name: 🐍 Install uv
|
|
22
|
-
uses: astral-sh/setup-uv@
|
|
19
|
+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
23
20
|
with:
|
|
24
21
|
version: latest-known
|
|
25
22
|
python-version: "3.15"
|
|
26
23
|
enable-cache: false
|
|
27
24
|
- name: 📦 Install locked release tools
|
|
28
|
-
uses: tox-dev/github-workflows/install-locked-tools@
|
|
25
|
+
uses: tox-dev/github-workflows/install-locked-tools@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0
|
|
29
26
|
with:
|
|
30
27
|
groups: release-news
|
|
31
28
|
venv: ${{ runner.temp }}/release-tools
|
|
32
29
|
- name: 🔍 Validate news fragments
|
|
33
|
-
uses: tox-dev/github-workflows/validate-news@
|
|
30
|
+
uses: tox-dev/github-workflows/validate-news@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0
|
|
@@ -12,15 +12,22 @@ on:
|
|
|
12
12
|
- minor
|
|
13
13
|
- patch
|
|
14
14
|
default: auto
|
|
15
|
+
workflow_call:
|
|
16
|
+
inputs:
|
|
17
|
+
dry-run:
|
|
18
|
+
description: Assemble the release without pushing, for the pull request gate
|
|
19
|
+
type: boolean
|
|
20
|
+
required: true
|
|
15
21
|
permissions: {}
|
|
16
22
|
jobs:
|
|
17
23
|
prepare:
|
|
18
24
|
name: 🏷️ Prepare Towncrier release
|
|
19
|
-
uses: tox-dev/github-workflows/.github/workflows/prepare-towncrier-release.yaml@
|
|
25
|
+
uses: tox-dev/github-workflows/.github/workflows/prepare-towncrier-release.yaml@0c4cffd63033d38196319524d101caae1eef925b # 6.7.2
|
|
20
26
|
permissions:
|
|
21
27
|
contents: read
|
|
22
28
|
pull-requests: read
|
|
23
29
|
secrets:
|
|
24
30
|
RELEASE_APP_PRIVATE_KEY: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
|
|
25
31
|
with:
|
|
26
|
-
bump: ${{ inputs.bump }}
|
|
32
|
+
bump: ${{ inputs.bump || 'auto' }}
|
|
33
|
+
dry-run: ${{ inputs.dry-run == true }}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: 🚀 Release to PyPI
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
tags: ["*"]
|
|
5
|
+
permissions:
|
|
6
|
+
contents: read
|
|
7
|
+
concurrency:
|
|
8
|
+
group: release-${{ github.ref }}
|
|
9
|
+
cancel-in-progress: false
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
name: 🏗️ Build
|
|
13
|
+
uses: tox-dev/github-workflows/.github/workflows/validate-python-release.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
github-notes:
|
|
17
|
+
name: 📝 Render GitHub Release notes
|
|
18
|
+
uses: tox-dev/github-workflows/.github/workflows/release-notes.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0
|
|
19
|
+
permissions:
|
|
20
|
+
contents: read
|
|
21
|
+
with:
|
|
22
|
+
tag: ${{ github.ref_name }}
|
|
23
|
+
changelog: docs/changelog.rst
|
|
24
|
+
artifact-url: https://pypi.org/project/pyproject-api/${{ github.ref_name }}/
|
|
25
|
+
release:
|
|
26
|
+
name: 🚀 Publish to PyPI
|
|
27
|
+
needs: [build, github-notes]
|
|
28
|
+
runs-on: ubuntu-26.04
|
|
29
|
+
environment:
|
|
30
|
+
name: release
|
|
31
|
+
url: https://pypi.org/project/pyproject-api/${{ github.ref_name }}
|
|
32
|
+
permissions:
|
|
33
|
+
id-token: write
|
|
34
|
+
steps:
|
|
35
|
+
- name: 📩 Download distributions
|
|
36
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
37
|
+
with:
|
|
38
|
+
artifact-ids: ${{ needs.build.outputs.distributions-artifact-id }}
|
|
39
|
+
path: dist/
|
|
40
|
+
- name: 🚀 Publish to PyPI
|
|
41
|
+
uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
|
|
42
|
+
with:
|
|
43
|
+
packages-dir: dist
|
|
44
|
+
attestations: true
|
|
45
|
+
github-release:
|
|
46
|
+
name: 🚀 Publish GitHub Release
|
|
47
|
+
needs: [build, release, github-notes]
|
|
48
|
+
uses: tox-dev/github-workflows/.github/workflows/github-release.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0
|
|
49
|
+
permissions:
|
|
50
|
+
contents: write
|
|
51
|
+
with:
|
|
52
|
+
project: pyproject-api
|
|
53
|
+
version: ${{ github.ref_name }}
|
|
54
|
+
tag: ${{ github.ref_name }}
|
|
55
|
+
artifact-pattern: python-package-distributions
|
|
56
|
+
notes-artifact-id: ${{ needs.github-notes.outputs.artifact-id }}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
name: 🛡️ scorecard
|
|
2
|
+
on:
|
|
3
|
+
branch_protection_rule:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: "30 7 * * 2"
|
|
6
|
+
push:
|
|
7
|
+
branches: ["main"]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
permissions: {}
|
|
13
|
+
jobs:
|
|
14
|
+
analysis:
|
|
15
|
+
name: 🛡️ Scorecard analysis
|
|
16
|
+
if: github.repository == 'tox-dev/pyproject-api'
|
|
17
|
+
permissions:
|
|
18
|
+
actions: read # read workflow runs for the Packaging check
|
|
19
|
+
checks: read # read check runs for the CI-Tests and SAST checks
|
|
20
|
+
contents: read # check out and scan the repository
|
|
21
|
+
id-token: write # authenticate the results published to the scorecard API
|
|
22
|
+
issues: read # read issue activity for the Maintained check
|
|
23
|
+
pull-requests: read # read reviews for the Code-Review check
|
|
24
|
+
security-events: write # upload the SARIF results to code scanning
|
|
25
|
+
statuses: read # read commit statuses for the CI-Tests check
|
|
26
|
+
uses: tox-dev/github-workflows/.github/workflows/scorecard.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0
|
|
@@ -10,7 +10,7 @@ concurrency:
|
|
|
10
10
|
jobs:
|
|
11
11
|
upgrade:
|
|
12
12
|
name: 🔀 Upgrade release tools
|
|
13
|
-
uses: tox-dev/github-workflows/.github/workflows/upgrade-release-tools.yaml@
|
|
13
|
+
uses: tox-dev/github-workflows/.github/workflows/upgrade-release-tools.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0
|
|
14
14
|
permissions:
|
|
15
15
|
contents: read
|
|
16
16
|
secrets:
|
|
@@ -9,7 +9,7 @@ repos:
|
|
|
9
9
|
- id: end-of-file-fixer
|
|
10
10
|
- id: trailing-whitespace
|
|
11
11
|
- repo: https://github.com/python-jsonschema/check-jsonschema
|
|
12
|
-
rev:
|
|
12
|
+
rev: a76b92851fc9eede9f9bc4073eb55202f34eb0df # frozen: 0.39.0
|
|
13
13
|
hooks:
|
|
14
14
|
- id: check-github-workflows
|
|
15
15
|
args: ["--verbose"]
|
|
@@ -30,7 +30,7 @@ repos:
|
|
|
30
30
|
hooks:
|
|
31
31
|
- id: pyproject-fmt
|
|
32
32
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
33
|
-
rev: "
|
|
33
|
+
rev: "25bcf95026b96e2dd3c0aec3090c3d6ef6ca2e6c" # frozen: v0.17.3
|
|
34
34
|
hooks:
|
|
35
35
|
- id: ruff-format
|
|
36
36
|
- id: ruff
|
|
@@ -44,7 +44,7 @@ repos:
|
|
|
44
44
|
^docs/changelog[.]rst$ # Only the generated release history.
|
|
45
45
|
args: ["-l", "120", "--preserve-adornments"]
|
|
46
46
|
additional_dependencies:
|
|
47
|
-
- "sphinx==9.
|
|
47
|
+
- "sphinx==9.2.0"
|
|
48
48
|
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
|
49
49
|
rev: c92afdf2c6ca336aaa8f39e2bd8d48f62dbd8e1f # frozen: v1.31.1
|
|
50
50
|
hooks:
|
|
@@ -2,3 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
See the [contributing guide](https://pyproject-api.readthedocs.io/en/latest/contributing.html) for release note rules
|
|
4
4
|
and local checks.
|
|
5
|
+
|
|
6
|
+
## Tests
|
|
7
|
+
|
|
8
|
+
Add a test for every new feature and bug fix. A change without a test needs a reason in the pull request description.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: pyproject-api
|
|
3
|
-
Version: 1.12.
|
|
3
|
+
Version: 1.12.5
|
|
4
4
|
Import-Name: pyproject_api
|
|
5
5
|
Summary: API to interact with the python pyproject.toml based projects
|
|
6
6
|
Project-URL: Changelog, https://github.com/tox-dev/pyproject-api/blob/main/docs/changelog.rst
|
|
@@ -29,13 +29,14 @@ Requires-Python: >=3.11
|
|
|
29
29
|
Requires-Dist: packaging>=26.3
|
|
30
30
|
Description-Content-Type: text/markdown
|
|
31
31
|
|
|
32
|
-
# [`pyproject-api`][
|
|
32
|
+
# [`pyproject-api`][rtd]
|
|
33
33
|
|
|
34
34
|
[](https://pypi.org/project/pyproject-api/)
|
|
35
|
-
[](https://pypi.org/project/pyproject-api/)
|
|
35
|
+
[](https://pypi.org/project/pyproject-api/)
|
|
37
36
|
[](https://pepy.tech/project/pyproject-api)
|
|
38
37
|
[](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yaml)
|
|
39
|
-
[][
|
|
38
|
+
[][rtd]
|
|
39
|
+
[](https://scorecard.dev/viewer/?uri=github.com/tox-dev/pyproject-api)
|
|
40
|
+
[](https://www.bestpractices.dev/projects/16251)
|
|
40
41
|
|
|
41
|
-
[
|
|
42
|
+
[rtd]: https://pyproject-api.rtfd.io
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# [`pyproject-api`][rtd]
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/pyproject-api/)
|
|
4
|
+
[](https://pypi.org/project/pyproject-api/)
|
|
5
|
+
[](https://pepy.tech/project/pyproject-api)
|
|
6
|
+
[](https://github.com/tox-dev/pyproject-api/actions/workflows/check.yaml)
|
|
7
|
+
[][rtd]
|
|
8
|
+
[](https://scorecard.dev/viewer/?uri=github.com/tox-dev/pyproject-api)
|
|
9
|
+
[](https://www.bestpractices.dev/projects/16251)
|
|
10
|
+
|
|
11
|
+
[rtd]: https://pyproject-api.rtfd.io
|
|
@@ -16,6 +16,14 @@ backend runs from the project directory. Result paths retain the spelling of the
|
|
|
16
16
|
directory argument. Configuration settings and generic command arguments are
|
|
17
17
|
passed through unchanged.
|
|
18
18
|
|
|
19
|
+
Metadata preparation replaces a symlink used as the output directory with a real directory, leaving the link target
|
|
20
|
+
untouched. Dangling links are replaced too. Paths resolving to the project root or one of its ancestors are still
|
|
21
|
+
rejected before cleanup.
|
|
22
|
+
|
|
23
|
+
Metadata preparation clears the output directory before calling the metadata hook. If cleanup fails, the filesystem
|
|
24
|
+
error propagates and the hook is not called. When extracting metadata from a built wheel, cleanup errors stop extraction
|
|
25
|
+
after the wheel has been built.
|
|
26
|
+
|
|
19
27
|
.. autoclass:: OptionalHooks
|
|
20
28
|
|
|
21
29
|
Exceptions
|
|
@@ -5,6 +5,27 @@ Release History
|
|
|
5
5
|
|
|
6
6
|
.. towncrier release notes start
|
|
7
7
|
|
|
8
|
+
.. _release-1-12-5:
|
|
9
|
+
|
|
10
|
+
v1.12.5 (2026-11-07)
|
|
11
|
+
--------------------
|
|
12
|
+
|
|
13
|
+
.. _release-1-12-5-fixed:
|
|
14
|
+
|
|
15
|
+
Fixed
|
|
16
|
+
^^^^^
|
|
17
|
+
|
|
18
|
+
- Propagate filesystem errors when clearing nested metadata directories (:pr:`357`) by :user:`Quinnod345` and
|
|
19
|
+
:user:`gaborbernat`.
|
|
20
|
+
- Replace a symlink passed to ``ensure_empty_dir`` instead of following it, so a dangling link no longer raises
|
|
21
|
+
``FileExistsError`` and a link to a directory no longer has its target emptied (:pr:`354`) by :user:`abhishekcpp007`
|
|
22
|
+
and :user:`gaborbernat`.
|
|
23
|
+
|
|
24
|
+
.. _release-1-12-4:
|
|
25
|
+
|
|
26
|
+
v1.12.4 (2026-11-04)
|
|
27
|
+
--------------------
|
|
28
|
+
|
|
8
29
|
.. _release-1-12-3:
|
|
9
30
|
|
|
10
31
|
v1.12.3 (2026-11-02)
|