devpi-process 1.2.0__tar.gz → 1.3.1__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.
- devpi_process-1.3.1/.github/dependabot.yaml +17 -0
- devpi_process-1.3.1/.github/workflows/check.yaml +83 -0
- devpi_process-1.3.1/.github/workflows/prepare-release.yaml +106 -0
- devpi_process-1.3.1/.github/workflows/release.yaml +87 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/.pre-commit-config.yaml +7 -6
- devpi_process-1.3.1/CHANGELOG.md +56 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/PKG-INFO +8 -7
- {devpi_process-1.2.0 → devpi_process-1.3.1}/README.md +3 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/pyproject.toml +37 -28
- {devpi_process-1.2.0 → devpi_process-1.3.1}/src/devpi_process/__init__.py +1 -5
- {devpi_process-1.2.0 → devpi_process-1.3.1}/src/devpi_process/_version.py +2 -2
- devpi_process-1.3.1/src/devpi_process/py.typed +0 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/tox.toml +6 -2
- devpi_process-1.2.0/.github/dependabot.yaml +0 -8
- devpi_process-1.2.0/.github/workflows/check.yaml +0 -53
- devpi_process-1.2.0/.github/workflows/release.yaml +0 -48
- devpi_process-1.2.0/CHANGELOG.md +0 -14
- {devpi_process-1.2.0 → devpi_process-1.3.1}/.github/FUNDING.yaml +0 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/.github/SECURITY.md +0 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/.github/release.yaml +0 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/.gitignore +0 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/.markdownlint.yaml +0 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/CODE_OF_CONDUCT.md +0 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/LICENSE.txt +0 -0
- /devpi_process-1.2.0/src/devpi_process/py.typed → /devpi_process-1.3.1/changelog.d/.gitkeep +0 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/tests/demo_pkg_inline/build.py +0 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/tests/demo_pkg_inline/pyproject.toml +0 -0
- {devpi_process-1.2.0 → devpi_process-1.3.1}/tests/test_devpi_process.py +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: "github-actions"
|
|
4
|
+
directory: "/"
|
|
5
|
+
labels:
|
|
6
|
+
- dependencies
|
|
7
|
+
- github_actions
|
|
8
|
+
- skip news
|
|
9
|
+
schedule:
|
|
10
|
+
interval: "weekly"
|
|
11
|
+
day: "tuesday"
|
|
12
|
+
groups:
|
|
13
|
+
github-actions:
|
|
14
|
+
patterns:
|
|
15
|
+
- "*"
|
|
16
|
+
cooldown:
|
|
17
|
+
default-days: 7
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
name: check
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
tags-ignore: ["**"]
|
|
7
|
+
pull_request:
|
|
8
|
+
types: [opened, synchronize, reopened, labeled, unlabeled]
|
|
9
|
+
schedule:
|
|
10
|
+
- cron: "0 8 * * *"
|
|
11
|
+
concurrency:
|
|
12
|
+
group: check-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
jobs:
|
|
17
|
+
test:
|
|
18
|
+
runs-on: ubuntu-26.04
|
|
19
|
+
strategy:
|
|
20
|
+
fail-fast: false
|
|
21
|
+
matrix:
|
|
22
|
+
env:
|
|
23
|
+
- "3.15"
|
|
24
|
+
- "3.15t"
|
|
25
|
+
- "3.14"
|
|
26
|
+
- "3.13"
|
|
27
|
+
- "3.12"
|
|
28
|
+
- "3.11"
|
|
29
|
+
- type
|
|
30
|
+
- dev
|
|
31
|
+
- pkg_meta
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
34
|
+
with:
|
|
35
|
+
fetch-depth: 0
|
|
36
|
+
persist-credentials: false
|
|
37
|
+
- name: Install the latest version of uv
|
|
38
|
+
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
39
|
+
with:
|
|
40
|
+
python-version: "3.15"
|
|
41
|
+
enable-cache: false
|
|
42
|
+
cache-dependency-glob: "pyproject.toml"
|
|
43
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
44
|
+
- name: Install tox
|
|
45
|
+
run: uv tool install --python-preference only-managed --python 3.15 tox --with tox-uv
|
|
46
|
+
- name: Install Python
|
|
47
|
+
if: startsWith(matrix.env, '3.') && matrix.env != '3.15'
|
|
48
|
+
run: uv python install --python-preference only-managed ${{ matrix.env }}
|
|
49
|
+
- name: Setup test suite
|
|
50
|
+
run: tox run -vv --notest --skip-missing-interpreters false -e ${{ matrix.env }}
|
|
51
|
+
- name: Run test suite
|
|
52
|
+
run: tox run --skip-pkg-install -e ${{ matrix.env }}
|
|
53
|
+
env:
|
|
54
|
+
PYTEST_ADDOPTS: "-vv --durations=5"
|
|
55
|
+
changelog:
|
|
56
|
+
if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'skip news')
|
|
57
|
+
runs-on: ubuntu-24.04
|
|
58
|
+
steps:
|
|
59
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
60
|
+
with:
|
|
61
|
+
fetch-depth: 0
|
|
62
|
+
persist-credentials: false
|
|
63
|
+
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
64
|
+
with:
|
|
65
|
+
python-version: "3.15"
|
|
66
|
+
enable-cache: false
|
|
67
|
+
- run: uvx towncrier check --compare-with "origin/${GITHUB_BASE_REF}"
|
|
68
|
+
gate:
|
|
69
|
+
name: Required checks pass
|
|
70
|
+
if: always()
|
|
71
|
+
needs: [test, changelog]
|
|
72
|
+
runs-on: ubuntu-24.04
|
|
73
|
+
steps:
|
|
74
|
+
- env:
|
|
75
|
+
NEEDS_JSON: ${{ toJSON(needs) }}
|
|
76
|
+
run: |
|
|
77
|
+
jq -e '
|
|
78
|
+
all(
|
|
79
|
+
to_entries[];
|
|
80
|
+
.value.result == "success" or
|
|
81
|
+
(.key == "changelog" and .value.result == "skipped")
|
|
82
|
+
)
|
|
83
|
+
' <<< "$NEEDS_JSON"
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
name: Prepare release
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
inputs:
|
|
5
|
+
version:
|
|
6
|
+
description: Version to release, without a v prefix
|
|
7
|
+
required: true
|
|
8
|
+
permissions: {}
|
|
9
|
+
concurrency:
|
|
10
|
+
group: prepare-release
|
|
11
|
+
cancel-in-progress: false
|
|
12
|
+
jobs:
|
|
13
|
+
assemble:
|
|
14
|
+
if: github.ref == 'refs/heads/main'
|
|
15
|
+
runs-on: ubuntu-26.04
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
20
|
+
with:
|
|
21
|
+
fetch-depth: 0
|
|
22
|
+
persist-credentials: false
|
|
23
|
+
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.15"
|
|
26
|
+
enable-cache: false
|
|
27
|
+
- name: Build release patch
|
|
28
|
+
env:
|
|
29
|
+
VERSION: ${{ inputs.version }}
|
|
30
|
+
run: |
|
|
31
|
+
set -euo pipefail
|
|
32
|
+
if [[ ! "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
33
|
+
echo "::error::expected a major.minor.patch version"
|
|
34
|
+
exit 1
|
|
35
|
+
fi
|
|
36
|
+
latest=$(git tag --list '[0-9]*' | sort -V | tail -n 1)
|
|
37
|
+
if [[ "$(printf '%s\n' "$latest" "$VERSION" | sort -V | tail -n 1)" != "$VERSION" || "$latest" == "$VERSION" ]]; then
|
|
38
|
+
echo "::error::$VERSION must be newer than $latest"
|
|
39
|
+
exit 1
|
|
40
|
+
fi
|
|
41
|
+
if ! compgen -G 'changelog.d/*.md' > /dev/null; then
|
|
42
|
+
echo "::error::no changelog fragments to release"
|
|
43
|
+
exit 1
|
|
44
|
+
fi
|
|
45
|
+
uvx towncrier build --yes --version "$VERSION"
|
|
46
|
+
git diff HEAD --binary > "$RUNNER_TEMP/release.patch"
|
|
47
|
+
test -s "$RUNNER_TEMP/release.patch"
|
|
48
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
49
|
+
with:
|
|
50
|
+
name: release-patch
|
|
51
|
+
path: ${{ runner.temp }}/release.patch
|
|
52
|
+
if-no-files-found: error
|
|
53
|
+
push:
|
|
54
|
+
needs: assemble
|
|
55
|
+
runs-on: ubuntu-26.04
|
|
56
|
+
environment: release-auth
|
|
57
|
+
permissions:
|
|
58
|
+
contents: read
|
|
59
|
+
steps:
|
|
60
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
61
|
+
with:
|
|
62
|
+
fetch-depth: 0
|
|
63
|
+
persist-credentials: false
|
|
64
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
65
|
+
with:
|
|
66
|
+
name: release-patch
|
|
67
|
+
path: ${{ runner.temp }}/release-patch
|
|
68
|
+
- name: Validate release patch
|
|
69
|
+
env:
|
|
70
|
+
VERSION: ${{ inputs.version }}
|
|
71
|
+
run: |
|
|
72
|
+
set -euo pipefail
|
|
73
|
+
git fetch origin main
|
|
74
|
+
git reset --hard origin/main
|
|
75
|
+
git apply --check "$RUNNER_TEMP/release-patch/release.patch"
|
|
76
|
+
git apply --index "$RUNNER_TEMP/release-patch/release.patch"
|
|
77
|
+
while IFS= read -r path; do
|
|
78
|
+
case "$path" in
|
|
79
|
+
CHANGELOG.md|changelog.d/*.md) ;;
|
|
80
|
+
*) echo "::error::unexpected release path: $path"; exit 1 ;;
|
|
81
|
+
esac
|
|
82
|
+
done < <(git diff --cached --name-only)
|
|
83
|
+
grep -Fq "## $VERSION (" CHANGELOG.md
|
|
84
|
+
git diff --cached --check
|
|
85
|
+
- id: token
|
|
86
|
+
uses: actions/create-github-app-token@64ab729a6294000f5aa4a4bc0b73d1f32bc45510 # v3.3.0
|
|
87
|
+
with:
|
|
88
|
+
client-id: ${{ vars.RELEASE_APP_CLIENT_ID }}
|
|
89
|
+
private-key: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
|
|
90
|
+
owner: ${{ github.repository_owner }}
|
|
91
|
+
repositories: ${{ github.event.repository.name }}
|
|
92
|
+
permission-contents: write
|
|
93
|
+
- name: Commit and tag the release
|
|
94
|
+
env:
|
|
95
|
+
VERSION: ${{ inputs.version }}
|
|
96
|
+
GH_TOKEN: ${{ steps.token.outputs.token }}
|
|
97
|
+
APP_SLUG: ${{ steps.token.outputs.app-slug }}
|
|
98
|
+
run: |
|
|
99
|
+
set -euo pipefail
|
|
100
|
+
app_user_id=$(gh api "/users/${APP_SLUG}[bot]" --jq .id)
|
|
101
|
+
git config user.name "${APP_SLUG}[bot]"
|
|
102
|
+
git config user.email "${app_user_id}+${APP_SLUG}[bot]@users.noreply.github.com"
|
|
103
|
+
git commit -m "chore: prepare $VERSION"
|
|
104
|
+
git tag "$VERSION"
|
|
105
|
+
gh auth setup-git --hostname github.com --force
|
|
106
|
+
git push --atomic origin HEAD:main "refs/tags/$VERSION"
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
name: Release to PyPI
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
tags: ["*"]
|
|
5
|
+
permissions:
|
|
6
|
+
contents: read
|
|
7
|
+
env:
|
|
8
|
+
dists-artifact-name: python-package-distributions
|
|
9
|
+
jobs:
|
|
10
|
+
build:
|
|
11
|
+
runs-on: ubuntu-26.04
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
14
|
+
with:
|
|
15
|
+
fetch-depth: 0
|
|
16
|
+
persist-credentials: false
|
|
17
|
+
- name: Require a changelog section for the tag
|
|
18
|
+
env:
|
|
19
|
+
TAG: ${{ github.ref_name }}
|
|
20
|
+
run: |
|
|
21
|
+
if [[ ! "$TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
22
|
+
echo "::error::unexpected release tag $TAG"
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
if ! grep -qF "## $TAG (" CHANGELOG.md; then
|
|
26
|
+
echo "::error::CHANGELOG.md has no section for $TAG"
|
|
27
|
+
exit 1
|
|
28
|
+
fi
|
|
29
|
+
- name: Install the latest version of uv
|
|
30
|
+
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
31
|
+
with:
|
|
32
|
+
python-version: "3.15"
|
|
33
|
+
enable-cache: false
|
|
34
|
+
cache-dependency-glob: "pyproject.toml"
|
|
35
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
36
|
+
- name: Build package
|
|
37
|
+
run: uv build --python 3.15 --python-preference only-managed --sdist --wheel . --out-dir dist
|
|
38
|
+
- name: Store the distribution packages
|
|
39
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
40
|
+
with:
|
|
41
|
+
name: ${{ env.dists-artifact-name }}
|
|
42
|
+
path: dist/*
|
|
43
|
+
release:
|
|
44
|
+
needs:
|
|
45
|
+
- build
|
|
46
|
+
runs-on: ubuntu-26.04
|
|
47
|
+
environment:
|
|
48
|
+
name: release
|
|
49
|
+
url: https://pypi.org/project/devpi-process/${{ github.ref_name }}
|
|
50
|
+
permissions:
|
|
51
|
+
id-token: write
|
|
52
|
+
steps:
|
|
53
|
+
- name: Download all the dists
|
|
54
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
55
|
+
with:
|
|
56
|
+
name: ${{ env.dists-artifact-name }}
|
|
57
|
+
path: dist/
|
|
58
|
+
- name: Publish to PyPI
|
|
59
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
60
|
+
with:
|
|
61
|
+
attestations: true
|
|
62
|
+
github-release:
|
|
63
|
+
needs: release
|
|
64
|
+
runs-on: ubuntu-26.04
|
|
65
|
+
permissions:
|
|
66
|
+
contents: write
|
|
67
|
+
steps:
|
|
68
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
69
|
+
with:
|
|
70
|
+
fetch-depth: 0
|
|
71
|
+
persist-credentials: false
|
|
72
|
+
- name: Publish GitHub Release
|
|
73
|
+
env:
|
|
74
|
+
GH_TOKEN: ${{ github.token }}
|
|
75
|
+
TAG: ${{ github.ref_name }}
|
|
76
|
+
run: |
|
|
77
|
+
set -euo pipefail
|
|
78
|
+
awk -v tag="$TAG" 'index($0, "## " tag " (") == 1 { found = 1; next } found && /^## / { exit } found { print }' CHANGELOG.md > "$RUNNER_TEMP/release-notes.md"
|
|
79
|
+
test -s "$RUNNER_TEMP/release-notes.md"
|
|
80
|
+
printf '\n[PyPI release](https://pypi.org/project/devpi-process/%s/)\n' "$TAG" >> "$RUNNER_TEMP/release-notes.md"
|
|
81
|
+
previous=$(git tag --list '[0-9]*' | grep -E '^[0-9]+(\.[0-9]+){1,2}$' | sort -V | awk -v tag="$TAG" '$0 == tag { print previous; exit } { previous = $0 }')
|
|
82
|
+
if [[ -n "$previous" ]]; then
|
|
83
|
+
printf '\n**Full Changelog**: https://github.com/%s/compare/%s...%s\n' "$GITHUB_REPOSITORY" "$previous" "$TAG" >> "$RUNNER_TEMP/release-notes.md"
|
|
84
|
+
else
|
|
85
|
+
printf '\n**Full Changelog**: https://github.com/%s/commits/%s\n' "$GITHUB_REPOSITORY" "$TAG" >> "$RUNNER_TEMP/release-notes.md"
|
|
86
|
+
fi
|
|
87
|
+
gh release create "$TAG" --verify-tag --title "$TAG" --notes-file "$RUNNER_TEMP/release-notes.md"
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
default_language_version:
|
|
2
|
+
python: python3.15
|
|
1
3
|
repos:
|
|
2
4
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
5
|
rev: v6.0.0
|
|
@@ -5,7 +7,7 @@ repos:
|
|
|
5
7
|
- id: end-of-file-fixer
|
|
6
8
|
- id: trailing-whitespace
|
|
7
9
|
- repo: https://github.com/python-jsonschema/check-jsonschema
|
|
8
|
-
rev: 0.
|
|
10
|
+
rev: 0.38.2
|
|
9
11
|
hooks:
|
|
10
12
|
- id: check-github-workflows
|
|
11
13
|
args: ["--verbose"]
|
|
@@ -13,17 +15,16 @@ repos:
|
|
|
13
15
|
rev: v2.4.3
|
|
14
16
|
hooks:
|
|
15
17
|
- id: codespell
|
|
16
|
-
additional_dependencies: ["tomli>=2.2.1"]
|
|
17
18
|
- repo: https://github.com/tox-dev/tox-toml-fmt
|
|
18
|
-
rev: "v1.
|
|
19
|
+
rev: "v1.11.1"
|
|
19
20
|
hooks:
|
|
20
21
|
- id: tox-toml-fmt
|
|
21
22
|
- repo: https://github.com/tox-dev/pyproject-fmt
|
|
22
|
-
rev: "v2.
|
|
23
|
+
rev: "v2.30.3"
|
|
23
24
|
hooks:
|
|
24
25
|
- id: pyproject-fmt
|
|
25
26
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
26
|
-
rev: "v0.
|
|
27
|
+
rev: "v0.17.0"
|
|
27
28
|
hooks:
|
|
28
29
|
- id: ruff-format
|
|
29
30
|
- id: ruff
|
|
@@ -43,7 +44,7 @@ repos:
|
|
|
43
44
|
- mdformat-gfm>=1
|
|
44
45
|
- mdformat-ruff>=0.1.3
|
|
45
46
|
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
|
46
|
-
rev: v1.
|
|
47
|
+
rev: v1.30.1
|
|
47
48
|
hooks:
|
|
48
49
|
- id: zizmor
|
|
49
50
|
- repo: meta
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
<!-- towncrier release notes start -->
|
|
4
|
+
|
|
5
|
+
## 1.3.1 (2026-10-19)
|
|
6
|
+
|
|
7
|
+
### Documentation
|
|
8
|
+
|
|
9
|
+
- Publish a GitHub Release with the tagged changelog after each PyPI upload. (#290)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## 1.3.0 (2026-10-10)
|
|
13
|
+
|
|
14
|
+
- Require Python 3.11 and use Python 3.15 by default ([#284](https://github.com/tox-dev/devpi-process/pull/284)).
|
|
15
|
+
|
|
16
|
+
## 1.2.0 (2026-07-21)
|
|
17
|
+
|
|
18
|
+
- Test on Python 3.15 and tighten GitHub Actions security checks.
|
|
19
|
+
|
|
20
|
+
## 1.1.1 (2026-02-23)
|
|
21
|
+
|
|
22
|
+
- Move the development tooling to `tox.toml`, dependency groups, and ty.
|
|
23
|
+
|
|
24
|
+
## 1.1.0 (2025-10-09)
|
|
25
|
+
|
|
26
|
+
- Add Python 3.14 support and end support for Python 3.8 and 3.9
|
|
27
|
+
([#196](https://github.com/tox-dev/devpi-process/pull/196)).
|
|
28
|
+
|
|
29
|
+
## 1.0.2 (2024-09-18)
|
|
30
|
+
|
|
31
|
+
- Improve CI ([#134](https://github.com/tox-dev/devpi-process/pull/134)).
|
|
32
|
+
|
|
33
|
+
## 1.0.1 (2024-09-08)
|
|
34
|
+
|
|
35
|
+
- Declare Python 3.13 support ([#130](https://github.com/tox-dev/devpi-process/pull/130)).
|
|
36
|
+
|
|
37
|
+
## 1.0.0 (2023-08-22)
|
|
38
|
+
|
|
39
|
+
- Exclude automated dependency and hook updates from generated release notes.
|
|
40
|
+
|
|
41
|
+
## 0.3.1 (2023-06-15)
|
|
42
|
+
|
|
43
|
+
- Update dependencies and development tooling.
|
|
44
|
+
|
|
45
|
+
## 0.3.0 (2022-12-03)
|
|
46
|
+
|
|
47
|
+
- Show stdout/stderr details if a command fails
|
|
48
|
+
|
|
49
|
+
## 0.2 (2021-12-29)
|
|
50
|
+
|
|
51
|
+
- Drop 3.6 support and bump linters
|
|
52
|
+
- Index URL now ends with `/` to avoid redirect when sending a GET
|
|
53
|
+
|
|
54
|
+
## 0.1 (2021-06-17)
|
|
55
|
+
|
|
56
|
+
- First release
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: devpi-process
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: devpi process provides a programmatic API to create and use a devpi server process
|
|
5
5
|
Project-URL: Homepage, https://github.com/tox-dev/devpi-process#readme
|
|
6
6
|
Project-URL: Source, https://github.com/tox-dev/devpi-process
|
|
@@ -18,7 +18,6 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
18
18
|
Classifier: Operating System :: Microsoft :: Windows
|
|
19
19
|
Classifier: Operating System :: POSIX
|
|
20
20
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
24
23
|
Classifier: Programming Language :: Python :: 3.13
|
|
@@ -27,14 +26,16 @@ Classifier: Programming Language :: Python :: 3.15
|
|
|
27
26
|
Classifier: Topic :: Software Development :: Libraries
|
|
28
27
|
Classifier: Topic :: Software Development :: Testing
|
|
29
28
|
Classifier: Topic :: Utilities
|
|
30
|
-
Requires-Python: >=3.
|
|
31
|
-
Requires-Dist: devpi-client>=7.
|
|
32
|
-
Requires-Dist: devpi-server>=6.
|
|
33
|
-
Requires-Dist: typing-extensions>=4.15; python_version < '3.11'
|
|
29
|
+
Requires-Python: >=3.11
|
|
30
|
+
Requires-Dist: devpi-client>=7.3
|
|
31
|
+
Requires-Dist: devpi-server>=6.20.3
|
|
34
32
|
Description-Content-Type: text/markdown
|
|
35
33
|
|
|
36
34
|
# devpi-process
|
|
37
35
|
|
|
36
|
+
See the [changelog](CHANGELOG.md) for released changes. Pull requests need a `changelog.d/<PR>.<type>.md` fragment; use
|
|
37
|
+
the `skip news` label for changes that do not need release notes.
|
|
38
|
+
|
|
38
39
|
[](https://pypi.org/project/devpi-process)
|
|
39
40
|
[](https://pypi.org/project/devpi-process)
|
|
40
41
|
[](https://pypi.org/project/devpi-process)
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# devpi-process
|
|
2
2
|
|
|
3
|
+
See the [changelog](CHANGELOG.md) for released changes. Pull requests need a `changelog.d/<PR>.<type>.md` fragment; use
|
|
4
|
+
the `skip news` label for changes that do not need release notes.
|
|
5
|
+
|
|
3
6
|
[](https://pypi.org/project/devpi-process)
|
|
4
7
|
[](https://pypi.org/project/devpi-process)
|
|
5
8
|
[](https://pypi.org/project/devpi-process)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
build-backend = "hatchling.build"
|
|
3
3
|
requires = [
|
|
4
4
|
"hatch-vcs>=0.5",
|
|
5
|
-
"hatchling>=1.
|
|
5
|
+
"hatchling>=1.32.4",
|
|
6
6
|
]
|
|
7
7
|
|
|
8
8
|
[project]
|
|
@@ -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.
|
|
26
|
+
requires-python = ">=3.11"
|
|
27
27
|
classifiers = [
|
|
28
28
|
"Development Status :: 5 - Production/Stable",
|
|
29
29
|
"Framework :: tox",
|
|
@@ -33,7 +33,6 @@ classifiers = [
|
|
|
33
33
|
"Operating System :: Microsoft :: Windows",
|
|
34
34
|
"Operating System :: POSIX",
|
|
35
35
|
"Programming Language :: Python :: 3 :: Only",
|
|
36
|
-
"Programming Language :: Python :: 3.10",
|
|
37
36
|
"Programming Language :: Python :: 3.11",
|
|
38
37
|
"Programming Language :: Python :: 3.12",
|
|
39
38
|
"Programming Language :: Python :: 3.13",
|
|
@@ -47,9 +46,8 @@ dynamic = [
|
|
|
47
46
|
"version",
|
|
48
47
|
]
|
|
49
48
|
dependencies = [
|
|
50
|
-
"devpi-client>=7.
|
|
51
|
-
"devpi-server>=6.
|
|
52
|
-
"typing-extensions>=4.15; python_version<'3.11'",
|
|
49
|
+
"devpi-client>=7.3",
|
|
50
|
+
"devpi-server>=6.20.3",
|
|
53
51
|
]
|
|
54
52
|
urls.Homepage = "https://github.com/tox-dev/devpi-process#readme"
|
|
55
53
|
urls.Source = "https://github.com/tox-dev/devpi-process"
|
|
@@ -65,20 +63,20 @@ dev = [
|
|
|
65
63
|
test = [
|
|
66
64
|
"covdefaults>=2.3",
|
|
67
65
|
"httpx>=0.28.1",
|
|
68
|
-
"pytest>=
|
|
69
|
-
"pytest-cov>=7",
|
|
66
|
+
"pytest>=9.1.1",
|
|
67
|
+
"pytest-cov>=7.1",
|
|
70
68
|
]
|
|
71
69
|
type = [
|
|
72
|
-
"ty>=0.0.
|
|
70
|
+
"ty>=0.0.84",
|
|
73
71
|
{ include-group = "test" },
|
|
74
72
|
]
|
|
75
73
|
lint = [
|
|
76
|
-
"pre-commit-uv>=4.
|
|
74
|
+
"pre-commit-uv>=4.3",
|
|
77
75
|
]
|
|
78
76
|
pkg-meta = [
|
|
79
77
|
"check-wheel-contents>=0.6.3",
|
|
80
|
-
"twine>=
|
|
81
|
-
"uv>=0.
|
|
78
|
+
"twine>=7",
|
|
79
|
+
"uv>=0.12.22",
|
|
82
80
|
]
|
|
83
81
|
|
|
84
82
|
[tool.hatch]
|
|
@@ -97,23 +95,23 @@ lint.select = [
|
|
|
97
95
|
"ALL",
|
|
98
96
|
]
|
|
99
97
|
lint.ignore = [
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"
|
|
98
|
+
"any-type", # allow Any as type annotation
|
|
99
|
+
"CPY", # No copyright statements
|
|
100
|
+
"DOC", # not supported
|
|
101
|
+
"hardcoded-bind-all-interfaces", # Possible binding to all interface
|
|
102
|
+
"incorrect-blank-line-before-class", # `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible
|
|
103
|
+
"missing-trailing-comma", # Conflict with formatter
|
|
104
|
+
"multi-line-summary-first-line", # `multi-line-summary-first-line` (D212) and `multi-line-summary-second-line` (D213) are incompatible
|
|
105
|
+
"non-empty-init-module", # `__init__` module should only contain docstrings and re-exports
|
|
106
|
+
"single-line-implicit-string-concatenation", # Conflict with formatter
|
|
109
107
|
]
|
|
110
108
|
lint.per-file-ignores."tests/**/*.py" = [
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
"
|
|
109
|
+
"assert", # asserts allowed in tests
|
|
110
|
+
"D", # don't care about documentation in tests
|
|
111
|
+
"FBT", # don't care about booleans as positional arguments in tests
|
|
112
|
+
"implicit-namespace-package", # no implicit namespace
|
|
113
|
+
"magic-value-comparison", # Magic value used in comparison, consider replacing with a constant variable
|
|
114
|
+
"subprocess-without-shell-equals-true", # `subprocess` call: check for execution of untrusted input
|
|
117
115
|
]
|
|
118
116
|
lint.isort = { known-first-party = [
|
|
119
117
|
"devpi_process",
|
|
@@ -131,7 +129,7 @@ count = true
|
|
|
131
129
|
max_supported_python = "3.15"
|
|
132
130
|
|
|
133
131
|
[tool.ty]
|
|
134
|
-
environment.python-version = "3.
|
|
132
|
+
environment.python-version = "3.15"
|
|
135
133
|
|
|
136
134
|
[tool.coverage]
|
|
137
135
|
run.parallel = true
|
|
@@ -150,3 +148,14 @@ report.fail_under = 98
|
|
|
150
148
|
report.omit = []
|
|
151
149
|
html.show_contexts = true
|
|
152
150
|
html.skip_covered = false
|
|
151
|
+
|
|
152
|
+
[tool.towncrier]
|
|
153
|
+
name = "devpi-process"
|
|
154
|
+
directory = "changelog.d"
|
|
155
|
+
filename = "CHANGELOG.md"
|
|
156
|
+
title_format = "## {version} ({project_date})"
|
|
157
|
+
type = [
|
|
158
|
+
{ directory = "feature", name = "Features", showcontent = true },
|
|
159
|
+
{ directory = "bugfix", name = "Bug fixes", showcontent = true },
|
|
160
|
+
{ directory = "doc", name = "Documentation", showcontent = true },
|
|
161
|
+
]
|
|
@@ -18,11 +18,7 @@ from ._version import __version__
|
|
|
18
18
|
if TYPE_CHECKING:
|
|
19
19
|
from collections.abc import Iterator, Sequence
|
|
20
20
|
from types import TracebackType
|
|
21
|
-
|
|
22
|
-
if sys.version_info >= (3, 11): # pragma: no cover (py311+)
|
|
23
|
-
from typing import Self
|
|
24
|
-
else: # pragma: no cover (<py311)
|
|
25
|
-
from typing_extensions import Self
|
|
21
|
+
from typing import Self
|
|
26
22
|
|
|
27
23
|
|
|
28
24
|
def _check_call(cmd: list[str]) -> None:
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.
|
|
22
|
-
__version_tuple__ = version_tuple = (1,
|
|
21
|
+
__version__ = version = '1.3.1'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 3, 1)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
File without changes
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
requires = [ "tox>=4.
|
|
2
|
-
env_list = [ "3.15", "3.14", "3.13", "3.12", "3.11", "3.
|
|
1
|
+
requires = [ "tox>=4.64.7", "tox-uv>=1.36.1" ]
|
|
2
|
+
env_list = [ "3.15", "3.14", "3.13", "3.12", "3.11", "3.15t", "fix", "pkg_meta", "type" ]
|
|
3
3
|
skip_missing_interpreters = true
|
|
4
4
|
|
|
5
5
|
[env_run_base]
|
|
6
6
|
description = "run the unit tests with pytest under {env_name}"
|
|
7
|
+
default_base_python = [ "3.15" ]
|
|
7
8
|
package = "wheel"
|
|
8
9
|
wheel_build_env = ".pkg"
|
|
9
10
|
dependency_groups = [ "test" ]
|
|
@@ -35,6 +36,9 @@ commands = [
|
|
|
35
36
|
],
|
|
36
37
|
]
|
|
37
38
|
|
|
39
|
+
[env_pkg_base]
|
|
40
|
+
default_base_python = [ "3.15" ]
|
|
41
|
+
|
|
38
42
|
[env.fix]
|
|
39
43
|
description = "format the code base to adhere to our styles, and complain about what we cannot do automatically"
|
|
40
44
|
skip_install = true
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
name: check
|
|
2
|
-
on:
|
|
3
|
-
workflow_dispatch:
|
|
4
|
-
push:
|
|
5
|
-
branches: ["main"]
|
|
6
|
-
tags-ignore: ["**"]
|
|
7
|
-
pull_request:
|
|
8
|
-
schedule:
|
|
9
|
-
- cron: "0 8 * * *"
|
|
10
|
-
concurrency:
|
|
11
|
-
group: check-${{ github.ref }}
|
|
12
|
-
cancel-in-progress: true
|
|
13
|
-
permissions:
|
|
14
|
-
contents: read
|
|
15
|
-
jobs:
|
|
16
|
-
test:
|
|
17
|
-
runs-on: ubuntu-latest
|
|
18
|
-
strategy:
|
|
19
|
-
fail-fast: false
|
|
20
|
-
matrix:
|
|
21
|
-
env:
|
|
22
|
-
- "3.15"
|
|
23
|
-
- "3.15t"
|
|
24
|
-
- "3.14"
|
|
25
|
-
- "3.13"
|
|
26
|
-
- "3.12"
|
|
27
|
-
- "3.11"
|
|
28
|
-
- "3.10"
|
|
29
|
-
- type
|
|
30
|
-
- dev
|
|
31
|
-
- pkg_meta
|
|
32
|
-
steps:
|
|
33
|
-
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
34
|
-
with:
|
|
35
|
-
fetch-depth: 0
|
|
36
|
-
persist-credentials: false
|
|
37
|
-
- name: Install the latest version of uv
|
|
38
|
-
uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
|
|
39
|
-
with:
|
|
40
|
-
enable-cache: false
|
|
41
|
-
cache-dependency-glob: "pyproject.toml"
|
|
42
|
-
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
43
|
-
- name: Install tox
|
|
44
|
-
run: uv tool install --python-preference only-managed --python 3.14 tox --with tox-uv
|
|
45
|
-
- name: Install Python
|
|
46
|
-
if: startsWith(matrix.env, '3.') && matrix.env != '3.14'
|
|
47
|
-
run: uv python install --python-preference only-managed ${{ matrix.env }}
|
|
48
|
-
- name: Setup test suite
|
|
49
|
-
run: tox run -vv --notest --skip-missing-interpreters false -e ${{ matrix.env }}
|
|
50
|
-
- name: Run test suite
|
|
51
|
-
run: tox run --skip-pkg-install -e ${{ matrix.env }}
|
|
52
|
-
env:
|
|
53
|
-
PYTEST_ADDOPTS: "-vv --durations=5"
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
name: Release to PyPI
|
|
2
|
-
on:
|
|
3
|
-
push:
|
|
4
|
-
tags: ["*"]
|
|
5
|
-
permissions:
|
|
6
|
-
contents: read
|
|
7
|
-
env:
|
|
8
|
-
dists-artifact-name: python-package-distributions
|
|
9
|
-
jobs:
|
|
10
|
-
build:
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
steps:
|
|
13
|
-
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
14
|
-
with:
|
|
15
|
-
fetch-depth: 0
|
|
16
|
-
persist-credentials: false
|
|
17
|
-
- name: Install the latest version of uv
|
|
18
|
-
uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
|
|
19
|
-
with:
|
|
20
|
-
enable-cache: false
|
|
21
|
-
cache-dependency-glob: "pyproject.toml"
|
|
22
|
-
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
23
|
-
- name: Build package
|
|
24
|
-
run: uv build --python 3.14 --python-preference only-managed --sdist --wheel . --out-dir dist
|
|
25
|
-
- name: Store the distribution packages
|
|
26
|
-
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
27
|
-
with:
|
|
28
|
-
name: ${{ env.dists-artifact-name }}
|
|
29
|
-
path: dist/*
|
|
30
|
-
release:
|
|
31
|
-
needs:
|
|
32
|
-
- build
|
|
33
|
-
runs-on: ubuntu-latest
|
|
34
|
-
environment:
|
|
35
|
-
name: release
|
|
36
|
-
url: https://pypi.org/project/devpi-process/${{ github.ref_name }}
|
|
37
|
-
permissions:
|
|
38
|
-
id-token: write
|
|
39
|
-
steps:
|
|
40
|
-
- name: Download all the dists
|
|
41
|
-
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
|
|
42
|
-
with:
|
|
43
|
-
name: ${{ env.dists-artifact-name }}
|
|
44
|
-
path: dist/
|
|
45
|
-
- name: Publish to PyPI
|
|
46
|
-
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
|
|
47
|
-
with:
|
|
48
|
-
attestations: true
|
devpi_process-1.2.0/CHANGELOG.md
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## 0.3 (2021-12-03)
|
|
4
|
-
|
|
5
|
-
- Show stdout/stderr details if a command fails
|
|
6
|
-
|
|
7
|
-
## 0.2 (2021-12-29)
|
|
8
|
-
|
|
9
|
-
- Drop 3.6 support and bump linters
|
|
10
|
-
- Index URL now ends with `/` to avoid redirect when sending a GET
|
|
11
|
-
|
|
12
|
-
## 0.1 (2021-06-17)
|
|
13
|
-
|
|
14
|
-
- First release
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|