Coverage for src/pullapprove/trust/lockfiles.py: 100%
9 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-30 21:52 -0500
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-30 21:52 -0500
1"""Trust rule: package-manager lockfiles are tool-generated, not hand-edited."""
3from __future__ import annotations
5from pathlib import PurePosixPath
7from ..diff import DiffFile, DiffHunk
8from .labels import Trust
10# Package-manager lockfiles: regenerated by tooling, not hand-edited.
11LOCKFILE_NAMES = frozenset(
12 {
13 "package-lock.json",
14 "yarn.lock",
15 "pnpm-lock.yaml",
16 "Cargo.lock",
17 "Gemfile.lock",
18 "poetry.lock",
19 # go.sum is the tool-generated checksum lock; go.mod is the editable
20 # manifest (dependencies, replace directives, module path) — reviewer-
21 # relevant, so it is deliberately NOT trusted.
22 "go.sum",
23 "composer.lock",
24 "Pipfile.lock",
25 "bun.lockb",
26 "bun.lock",
27 "flake.lock",
28 "packages.lock.json",
29 "paket.lock",
30 "pdm.lock",
31 "uv.lock",
32 }
33)
36def _lockfile(file: DiffFile, hunk: DiffHunk) -> Trust | None:
37 if PurePosixPath(file.new_path).name in LOCKFILE_NAMES:
38 return Trust.LOCKFILE
39 return None