Conversation
519ed05 to
1424550
Compare
Licensing review packetThis PR is held pending a licensing review. It is not blocked on engineering — CI is green and it merges cleanly. The point of this comment is to make the review short for whoever picks it up, by laying out the facts and the actual questions. Nothing below is a legal opinion, and no agent's reading of Apache-2.0 §4 counts as sign-off here.
What the PR changes31 files. All comment/header text plus NOTICE edits, with one exception: Licensing facts (verified, not assumed)
uv-pep508 / uv-pep440 claim: verified, holdsChecked against
Pin errors — fixed at
|
…19394, #19395) Adds a per-file provenance header (upstream symbols + a Changed: note) to every file carrying ported pypa/packaging, pip, uv, pkginfo, or twine code across version/, distribution/, tags/, wheelname/, extras/, internal/pep508/, requirement/, marker/, and reqtxt/. license/ is excluded: its predecessor (rstudio/package-manager) is Posit's own code, so there is no outside licensor for Apache §4(b)/(c) to satisfy there. Corrects NOTICE's uv-pep508/uv-pep440 license claim (they override uv's workspace license to Apache-2.0 OR BSD-2-Clause and are not simply Apache-2.0-OR-MIT) and adds the missing konstin and Aqua Security copyright lines; version/'s NOTICE entry now credits pypa/packaging directly, not just its aquasecurity/rstudio ancestry. Combined with #19395 (citation normalization) because both touch the same package headers: retrofits all 12 pypa/packaging permalink citations in version/ to one pinned SHA (4eb0753, the newest of the three candidates and already used elsewhere in NOTICE) in a symbol-name-first format, via a new exported version.UpstreamPackagingSHA const so version_test.go (an external test package) can cite it too. Comment/header-only change; no behavior touched. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
4eb0753 is a main commit 128 commits after the 26.2 release, not the release itself; relabel it everywhere it was called "26.2". Replace 6ce6143, which is the 26.2 tag object rather than a commit, with the commit it points to (84a87ee). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1424550 to
b15db55
Compare
Adds Apache-2.0 §4(b)/(c) provenance headers to every file with ported third-party code, fixes two NOTICE errors, and retrofits the 12 pypa/packaging permalink citations in
version/to one pinned SHA in a symbol-name-first format.This combines #19394 and #19395: #19394 already edits the same ~10 package headers #19395 needs, so doing the citation retrofit now avoids a second review pass over near-identical churn.
Provenance blocks (#19394) — 30 files
version/version.go,specifier.go,version_test.go,specifier_test.go,specifier_conformance_test.go,specifierset_conformance_test.godistribution/parse.go,internal/distributions/distribution.go,metadata.go,sdist.go,wheel.go,internal/packages/hash_manager.go,types/types.gotags/generate.gowheelname/wheelname.goextras/extras.gointernal/pep508/tokenizer.go,marker.go,requirement.go,grammar_conformance_test.gorequirement/requirement.go,conformance_test.gomarker/evaluate.go,environment.goreqtxt/preprocess.go,shlex.go,classify.go,flatten.go,parse.go,types.goEach block names the exact upstream symbols (not just "the tokenizer") and a per-file
Changed:note specific to that file's actual divergence from upstream — not a copy-pasted paragraph.internal/pep508/tokenizer.gogets only the header block; nothing else in that file changed.license/(license.go,classifiers.go) deliberately gets no block despite reproducingrstudio/package-manager'sgetLicense/getLicenseTypes: that predecessor is Posit's own code, so there is no outside licensor for Apache §4(b)/(c) to satisfy — it's an internal Go-to-Go copy, not third-party-derived material.Files were also excluded where citations exist only for verification/rationale rather than copied source or data (e.g.
marker/marker.go, most_test.goregression files,tags/target.go,reqtxt/string.go) — see individual blockChanged:notes for what each file actually ports.NOTICE corrections (#19394)
uv-pep508/uv-pep440override uv's workspace license per-crate toApache-2.0 OR BSD-2-Clause, not the workspace'sApache-2.0 OR MITNOTICE previously claimed. Added the missing konstin copyright line (theirLicense-BSDreadsCopyright (c) 2023 konstin) and thepypa/packaging → konstin → Astral → usprovenance chain. I could not independently verify uv's live source in this sandbox — this is built from the issue's cited evidence (uv-pep508/src/lib.rs:50,1062,uv-pep440/CHANGELOG.md). Left themarker/entry'suv-configurationcitation untouched, since that crate does correctly inherit the workspace dual license.70d9dd0(Aug 2026) — verified viagit log -Son NOTICE; no action needed here.version/'s NOTICE entry credited onlyaquasecurity/go-pep440-versionand never pypa/packaging, despiteversion.gocarrying direct pypa citations. Added the pypa/packaging mention and the missing Aqua Security copyright line.Citation normalization (#19395)
Re-grepped
github.com/pypa/packaging/blob/onorigin/main: 12 citations (not the issue's claimed 13),a6407e3a×7 (not ×8) +28d2fa07×4 +4eb0753×1.Picked
4eb0753dba8fcaaac8eb75463374e448f0931558— it's the newest of the three (2026-07-28 vs. 2020-12-02 and 2021-01-04) and already anchors theversion/conformance-test citation in NOTICE. Added an exportedversion.UpstreamPackagingSHAconst inversion/version.go(exported, not just package-private, sinceversion_test.golives in the externalversion_testpackage and needs to cite it too); every citation now readsPinned: see UpstreamPackagingSHA (L<n> at that commit)orPinned: see version.UpstreamPackagingSHA (...)from outside the package.I do have outbound network access in this sandbox (verified via GitHub's REST API), so I fetched pypa/packaging at
4eb0753and re-verified every citation's logical block by symbol name, not just by line count:preReleaseAliases/postReleaseAliasessplit now maps to upstream's single merged_LETTER_NORMALIZATIONdict — noted inversion.go's block.specifier_test.go'sSPECIFIERSlist and its companion invalid-case list — the two the issue flagged as already stale — are re-pointed to the correct current lines (L33-L43andL55-L102); a comment on the invalid-case citation notes upstream's list has grown since (pre/post/dev-tagged prefix-matching, non-ASCII local-segment cases) beyond what this file ports.version_test.go's valid/invalid version lists similarly re-verified and re-pointed, with the same "upstream has grown" note.Request for licensing review
Do not merge without a review from someone with authority on licensing. This is a public repo and the open questions are legal, not technical:
uv-pep508/uv-pep440per-crate license override (Apache-2.0 OR BSD-2-Clause) and the konstin copyright line correctly stated? I built this from the issue's cited evidence, not live verification of uv's current source.Changed:wording in each provenance block an adequate discharge of Apache §4(b) ("modified files... carry prominent notices")?license/no block at all, on the theory that a Posit-to-Posit copy fromrstudio/package-managerdoesn't trigger Apache §4(b)/(c) (no outside licensor to satisfy)? NOTICE's existinglicense/paragraph still credits that predecessor either way.I am not providing that sign-off myself, even though I made the edits.
Overlap with #58 / #59
#58 (
19401-marker-string-escapes) and #59 (19402-url-token-whitespace) are open against this repo and touchinternal/pep508/tokenizer.go,marker.go, andrequirement.go. This PR only touches the header region (right after the SPDX line) of any file they also touch — nothing else. Expect a possible trivial rebase if either merges first.Verification
go build ./...,go vet ./...,gofmt -l .: cleango test ./... -count=1 -timeout 900s: 543 pass / 0 fail across 12 packages, identical before and after (comment/header-only change, confirmed by running the suite against both the base commit and this commit)go test ./... -race: cleangolangci-lint run ./...: 2 pre-existinggovetfindings (reflect.Ptrdeprecation) indistribution/internal/distributions/distribution.go:323,327— present onmainbefore this change, unrelated to the comment-only diff here. My localgolangci-lintis v2.13.1; CI pins v2.11.2 (.github/workflows/ci.yml), so please treat CI's run as authoritative.🤖 Generated with Claude Code