python-git-changelog
CLEAN
maintainer Smoolak
0 votes
scanned 2026-09-21 00:26:32.109917
Triggered rules
Clean
AI review downgraded a static finding
llm_review
The static rules flagged this LOW, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it CLEAN (confidence 95%): The package builds from a verifiable source tarball hosted on the project's official GitHub repository, uses standard Python build tools, and runs upstream tests; the low-severity flag is due to metadata (few votes, recent upload) but the PKGBUILD itself shows no malicious or risky behavior.
1 higher static finding superseded - not the current verdict (shown for transparency)
Low
Few votes, recently uploaded
zero_votes_recent
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
PKGBUILD
1
# Maintainer: Smoolak <smoolak@gmail.com>
2
3
_pkgname=git-changelog
4
pkgname=python-git-changelog
5
pkgver=2.9.7
6
pkgrel=1
7
pkgdesc="Automatic changelog generator using Jinja2 templates"
8
arch=('any')
9
url="https://github.com/pawamoy/git-changelog"
10
license=('ISC')
11
depends=(
12
'git'
13
'python>=3.10'
14
'python-jinja>=3.0'
15
'python-packaging>=26.0'
16
'python-platformdirs>=4.4'
17
'python-semver>=3.0'
18
'python-typing_extensions'
19
)
20
makedepends=(
21
'python-build'
22
'python-installer'
23
'python-pdm-backend'
24
)
25
checkdepends=(
26
'mkdocstrings>=0.29'
27
'python-griffe>=2.0'
28
'python-pytest>=8.2'
29
'python-pytest-cov>=5.0'
30
'python-pytest-gitconfig>=0.7'
31
'python-pytest-randomly>=3.15'
32
'python-pytest-xdist>=3.6'
33
'python-tomli-w>=1.2'
34
)
35
source=("$pkgname-$pkgver.tar.gz::https://github.com/pawamoy/git-changelog/archive/refs/tags/$pkgver.tar.gz")
36
sha256sums=('1192a29a8ab7c8d7c371ead7866912ce5716ec8d6aefb8ca7b1a186fb97a1beb')
37
38
build() {
39
cd "$_pkgname-$pkgver"
40
python -m build --wheel --no-isolation
41
}
42
43
check() {
44
cd "$_pkgname-$pkgver"
45
46
local _check_dir="$srcdir/_check"
47
local _python_version
48
local _site_packages
49
local _smoke_repo="$srcdir/smoke-repo"
50
local _smoke_output="$srcdir/smoke-changelog.md"
51
52
_python_version="$(python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"
53
_site_packages="$_check_dir/usr/lib/python$_python_version/site-packages"
54
55
rm -rf "$_check_dir" "$_smoke_repo" "$_smoke_output"
56
python -m installer --destdir="$_check_dir" dist/*.whl
57
58
# Upstream runs tests from a Git checkout, while release archives omit
59
# repository metadata. Recreate the checkout context expected by test_main.
60
rm -rf .git
61
git init -q -b main .
62
git config user.name "Arch Linux"
63
git config user.email "arch@example.invalid"
64
git add -A
65
git commit -q -m "chore: source archive"
66
67
# Run upstream's complete test suite against the staged wheel.
68
# Upstream itself skips inventory checks when its generated site/objects.inv
69
# documentation artifact is not present in the release archive.
70
PYTHONPATH="$_site_packages" pytest -c config/pytest.ini -n auto tests
71
72
# Exercise both the installed Python API and CLI on a realistic Git history.
73
git init -q -b main "$_smoke_repo"
74
git -C "$_smoke_repo" config user.name "Arch Linux"
75
git -C "$_smoke_repo" config user.email "arch@example.invalid"
76
git -C "$_smoke_repo" remote add origin "https://github.com/example/widgets.git"
77
git -C "$_smoke_repo" commit -q --allow-empty -m "chore: initial release"
78
git -C "$_smoke_repo" tag 1.0.0
79
git -C "$_smoke_repo" commit -q --allow-empty -m "feat: add widget support"
80
git -C "$_smoke_repo" commit -q --allow-empty -m "fix: handle empty widgets"
81
82
PYTHONPATH="$_site_packages" python - "$_smoke_repo" <<'PY'
83
import sys
84
85
from git_changelog import AngularConvention, Changelog, get_template
86
87
repository = sys.argv[1]
88
changelog = Changelog(repository, convention=AngularConvention, bump="auto")
89
assert changelog.versions_list[0].planned_tag == "1.1.0"
90
rendered = get_template("keepachangelog").render(changelog=changelog)
91
assert "add widget support" in rendered
92
assert "handle empty widgets" in rendered
93
PY
94
95
PYTHONPATH="$_site_packages" "$_check_dir/usr/bin/git-changelog" \
96
"$_smoke_repo" \
97
--config-file no \
98
--convention angular \
99
--bump auto \
100
--output "$_smoke_output"
101
grep -q '## \[1.1.0\]' "$_smoke_output"
102
grep -q 'add widget support' "$_smoke_output"
103
grep -q 'handle empty widgets' "$_smoke_output"
104
}
105
106
package() {
107
cd "$_pkgname-$pkgver"
108
python -m installer --destdir="$pkgdir" dist/*.whl
109
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
110
}
111
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-21 00:26:32 | Clean | 2 |
| 2026-09-20 23:33:19 | Low | 1 |