Skip to content

[python] Handle PEP 440 local prerelease versions#94

Merged
gnufede merged 1 commit into
mainfrom
gnufede/testmanagement-ddtest
Jun 23, 2026
Merged

[python] Handle PEP 440 local prerelease versions#94
gnufede merged 1 commit into
mainfrom
gnufede/testmanagement-ddtest

Conversation

@gnufede

@gnufede gnufede commented Jun 23, 2026

Copy link
Copy Markdown
Member

What does this PR do?

Normalizes Python package versions returned by importlib.metadata.version("ddtrace") before ddtest's Python sanity check parses them.

dd-trace-py can publish PEP 440 prerelease/local versions like 4.12.0rc1+g0e3e598. ddtest's internal version parser expects semver-style prerelease syntax, so this PR converts those Python forms to parser-compatible values such as 4.12.0-rc1+g0e3e598 while leaving normal versions like 4.10.3 unchanged.

Motivation

When running the new Pytest/ddtest e2e flow from Shepherd against dd-trace-py@main, ddtest failed during platform sanity checking before planning tests:

invalid version component "0rc1"

That happened because the previous normalization handled 4.12.0rc1, but not the real source-build form with local metadata: 4.12.0rc1+g....

Additional Notes

The normalization stays in the Python platform layer instead of changing the shared version parser. This keeps the PEP 440 compatibility behavior scoped to Python package versions and avoids changing Ruby/JS/ddtest version semantics.

How to test the change?

Automated coverage was added for alpha, beta, rc, and local metadata cases, including the observed 4.12.0rc1+g0e3e598 shape.

Validated locally with:

go test ./internal/platform ./internal/version
go test ./...

@gnufede gnufede marked this pull request as ready for review June 23, 2026 15:37
@gnufede gnufede requested a review from a team as a code owner June 23, 2026 15:37
@gnufede gnufede changed the title Handle PEP 440 local prerelease versions [python] Handle PEP 440 local prerelease versions Jun 23, 2026
@datadog-prod-us1-6

Copy link
Copy Markdown

Tests  Code Coverage

🎉 All green!

🧪 All tests passed
❄️ No new flaky tests detected

🎯 Code Coverage (details)
Patch Coverage: 100.00%
Overall Coverage: 87.65% (+0.00%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 95f3556 | Docs | Datadog PR Page | Give us feedback!

@gnufede gnufede merged commit 2eef223 into main Jun 23, 2026
4 checks passed
@gnufede gnufede deleted the gnufede/testmanagement-ddtest branch June 23, 2026 18:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants