Skip to content

Commit d31148d

Browse files
authored
Strip environment markers from detected uv dependency pins (#938)
## Summary - strip PEP 508 environment markers before extracting uv versions from dependency entries - cover dependency-group pins with and without whitespace before the marker - cover requirements-style pins with markers Fixes #920 ## Validation - npm ci --ignore-scripts - npm run all Refs: pi-session 019f316a-4108-7975-892f-ee5bf8abc7c3
1 parent 17c3989 commit d31148d

3 files changed

Lines changed: 37 additions & 4 deletions

File tree

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,34 @@
11
import { expect, test } from "@jest/globals";
22
import { getUvVersionFromFile } from "../../src/version/file-parser";
3+
import {
4+
getUvVersionFromPyprojectContent,
5+
getUvVersionFromRequirementsText,
6+
} from "../../src/version/requirements-file";
37

48
test("ignores dependencies starting with uv", async () => {
59
const parsedVersion = getUvVersionFromFile(
610
"__tests__/fixtures/uv-in-requirements-txt-project/requirements.txt",
711
);
812
expect(parsedVersion).toBe("0.6.17");
913
});
14+
15+
test.each([
16+
["without space before marker", "uv==0.11.20; sys_platform != 'emscripten'"],
17+
["with space before marker", "uv==0.11.20 ; sys_platform != 'emscripten'"],
18+
])("strips PEP 508 markers from pyproject dependency groups %s", (_, dependency) => {
19+
const parsedVersion = getUvVersionFromPyprojectContent(`[dependency-groups]
20+
test = [
21+
"${dependency}",
22+
]
23+
`);
24+
25+
expect(parsedVersion).toBe("==0.11.20");
26+
});
27+
28+
test("strips PEP 508 markers from requirements dependencies", () => {
29+
const parsedVersion = getUvVersionFromRequirementsText(
30+
"uv==0.11.20; sys_platform != 'emscripten'",
31+
);
32+
33+
expect(parsedVersion).toBe("==0.11.20");
34+
});

dist/setup/index.cjs

Lines changed: 5 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/version/requirements-file.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,11 @@ function getUvVersionFromAllDependencies(
6363
allDependencies: string[],
6464
): string | undefined {
6565
return allDependencies
66-
.find((dep: string) => dep.match(/^uv[=<>~!]/))
67-
?.match(/^uv([=<>~!]+\S*)/)?.[1]
68-
.trim();
66+
.map(getUvVersionFromDependency)
67+
.find((version): version is string => version !== undefined);
68+
}
69+
70+
function getUvVersionFromDependency(dependency: string): string | undefined {
71+
const dependencyWithoutMarker = dependency.split(";", 1)[0]?.trim();
72+
return dependencyWithoutMarker?.match(/^uv([=<>~!]+\S*)/)?.[1].trim();
6973
}

0 commit comments

Comments
 (0)