From 224dce1d79c28736be7fc536b0274b13af975190 Mon Sep 17 00:00:00 2001 From: Kevin Stillhammer Date: Thu, 27 Mar 2025 11:34:21 +0100 Subject: [PATCH 01/12] Add link to supported glob patterns (#348) Closes: #346 --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1da306e..a91e840 100644 --- a/README.md +++ b/README.md @@ -191,6 +191,8 @@ changes. If you use relative paths, they are relative to the repository root. > [!NOTE] > +> You can look up supported patterns [here]((https://github.com/actions/toolkit/tree/main/packages/glob#patterns)) +> > The default is > ```yaml > cache-dependency-glob: | From 4fa25599cef8ab7352f8bbb251f54e29ba07eea3 Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Thu, 27 Mar 2025 13:05:11 +0100 Subject: [PATCH 02/12] Fix glob syntax link (#349) The link added in #348 is broken --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a91e840..55ac8eb 100644 --- a/README.md +++ b/README.md @@ -191,7 +191,7 @@ changes. If you use relative paths, they are relative to the repository root. > [!NOTE] > -> You can look up supported patterns [here]((https://github.com/actions/toolkit/tree/main/packages/glob#patterns)) +> You can look up supported patterns [here](https://github.com/actions/toolkit/tree/main/packages/glob#patterns) > > The default is > ```yaml From 2d49baf2b6ce616d221a7032ce63888945655b7b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Mar 2025 06:55:15 +0000 Subject: [PATCH 03/12] chore: update known checksums for 0.6.10 (#345) chore: update known checksums for 0.6.10 Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com> --- dist/setup/index.js | 17 ++++++++++++ dist/update-known-checksums/index.js | 17 ++++++++++++ src/download/checksum/known-checksums.ts | 34 ++++++++++++++++++++++++ 3 files changed, 68 insertions(+) diff --git a/dist/setup/index.js b/dist/setup/index.js index e0b6ed9..73f8ea5 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -120411,6 +120411,23 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.KNOWN_CHECKSUMS = void 0; // AUTOGENERATED_DO_NOT_EDIT exports.KNOWN_CHECKSUMS = { + "aarch64-apple-darwin-0.6.10": "82bf2cb3b34ab504eb08486093c9e97cfaf5299da4d4a60e14b6642a2a2e9b8e", + "aarch64-pc-windows-msvc-0.6.10": "afc3c1ed78273843417b781fd30b263ba417dcfd05ef9a65be50eec7aa500f20", + "aarch64-unknown-linux-gnu-0.6.10": "527f0adc3bcf841a3a0df0d3fef8db277b8afffac588d80948638719b611a8c2", + "aarch64-unknown-linux-musl-0.6.10": "36c36aafdf4b2fb8040d0b8db2eaa4b3f44260a689a6e789bc1cd95689e890bc", + "arm-unknown-linux-musleabihf-0.6.10": "abef3136f0da26055368df298f3379bbd0d6776ba7e7a0c12275e403136408d8", + "armv7-unknown-linux-gnueabihf-0.6.10": "8b776d606b3b9566ae659ab8b2c767e771f1f3e2e632b4c634ff80b26796795f", + "armv7-unknown-linux-musleabihf-0.6.10": "d5af6869e1f69753e9ac2b8bacadd6356f84f373b0f6edfda60dc85c194d3a6b", + "i686-pc-windows-msvc-0.6.10": "ff6c580750d6bdbca1cb7c64601ebf0f079cc6d8ab79df6472e5fd61e4f89cf9", + "i686-unknown-linux-gnu-0.6.10": "978e8d7b495251d842250045a3f15c59e9fe148d09538aa322d4c045db632cc3", + "i686-unknown-linux-musl-0.6.10": "432c0609dec5d196f516639de8845fdf9393b4591978a927f6b2bfa92edd0220", + "powerpc64-unknown-linux-gnu-0.6.10": "ec4285062cc4bec8aa7f95efba227c4ee3301503938735902fdd896c3ef8ec7f", + "powerpc64le-unknown-linux-gnu-0.6.10": "d1dcbdd11b133bcce003aa48be6710a56f1c938eff496eb021dbeac8c09b5c2d", + "s390x-unknown-linux-gnu-0.6.10": "4a68f92213c567a8d2bc22ccc10a328f3dd851967f315c517fc1eb52c8f58ed5", + "x86_64-apple-darwin-0.6.10": "ddd27652b1a4053b848e35c348500841a8fde38e8ac2b37233464ab91e8f7788", + "x86_64-pc-windows-msvc-0.6.10": "c41c4f34782558d3263f7a51e4efd053bc4d074dc46fefa574c4fdb2ed0a00e1", + "x86_64-unknown-linux-gnu-0.6.10": "d58885f055fdb726d12cdd1cc54119432a0e4557c8e8ba04ca1d625058b98832", + "x86_64-unknown-linux-musl-0.6.10": "1bdeaa0396405a30c4bff35b2d7c9df832836da50eec132ccc0d92657a336c4c", "aarch64-apple-darwin-0.6.9": "a6841484affb3c123313df98bcd8932208bdfb3d9d90a72aec274e8a696caa88", "aarch64-pc-windows-msvc-0.6.9": "bdb7e5eebaa5bb807f2c665b909dbba4bce6f23adf774134924a4a3c6acd4e72", "aarch64-unknown-linux-gnu-0.6.9": "f5032ad47151c7906c0fb25f7c3b00a85ab0bfed2170cbc444e79c438799095b", diff --git a/dist/update-known-checksums/index.js b/dist/update-known-checksums/index.js index cffe59f..5deb648 100644 --- a/dist/update-known-checksums/index.js +++ b/dist/update-known-checksums/index.js @@ -58847,6 +58847,23 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.KNOWN_CHECKSUMS = void 0; // AUTOGENERATED_DO_NOT_EDIT exports.KNOWN_CHECKSUMS = { + "aarch64-apple-darwin-0.6.10": "82bf2cb3b34ab504eb08486093c9e97cfaf5299da4d4a60e14b6642a2a2e9b8e", + "aarch64-pc-windows-msvc-0.6.10": "afc3c1ed78273843417b781fd30b263ba417dcfd05ef9a65be50eec7aa500f20", + "aarch64-unknown-linux-gnu-0.6.10": "527f0adc3bcf841a3a0df0d3fef8db277b8afffac588d80948638719b611a8c2", + "aarch64-unknown-linux-musl-0.6.10": "36c36aafdf4b2fb8040d0b8db2eaa4b3f44260a689a6e789bc1cd95689e890bc", + "arm-unknown-linux-musleabihf-0.6.10": "abef3136f0da26055368df298f3379bbd0d6776ba7e7a0c12275e403136408d8", + "armv7-unknown-linux-gnueabihf-0.6.10": "8b776d606b3b9566ae659ab8b2c767e771f1f3e2e632b4c634ff80b26796795f", + "armv7-unknown-linux-musleabihf-0.6.10": "d5af6869e1f69753e9ac2b8bacadd6356f84f373b0f6edfda60dc85c194d3a6b", + "i686-pc-windows-msvc-0.6.10": "ff6c580750d6bdbca1cb7c64601ebf0f079cc6d8ab79df6472e5fd61e4f89cf9", + "i686-unknown-linux-gnu-0.6.10": "978e8d7b495251d842250045a3f15c59e9fe148d09538aa322d4c045db632cc3", + "i686-unknown-linux-musl-0.6.10": "432c0609dec5d196f516639de8845fdf9393b4591978a927f6b2bfa92edd0220", + "powerpc64-unknown-linux-gnu-0.6.10": "ec4285062cc4bec8aa7f95efba227c4ee3301503938735902fdd896c3ef8ec7f", + "powerpc64le-unknown-linux-gnu-0.6.10": "d1dcbdd11b133bcce003aa48be6710a56f1c938eff496eb021dbeac8c09b5c2d", + "s390x-unknown-linux-gnu-0.6.10": "4a68f92213c567a8d2bc22ccc10a328f3dd851967f315c517fc1eb52c8f58ed5", + "x86_64-apple-darwin-0.6.10": "ddd27652b1a4053b848e35c348500841a8fde38e8ac2b37233464ab91e8f7788", + "x86_64-pc-windows-msvc-0.6.10": "c41c4f34782558d3263f7a51e4efd053bc4d074dc46fefa574c4fdb2ed0a00e1", + "x86_64-unknown-linux-gnu-0.6.10": "d58885f055fdb726d12cdd1cc54119432a0e4557c8e8ba04ca1d625058b98832", + "x86_64-unknown-linux-musl-0.6.10": "1bdeaa0396405a30c4bff35b2d7c9df832836da50eec132ccc0d92657a336c4c", "aarch64-apple-darwin-0.6.9": "a6841484affb3c123313df98bcd8932208bdfb3d9d90a72aec274e8a696caa88", "aarch64-pc-windows-msvc-0.6.9": "bdb7e5eebaa5bb807f2c665b909dbba4bce6f23adf774134924a4a3c6acd4e72", "aarch64-unknown-linux-gnu-0.6.9": "f5032ad47151c7906c0fb25f7c3b00a85ab0bfed2170cbc444e79c438799095b", diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts index ea28db8..9a2eea9 100644 --- a/src/download/checksum/known-checksums.ts +++ b/src/download/checksum/known-checksums.ts @@ -1,5 +1,39 @@ // AUTOGENERATED_DO_NOT_EDIT export const KNOWN_CHECKSUMS: { [key: string]: string } = { + "aarch64-apple-darwin-0.6.10": + "82bf2cb3b34ab504eb08486093c9e97cfaf5299da4d4a60e14b6642a2a2e9b8e", + "aarch64-pc-windows-msvc-0.6.10": + "afc3c1ed78273843417b781fd30b263ba417dcfd05ef9a65be50eec7aa500f20", + "aarch64-unknown-linux-gnu-0.6.10": + "527f0adc3bcf841a3a0df0d3fef8db277b8afffac588d80948638719b611a8c2", + "aarch64-unknown-linux-musl-0.6.10": + "36c36aafdf4b2fb8040d0b8db2eaa4b3f44260a689a6e789bc1cd95689e890bc", + "arm-unknown-linux-musleabihf-0.6.10": + "abef3136f0da26055368df298f3379bbd0d6776ba7e7a0c12275e403136408d8", + "armv7-unknown-linux-gnueabihf-0.6.10": + "8b776d606b3b9566ae659ab8b2c767e771f1f3e2e632b4c634ff80b26796795f", + "armv7-unknown-linux-musleabihf-0.6.10": + "d5af6869e1f69753e9ac2b8bacadd6356f84f373b0f6edfda60dc85c194d3a6b", + "i686-pc-windows-msvc-0.6.10": + "ff6c580750d6bdbca1cb7c64601ebf0f079cc6d8ab79df6472e5fd61e4f89cf9", + "i686-unknown-linux-gnu-0.6.10": + "978e8d7b495251d842250045a3f15c59e9fe148d09538aa322d4c045db632cc3", + "i686-unknown-linux-musl-0.6.10": + "432c0609dec5d196f516639de8845fdf9393b4591978a927f6b2bfa92edd0220", + "powerpc64-unknown-linux-gnu-0.6.10": + "ec4285062cc4bec8aa7f95efba227c4ee3301503938735902fdd896c3ef8ec7f", + "powerpc64le-unknown-linux-gnu-0.6.10": + "d1dcbdd11b133bcce003aa48be6710a56f1c938eff496eb021dbeac8c09b5c2d", + "s390x-unknown-linux-gnu-0.6.10": + "4a68f92213c567a8d2bc22ccc10a328f3dd851967f315c517fc1eb52c8f58ed5", + "x86_64-apple-darwin-0.6.10": + "ddd27652b1a4053b848e35c348500841a8fde38e8ac2b37233464ab91e8f7788", + "x86_64-pc-windows-msvc-0.6.10": + "c41c4f34782558d3263f7a51e4efd053bc4d074dc46fefa574c4fdb2ed0a00e1", + "x86_64-unknown-linux-gnu-0.6.10": + "d58885f055fdb726d12cdd1cc54119432a0e4557c8e8ba04ca1d625058b98832", + "x86_64-unknown-linux-musl-0.6.10": + "1bdeaa0396405a30c4bff35b2d7c9df832836da50eec132ccc0d92657a336c4c", "aarch64-apple-darwin-0.6.9": "a6841484affb3c123313df98bcd8932208bdfb3d9d90a72aec274e8a696caa88", "aarch64-pc-windows-msvc-0.6.9": From 794ea9455ce316dbdd184c85e0028d845744cc1f Mon Sep 17 00:00:00 2001 From: Kevin Stillhammer Date: Sun, 30 Mar 2025 18:00:56 +0200 Subject: [PATCH 04/12] Add support for pep440 version identifiers (#353) Fixes: #264 --- .github/workflows/test.yml | 18 + README.md | 8 + dist/setup/index.js | 795 ++++++++++++++++++++++++++++++- package-lock.json | 16 + package.json | 5 +- src/download/download-version.ts | 24 +- 6 files changed, 860 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d176c9e..025c9fd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -82,6 +82,23 @@ jobs: env: UV_VERSION: ${{ steps.setup-uv.outputs.uv-version }} + test-pep440-version: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install version 0.4.30 + id: setup-uv + uses: ./ + with: + version: ">=0.4.25,<0.5" + - name: Correct version gets installed + run: | + if [ "$UV_VERSION" != "0.4.30" ]; then + exit 1 + fi + env: + UV_VERSION: ${{ steps.setup-uv.outputs.uv-version }} + test-pyproject-file-version: runs-on: ubuntu-latest steps: @@ -475,6 +492,7 @@ jobs: - test-default-version - test-specific-version - test-semver-range + - test-pep440-version - test-pyproject-file-version - test-malformed-pyproject-file-fallback - test-uv-file-version diff --git a/README.md b/README.md index 55ac8eb..f34ffb6 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ For an example workflow, see ### Install a version by supplying a semver range You can specify a [semver range](https://github.com/npm/node-semver?tab=readme-ov-file#ranges) +or [pep440 identifier](https://peps.python.org/pep-0440/#version-specifiers) to install the latest version that satisfies the range. ```yaml @@ -82,6 +83,13 @@ to install the latest version that satisfies the range. version: "0.4.x" ``` +```yaml +- name: Install a pep440-specifier-satisfying version of uv + uses: astral-sh/setup-uv@v5 + with: + version: ">=0.4.25,<0.5" +``` + ### Install a required-version You can specify a [required-version](https://docs.astral.sh/uv/reference/settings/#required-version) diff --git a/dist/setup/index.js b/dist/setup/index.js index 73f8ea5..f5d9014 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -76630,6 +76630,783 @@ class ReflectionTypeCheck { exports.ReflectionTypeCheck = ReflectionTypeCheck; +/***/ }), + +/***/ 63297: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { valid, clean, explain, parse } = __nccwpck_require__(99961); + +const { lt, le, eq, ne, ge, gt, compare, rcompare } = __nccwpck_require__(99469); + +const { + filter, + maxSatisfying, + minSatisfying, + RANGE_PATTERN, + satisfies, + validRange, +} = __nccwpck_require__(23185); + +const { major, minor, patch, inc } = __nccwpck_require__(6829); + +module.exports = { + // version + valid, + clean, + explain, + parse, + + // operator + lt, + le, + lte: le, + eq, + ne, + neq: ne, + ge, + gte: ge, + gt, + compare, + rcompare, + + // range + filter, + maxSatisfying, + minSatisfying, + RANGE_PATTERN, + satisfies, + validRange, + + // semantic + major, + minor, + patch, + inc, +}; + + +/***/ }), + +/***/ 99469: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { parse } = __nccwpck_require__(99961); + +module.exports = { + compare, + rcompare, + lt, + le, + eq, + ne, + ge, + gt, + '<': lt, + '<=': le, + '==': eq, + '!=': ne, + '>=': ge, + '>': gt, + '===': arbitrary, +}; + +function lt(version, other) { + return compare(version, other) < 0; +} + +function le(version, other) { + return compare(version, other) <= 0; +} + +function eq(version, other) { + return compare(version, other) === 0; +} + +function ne(version, other) { + return compare(version, other) !== 0; +} + +function ge(version, other) { + return compare(version, other) >= 0; +} + +function gt(version, other) { + return compare(version, other) > 0; +} + +function arbitrary(version, other) { + return version.toLowerCase() === other.toLowerCase(); +} + +function compare(version, other) { + const parsedVersion = parse(version); + const parsedOther = parse(other); + + const keyVersion = calculateKey(parsedVersion); + const keyOther = calculateKey(parsedOther); + + return pyCompare(keyVersion, keyOther); +} + +function rcompare(version, other) { + return -compare(version, other); +} + +// this logic is buitin in python, but we need to port it to js +// see https://stackoverflow.com/a/5292332/1438522 +function pyCompare(elemIn, otherIn) { + let elem = elemIn; + let other = otherIn; + if (elem === other) { + return 0; + } + if (Array.isArray(elem) !== Array.isArray(other)) { + elem = Array.isArray(elem) ? elem : [elem]; + other = Array.isArray(other) ? other : [other]; + } + if (Array.isArray(elem)) { + const len = Math.min(elem.length, other.length); + for (let i = 0; i < len; i += 1) { + const res = pyCompare(elem[i], other[i]); + if (res !== 0) { + return res; + } + } + return elem.length - other.length; + } + if (elem === -Infinity || other === Infinity) { + return -1; + } + if (elem === Infinity || other === -Infinity) { + return 1; + } + return elem < other ? -1 : 1; +} + +function calculateKey(input) { + const { epoch } = input; + let { release, pre, post, local, dev } = input; + // When we compare a release version, we want to compare it with all of the + // trailing zeros removed. So we'll use a reverse the list, drop all the now + // leading zeros until we come to something non zero, then take the rest + // re-reverse it back into the correct order and make it a tuple and use + // that for our sorting key. + release = release.concat(); + release.reverse(); + while (release.length && release[0] === 0) { + release.shift(); + } + release.reverse(); + + // We need to "trick" the sorting algorithm to put 1.0.dev0 before 1.0a0. + // We'll do this by abusing the pre segment, but we _only_ want to do this + // if there is !a pre or a post segment. If we have one of those then + // the normal sorting rules will handle this case correctly. + if (!pre && !post && dev) pre = -Infinity; + // Versions without a pre-release (except as noted above) should sort after + // those with one. + else if (!pre) pre = Infinity; + + // Versions without a post segment should sort before those with one. + if (!post) post = -Infinity; + + // Versions without a development segment should sort after those with one. + if (!dev) dev = Infinity; + + if (!local) { + // Versions without a local segment should sort before those with one. + local = -Infinity; + } else { + // Versions with a local segment need that segment parsed to implement + // the sorting rules in PEP440. + // - Alpha numeric segments sort before numeric segments + // - Alpha numeric segments sort lexicographically + // - Numeric segments sort numerically + // - Shorter versions sort before longer versions when the prefixes + // match exactly + local = local.map((i) => + Number.isNaN(Number(i)) ? [-Infinity, i] : [Number(i), ''], + ); + } + + return [epoch, release, pre, post, dev, local]; +} + + +/***/ }), + +/***/ 6829: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { explain, parse, stringify } = __nccwpck_require__(99961); + +// those notation are borrowed from semver +module.exports = { + major, + minor, + patch, + inc, +}; + +function major(input) { + const version = explain(input); + if (!version) { + throw new TypeError('Invalid Version: ' + input); + } + return version.release[0]; +} + +function minor(input) { + const version = explain(input); + if (!version) { + throw new TypeError('Invalid Version: ' + input); + } + if (version.release.length < 2) { + return 0; + } + return version.release[1]; +} + +function patch(input) { + const version = explain(input); + if (!version) { + throw new TypeError('Invalid Version: ' + input); + } + if (version.release.length < 3) { + return 0; + } + return version.release[2]; +} + +function inc(input, release, preReleaseIdentifier) { + let identifier = preReleaseIdentifier || `a`; + const version = parse(input); + + if (!version) { + return null; + } + + if ( + !['a', 'b', 'c', 'rc', 'alpha', 'beta', 'pre', 'preview'].includes( + identifier, + ) + ) { + return null; + } + + switch (release) { + case 'premajor': + { + const [majorVersion] = version.release; + version.release.fill(0); + version.release[0] = majorVersion + 1; + } + version.pre = [identifier, 0]; + delete version.post; + delete version.dev; + delete version.local; + break; + case 'preminor': + { + const [majorVersion, minorVersion = 0] = version.release; + version.release.fill(0); + version.release[0] = majorVersion; + version.release[1] = minorVersion + 1; + } + version.pre = [identifier, 0]; + delete version.post; + delete version.dev; + delete version.local; + break; + case 'prepatch': + { + const [majorVersion, minorVersion = 0, patchVersion = 0] = + version.release; + version.release.fill(0); + version.release[0] = majorVersion; + version.release[1] = minorVersion; + version.release[2] = patchVersion + 1; + } + version.pre = [identifier, 0]; + delete version.post; + delete version.dev; + delete version.local; + break; + case 'prerelease': + if (version.pre === null) { + const [majorVersion, minorVersion = 0, patchVersion = 0] = + version.release; + version.release.fill(0); + version.release[0] = majorVersion; + version.release[1] = minorVersion; + version.release[2] = patchVersion + 1; + version.pre = [identifier, 0]; + } else { + if (preReleaseIdentifier === undefined && version.pre !== null) { + [identifier] = version.pre; + } + + const [letter, number] = version.pre; + if (letter === identifier) { + version.pre = [letter, number + 1]; + } else { + version.pre = [identifier, 0]; + } + } + + delete version.post; + delete version.dev; + delete version.local; + break; + case 'major': + if ( + version.release.slice(1).some((value) => value !== 0) || + version.pre === null + ) { + const [majorVersion] = version.release; + version.release.fill(0); + version.release[0] = majorVersion + 1; + } + delete version.pre; + delete version.post; + delete version.dev; + delete version.local; + break; + case 'minor': + if ( + version.release.slice(2).some((value) => value !== 0) || + version.pre === null + ) { + const [majorVersion, minorVersion = 0] = version.release; + version.release.fill(0); + version.release[0] = majorVersion; + version.release[1] = minorVersion + 1; + } + delete version.pre; + delete version.post; + delete version.dev; + delete version.local; + break; + case 'patch': + if ( + version.release.slice(3).some((value) => value !== 0) || + version.pre === null + ) { + const [majorVersion, minorVersion = 0, patchVersion = 0] = + version.release; + version.release.fill(0); + version.release[0] = majorVersion; + version.release[1] = minorVersion; + version.release[2] = patchVersion + 1; + } + delete version.pre; + delete version.post; + delete version.dev; + delete version.local; + break; + default: + return null; + } + + return stringify(version); +} + + +/***/ }), + +/***/ 23185: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// This file is dual licensed under the terms of the Apache License, Version +// 2.0, and the BSD License. See the LICENSE file in the root of this repository +// for complete details. + +const { VERSION_PATTERN, explain: explainVersion } = __nccwpck_require__(99961); + +const Operator = __nccwpck_require__(99469); + +const RANGE_PATTERN = [ + '(?(===|~=|==|!=|<=|>=|<|>))', + '\\s*', + '(', + /* */ '(?(?:' + VERSION_PATTERN.replace(/\?<\w+>/g, '?:') + '))', + /* */ '(?\\.\\*)?', + /* */ '|', + /* */ '(?[^,;\\s)]+)', + ')', +].join(''); + +module.exports = { + RANGE_PATTERN, + parse, + satisfies, + filter, + validRange, + maxSatisfying, + minSatisfying, +}; + +const isEqualityOperator = (op) => ['==', '!=', '==='].includes(op); + +const rangeRegex = new RegExp('^' + RANGE_PATTERN + '$', 'i'); + +function parse(ranges) { + if (!ranges.trim()) { + return []; + } + + const specifiers = ranges + .split(',') + .map((range) => rangeRegex.exec(range.trim()) || {}) + .map(({ groups }) => { + if (!groups) { + return null; + } + + let { ...spec } = groups; + const { operator, version, prefix, legacy } = groups; + + if (version) { + spec = { ...spec, ...explainVersion(version) }; + if (operator === '~=') { + if (spec.release.length < 2) { + return null; + } + } + if (!isEqualityOperator(operator) && spec.local) { + return null; + } + + if (prefix) { + if (!isEqualityOperator(operator) || spec.dev || spec.local) { + return null; + } + } + } + if (legacy && operator !== '===') { + return null; + } + + return spec; + }); + + if (specifiers.filter(Boolean).length !== specifiers.length) { + return null; + } + + return specifiers; +} + +function filter(versions, specifier, options = {}) { + const filtered = pick(versions, specifier, options); + if (filtered.length === 0 && options.prereleases === undefined) { + return pick(versions, specifier, { prereleases: true }); + } + return filtered; +} + +function maxSatisfying(versions, range, options) { + const found = filter(versions, range, options).sort(Operator.compare); + return found.length === 0 ? null : found[found.length - 1]; +} + +function minSatisfying(versions, range, options) { + const found = filter(versions, range, options).sort(Operator.compare); + return found.length === 0 ? null : found[0]; +} + +function pick(versions, specifier, options) { + const parsed = parse(specifier); + + if (!parsed) { + return []; + } + + return versions.filter((version) => { + const explained = explainVersion(version); + + if (!parsed.length) { + return explained && !(explained.is_prerelease && !options.prereleases); + } + + return parsed.reduce((pass, spec) => { + if (!pass) { + return false; + } + return contains({ ...spec, ...options }, { version, explained }); + }, true); + }); +} + +function satisfies(version, specifier, options = {}) { + const filtered = pick([version], specifier, options); + + return filtered.length === 1; +} + +function arrayStartsWith(array, prefix) { + if (prefix.length > array.length) { + return false; + } + + for (let i = 0; i < prefix.length; i += 1) { + if (prefix[i] !== array[i]) { + return false; + } + } + + return true; +} + +function contains(specifier, input) { + const { explained } = input; + let { version } = input; + const { ...spec } = specifier; + + if (spec.prereleases === undefined) { + spec.prereleases = spec.is_prerelease; + } + + if (explained && explained.is_prerelease && !spec.prereleases) { + return false; + } + + if (spec.operator === '~=') { + let compatiblePrefix = spec.release.slice(0, -1).concat('*').join('.'); + if (spec.epoch) { + compatiblePrefix = spec.epoch + '!' + compatiblePrefix; + } + return satisfies(version, `>=${spec.version}, ==${compatiblePrefix}`); + } + + if (spec.prefix) { + const isMatching = + explained.epoch === spec.epoch && + arrayStartsWith(explained.release, spec.release); + const isEquality = spec.operator !== '!='; + return isEquality ? isMatching : !isMatching; + } + + if (explained) + if (explained.local && spec.version) { + version = explained.public; + spec.version = explainVersion(spec.version).public; + } + + if (spec.operator === '<' || spec.operator === '>') { + // simplified version of https://www.python.org/dev/peps/pep-0440/#exclusive-ordered-comparison + if (Operator.eq(spec.release.join('.'), explained.release.join('.'))) { + return false; + } + } + + const op = Operator[spec.operator]; + return op(version, spec.version || spec.legacy); +} + +function validRange(specifier) { + return Boolean(parse(specifier)); +} + + +/***/ }), + +/***/ 99961: +/***/ ((module) => { + +const VERSION_PATTERN = [ + 'v?', + '(?:', + /* */ '(?:(?[0-9]+)!)?', // epoch + /* */ '(?[0-9]+(?:\\.[0-9]+)*)', // release segment + /* */ '(?
', // pre-release
+  /*    */ '[-_\\.]?',
+  /*    */ '(?(a|b|c|rc|alpha|beta|pre|preview))',
+  /*    */ '[-_\\.]?',
+  /*    */ '(?[0-9]+)?',
+  /* */ ')?',
+  /* */ '(?', // post release
+  /*    */ '(?:-(?[0-9]+))',
+  /*    */ '|',
+  /*    */ '(?:',
+  /*        */ '[-_\\.]?',
+  /*        */ '(?post|rev|r)',
+  /*        */ '[-_\\.]?',
+  /*        */ '(?[0-9]+)?',
+  /*    */ ')',
+  /* */ ')?',
+  /* */ '(?', // dev release
+  /*    */ '[-_\\.]?',
+  /*    */ '(?dev)',
+  /*    */ '[-_\\.]?',
+  /*    */ '(?[0-9]+)?',
+  /* */ ')?',
+  ')',
+  '(?:\\+(?[a-z0-9]+(?:[-_\\.][a-z0-9]+)*))?', // local version
+].join('');
+
+module.exports = {
+  VERSION_PATTERN,
+  valid,
+  clean,
+  explain,
+  parse,
+  stringify,
+};
+
+const validRegex = new RegExp('^' + VERSION_PATTERN + '$', 'i');
+
+function valid(version) {
+  return validRegex.test(version) ? version : null;
+}
+
+const cleanRegex = new RegExp('^\\s*' + VERSION_PATTERN + '\\s*$', 'i');
+function clean(version) {
+  return stringify(parse(version, cleanRegex));
+}
+
+function parse(version, regex) {
+  // Validate the version and parse it into pieces
+  const { groups } = (regex || validRegex).exec(version) || {};
+  if (!groups) {
+    return null;
+  }
+
+  // Store the parsed out pieces of the version
+  const parsed = {
+    epoch: Number(groups.epoch ? groups.epoch : 0),
+    release: groups.release.split('.').map(Number),
+    pre: normalize_letter_version(groups.pre_l, groups.pre_n),
+    post: normalize_letter_version(
+      groups.post_l,
+      groups.post_n1 || groups.post_n2,
+    ),
+    dev: normalize_letter_version(groups.dev_l, groups.dev_n),
+    local: parse_local_version(groups.local),
+  };
+
+  return parsed;
+}
+
+function stringify(parsed) {
+  if (!parsed) {
+    return null;
+  }
+  const { epoch, release, pre, post, dev, local } = parsed;
+  const parts = [];
+
+  // Epoch
+  if (epoch !== 0) {
+    parts.push(`${epoch}!`);
+  }
+  // Release segment
+  parts.push(release.join('.'));
+
+  // Pre-release
+  if (pre) {
+    parts.push(pre.join(''));
+  }
+  // Post-release
+  if (post) {
+    parts.push('.' + post.join(''));
+  }
+  // Development release
+  if (dev) {
+    parts.push('.' + dev.join(''));
+  }
+  // Local version segment
+  if (local) {
+    parts.push(`+${local}`);
+  }
+  return parts.join('');
+}
+
+function normalize_letter_version(letterIn, numberIn) {
+  let letter = letterIn;
+  let number = numberIn;
+  if (letter) {
+    // We consider there to be an implicit 0 in a pre-release if there is
+    // not a numeral associated with it.
+    if (!number) {
+      number = 0;
+    }
+    // We normalize any letters to their lower case form
+    letter = letter.toLowerCase();
+
+    // We consider some words to be alternate spellings of other words and
+    // in those cases we want to normalize the spellings to our preferred
+    // spelling.
+    if (letter === 'alpha') {
+      letter = 'a';
+    } else if (letter === 'beta') {
+      letter = 'b';
+    } else if (['c', 'pre', 'preview'].includes(letter)) {
+      letter = 'rc';
+    } else if (['rev', 'r'].includes(letter)) {
+      letter = 'post';
+    }
+    return [letter, Number(number)];
+  }
+  if (!letter && number) {
+    // We assume if we are given a number, but we are not given a letter
+    // then this is using the implicit post release syntax (e.g. 1.0-1)
+    letter = 'post';
+
+    return [letter, Number(number)];
+  }
+  return null;
+}
+
+function parse_local_version(local) {
+  /*
+    Takes a string like abc.1.twelve and turns it into("abc", 1, "twelve").
+    */
+  if (local) {
+    return local
+      .split(/[._-]/)
+      .map((part) =>
+        Number.isNaN(Number(part)) ? part.toLowerCase() : Number(part),
+      );
+  }
+  return null;
+}
+
+function explain(version) {
+  const parsed = parse(version);
+  if (!parsed) {
+    return parsed;
+  }
+  const { epoch, release, pre, post, dev, local } = parsed;
+
+  let base_version = '';
+  if (epoch !== 0) {
+    base_version += epoch + '!';
+  }
+  base_version += release.join('.');
+
+  const is_prerelease = Boolean(dev || pre);
+  const is_devrelease = Boolean(dev);
+  const is_postrelease = Boolean(post);
+
+  // return
+
+  return {
+    epoch,
+    release,
+    pre,
+    post: post ? post[1] : post,
+    dev: dev ? dev[1] : dev,
+    local: local ? local.join('.') : local,
+    public: stringify(parsed).split('+', 1)[0],
+    base_version,
+    is_prerelease,
+    is_devrelease,
+    is_postrelease,
+  };
+}
+
+
 /***/ }),
 
 /***/ 31324:
@@ -123171,6 +123948,7 @@ exports.resolveVersion = resolveVersion;
 const core = __importStar(__nccwpck_require__(37484));
 const tc = __importStar(__nccwpck_require__(33472));
 const path = __importStar(__nccwpck_require__(76760));
+const pep440 = __importStar(__nccwpck_require__(63297));
 const node_fs_1 = __nccwpck_require__(73024);
 const constants_1 = __nccwpck_require__(56156);
 const checksum_1 = __nccwpck_require__(95391);
@@ -123222,8 +124000,8 @@ async function resolveVersion(versionInput, githubToken) {
     }
     const availableVersions = await getAvailableVersions(githubToken);
     core.debug(`Available versions: ${availableVersions}`);
-    const resolvedVersion = tc.evaluateVersions(availableVersions, version);
-    if (resolvedVersion === "") {
+    const resolvedVersion = maxSatisfying(availableVersions, version);
+    if (resolvedVersion === undefined) {
         throw new Error(`No version found for ${version}`);
     }
     return resolvedVersion;
@@ -123281,6 +124059,19 @@ async function getLatestRelease(octokit) {
     });
     return latestRelease;
 }
+function maxSatisfying(versions, version) {
+    const maxSemver = tc.evaluateVersions(versions, version);
+    if (maxSemver !== "") {
+        core.debug(`Found a version that satisfies the semver range: ${maxSemver}`);
+        return maxSemver;
+    }
+    const maxPep440 = pep440.maxSatisfying(versions, version);
+    if (maxPep440 !== null) {
+        core.debug(`Found a version that satisfies the pep440 specifier: ${maxPep440}`);
+        return maxPep440;
+    }
+    return undefined;
+}
 
 
 /***/ }),
diff --git a/package-lock.json b/package-lock.json
index cfc9462..00e9d87 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,6 +18,7 @@
         "@octokit/core": "^6.1.4",
         "@octokit/plugin-paginate-rest": "^11.4.3",
         "@octokit/plugin-rest-endpoint-methods": "^13.3.1",
+        "@renovatebot/pep440": "^4.1.0",
         "smol-toml": "^1.3.1",
         "undici": "^7.5.0"
       },
@@ -1705,6 +1706,16 @@
         "@protobuf-ts/runtime": "^2.9.4"
       }
     },
+    "node_modules/@renovatebot/pep440": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/@renovatebot/pep440/-/pep440-4.1.0.tgz",
+      "integrity": "sha512-mo2RxnOSp78Njt1HmgMwjl6FapP4OyIS8HypJlymCvN7AIV2Xf5PmZfl/E3O1WWZ6IjKrfsEAaPWFMi8tnkq3g==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^20.9.0 || ^22.11.0",
+        "pnpm": "^9.0.0"
+      }
+    },
     "node_modules/@sinclair/typebox": {
       "version": "0.27.8",
       "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
@@ -5933,6 +5944,11 @@
         "@protobuf-ts/runtime": "^2.9.4"
       }
     },
+    "@renovatebot/pep440": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/@renovatebot/pep440/-/pep440-4.1.0.tgz",
+      "integrity": "sha512-mo2RxnOSp78Njt1HmgMwjl6FapP4OyIS8HypJlymCvN7AIV2Xf5PmZfl/E3O1WWZ6IjKrfsEAaPWFMi8tnkq3g=="
+    },
     "@sinclair/typebox": {
       "version": "0.27.8",
       "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
diff --git a/package.json b/package.json
index 345e4dd..a41f677 100644
--- a/package.json
+++ b/package.json
@@ -32,8 +32,9 @@
     "@octokit/core": "^6.1.4",
     "@octokit/plugin-paginate-rest": "^11.4.3",
     "@octokit/plugin-rest-endpoint-methods": "^13.3.1",
-    "undici": "^7.5.0",
-    "smol-toml": "^1.3.1"
+    "@renovatebot/pep440": "^4.1.0",
+    "smol-toml": "^1.3.1",
+    "undici": "^7.5.0"
   },
   "devDependencies": {
     "@biomejs/biome": "1.9.4",
diff --git a/src/download/download-version.ts b/src/download/download-version.ts
index 0be5bd6..010e538 100644
--- a/src/download/download-version.ts
+++ b/src/download/download-version.ts
@@ -1,6 +1,7 @@
 import * as core from "@actions/core";
 import * as tc from "@actions/tool-cache";
 import * as path from "node:path";
+import * as pep440 from "@renovatebot/pep440";
 import { promises as fs } from "node:fs";
 import { OWNER, REPO, TOOL_CACHE_NAME } from "../utils/constants";
 import type { Architecture, Platform } from "../utils/platforms";
@@ -85,8 +86,8 @@ export async function resolveVersion(
   }
   const availableVersions = await getAvailableVersions(githubToken);
   core.debug(`Available versions: ${availableVersions}`);
-  const resolvedVersion = tc.evaluateVersions(availableVersions, version);
-  if (resolvedVersion === "") {
+  const resolvedVersion = maxSatisfying(availableVersions, version);
+  if (resolvedVersion === undefined) {
     throw new Error(`No version found for ${version}`);
   }
   return resolvedVersion;
@@ -154,3 +155,22 @@ async function getLatestRelease(octokit: InstanceType) {
   });
   return latestRelease;
 }
+
+function maxSatisfying(
+  versions: string[],
+  version: string,
+): string | undefined {
+  const maxSemver = tc.evaluateVersions(versions, version);
+  if (maxSemver !== "") {
+    core.debug(`Found a version that satisfies the semver range: ${maxSemver}`);
+    return maxSemver;
+  }
+  const maxPep440 = pep440.maxSatisfying(versions, version);
+  if (maxPep440 !== null) {
+    core.debug(
+      `Found a version that satisfies the pep440 specifier: ${maxPep440}`,
+    );
+    return maxPep440;
+  }
+  return undefined;
+}

From 0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 Mon Sep 17 00:00:00 2001
From: Kevin Stillhammer 
Date: Sun, 30 Mar 2025 18:25:01 +0200
Subject: [PATCH 05/12] Add pep440 to docs header (#355)

---
 README.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index f34ffb6..bfec0b6 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
   - [Install a required-version or latest (default)](#install-a-required-version-or-latest-default)
   - [Install the latest version](#install-the-latest-version)
   - [Install a specific version](#install-a-specific-version)
-  - [Install a version by supplying a semver range](#install-a-version-by-supplying-a-semver-range)
+  - [Install a version by supplying a semver range or pep440 identifier](#install-a-version-by-supplying-a-semver-range-or-pep440-identifier)
   - [Install a required-version](#install-a-required-version)
   - [Python version](#python-version)
   - [Validate checksum](#validate-checksum)
@@ -63,7 +63,7 @@ For an example workflow, see
     version: "0.4.4"
 ```
 
-### Install a version by supplying a semver range
+### Install a version by supplying a semver range or pep440 identifier
 
 You can specify a [semver range](https://github.com/npm/node-semver?tab=readme-ov-file#ranges)
 or [pep440 identifier](https://peps.python.org/pep-0440/#version-specifiers)

From 9bf3815166badcc9fdb9d1c33bbe3613c295f3cf Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
 <41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 31 Mar 2025 05:59:26 +0000
Subject: [PATCH 06/12] chore: update known checksums for 0.6.11 (#357)

chore: update known checksums for 0.6.11

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
---
 dist/setup/index.js                      | 17 ++++++++++++
 dist/update-known-checksums/index.js     | 17 ++++++++++++
 src/download/checksum/known-checksums.ts | 34 ++++++++++++++++++++++++
 3 files changed, 68 insertions(+)

diff --git a/dist/setup/index.js b/dist/setup/index.js
index f5d9014..264e368 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -121188,6 +121188,23 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
 exports.KNOWN_CHECKSUMS = void 0;
 // AUTOGENERATED_DO_NOT_EDIT
 exports.KNOWN_CHECKSUMS = {
+    "aarch64-apple-darwin-0.6.11": "a5b14a92448b908d1a5415f2a49522010fef8972695e2f7bbb4e5c5f88024573",
+    "aarch64-pc-windows-msvc-0.6.11": "858e523d9498a332aab093852c30c524bbd94622137dd6f773d19da14ac920b4",
+    "aarch64-unknown-linux-gnu-0.6.11": "5384098938893f060b8b47e606918c271a419b52eedda1546a4d6febae4b0c06",
+    "aarch64-unknown-linux-musl-0.6.11": "de20c247ef6a6bc0948e611ace3f3f321c098d7bf75b737f169c1db06b4f4d69",
+    "arm-unknown-linux-musleabihf-0.6.11": "76a1558e2cb8d0e5e646a0cf8a204b53d3779221bea3af50b204c8d28532daa7",
+    "armv7-unknown-linux-gnueabihf-0.6.11": "5abacc141dabb6071fcc3a19a301874083c6cc4a36d6eb6b0654a276efbfd33b",
+    "armv7-unknown-linux-musleabihf-0.6.11": "cf05ab1fe44494cc490ec5c29578e200a3c195b395e67fe62d45be9a4c897d06",
+    "i686-pc-windows-msvc-0.6.11": "331e94f1db12fa92266f764f63586d8c18e6cea5d37d430af2eb7673f108e874",
+    "i686-unknown-linux-gnu-0.6.11": "b9d193f28736c3166f533c61fc4a2e8e8a4c7961c6bd46e17c3db66f750ef4b6",
+    "i686-unknown-linux-musl-0.6.11": "dfa735baacc13ba9962fb9b7167599407aa733bfc7853824a785773769c58ed5",
+    "powerpc64-unknown-linux-gnu-0.6.11": "b79060dc0726a1fc8a4458a80fb1ce0489198dd3ad334fe54bb7926e473750ed",
+    "powerpc64le-unknown-linux-gnu-0.6.11": "ebd219d0b5f0a60a584ebb88e1379c616e746cabaaf79608d54be5919d742ee3",
+    "s390x-unknown-linux-gnu-0.6.11": "3b5563127303c16e0531c1fd13356763decc0ea91b860eb5f63c3108a275aa2c",
+    "x86_64-apple-darwin-0.6.11": "099b163ce5098558ccdc1df54bdcf8b02eb11364458095e95f8dd54ff8984d96",
+    "x86_64-pc-windows-msvc-0.6.11": "292ade13fc2e1530d0021ec7fd42526df58a8436974b8a5b829685db856e667e",
+    "x86_64-unknown-linux-gnu-0.6.11": "c19b3be7ac26f8b211f7a5f07f01a77fd4d2b6205ff257790770a585f7f5bda4",
+    "x86_64-unknown-linux-musl-0.6.11": "23aabfa5d0bde26d151eaf31a392595a5c88e74e0bc804351b02fbb0328f8aaa",
     "aarch64-apple-darwin-0.6.10": "82bf2cb3b34ab504eb08486093c9e97cfaf5299da4d4a60e14b6642a2a2e9b8e",
     "aarch64-pc-windows-msvc-0.6.10": "afc3c1ed78273843417b781fd30b263ba417dcfd05ef9a65be50eec7aa500f20",
     "aarch64-unknown-linux-gnu-0.6.10": "527f0adc3bcf841a3a0df0d3fef8db277b8afffac588d80948638719b611a8c2",
diff --git a/dist/update-known-checksums/index.js b/dist/update-known-checksums/index.js
index 5deb648..ff92aa3 100644
--- a/dist/update-known-checksums/index.js
+++ b/dist/update-known-checksums/index.js
@@ -58847,6 +58847,23 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
 exports.KNOWN_CHECKSUMS = void 0;
 // AUTOGENERATED_DO_NOT_EDIT
 exports.KNOWN_CHECKSUMS = {
+    "aarch64-apple-darwin-0.6.11": "a5b14a92448b908d1a5415f2a49522010fef8972695e2f7bbb4e5c5f88024573",
+    "aarch64-pc-windows-msvc-0.6.11": "858e523d9498a332aab093852c30c524bbd94622137dd6f773d19da14ac920b4",
+    "aarch64-unknown-linux-gnu-0.6.11": "5384098938893f060b8b47e606918c271a419b52eedda1546a4d6febae4b0c06",
+    "aarch64-unknown-linux-musl-0.6.11": "de20c247ef6a6bc0948e611ace3f3f321c098d7bf75b737f169c1db06b4f4d69",
+    "arm-unknown-linux-musleabihf-0.6.11": "76a1558e2cb8d0e5e646a0cf8a204b53d3779221bea3af50b204c8d28532daa7",
+    "armv7-unknown-linux-gnueabihf-0.6.11": "5abacc141dabb6071fcc3a19a301874083c6cc4a36d6eb6b0654a276efbfd33b",
+    "armv7-unknown-linux-musleabihf-0.6.11": "cf05ab1fe44494cc490ec5c29578e200a3c195b395e67fe62d45be9a4c897d06",
+    "i686-pc-windows-msvc-0.6.11": "331e94f1db12fa92266f764f63586d8c18e6cea5d37d430af2eb7673f108e874",
+    "i686-unknown-linux-gnu-0.6.11": "b9d193f28736c3166f533c61fc4a2e8e8a4c7961c6bd46e17c3db66f750ef4b6",
+    "i686-unknown-linux-musl-0.6.11": "dfa735baacc13ba9962fb9b7167599407aa733bfc7853824a785773769c58ed5",
+    "powerpc64-unknown-linux-gnu-0.6.11": "b79060dc0726a1fc8a4458a80fb1ce0489198dd3ad334fe54bb7926e473750ed",
+    "powerpc64le-unknown-linux-gnu-0.6.11": "ebd219d0b5f0a60a584ebb88e1379c616e746cabaaf79608d54be5919d742ee3",
+    "s390x-unknown-linux-gnu-0.6.11": "3b5563127303c16e0531c1fd13356763decc0ea91b860eb5f63c3108a275aa2c",
+    "x86_64-apple-darwin-0.6.11": "099b163ce5098558ccdc1df54bdcf8b02eb11364458095e95f8dd54ff8984d96",
+    "x86_64-pc-windows-msvc-0.6.11": "292ade13fc2e1530d0021ec7fd42526df58a8436974b8a5b829685db856e667e",
+    "x86_64-unknown-linux-gnu-0.6.11": "c19b3be7ac26f8b211f7a5f07f01a77fd4d2b6205ff257790770a585f7f5bda4",
+    "x86_64-unknown-linux-musl-0.6.11": "23aabfa5d0bde26d151eaf31a392595a5c88e74e0bc804351b02fbb0328f8aaa",
     "aarch64-apple-darwin-0.6.10": "82bf2cb3b34ab504eb08486093c9e97cfaf5299da4d4a60e14b6642a2a2e9b8e",
     "aarch64-pc-windows-msvc-0.6.10": "afc3c1ed78273843417b781fd30b263ba417dcfd05ef9a65be50eec7aa500f20",
     "aarch64-unknown-linux-gnu-0.6.10": "527f0adc3bcf841a3a0df0d3fef8db277b8afffac588d80948638719b611a8c2",
diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts
index 9a2eea9..faab11a 100644
--- a/src/download/checksum/known-checksums.ts
+++ b/src/download/checksum/known-checksums.ts
@@ -1,5 +1,39 @@
 // AUTOGENERATED_DO_NOT_EDIT
 export const KNOWN_CHECKSUMS: { [key: string]: string } = {
+  "aarch64-apple-darwin-0.6.11":
+    "a5b14a92448b908d1a5415f2a49522010fef8972695e2f7bbb4e5c5f88024573",
+  "aarch64-pc-windows-msvc-0.6.11":
+    "858e523d9498a332aab093852c30c524bbd94622137dd6f773d19da14ac920b4",
+  "aarch64-unknown-linux-gnu-0.6.11":
+    "5384098938893f060b8b47e606918c271a419b52eedda1546a4d6febae4b0c06",
+  "aarch64-unknown-linux-musl-0.6.11":
+    "de20c247ef6a6bc0948e611ace3f3f321c098d7bf75b737f169c1db06b4f4d69",
+  "arm-unknown-linux-musleabihf-0.6.11":
+    "76a1558e2cb8d0e5e646a0cf8a204b53d3779221bea3af50b204c8d28532daa7",
+  "armv7-unknown-linux-gnueabihf-0.6.11":
+    "5abacc141dabb6071fcc3a19a301874083c6cc4a36d6eb6b0654a276efbfd33b",
+  "armv7-unknown-linux-musleabihf-0.6.11":
+    "cf05ab1fe44494cc490ec5c29578e200a3c195b395e67fe62d45be9a4c897d06",
+  "i686-pc-windows-msvc-0.6.11":
+    "331e94f1db12fa92266f764f63586d8c18e6cea5d37d430af2eb7673f108e874",
+  "i686-unknown-linux-gnu-0.6.11":
+    "b9d193f28736c3166f533c61fc4a2e8e8a4c7961c6bd46e17c3db66f750ef4b6",
+  "i686-unknown-linux-musl-0.6.11":
+    "dfa735baacc13ba9962fb9b7167599407aa733bfc7853824a785773769c58ed5",
+  "powerpc64-unknown-linux-gnu-0.6.11":
+    "b79060dc0726a1fc8a4458a80fb1ce0489198dd3ad334fe54bb7926e473750ed",
+  "powerpc64le-unknown-linux-gnu-0.6.11":
+    "ebd219d0b5f0a60a584ebb88e1379c616e746cabaaf79608d54be5919d742ee3",
+  "s390x-unknown-linux-gnu-0.6.11":
+    "3b5563127303c16e0531c1fd13356763decc0ea91b860eb5f63c3108a275aa2c",
+  "x86_64-apple-darwin-0.6.11":
+    "099b163ce5098558ccdc1df54bdcf8b02eb11364458095e95f8dd54ff8984d96",
+  "x86_64-pc-windows-msvc-0.6.11":
+    "292ade13fc2e1530d0021ec7fd42526df58a8436974b8a5b829685db856e667e",
+  "x86_64-unknown-linux-gnu-0.6.11":
+    "c19b3be7ac26f8b211f7a5f07f01a77fd4d2b6205ff257790770a585f7f5bda4",
+  "x86_64-unknown-linux-musl-0.6.11":
+    "23aabfa5d0bde26d151eaf31a392595a5c88e74e0bc804351b02fbb0328f8aaa",
   "aarch64-apple-darwin-0.6.10":
     "82bf2cb3b34ab504eb08486093c9e97cfaf5299da4d4a60e14b6642a2a2e9b8e",
   "aarch64-pc-windows-msvc-0.6.10":

From 839076380bea7d7e5115ed87d57d4f8606bda938 Mon Sep 17 00:00:00 2001
From: Kevin Stillhammer 
Date: Mon, 31 Mar 2025 08:49:49 +0200
Subject: [PATCH 07/12] Fix pep440 identifier instead of specifier (#358)

---
 README.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index bfec0b6..567ebdb 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
   - [Install a required-version or latest (default)](#install-a-required-version-or-latest-default)
   - [Install the latest version](#install-the-latest-version)
   - [Install a specific version](#install-a-specific-version)
-  - [Install a version by supplying a semver range or pep440 identifier](#install-a-version-by-supplying-a-semver-range-or-pep440-identifier)
+  - [Install a version by supplying a semver range or pep440 specifier](#install-a-version-by-supplying-a-semver-range-or-pep440-specifier)
   - [Install a required-version](#install-a-required-version)
   - [Python version](#python-version)
   - [Validate checksum](#validate-checksum)
@@ -63,10 +63,10 @@ For an example workflow, see
     version: "0.4.4"
 ```
 
-### Install a version by supplying a semver range or pep440 identifier
+### Install a version by supplying a semver range or pep440 specifier
 
 You can specify a [semver range](https://github.com/npm/node-semver?tab=readme-ov-file#ranges)
-or [pep440 identifier](https://peps.python.org/pep-0440/#version-specifiers)
+or [pep440 specifier](https://peps.python.org/pep-0440/#version-specifiers)
 to install the latest version that satisfies the range.
 
 ```yaml

From 9e2c33a08245c3c948a6359a66dee8ba3641bf50 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
 <41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 3 Apr 2025 05:49:37 +0000
Subject: [PATCH 08/12] chore: update known checksums for 0.6.12 (#362)

chore: update known checksums for 0.6.12

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
---
 dist/setup/index.js                      | 17 ++++++++++++
 dist/update-known-checksums/index.js     | 17 ++++++++++++
 src/download/checksum/known-checksums.ts | 34 ++++++++++++++++++++++++
 3 files changed, 68 insertions(+)

diff --git a/dist/setup/index.js b/dist/setup/index.js
index 264e368..d09ebdb 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -121188,6 +121188,23 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
 exports.KNOWN_CHECKSUMS = void 0;
 // AUTOGENERATED_DO_NOT_EDIT
 exports.KNOWN_CHECKSUMS = {
+    "aarch64-apple-darwin-0.6.12": "fab8db5b62da1e945524b8d1a9d4946fcc6d9b77ec0cab423d953e82159967ac",
+    "aarch64-pc-windows-msvc-0.6.12": "d72d8cf0633dc40198a868e906442bc6bacfa38c3b807c26bcbf3fc364af5d96",
+    "aarch64-unknown-linux-gnu-0.6.12": "d867553e5ea19f9cea08e564179d909c69ecfce5e7e382099d1844dbf1c9878c",
+    "aarch64-unknown-linux-musl-0.6.12": "e999ae0679bfabe8a1e6343b8b204a531a6c851e315caff9b326f34182884af6",
+    "arm-unknown-linux-musleabihf-0.6.12": "da8d0700ec5e0cb0b2f20cc20834b48d5927197042e49bea5eef7fd139d72fe9",
+    "armv7-unknown-linux-gnueabihf-0.6.12": "b5dedaca5fbb46f412c5426102eec7c9f10003a67dd41b943232e4a2b6a5cc16",
+    "armv7-unknown-linux-musleabihf-0.6.12": "8fb6c1b16f8b3c2aa4073cd02729432f9afd9389f110850aed8228464fa37398",
+    "i686-pc-windows-msvc-0.6.12": "23431d1a798aee234bd7b271bce306fbd760c91d98e19a314ddd890a065aff83",
+    "i686-unknown-linux-gnu-0.6.12": "d0774e847de6c0fe6a9c3aba44b7d400261d01171ae32da60c472eb410691785",
+    "i686-unknown-linux-musl-0.6.12": "02e4503b244cbb18d2fa14b3a7e9433fe437e767ffcbfc39c5f0fdff9b8dd65e",
+    "powerpc64-unknown-linux-gnu-0.6.12": "046b43cf8af74d8892e9559e8b3181ec1e4045a4910a4dfdd00b110694c93188",
+    "powerpc64le-unknown-linux-gnu-0.6.12": "e61ba76fa6dfd6041c985881c024385c31d544d6a182d1a050da7594438f073f",
+    "s390x-unknown-linux-gnu-0.6.12": "6eae67730009eb4f8ad7a4e5733ab69b6c4dcb21b482f4567015e3e6d0729357",
+    "x86_64-apple-darwin-0.6.12": "5b6ee08766de11dc49ee9e292333e8b46ef2ceaaa3ebb0388467e114fca2ed8c",
+    "x86_64-pc-windows-msvc-0.6.12": "30fdf26c209f0cb7c97d3b08a26ab4e78ce5ae0e031b88798cbaccc0f24f452b",
+    "x86_64-unknown-linux-gnu-0.6.12": "eec3ccf53616e00905279a302bc043451bd96ca71a159a2ac3199452ac914c26",
+    "x86_64-unknown-linux-musl-0.6.12": "25f055a556576003fefc0f5fd213bf3c6df1824d4c7fc35e6361fbecc420139f",
     "aarch64-apple-darwin-0.6.11": "a5b14a92448b908d1a5415f2a49522010fef8972695e2f7bbb4e5c5f88024573",
     "aarch64-pc-windows-msvc-0.6.11": "858e523d9498a332aab093852c30c524bbd94622137dd6f773d19da14ac920b4",
     "aarch64-unknown-linux-gnu-0.6.11": "5384098938893f060b8b47e606918c271a419b52eedda1546a4d6febae4b0c06",
diff --git a/dist/update-known-checksums/index.js b/dist/update-known-checksums/index.js
index ff92aa3..f6380fa 100644
--- a/dist/update-known-checksums/index.js
+++ b/dist/update-known-checksums/index.js
@@ -58847,6 +58847,23 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
 exports.KNOWN_CHECKSUMS = void 0;
 // AUTOGENERATED_DO_NOT_EDIT
 exports.KNOWN_CHECKSUMS = {
+    "aarch64-apple-darwin-0.6.12": "fab8db5b62da1e945524b8d1a9d4946fcc6d9b77ec0cab423d953e82159967ac",
+    "aarch64-pc-windows-msvc-0.6.12": "d72d8cf0633dc40198a868e906442bc6bacfa38c3b807c26bcbf3fc364af5d96",
+    "aarch64-unknown-linux-gnu-0.6.12": "d867553e5ea19f9cea08e564179d909c69ecfce5e7e382099d1844dbf1c9878c",
+    "aarch64-unknown-linux-musl-0.6.12": "e999ae0679bfabe8a1e6343b8b204a531a6c851e315caff9b326f34182884af6",
+    "arm-unknown-linux-musleabihf-0.6.12": "da8d0700ec5e0cb0b2f20cc20834b48d5927197042e49bea5eef7fd139d72fe9",
+    "armv7-unknown-linux-gnueabihf-0.6.12": "b5dedaca5fbb46f412c5426102eec7c9f10003a67dd41b943232e4a2b6a5cc16",
+    "armv7-unknown-linux-musleabihf-0.6.12": "8fb6c1b16f8b3c2aa4073cd02729432f9afd9389f110850aed8228464fa37398",
+    "i686-pc-windows-msvc-0.6.12": "23431d1a798aee234bd7b271bce306fbd760c91d98e19a314ddd890a065aff83",
+    "i686-unknown-linux-gnu-0.6.12": "d0774e847de6c0fe6a9c3aba44b7d400261d01171ae32da60c472eb410691785",
+    "i686-unknown-linux-musl-0.6.12": "02e4503b244cbb18d2fa14b3a7e9433fe437e767ffcbfc39c5f0fdff9b8dd65e",
+    "powerpc64-unknown-linux-gnu-0.6.12": "046b43cf8af74d8892e9559e8b3181ec1e4045a4910a4dfdd00b110694c93188",
+    "powerpc64le-unknown-linux-gnu-0.6.12": "e61ba76fa6dfd6041c985881c024385c31d544d6a182d1a050da7594438f073f",
+    "s390x-unknown-linux-gnu-0.6.12": "6eae67730009eb4f8ad7a4e5733ab69b6c4dcb21b482f4567015e3e6d0729357",
+    "x86_64-apple-darwin-0.6.12": "5b6ee08766de11dc49ee9e292333e8b46ef2ceaaa3ebb0388467e114fca2ed8c",
+    "x86_64-pc-windows-msvc-0.6.12": "30fdf26c209f0cb7c97d3b08a26ab4e78ce5ae0e031b88798cbaccc0f24f452b",
+    "x86_64-unknown-linux-gnu-0.6.12": "eec3ccf53616e00905279a302bc043451bd96ca71a159a2ac3199452ac914c26",
+    "x86_64-unknown-linux-musl-0.6.12": "25f055a556576003fefc0f5fd213bf3c6df1824d4c7fc35e6361fbecc420139f",
     "aarch64-apple-darwin-0.6.11": "a5b14a92448b908d1a5415f2a49522010fef8972695e2f7bbb4e5c5f88024573",
     "aarch64-pc-windows-msvc-0.6.11": "858e523d9498a332aab093852c30c524bbd94622137dd6f773d19da14ac920b4",
     "aarch64-unknown-linux-gnu-0.6.11": "5384098938893f060b8b47e606918c271a419b52eedda1546a4d6febae4b0c06",
diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts
index faab11a..001eb09 100644
--- a/src/download/checksum/known-checksums.ts
+++ b/src/download/checksum/known-checksums.ts
@@ -1,5 +1,39 @@
 // AUTOGENERATED_DO_NOT_EDIT
 export const KNOWN_CHECKSUMS: { [key: string]: string } = {
+  "aarch64-apple-darwin-0.6.12":
+    "fab8db5b62da1e945524b8d1a9d4946fcc6d9b77ec0cab423d953e82159967ac",
+  "aarch64-pc-windows-msvc-0.6.12":
+    "d72d8cf0633dc40198a868e906442bc6bacfa38c3b807c26bcbf3fc364af5d96",
+  "aarch64-unknown-linux-gnu-0.6.12":
+    "d867553e5ea19f9cea08e564179d909c69ecfce5e7e382099d1844dbf1c9878c",
+  "aarch64-unknown-linux-musl-0.6.12":
+    "e999ae0679bfabe8a1e6343b8b204a531a6c851e315caff9b326f34182884af6",
+  "arm-unknown-linux-musleabihf-0.6.12":
+    "da8d0700ec5e0cb0b2f20cc20834b48d5927197042e49bea5eef7fd139d72fe9",
+  "armv7-unknown-linux-gnueabihf-0.6.12":
+    "b5dedaca5fbb46f412c5426102eec7c9f10003a67dd41b943232e4a2b6a5cc16",
+  "armv7-unknown-linux-musleabihf-0.6.12":
+    "8fb6c1b16f8b3c2aa4073cd02729432f9afd9389f110850aed8228464fa37398",
+  "i686-pc-windows-msvc-0.6.12":
+    "23431d1a798aee234bd7b271bce306fbd760c91d98e19a314ddd890a065aff83",
+  "i686-unknown-linux-gnu-0.6.12":
+    "d0774e847de6c0fe6a9c3aba44b7d400261d01171ae32da60c472eb410691785",
+  "i686-unknown-linux-musl-0.6.12":
+    "02e4503b244cbb18d2fa14b3a7e9433fe437e767ffcbfc39c5f0fdff9b8dd65e",
+  "powerpc64-unknown-linux-gnu-0.6.12":
+    "046b43cf8af74d8892e9559e8b3181ec1e4045a4910a4dfdd00b110694c93188",
+  "powerpc64le-unknown-linux-gnu-0.6.12":
+    "e61ba76fa6dfd6041c985881c024385c31d544d6a182d1a050da7594438f073f",
+  "s390x-unknown-linux-gnu-0.6.12":
+    "6eae67730009eb4f8ad7a4e5733ab69b6c4dcb21b482f4567015e3e6d0729357",
+  "x86_64-apple-darwin-0.6.12":
+    "5b6ee08766de11dc49ee9e292333e8b46ef2ceaaa3ebb0388467e114fca2ed8c",
+  "x86_64-pc-windows-msvc-0.6.12":
+    "30fdf26c209f0cb7c97d3b08a26ab4e78ce5ae0e031b88798cbaccc0f24f452b",
+  "x86_64-unknown-linux-gnu-0.6.12":
+    "eec3ccf53616e00905279a302bc043451bd96ca71a159a2ac3199452ac914c26",
+  "x86_64-unknown-linux-musl-0.6.12":
+    "25f055a556576003fefc0f5fd213bf3c6df1824d4c7fc35e6361fbecc420139f",
   "aarch64-apple-darwin-0.6.11":
     "a5b14a92448b908d1a5415f2a49522010fef8972695e2f7bbb4e5c5f88024573",
   "aarch64-pc-windows-msvc-0.6.11":

From 9ad030384d649dcdad575ef964e02a9fdce218ab Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
 <41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 8 Apr 2025 07:21:58 +0000
Subject: [PATCH 09/12] chore: update known checksums for 0.6.13 (#365)

chore: update known checksums for 0.6.13

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
---
 dist/setup/index.js                      | 17 ++++++++++++
 dist/update-known-checksums/index.js     | 17 ++++++++++++
 src/download/checksum/known-checksums.ts | 34 ++++++++++++++++++++++++
 3 files changed, 68 insertions(+)

diff --git a/dist/setup/index.js b/dist/setup/index.js
index d09ebdb..00076c6 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -121188,6 +121188,23 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
 exports.KNOWN_CHECKSUMS = void 0;
 // AUTOGENERATED_DO_NOT_EDIT
 exports.KNOWN_CHECKSUMS = {
+    "aarch64-apple-darwin-0.6.13": "0ddb8458634cc3a02799b6da839cb546dff9dabc6f3394912c48dd479016683b",
+    "aarch64-pc-windows-msvc-0.6.13": "3f3d6aa73b4859469fa3ad7efca3e5d0dba1112292c91d5c5f740983f16a8d8a",
+    "aarch64-unknown-linux-gnu-0.6.13": "ac0c723663ff76183077cc9aa91dcd0b5100081d87f93e1ba482930e0a584e90",
+    "aarch64-unknown-linux-musl-0.6.13": "379a5c48f6e3eb32c2d16022c0a4fc10cdfcca3543b75e2e9d819d62fead6a75",
+    "arm-unknown-linux-musleabihf-0.6.13": "ba1f630a299cfdd456b93a8b41e20bd2ad37a86aac884aca4efd722a62a26bb8",
+    "armv7-unknown-linux-gnueabihf-0.6.13": "1d55eb46510db8f169bb9be6fbd3a6ff34aa52340dff5eda0acdcb1b834e8bee",
+    "armv7-unknown-linux-musleabihf-0.6.13": "dc86e9d807ac324eed2e4a73fec341618ea288826a27143b8b695565a35f1b70",
+    "i686-pc-windows-msvc-0.6.13": "08367c3a04cf4da1c3ac6784431421de1efb8584ba68b8017efcd5e889d4a2a2",
+    "i686-unknown-linux-gnu-0.6.13": "2896a75940761a2ce90a8a650da02d6766de0b9990dfa6a99cd94fd3d1e6c530",
+    "i686-unknown-linux-musl-0.6.13": "29e64ef33ff2d7dcbbb3167bc7241de3b9d258fb39a6a992dfc847f1b968d32d",
+    "powerpc64-unknown-linux-gnu-0.6.13": "cdd2ba090ce9e3ed66a94bfe95b45a584bd5b9e45626836993f1279290b1a95e",
+    "powerpc64le-unknown-linux-gnu-0.6.13": "88830c596ef2a875a0c73aefda48e8398fdafe4eb4acecbee0b44a7995e9dc13",
+    "s390x-unknown-linux-gnu-0.6.13": "49e494038871006e36b404f0559f1c831b3e68692986b3c67510a675028c9696",
+    "x86_64-apple-darwin-0.6.13": "ed240854d97f7b234082f5a0ce734869a4310d86d46a819860bbce6d7df8b2eb",
+    "x86_64-pc-windows-msvc-0.6.13": "19bb08768fd3b8664068cc45faa633ee110bfef4215e560bc1e5833b1bc6c30e",
+    "x86_64-unknown-linux-gnu-0.6.13": "f6788fd45a25ea1033a671eaa9ece6c9b004ce5c9cf09552effadde567a7d7a5",
+    "x86_64-unknown-linux-musl-0.6.13": "779560faf6a21b5a6dbc2664c2dfbde2b9387b1f486c9197a9f4d143a3b66875",
     "aarch64-apple-darwin-0.6.12": "fab8db5b62da1e945524b8d1a9d4946fcc6d9b77ec0cab423d953e82159967ac",
     "aarch64-pc-windows-msvc-0.6.12": "d72d8cf0633dc40198a868e906442bc6bacfa38c3b807c26bcbf3fc364af5d96",
     "aarch64-unknown-linux-gnu-0.6.12": "d867553e5ea19f9cea08e564179d909c69ecfce5e7e382099d1844dbf1c9878c",
diff --git a/dist/update-known-checksums/index.js b/dist/update-known-checksums/index.js
index f6380fa..0d0cbc8 100644
--- a/dist/update-known-checksums/index.js
+++ b/dist/update-known-checksums/index.js
@@ -58847,6 +58847,23 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
 exports.KNOWN_CHECKSUMS = void 0;
 // AUTOGENERATED_DO_NOT_EDIT
 exports.KNOWN_CHECKSUMS = {
+    "aarch64-apple-darwin-0.6.13": "0ddb8458634cc3a02799b6da839cb546dff9dabc6f3394912c48dd479016683b",
+    "aarch64-pc-windows-msvc-0.6.13": "3f3d6aa73b4859469fa3ad7efca3e5d0dba1112292c91d5c5f740983f16a8d8a",
+    "aarch64-unknown-linux-gnu-0.6.13": "ac0c723663ff76183077cc9aa91dcd0b5100081d87f93e1ba482930e0a584e90",
+    "aarch64-unknown-linux-musl-0.6.13": "379a5c48f6e3eb32c2d16022c0a4fc10cdfcca3543b75e2e9d819d62fead6a75",
+    "arm-unknown-linux-musleabihf-0.6.13": "ba1f630a299cfdd456b93a8b41e20bd2ad37a86aac884aca4efd722a62a26bb8",
+    "armv7-unknown-linux-gnueabihf-0.6.13": "1d55eb46510db8f169bb9be6fbd3a6ff34aa52340dff5eda0acdcb1b834e8bee",
+    "armv7-unknown-linux-musleabihf-0.6.13": "dc86e9d807ac324eed2e4a73fec341618ea288826a27143b8b695565a35f1b70",
+    "i686-pc-windows-msvc-0.6.13": "08367c3a04cf4da1c3ac6784431421de1efb8584ba68b8017efcd5e889d4a2a2",
+    "i686-unknown-linux-gnu-0.6.13": "2896a75940761a2ce90a8a650da02d6766de0b9990dfa6a99cd94fd3d1e6c530",
+    "i686-unknown-linux-musl-0.6.13": "29e64ef33ff2d7dcbbb3167bc7241de3b9d258fb39a6a992dfc847f1b968d32d",
+    "powerpc64-unknown-linux-gnu-0.6.13": "cdd2ba090ce9e3ed66a94bfe95b45a584bd5b9e45626836993f1279290b1a95e",
+    "powerpc64le-unknown-linux-gnu-0.6.13": "88830c596ef2a875a0c73aefda48e8398fdafe4eb4acecbee0b44a7995e9dc13",
+    "s390x-unknown-linux-gnu-0.6.13": "49e494038871006e36b404f0559f1c831b3e68692986b3c67510a675028c9696",
+    "x86_64-apple-darwin-0.6.13": "ed240854d97f7b234082f5a0ce734869a4310d86d46a819860bbce6d7df8b2eb",
+    "x86_64-pc-windows-msvc-0.6.13": "19bb08768fd3b8664068cc45faa633ee110bfef4215e560bc1e5833b1bc6c30e",
+    "x86_64-unknown-linux-gnu-0.6.13": "f6788fd45a25ea1033a671eaa9ece6c9b004ce5c9cf09552effadde567a7d7a5",
+    "x86_64-unknown-linux-musl-0.6.13": "779560faf6a21b5a6dbc2664c2dfbde2b9387b1f486c9197a9f4d143a3b66875",
     "aarch64-apple-darwin-0.6.12": "fab8db5b62da1e945524b8d1a9d4946fcc6d9b77ec0cab423d953e82159967ac",
     "aarch64-pc-windows-msvc-0.6.12": "d72d8cf0633dc40198a868e906442bc6bacfa38c3b807c26bcbf3fc364af5d96",
     "aarch64-unknown-linux-gnu-0.6.12": "d867553e5ea19f9cea08e564179d909c69ecfce5e7e382099d1844dbf1c9878c",
diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts
index 001eb09..2c55495 100644
--- a/src/download/checksum/known-checksums.ts
+++ b/src/download/checksum/known-checksums.ts
@@ -1,5 +1,39 @@
 // AUTOGENERATED_DO_NOT_EDIT
 export const KNOWN_CHECKSUMS: { [key: string]: string } = {
+  "aarch64-apple-darwin-0.6.13":
+    "0ddb8458634cc3a02799b6da839cb546dff9dabc6f3394912c48dd479016683b",
+  "aarch64-pc-windows-msvc-0.6.13":
+    "3f3d6aa73b4859469fa3ad7efca3e5d0dba1112292c91d5c5f740983f16a8d8a",
+  "aarch64-unknown-linux-gnu-0.6.13":
+    "ac0c723663ff76183077cc9aa91dcd0b5100081d87f93e1ba482930e0a584e90",
+  "aarch64-unknown-linux-musl-0.6.13":
+    "379a5c48f6e3eb32c2d16022c0a4fc10cdfcca3543b75e2e9d819d62fead6a75",
+  "arm-unknown-linux-musleabihf-0.6.13":
+    "ba1f630a299cfdd456b93a8b41e20bd2ad37a86aac884aca4efd722a62a26bb8",
+  "armv7-unknown-linux-gnueabihf-0.6.13":
+    "1d55eb46510db8f169bb9be6fbd3a6ff34aa52340dff5eda0acdcb1b834e8bee",
+  "armv7-unknown-linux-musleabihf-0.6.13":
+    "dc86e9d807ac324eed2e4a73fec341618ea288826a27143b8b695565a35f1b70",
+  "i686-pc-windows-msvc-0.6.13":
+    "08367c3a04cf4da1c3ac6784431421de1efb8584ba68b8017efcd5e889d4a2a2",
+  "i686-unknown-linux-gnu-0.6.13":
+    "2896a75940761a2ce90a8a650da02d6766de0b9990dfa6a99cd94fd3d1e6c530",
+  "i686-unknown-linux-musl-0.6.13":
+    "29e64ef33ff2d7dcbbb3167bc7241de3b9d258fb39a6a992dfc847f1b968d32d",
+  "powerpc64-unknown-linux-gnu-0.6.13":
+    "cdd2ba090ce9e3ed66a94bfe95b45a584bd5b9e45626836993f1279290b1a95e",
+  "powerpc64le-unknown-linux-gnu-0.6.13":
+    "88830c596ef2a875a0c73aefda48e8398fdafe4eb4acecbee0b44a7995e9dc13",
+  "s390x-unknown-linux-gnu-0.6.13":
+    "49e494038871006e36b404f0559f1c831b3e68692986b3c67510a675028c9696",
+  "x86_64-apple-darwin-0.6.13":
+    "ed240854d97f7b234082f5a0ce734869a4310d86d46a819860bbce6d7df8b2eb",
+  "x86_64-pc-windows-msvc-0.6.13":
+    "19bb08768fd3b8664068cc45faa633ee110bfef4215e560bc1e5833b1bc6c30e",
+  "x86_64-unknown-linux-gnu-0.6.13":
+    "f6788fd45a25ea1033a671eaa9ece6c9b004ce5c9cf09552effadde567a7d7a5",
+  "x86_64-unknown-linux-musl-0.6.13":
+    "779560faf6a21b5a6dbc2664c2dfbde2b9387b1f486c9197a9f4d143a3b66875",
   "aarch64-apple-darwin-0.6.12":
     "fab8db5b62da1e945524b8d1a9d4946fcc6d9b77ec0cab423d953e82159967ac",
   "aarch64-pc-windows-msvc-0.6.12":

From 594f292eefc43559535c4c1b4505f465b512ce72 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
 <41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 10 Apr 2025 05:42:17 +0000
Subject: [PATCH 10/12] chore: update known checksums for 0.6.14 (#366)

chore: update known checksums for 0.6.14

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
---
 dist/setup/index.js                      | 17 ++++++++++++
 dist/update-known-checksums/index.js     | 17 ++++++++++++
 src/download/checksum/known-checksums.ts | 34 ++++++++++++++++++++++++
 3 files changed, 68 insertions(+)

diff --git a/dist/setup/index.js b/dist/setup/index.js
index 00076c6..fab8add 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -121188,6 +121188,23 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
 exports.KNOWN_CHECKSUMS = void 0;
 // AUTOGENERATED_DO_NOT_EDIT
 exports.KNOWN_CHECKSUMS = {
+    "aarch64-apple-darwin-0.6.14": "4ea4731010fbd1bc8e790e07f199f55a5c7c2c732e9b77f85e302b0bee61b756",
+    "aarch64-pc-windows-msvc-0.6.14": "7b0b3367c4060c9b47b961201ceb4252e97496c890ad1bd13c664bf5b0744d57",
+    "aarch64-unknown-linux-gnu-0.6.14": "ea25597354af186bdd55aee0de431e16d45d82951a4f41f065a8e4dc27885265",
+    "aarch64-unknown-linux-musl-0.6.14": "94e22c4be44d205def456427639ca5ca1c1a9e29acc31808a7b28fdd5dcf7f17",
+    "arm-unknown-linux-musleabihf-0.6.14": "de00f51ff804c145f9a0a13ead54e1ed08d317fac690477312cf9430ed43e62e",
+    "armv7-unknown-linux-gnueabihf-0.6.14": "d73b09f23c7056b3b5318edf670ebc8d2eac5adfdd4f4ee46796723298f21e18",
+    "armv7-unknown-linux-musleabihf-0.6.14": "f7844b89c77d1d57ca28a25b6b2e16a5bb3605ccf1dd9dc17ce641a2fa2d8b29",
+    "i686-pc-windows-msvc-0.6.14": "4e9f9ccc229a03d923213b8b4c7b373cd8bb941984f421de17fe9dac3d5491e9",
+    "i686-unknown-linux-gnu-0.6.14": "32c967c3dd80ecc9006a30be1a9c8ec77d63aa8080b78787d4ec0f79db12dbe4",
+    "i686-unknown-linux-musl-0.6.14": "c5a484d15049fd2b8ea9a7bbf0f968614819a7eda769f35c202e01e1904f6458",
+    "powerpc64-unknown-linux-gnu-0.6.14": "79abdc4c6e566e98067dc4b612f1fca5cb384b964553a0b8e0f5c40885ff3db8",
+    "powerpc64le-unknown-linux-gnu-0.6.14": "2eae20cf66ba5de1b7ac180458e4f2a889cd705637626e01c400f73f07dd0491",
+    "s390x-unknown-linux-gnu-0.6.14": "a51f8319b2b334c1392d3927e925b46c62ac584eb35b944d384f0af227cf0f36",
+    "x86_64-apple-darwin-0.6.14": "1d8ecb2eb3b68fb50e4249dc96ac9d2458dc24068848f04f4c5b42af2fd26552",
+    "x86_64-pc-windows-msvc-0.6.14": "93b29fc234758e381df461d7638ff73d0f08bdf3a0dc37923b1ee0b9e442ca3f",
+    "x86_64-unknown-linux-gnu-0.6.14": "0aaf451c391d3913823bfb8ed354b446dcfd0553a32ed8266611e4181c61fd51",
+    "x86_64-unknown-linux-musl-0.6.14": "0cac4df0cb3457b154f2039ae471e89cd4e15f3bd790bbb3cb0b8b40d940b93e",
     "aarch64-apple-darwin-0.6.13": "0ddb8458634cc3a02799b6da839cb546dff9dabc6f3394912c48dd479016683b",
     "aarch64-pc-windows-msvc-0.6.13": "3f3d6aa73b4859469fa3ad7efca3e5d0dba1112292c91d5c5f740983f16a8d8a",
     "aarch64-unknown-linux-gnu-0.6.13": "ac0c723663ff76183077cc9aa91dcd0b5100081d87f93e1ba482930e0a584e90",
diff --git a/dist/update-known-checksums/index.js b/dist/update-known-checksums/index.js
index 0d0cbc8..65006f6 100644
--- a/dist/update-known-checksums/index.js
+++ b/dist/update-known-checksums/index.js
@@ -58847,6 +58847,23 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
 exports.KNOWN_CHECKSUMS = void 0;
 // AUTOGENERATED_DO_NOT_EDIT
 exports.KNOWN_CHECKSUMS = {
+    "aarch64-apple-darwin-0.6.14": "4ea4731010fbd1bc8e790e07f199f55a5c7c2c732e9b77f85e302b0bee61b756",
+    "aarch64-pc-windows-msvc-0.6.14": "7b0b3367c4060c9b47b961201ceb4252e97496c890ad1bd13c664bf5b0744d57",
+    "aarch64-unknown-linux-gnu-0.6.14": "ea25597354af186bdd55aee0de431e16d45d82951a4f41f065a8e4dc27885265",
+    "aarch64-unknown-linux-musl-0.6.14": "94e22c4be44d205def456427639ca5ca1c1a9e29acc31808a7b28fdd5dcf7f17",
+    "arm-unknown-linux-musleabihf-0.6.14": "de00f51ff804c145f9a0a13ead54e1ed08d317fac690477312cf9430ed43e62e",
+    "armv7-unknown-linux-gnueabihf-0.6.14": "d73b09f23c7056b3b5318edf670ebc8d2eac5adfdd4f4ee46796723298f21e18",
+    "armv7-unknown-linux-musleabihf-0.6.14": "f7844b89c77d1d57ca28a25b6b2e16a5bb3605ccf1dd9dc17ce641a2fa2d8b29",
+    "i686-pc-windows-msvc-0.6.14": "4e9f9ccc229a03d923213b8b4c7b373cd8bb941984f421de17fe9dac3d5491e9",
+    "i686-unknown-linux-gnu-0.6.14": "32c967c3dd80ecc9006a30be1a9c8ec77d63aa8080b78787d4ec0f79db12dbe4",
+    "i686-unknown-linux-musl-0.6.14": "c5a484d15049fd2b8ea9a7bbf0f968614819a7eda769f35c202e01e1904f6458",
+    "powerpc64-unknown-linux-gnu-0.6.14": "79abdc4c6e566e98067dc4b612f1fca5cb384b964553a0b8e0f5c40885ff3db8",
+    "powerpc64le-unknown-linux-gnu-0.6.14": "2eae20cf66ba5de1b7ac180458e4f2a889cd705637626e01c400f73f07dd0491",
+    "s390x-unknown-linux-gnu-0.6.14": "a51f8319b2b334c1392d3927e925b46c62ac584eb35b944d384f0af227cf0f36",
+    "x86_64-apple-darwin-0.6.14": "1d8ecb2eb3b68fb50e4249dc96ac9d2458dc24068848f04f4c5b42af2fd26552",
+    "x86_64-pc-windows-msvc-0.6.14": "93b29fc234758e381df461d7638ff73d0f08bdf3a0dc37923b1ee0b9e442ca3f",
+    "x86_64-unknown-linux-gnu-0.6.14": "0aaf451c391d3913823bfb8ed354b446dcfd0553a32ed8266611e4181c61fd51",
+    "x86_64-unknown-linux-musl-0.6.14": "0cac4df0cb3457b154f2039ae471e89cd4e15f3bd790bbb3cb0b8b40d940b93e",
     "aarch64-apple-darwin-0.6.13": "0ddb8458634cc3a02799b6da839cb546dff9dabc6f3394912c48dd479016683b",
     "aarch64-pc-windows-msvc-0.6.13": "3f3d6aa73b4859469fa3ad7efca3e5d0dba1112292c91d5c5f740983f16a8d8a",
     "aarch64-unknown-linux-gnu-0.6.13": "ac0c723663ff76183077cc9aa91dcd0b5100081d87f93e1ba482930e0a584e90",
diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts
index 2c55495..fca5e4f 100644
--- a/src/download/checksum/known-checksums.ts
+++ b/src/download/checksum/known-checksums.ts
@@ -1,5 +1,39 @@
 // AUTOGENERATED_DO_NOT_EDIT
 export const KNOWN_CHECKSUMS: { [key: string]: string } = {
+  "aarch64-apple-darwin-0.6.14":
+    "4ea4731010fbd1bc8e790e07f199f55a5c7c2c732e9b77f85e302b0bee61b756",
+  "aarch64-pc-windows-msvc-0.6.14":
+    "7b0b3367c4060c9b47b961201ceb4252e97496c890ad1bd13c664bf5b0744d57",
+  "aarch64-unknown-linux-gnu-0.6.14":
+    "ea25597354af186bdd55aee0de431e16d45d82951a4f41f065a8e4dc27885265",
+  "aarch64-unknown-linux-musl-0.6.14":
+    "94e22c4be44d205def456427639ca5ca1c1a9e29acc31808a7b28fdd5dcf7f17",
+  "arm-unknown-linux-musleabihf-0.6.14":
+    "de00f51ff804c145f9a0a13ead54e1ed08d317fac690477312cf9430ed43e62e",
+  "armv7-unknown-linux-gnueabihf-0.6.14":
+    "d73b09f23c7056b3b5318edf670ebc8d2eac5adfdd4f4ee46796723298f21e18",
+  "armv7-unknown-linux-musleabihf-0.6.14":
+    "f7844b89c77d1d57ca28a25b6b2e16a5bb3605ccf1dd9dc17ce641a2fa2d8b29",
+  "i686-pc-windows-msvc-0.6.14":
+    "4e9f9ccc229a03d923213b8b4c7b373cd8bb941984f421de17fe9dac3d5491e9",
+  "i686-unknown-linux-gnu-0.6.14":
+    "32c967c3dd80ecc9006a30be1a9c8ec77d63aa8080b78787d4ec0f79db12dbe4",
+  "i686-unknown-linux-musl-0.6.14":
+    "c5a484d15049fd2b8ea9a7bbf0f968614819a7eda769f35c202e01e1904f6458",
+  "powerpc64-unknown-linux-gnu-0.6.14":
+    "79abdc4c6e566e98067dc4b612f1fca5cb384b964553a0b8e0f5c40885ff3db8",
+  "powerpc64le-unknown-linux-gnu-0.6.14":
+    "2eae20cf66ba5de1b7ac180458e4f2a889cd705637626e01c400f73f07dd0491",
+  "s390x-unknown-linux-gnu-0.6.14":
+    "a51f8319b2b334c1392d3927e925b46c62ac584eb35b944d384f0af227cf0f36",
+  "x86_64-apple-darwin-0.6.14":
+    "1d8ecb2eb3b68fb50e4249dc96ac9d2458dc24068848f04f4c5b42af2fd26552",
+  "x86_64-pc-windows-msvc-0.6.14":
+    "93b29fc234758e381df461d7638ff73d0f08bdf3a0dc37923b1ee0b9e442ca3f",
+  "x86_64-unknown-linux-gnu-0.6.14":
+    "0aaf451c391d3913823bfb8ed354b446dcfd0553a32ed8266611e4181c61fd51",
+  "x86_64-unknown-linux-musl-0.6.14":
+    "0cac4df0cb3457b154f2039ae471e89cd4e15f3bd790bbb3cb0b8b40d940b93e",
   "aarch64-apple-darwin-0.6.13":
     "0ddb8458634cc3a02799b6da839cb546dff9dabc6f3394912c48dd479016683b",
   "aarch64-pc-windows-msvc-0.6.13":

From d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 Mon Sep 17 00:00:00 2001
From: Kevin Stillhammer 
Date: Wed, 16 Apr 2025 12:31:45 +0200
Subject: [PATCH 11/12] Make sure uv installed by setup-uv is first in PATH
 (#373)

Fixes: #372
---
 .github/workflows/test.yml | 26 ++++++++++++++++----------
 dist/setup/index.js        |  2 +-
 src/setup-uv.ts            |  2 +-
 3 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 025c9fd..5a9c0a2 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -66,7 +66,10 @@ jobs:
         working-directory: __tests__/fixtures/uv-project
 
   test-semver-range:
-    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        os: [ ubuntu-latest, selfhosted-ubuntu-arm64 ]
+    runs-on: ${{ matrix.os }}
     steps:
       - uses: actions/checkout@v4
       - name: Install version 0.3
@@ -75,6 +78,12 @@ jobs:
         with:
           version: "0.3"
       - name: Correct version gets installed
+        run: |
+          if [ "$(uv --version)" != "uv 0.3.5" ]; then
+            echo "Wrong uv version: $(uv --version)"
+            exit 1
+          fi
+      - name: Output has correct version
         run: |
           if [ "$UV_VERSION" != "0.3.5" ]; then
             exit 1
@@ -93,11 +102,10 @@ jobs:
           version: ">=0.4.25,<0.5"
       - name: Correct version gets installed
         run: |
-          if [ "$UV_VERSION" != "0.4.30" ]; then
+          if [ "$(uv --version)" != "uv 0.4.30" ]; then
+            echo "Wrong uv version: $(uv --version)"
             exit 1
           fi
-        env:
-          UV_VERSION: ${{ steps.setup-uv.outputs.uv-version }}
 
   test-pyproject-file-version:
     runs-on: ubuntu-latest
@@ -110,11 +118,10 @@ jobs:
           pyproject-file: "__tests__/fixtures/pyproject-toml-project/pyproject.toml"
       - name: Correct version gets installed
         run: |
-          if [ "$UV_VERSION" != "0.5.14" ]; then
+          if [ "$(uv --version)" != "uv 0.5.14" ]; then
+            echo "Wrong uv version: $(uv --version)"
             exit 1
           fi
-        env:
-          UV_VERSION: ${{ steps.setup-uv.outputs.uv-version }}
 
   test-malformed-pyproject-file-fallback:
     runs-on: ubuntu-latest
@@ -140,11 +147,10 @@ jobs:
           uv-file: "__tests__/fixtures/uv-toml-project/uv.toml"
       - name: Correct version gets installed
         run: |
-          if [ "$UV_VERSION" != "0.5.15" ]; then
+          if [ "$(uv --version)" != "uv 0.5.15" ]; then
+            echo "Wrong uv version: $(uv --version)"
             exit 1
           fi
-        env:
-          UV_VERSION: ${{ steps.setup-uv.outputs.uv-version }}
 
   test-checksum:
     runs-on: ${{ matrix.inputs.os }}
diff --git a/dist/setup/index.js b/dist/setup/index.js
index fab8add..ebd1bfc 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -124294,8 +124294,8 @@ async function run() {
             throw new Error(`Unsupported architecture: ${process.arch}`);
         }
         const setupResult = await setupUv(platform, arch, inputs_1.checkSum, inputs_1.githubToken);
-        addUvToPathAndOutput(setupResult.uvDir);
         addToolBinToPath();
+        addUvToPathAndOutput(setupResult.uvDir);
         setToolDir();
         await setupPython();
         addMatchers();
diff --git a/src/setup-uv.ts b/src/setup-uv.ts
index ee7e77c..beed547 100644
--- a/src/setup-uv.ts
+++ b/src/setup-uv.ts
@@ -44,8 +44,8 @@ async function run(): Promise {
     }
     const setupResult = await setupUv(platform, arch, checkSum, githubToken);
 
-    addUvToPathAndOutput(setupResult.uvDir);
     addToolBinToPath();
+    addUvToPathAndOutput(setupResult.uvDir);
     setToolDir();
     await setupPython();
     addMatchers();

From fb3a0a97fac846cb3395265a3087ab94ad3ca2a0 Mon Sep 17 00:00:00 2001
From: Kevin Stillhammer 
Date: Thu, 17 Apr 2025 21:02:21 +0200
Subject: [PATCH 12/12] log info on venv activation (#375)

Make sure we get more info by default instead of just exiting with 1
Contributes to: #374
---
 dist/setup/index.js | 5 +----
 src/setup-uv.ts     | 5 +----
 2 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/dist/setup/index.js b/dist/setup/index.js
index ebd1bfc..ad08a6c 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -124394,12 +124394,9 @@ async function setupPython() {
     if (inputs_1.pythonVersion !== "") {
         core.exportVariable("UV_PYTHON", inputs_1.pythonVersion);
         core.info(`Set UV_PYTHON to ${inputs_1.pythonVersion}`);
-        const options = {
-            silent: !core.isDebug(),
-        };
         const execArgs = ["venv", "--python", inputs_1.pythonVersion];
         core.info("Activating python venv...");
-        await exec.exec("uv", execArgs, options);
+        await exec.exec("uv", execArgs);
         let venvBinPath = ".venv/bin";
         if (process.platform === "win32") {
             venvBinPath = ".venv/Scripts";
diff --git a/src/setup-uv.ts b/src/setup-uv.ts
index beed547..af8cceb 100644
--- a/src/setup-uv.ts
+++ b/src/setup-uv.ts
@@ -167,13 +167,10 @@ async function setupPython(): Promise {
   if (pythonVersion !== "") {
     core.exportVariable("UV_PYTHON", pythonVersion);
     core.info(`Set UV_PYTHON to ${pythonVersion}`);
-    const options: exec.ExecOptions = {
-      silent: !core.isDebug(),
-    };
     const execArgs = ["venv", "--python", pythonVersion];
 
     core.info("Activating python venv...");
-    await exec.exec("uv", execArgs, options);
+    await exec.exec("uv", execArgs);
 
     let venvBinPath = ".venv/bin";
     if (process.platform === "win32") {