5
0
mirror of https://github.com/astral-sh/setup-uv.git synced 2025-12-15 11:07:14 +00:00

Compare commits

...

53 Commits

Author SHA1 Message Date
Kevin Stillhammer
7edac99f96 Ignore deps starting with uv when finding uv version (#492)
Fixes: #489
2025-07-18 06:10:43 +00:00
github-actions[bot]
05273c154d chore: update known versions for 0.7.22 (#488)
chore: update known versions for 0.7.22

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-07-17 19:02:16 +00:00
Kevin Stillhammer
de545d4421 Bump dependencies (#487) 2025-07-17 18:30:31 +00:00
Kevin Stillhammer
b75ff7d7b8 Add input version-file (#486)
Closes: #411
2025-07-17 20:22:18 +02:00
github-actions[bot]
c893ac1cb2 chore: update known versions for 0.7.21 (#483)
chore: update known versions for 0.7.21

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-07-15 06:13:36 +00:00
github-actions[bot]
a905f0040b chore: update known versions for 0.7.20 (#480)
chore: update known versions for 0.7.20

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-07-10 07:01:28 +00:00
Kevin Stillhammer
d4219d1620 Add FAQ on changed cache and cache upload behavior (#477)
Closes: #467
2025-07-05 09:57:12 +00:00
github-actions[bot]
aaefb91b77 chore: update known versions for 0.7.19 (#475)
chore: update known versions for 0.7.19

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-07-03 05:52:08 +00:00
github-actions[bot]
c05b3e180b chore: update known versions for 0.7.18 (#473)
chore: update known versions for 0.7.18

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-07-02 05:36:05 +00:00
github-actions[bot]
1bf1493664 chore: update known versions for 0.7.17 (#468)
chore: update known versions for 0.7.17

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-06-30 08:26:44 +00:00
github-actions[bot]
b4c8c41d99 chore: update known versions for 0.7.16 (#466)
chore: update known versions for 0.7.16

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-06-28 08:18:25 +00:00
github-actions[bot]
8e581f64a9 chore: update known versions for 0.7.15 (#463)
chore: update known versions for 0.7.15

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-06-25 12:46:38 +02:00
Kevin Stillhammer
bd01e18f51 Do not warn when version not in manifest-file (#462)
This will spam the GitHub summary with warnings as soon as a new version
is released and no new setup-uv version containing this version in the
distributed manifest-file is released

Closes: #461
2025-06-25 07:25:37 +00:00
github-actions[bot]
c6a5ebaafe chore: update known versions for 0.7.14 (#459)
chore: update known versions for 0.7.14

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-06-24 09:53:39 +00:00
Kevin Stillhammer
790df8f465 Revert "Set expected cache dir drive to C: on windows (#451)" (#460)
This reverts commit 60ecb381b4.
2025-06-24 11:16:40 +02:00
Kevin Stillhammer
445689ea25 Use latest version from manifest-file (#458)
If a manifest-file is supplied the default value of the version input
(latest) will get the latest version available in the manifest. That
might not be the actual latest version available in the official uv
repo.
2025-06-19 21:23:43 +02:00
Kevin Stillhammer
a02a550bdd Look for version-manifest.json relative to action path (#456)
Fixes: #455
2025-06-18 23:09:13 +02:00
Kevin Stillhammer
60cc2b4585 Add input manifest-file (#454)
Adds capability to maintain custom uv builds or to override the default
sources
2025-06-18 20:33:20 +00:00
github-actions[bot]
7bbb36f434 chore: update known versions for 0.7.13 and 0.7.12 (#444)
chore: update known versions for 0.7.13

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-06-17 07:48:33 +00:00
Kevin Stillhammer
60ecb381b4 Set expected cache dir drive to C: on windows (#451)
Seems like the temp folder got moved to the C: drive
2025-06-17 09:40:23 +02:00
github-actions[bot]
252c995424 chore: update known versions for 0.7.11 (#442)
chore: update known versions for 0.7.11

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-06-05 06:15:21 +00:00
github-actions[bot]
477a814f2d chore: update known versions for 0.7.10 (#440)
chore: update known versions for 0.7.10

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-06-04 06:19:09 +00:00
Zanie Blue
9b19f8f4b1 Add warning about shadowed uv binaries to activate-environment (#439)
Closes https://github.com/astral-sh/uv/issues/13785
2025-06-03 19:44:51 +02:00
github-actions[bot]
d44461ea9f chore: update known versions for 0.7.9 (#437)
chore: update known versions for 0.7.9

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-31 20:07:33 +00:00
Kevin Stillhammer
c19c1b1ffd Check that all jobs are in all-tests-passed.needs (#432) 2025-05-27 18:25:00 +02:00
github-actions[bot]
f3121ef80e chore: update known versions for 0.7.8 (#428)
chore: update known versions for 0.7.8

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-24 06:07:37 +00:00
Kevin Stillhammer
f0ec1fc3b3 Bump dependencies (#424) 2025-05-23 09:57:11 +02:00
Kevin Stillhammer
e3d2ea5ff3 Purge cache in cache key (#423)
Fixes: #416
2025-05-23 09:43:52 +02:00
github-actions[bot]
b3d7ca7ac0 chore: update known versions for 0.7.7 (#422)
chore: update known versions for 0.7.7

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-23 07:26:41 +00:00
Zoupers Zou
0e0f4bfefa feat: support custom github url (#414)
Fix #344
2025-05-20 19:36:07 +02:00
github-actions[bot]
71bb8825e4 chore: update known versions for 0.7.6 (#415)
chore: update known versions for 0.7.6

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-20 07:10:46 +00:00
github-actions[bot]
1417e89049 chore: update known versions for 0.7.5 (#412)
chore: update known versions for 0.7.5

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-18 10:05:47 +02:00
github-actions[bot]
1761eea391 chore: update known versions for 0.7.4 (#410)
chore: update known versions for 0.7.4

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-16 05:15:44 +00:00
github-actions[bot]
9864bc9c96 chore: update known versions for 0.7.3 (#405)
chore: update known versions for 0.7.3

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-08 08:18:23 +00:00
Kevin Stillhammer
0e9cccb4b0 Fix path to known-checksums.ts (#404) 2025-05-08 09:37:11 +02:00
dependabot[bot]
b6f9e9c734 Bump typescript from 5.8.2 to 5.8.3 (#393)
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.8.2
to 5.8.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/microsoft/TypeScript/releases">typescript's
releases</a>.</em></p>
<blockquote>
<h2>TypeScript 5.8.3</h2>
<p>For release notes, check out the <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-8/">release
announcement</a>.</p>
<ul>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.8.0%22+is%3Aclosed+">fixed
issues query for Typescript 5.8.0 (Beta)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.8.1%22+is%3Aclosed+">fixed
issues query for Typescript 5.8.1 (RC)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.8.2%22+is%3Aclosed+">fixed
issues query for Typescript 5.8.2 (Stable)</a>.</li>
<li><a
href="https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93&amp;q=milestone%3A%22TypeScript+5.8.3%22+is%3Aclosed+">fixed
issues query for Typescript 5.8.3 (Stable)</a>.</li>
</ul>
<p>Downloads are available on:</p>
<ul>
<li><a href="https://www.npmjs.com/package/typescript">npm</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="83dc0bb2ed"><code>83dc0bb</code></a>
Convert release publishing inputs into parameters (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61523">#61523</a>)</li>
<li><a
href="ba663f6ac2"><code>ba663f6</code></a>
Exclude completions of binding pattern variable initializers (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/52723">#52723</a>)</li>
<li><a
href="7205eda454"><code>7205eda</code></a>
Bump github/codeql-action from 3.28.12 to 3.28.13 in the github-actions
group...</li>
<li><a
href="89c572ca0c"><code>89c572c</code></a>
Fixed a symbol display crash on expando members write locations (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/55478">#55478</a>)</li>
<li><a
href="7b26d2eba5"><code>7b26d2e</code></a>
Fix incorrect name in new release pipeline (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61514">#61514</a>)</li>
<li><a
href="c7a559eeae"><code>c7a559e</code></a>
Add new release publisher yaml (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61491">#61491</a>)</li>
<li><a
href="29e6d6689d"><code>29e6d66</code></a>
Fix <code>lib.includes('dom')</code> check in
<code>containerSeemsToBeEmptyDomElement</code> (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61481">#61481</a>)</li>
<li><a
href="19b777260b"><code>19b7772</code></a>
Bump the github-actions group with 4 updates (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61474">#61474</a>)</li>
<li><a
href="4dc677b292"><code>4dc677b</code></a>
Fix errors on type assertions in erasableSyntaxOnly (<a
href="https://redirect.github.com/microsoft/TypeScript/issues/61452">#61452</a>)</li>
<li><a
href="ee3dd7264b"><code>ee3dd72</code></a>
fix(60908): Unexpected &quot;'Type' is declared but its value is never
read.&quot; erro...</li>
<li>Additional commits viewable in <a
href="https://github.com/microsoft/TypeScript/compare/v5.8.2...v5.8.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typescript&package-manager=npm_and_yarn&previous-version=5.8.2&new-version=5.8.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-05 07:44:49 +02:00
Kevin Stillhammer
b87cce2fc5 Fix update-known-versions workflow argument (#401)
Use version-manifest.json instead of .ts
2025-05-04 07:10:02 +00:00
Kevin Stillhammer
9641fcd493 Fix update-known-versions workflow (#400)
Add missing argument versionsManifestFilePath
2025-05-04 09:01:52 +02:00
Kevin Stillhammer
a4f1f549e9 Create version-manifest.json on uv release (#399) 2025-05-03 19:51:16 +02:00
Nick Sweeting
023b8ec2bc Add section to README explaining if packages are installed by setup-uv (#398)
Fixes #397
2025-05-03 17:41:06 +00:00
Kevin Stillhammer
ced7c1dde4 Run infrastructure workflows on arm runners (#396)
Use more efficient runners to save resources. Every bit counts.
2025-05-01 20:22:40 +02:00
github-actions[bot]
41bd088443 chore: update known checksums for 0.7.2 (#395)
chore: update known checksums for 0.7.2

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-05-01 07:04:31 +00:00
github-actions[bot]
75567654b6 chore: update known checksums for 0.7.0 (#390)
chore: update known checksums for 0.7.0

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-04-30 08:25:31 +02:00
Kevin Stillhammer
6b9c6063ab Bump dependencies (#389) 2025-04-29 22:50:17 +02:00
Kevin Stillhammer
ef6bcdff59 Fix default cache dependency glob (#388)
The new default in v6 used illegal patterns and therefore didn't match
requirements files

Fixes: #385
2025-04-29 22:42:06 +02:00
github-actions[bot]
9a311713f4 chore: update known checksums for 0.6.17 (#384)
chore: update known checksums for 0.6.17

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-04-25 19:04:33 +00:00
Kevin Stillhammer
c7f87aa956 bump to v6 in README (#382) 2025-04-24 15:29:56 +02:00
Kevin Stillhammer
aadfaf08d6 Change default cache-dependency-glob (#352)
To support more users by default we should support popular dependency
file formats. A quick GitHub search shows ~40k uses of `constraint.txt`
and ~16k uses of `requirements.in`.

Closes: #261
2025-04-24 15:18:27 +02:00
Kevin Stillhammer
a0f9da6273 No default UV_CACHE_DIR on selfhosted runners (#380)
Closes: #371
2025-04-24 15:17:56 +02:00
Kevin Stillhammer
ec4c691628 new inputs activate-environment and working-directory (#381)
venv activation was implicit when python-version was supplied. This now
only happens when activate-environment is true. working-directory
controls where we work and thus also where the .venv will be created

Closes: #351
Closes: #271
Closes: #251
Closes: #211
2025-04-24 15:17:35 +02:00
github-actions[bot]
aa1290542e chore: update known checksums for 0.6.16 (#378)
chore: update known checksums for 0.6.16

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-04-22 07:39:59 +00:00
github-actions[bot]
fcaddda076 chore: update known checksums for 0.6.15 (#377)
chore: update known checksums for 0.6.15

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-04-22 06:20:07 +00:00
Kevin Stillhammer
fb3a0a97fa log info on venv activation (#375)
Make sure we get more info by default instead of just exiting with 1
Contributes to: #374
2025-04-17 21:02:21 +02:00
33 changed files with 27652 additions and 1200 deletions

View File

@@ -19,7 +19,7 @@ categories:
labels:
- "maintenance"
- "ci"
- "update-known-checksums"
- "update-known-versions"
- title: "📚 Documentation"
labels:
- "documentation"

View File

@@ -0,0 +1,35 @@
import * as fs from "node:fs";
import * as yaml from "js-yaml";
interface WorkflowJob {
needs?: string[];
[key: string]: unknown;
}
interface Workflow {
jobs: Record<string, WorkflowJob>;
[key: string]: unknown;
}
const workflow = yaml.load(
fs.readFileSync("../workflows/test.yml", "utf8"),
) as Workflow;
const jobs = Object.keys(workflow.jobs);
const allTestsPassed = workflow.jobs["all-tests-passed"];
const needs: string[] = allTestsPassed.needs || [];
const expectedNeeds = jobs.filter((j) => j !== "all-tests-passed");
const missing = expectedNeeds.filter((j) => !needs.includes(j));
if (missing.length > 0) {
console.error(
`Missing jobs in all-tests-passed needs: ${missing.join(", ")}`,
);
console.info(
"Please add the missing jobs to the needs section of all-tests-passed in test.yml.",
);
process.exit(1);
}
console.log(
"All jobs in test.yml are in the needs section of all-tests-passed.",
);

View File

@@ -11,7 +11,7 @@ on:
jobs:
update_release_draft:
name: ✏️ Draft release
runs-on: ubuntu-latest
runs-on: ubuntu-24.04-arm
permissions:
contents: write
pull-requests: read

View File

@@ -29,6 +29,11 @@ jobs:
npm install
- run: |
npm run all
- name: Check all jobs are in all-tests-passed.needs
run: |
tsc check-all-tests-passed-needs.ts
node check-all-tests-passed-needs.js
working-directory: .github/scripts
- name: Make sure no changes from linters are detected
run: |
git diff --exit-code || (echo "::error::Please run 'npm run all' to fix the issues" && exit 1)
@@ -115,7 +120,7 @@ jobs:
id: setup-uv
uses: ./
with:
pyproject-file: "__tests__/fixtures/pyproject-toml-project/pyproject.toml"
working-directory: "__tests__/fixtures/pyproject-toml-project"
- name: Correct version gets installed
run: |
if [ "$(uv --version)" != "uv 0.5.14" ]; then
@@ -131,9 +136,8 @@ jobs:
id: setup-uv
uses: ./
with:
pyproject-file: "__tests__/fixtures/malformed-pyproject-toml-project/pyproject.toml"
- run: uv sync
working-directory: __tests__/fixtures/uv-project
working-directory: "__tests__/fixtures/malformed-pyproject-toml-project"
- run: uv --help
test-uv-file-version:
runs-on: ubuntu-latest
@@ -143,8 +147,7 @@ jobs:
id: setup-uv
uses: ./
with:
pyproject-file: "__tests__/fixtures/uv-toml-project/pyproject.toml"
uv-file: "__tests__/fixtures/uv-toml-project/uv.toml"
working-directory: "__tests__/fixtures/uv-toml-project"
- name: Correct version gets installed
run: |
if [ "$(uv --version)" != "uv 0.5.15" ]; then
@@ -152,6 +155,22 @@ jobs:
exit 1
fi
test-version-file-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install from requirements file
id: setup-uv
uses: ./
with:
version-file: "__tests__/fixtures/uv-in-requirements-txt-project/requirements.txt"
- name: Correct version gets installed
run: |
if [ "$(uv --version)" != "uv 0.6.17" ]; then
echo "Wrong uv version: $(uv --version)"
exit 1
fi
test-checksum:
runs-on: ${{ matrix.inputs.os }}
strategy:
@@ -229,7 +248,7 @@ jobs:
fi
test-python-version:
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
@@ -246,8 +265,23 @@ jobs:
exit 1
fi
shell: bash
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-activate-environment:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
steps:
- uses: actions/checkout@v4
- name: Install latest version
uses: ./
with:
python-version: 3.13.1t
activate-environment: true
- name: Verify packages can be installed
run: uv pip install --python=3.13.1t pip
run: uv pip install pip
shell: bash
- name: Verify python version is correct
run: |
@@ -397,6 +431,30 @@ jobs:
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
test-cache-local:
strategy:
matrix:
inputs:
- os: ubuntu-latest
expected-cache-dir: "/home/runner/work/_temp/setup-uv-cache"
- os: windows-latest
expected-cache-dir: "D:\\a\\_temp\\setup-uv-cache"
- os: selfhosted-ubuntu-arm64
expected-cache-dir: "/home/ubuntu/.cache/uv"
runs-on: ${{ matrix.inputs.os }}
steps:
- uses: actions/checkout@v4
- name: Setup with cache
uses: ./
with:
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-cache-local
- run: |
if [ "$UV_CACHE_DIR" != "${{ matrix.inputs.expected-cache-dir }}" ]; then
echo "UV_CACHE_DIR is not set to the expected value: $UV_CACHE_DIR"
exit 1
fi
shell: bash
test-setup-cache-local:
runs-on: selfhosted-ubuntu-arm64
steps:
@@ -491,6 +549,23 @@ jobs:
- run: uv sync
working-directory: __tests__/fixtures/old-python-constraint-project
test-custom-manifest-file:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install from custom manifest file
uses: ./
with:
manifest-file: "https://raw.githubusercontent.com/astral-sh/setup-uv/${{ github.ref }}/__tests__/download/custom-manifest.json"
- run: uv sync
working-directory: __tests__/fixtures/uv-project
- name: Correct version gets installed
run: |
if [ "$(uv --version)" != "uv 0.7.12-alpha.1" ]; then
echo "Wrong uv version: $(uv --version)"
exit 1
fi
all-tests-passed:
runs-on: ubuntu-latest
needs:
@@ -502,21 +577,29 @@ jobs:
- test-pyproject-file-version
- test-malformed-pyproject-file-fallback
- test-uv-file-version
- test-version-file-version
- test-checksum
- test-with-explicit-token
- test-uvx
- test-tool-install
- test-tilde-expansion-tool-dirs
- test-python-version
- test-activate-environment
- test-musl
- test-cache-local
- test-setup-cache
- test-restore-cache
- test-setup-cache-requirements-txt
- test-restore-cache-requirements-txt
- test-setup-cache-dependency-glob
- test-restore-cache-dependency-glob
- test-setup-cache-local
- test-restore-cache-local
- test-tilde-expansion-cache-local-path
- test-tilde-expansion-cache-dependency-glob
- cleanup-tilde-expansion-tests
- test-no-python-version
- test-custom-manifest-file
if: always()
steps:
- name: All tests passed

View File

@@ -1,37 +0,0 @@
name: "Update known checksums"
on:
workflow_dispatch:
schedule:
- cron: "0 4 * * *" # Run every day at 4am UTC
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- name: Update known checksums
id: update-known-checksums
run:
node dist/update-known-checksums/index.js
src/download/checksum/known-checksums.ts ${{ secrets.GITHUB_TOKEN }}
- run: npm install && npm run all
- name: Create Pull Request
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
commit-message: "chore: update known checksums"
title:
"chore: update known checksums for ${{
steps.update-known-checksums.outputs.latest-version }}"
body:
"chore: update known checksums for ${{
steps.update-known-checksums.outputs.latest-version }}"
base: main
labels: "automated-pr,update-known-checksums"
branch: update-known-checksums-pr
delete-branch: true

View File

@@ -0,0 +1,39 @@
name: "Update known versions"
on:
workflow_dispatch:
schedule:
- cron: "0 4 * * *" # Run every day at 4am UTC
jobs:
build:
runs-on: ubuntu-24.04-arm
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- name: Update known versions
id: update-known-versions
run:
node dist/update-known-versions/index.js
src/download/checksum/known-checksums.ts
version-manifest.json
${{ secrets.GITHUB_TOKEN }}
- run: npm install && npm run all
- name: Create Pull Request
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
commit-message: "chore: update known versions"
title:
"chore: update known versions for ${{
steps.update-known-versions.outputs.latest-version }}"
body:
"chore: update known versions for ${{
steps.update-known-versions.outputs.latest-version }}"
base: main
labels: "automated-pr,update-known-versions"
branch: update-known-versions-pr
delete-branch: true

View File

@@ -11,7 +11,7 @@ on:
jobs:
update_major_minor_tags:
name: Make sure major and minor tags are up to date on a patch release
runs-on: ubuntu-latest
runs-on: ubuntu-24.04-arm
permissions:
contents: write
steps:

187
README.md
View File

@@ -15,8 +15,10 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
- [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 specifier](#install-a-version-by-supplying-a-semver-range-or-pep440-specifier)
- [Install a required-version](#install-a-required-version)
- [Install a version defined in a requirements or config file](#install-a-version-defined-in-a-requirements-or-config-file)
- [Python version](#python-version)
- [Activate environment](#activate-environment)
- [Working directory](#working-directory)
- [Validate checksum](#validate-checksum)
- [Enable Caching](#enable-caching)
- [Cache dependency glob](#cache-dependency-glob)
@@ -27,6 +29,7 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
- [UV_TOOL_DIR](#uv_tool_dir)
- [UV_TOOL_BIN_DIR](#uv_tool_bin_dir)
- [Tilde Expansion](#tilde-expansion)
- [Manifest file](#manifest-file)
- [How it works](#how-it-works)
- [FAQ](#faq)
@@ -36,7 +39,7 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
```yaml
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
```
If you do not specify a version, this action will look for a [required-version](https://docs.astral.sh/uv/reference/settings/#required-version)
@@ -49,7 +52,7 @@ For an example workflow, see
```yaml
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "latest"
```
@@ -58,7 +61,7 @@ For an example workflow, see
```yaml
- name: Install a specific version of uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.4"
```
@@ -71,57 +74,47 @@ to install the latest version that satisfies the range.
```yaml
- name: Install a semver range of uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: ">=0.4.0"
```
```yaml
- name: Pinning a minor version of uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.4.x"
```
```yaml
- name: Install a pep440-specifier-satisfying version of uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: ">=0.4.25,<0.5"
```
### Install a required-version
### Install a version defined in a requirements or config file
You can specify a [required-version](https://docs.astral.sh/uv/reference/settings/#required-version)
in either a `uv.toml` or `pyproject.toml` file:
You can use the `version-file` input to specify a file that contains the version of uv to install.
This can either be a `pyproject.toml` or `uv.toml` file which defines a `required-version` or
uv defined as a dependency in `pyproject.toml` or `requirements.txt`.
```yaml
- name: Install required-version defined in uv.toml
uses: astral-sh/setup-uv@v5
- name: Install uv based on the version defined in pyproject.toml
uses: astral-sh/setup-uv@v6
with:
uv-file: "path/to/uv.toml"
```
```yaml
- name: Install required-version defined in pyproject.toml
uses: astral-sh/setup-uv@v5
with:
pyproject-file: "path/to/pyproject.toml"
version-file: "pyproject.toml"
```
### Python version
You can use the input `python-version` to
- set the environment variable `UV_PYTHON` for the rest of your workflow
- create a new virtual environment with the specified python version
- activate the virtual environment for the rest of your workflow
You can use the input `python-version` to set the environment variable `UV_PYTHON` for the rest of your workflow
This will override any python version specifications in `pyproject.toml` and `.python-version`
```yaml
- name: Install the latest version of uv and set the python version to 3.13t
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
python-version: 3.13t
- run: uv pip install --python=3.13t pip
@@ -139,13 +132,51 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Install the latest version of uv and set the python version
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
python-version: ${{ matrix.python-version }}
- name: Test with python ${{ matrix.python-version }}
run: uv run --frozen pytest
```
### Activate environment
You can set `activate-environment` to `true` to automatically activate a venv.
This allows directly using it in later steps:
```yaml
- name: Install the latest version of uv and activate the environment
uses: astral-sh/setup-uv@v6
with:
activate-environment: true
- run: uv pip install pip
```
> [!WARNING]
>
> Activating the environment adds your dependencies to the `PATH`, which could break some workflows.
> For example, if you have a dependency which requires uv, e.g., `hatch`, activating the
> environment will shadow the `uv` binary installed by this action and may result in a different uv
> version being used.
>
> We do not recommend using this setting for most use-cases. Instead, use `uv run` to execute
> commands in the environment.
### Working directory
You can set the working directory with the `working-directory` input.
This controls where we look for `pyproject.toml`, `uv.toml` and `.python-version` files
which are used to determine the version of uv and python to install.
It also controls where [the venv gets created](#activate-environment).
```yaml
- name: Install uv based on the config files in the working-directory
uses: astral-sh/setup-uv@v6
with:
working-directory: my/subproject/dir
```
### Validate checksum
You can specify a checksum to validate the downloaded executable. Checksums up to the default version
@@ -154,7 +185,7 @@ are automatically verified by this action. The sha256 hashes can be found on the
```yaml
- name: Install a specific version and validate the checksum
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
version: "0.3.1"
checksum: "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8"
@@ -176,7 +207,7 @@ You can optionally define a custom cache key suffix.
```yaml
- name: Enable caching and define a custom cache key suffix
id: setup-uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-suffix: "optional-suffix"
@@ -204,13 +235,17 @@ changes. If you use relative paths, they are relative to the repository root.
> The default is
> ```yaml
> cache-dependency-glob: |
> **/requirements*.txt
> **/*requirements*.txt
> **/*requirements*.in
> **/*constraints*.txt
> **/*constraints*.in
> **/pyproject.toml
> **/uv.lock
> ```
```yaml
- name: Define a cache dependency glob
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: "**/pyproject.toml"
@@ -218,7 +253,7 @@ changes. If you use relative paths, they are relative to the repository root.
```yaml
- name: Define a list of cache dependency globs
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: |
@@ -228,7 +263,7 @@ changes. If you use relative paths, they are relative to the repository root.
```yaml
- name: Define an absolute cache dependency glob
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: "/tmp/my-folder/requirements*.txt"
@@ -236,7 +271,7 @@ changes. If you use relative paths, they are relative to the repository root.
```yaml
- name: Never invalidate the cache
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: ""
@@ -251,7 +286,7 @@ It defaults to `setup-uv-cache` in the `TMP` dir, `D:\a\_temp\uv-tool-dir` on Wi
```yaml
- name: Define a custom uv cache path
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
cache-local-path: "/path/to/cache"
```
@@ -270,7 +305,7 @@ input.
```yaml
- name: Don't prune the cache before saving it
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
prune-cache: false
@@ -283,7 +318,7 @@ If you want to ignore this, set the `ignore-nothing-to-cache` input to `true`.
```yaml
- name: Ignore nothing to cache
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
ignore-nothing-to-cache: true
@@ -298,7 +333,7 @@ If you want to ignore this, set the `ignore-empty-workdir` input to `true`.
```yaml
- name: Ignore empty workdir
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
ignore-empty-workdir: true
```
@@ -315,7 +350,7 @@ are not sufficient, you can provide a custom GitHub token with the necessary per
```yaml
- name: Install the latest version of uv with a custom GitHub token
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
github-token: ${{ secrets.CUSTOM_GITHUB_TOKEN }}
```
@@ -333,7 +368,7 @@ input:
```yaml
- name: Install the latest version of uv with a custom tool dir
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
tool-dir: "/path/to/tool/dir"
```
@@ -352,7 +387,7 @@ If you want to change this behaviour (especially on self-hosted runners) you can
```yaml
- name: Install the latest version of uv with a custom tool bin dir
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
tool-bin-dir: "/path/to/tool-bin/dir"
```
@@ -368,7 +403,7 @@ This action supports expanding the `~` character to the user's home directory fo
```yaml
- name: Expand the tilde character
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
cache-local-path: "~/path/to/cache"
tool-dir: "~/path/to/tool/dir"
@@ -376,6 +411,44 @@ This action supports expanding the `~` character to the user's home directory fo
cache-dependency-glob: "~/my-cache-buster"
```
### Manifest file
The `manifest-file` input allows you to specify a JSON manifest that lists available uv versions,
architectures, and their download URLs. By default, this action uses the manifest file contained
in this repository, which is automatically updated with each release of uv.
The manifest file contains an array of objects, each describing a version,
architecture, platform, and the corresponding download URL. For example:
```json
[
{
"version": "0.7.13",
"artifactName": "uv-aarch64-apple-darwin.tar.gz",
"arch": "aarch64",
"platform": "apple-darwin",
"downloadUrl": "https://github.com/astral-sh/uv/releases/download/0.7.13/uv-aarch64-apple-darwin.tar.gz"
},
...
]
```
You can supply a custom manifest file URL to define additional versions,
architectures, or different download URLs.
This is useful if you maintain your own uv builds or want to override the default sources.
```yaml
- name: Use a custom manifest file
uses: astral-sh/setup-uv@v6
with:
manifest-file: "https://example.com/my-custom-manifest.json"
```
> [!NOTE]
> When you use a custom manifest file and do not set the `version` input, its default value is `latest`.
> This means the action will install the latest version available in the custom manifest file.
> This is different from the default behavior of installing the latest version from the official uv releases.
## How it works
This action downloads uv from the uv repo's official
@@ -383,7 +456,7 @@ This action downloads uv from the uv repo's official
[GitHub Actions Toolkit](https://github.com/actions/toolkit) to cache it as a tool to speed up
consecutive runs on self-hosted runners.
The installed version of uv is then added to the runner PATH, enabling subsequent steps to invoke it
The installed version of uv is then added to the runner PATH, enabling later steps to invoke it
by name (`uv`).
## FAQ
@@ -401,7 +474,7 @@ For example:
- name: Checkout the repository
uses: actions/checkout@main
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- name: Test
@@ -413,7 +486,7 @@ To install a specific version of Python, use
```yaml
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- name: Install Python 3.12
@@ -432,7 +505,7 @@ output:
uses: actions/checkout@main
- name: Install the default version of uv
id: setup-uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
- name: Print the installed version
run: echo "Installed uv version is ${{ steps.setup-uv.outputs.uv-version }}"
```
@@ -478,6 +551,28 @@ Some workflows need uv but do not need to access the repository content.
But **if** you need to access the repository content, you have run `actions/checkout` before running `setup-uv`.
Running `actions/checkout` after `setup-uv` **is not supported**.
### Does `setup-uv` also install my project or its dependencies automatically?
No, `setup-uv` alone wont install any libraries from your `pyproject.toml` or `requirements.txt`, it only sets up `uv`.
You should run `uv sync` or `uv pip install .` separately, or use `uv run ...` to ensure necessary dependencies are installed.
### Why is a changed cache not detected and not the full cache uploaded?
When `setup-uv` starts it has to know whether it is better to download an existing cache
or start fresh and download every dependency again.
It does this by using a combination of hashes calculated on the contents of e.g. `uv.lock`.
By calculating these hashes and combining them in a key `setup-uv` can check
if an uploaded cache exists for this key.
If yes (e.g. contents of `uv.lock` did not change since last run) the dependencies in the cache
are up to date and the cache will be downloaded and used.
Details on determining which files will lead to different caches can be read under
[cache-dependency-glob](#cache-dependency-glob)
Some dependencies will never be uploaded to the cache and will be downloaded again on each run
as described in [disable-cache-pruning](#disable-cache-pruning)
## Acknowledgements
`setup-uv` was initially written and published by [Kevin Stillhammer](https://github.com/eifinger)

View File

@@ -0,0 +1,9 @@
[
{
"version": "0.7.12-alpha.1",
"artifactName": "uv-x86_64-unknown-linux-gnu.tar.gz",
"arch": "x86_64",
"platform": "unknown-linux-gnu",
"downloadUrl": "https://release.pyx.dev/0.7.12-alpha.1/uv-x86_64-unknown-linux-gnu.tar.gz"
}
]

View File

@@ -0,0 +1 @@
print("Hello world")

View File

@@ -0,0 +1,2 @@
uvicorn==0.35.0
uv==0.6.17

View File

@@ -0,0 +1,10 @@
import { getUvVersionFromFile } from "../../src/version/resolve";
import { expect, test } from "@jest/globals";
test("ignores dependencies starting with uv", async () => {
const parsedVersion = getUvVersionFromFile(
"__tests__/fixtures/uv-in-requirements-txt-project/requirements.txt",
);
expect(parsedVersion).toBe("0.6.17");
});

View File

@@ -6,18 +6,25 @@ inputs:
version:
description: "The version of uv to install e.g., `0.5.0` Defaults to the version in pyproject.toml or 'latest'."
default: ""
pyproject-file:
description: "Path to a pyproject.toml"
default: ""
uv-file:
description: "Path to a uv.toml"
version-file:
description: "Path to a file containing the version of uv to install. Defaults to searching for uv.toml and if not found pyproject.toml."
default: ""
python-version:
description: "The version of Python to set UV_PYTHON to"
required: false
activate-environment:
description: "Use uv venv to activate a venv ready to be used by later steps. "
default: "false"
working-directory:
description: "The directory to execute all commands in and look for files such as pyproject.toml"
default: ${{ github.workspace }}
checksum:
description: "The checksum of the uv version to install"
required: false
server-url:
description: "(Deprecated) The server url to use when downloading uv"
required: false
default: "https://github.com"
github-token:
description:
"Used to increase the rate limit when retrieving versions and downloading uv."
@@ -31,8 +38,12 @@ inputs:
"Glob pattern to match files relative to the repository root to control
the cache."
default: |
**/*requirements*.txt
**/*requirements*.in
**/*constraints*.txt
**/*constraints*.in
**/pyproject.toml
**/uv.lock
**/requirements*.txt
cache-suffix:
description: "Suffix for the cache key"
required: false
@@ -54,6 +65,9 @@ inputs:
tool-bin-dir:
description: "Custom path to set UV_TOOL_BIN_DIR to."
required: false
manifest-file:
description: "URL to the manifest file containing available versions and download URLs."
required: false
outputs:
uv-version:
description: "The installed uv version. Useful when using latest."

95
dist/save-cache/index.js generated vendored
View File

@@ -13417,7 +13417,7 @@ module.exports = {
const { parseSetCookie } = __nccwpck_require__(7803)
const { stringify, getHeadersList } = __nccwpck_require__(6338)
const { stringify } = __nccwpck_require__(6338)
const { webidl } = __nccwpck_require__(8134)
const { Headers } = __nccwpck_require__(9061)
@@ -13493,14 +13493,13 @@ function getSetCookies (headers) {
webidl.brandCheck(headers, Headers, { strict: false })
const cookies = getHeadersList(headers).cookies
const cookies = headers.getSetCookie()
if (!cookies) {
return []
}
// In older versions of undici, cookies is a list of name:value.
return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))
return cookies.map((pair) => parseSetCookie(pair))
}
/**
@@ -13928,14 +13927,15 @@ module.exports = {
/***/ }),
/***/ 6338:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
/***/ ((module) => {
"use strict";
const assert = __nccwpck_require__(2613)
const { kHeadersList } = __nccwpck_require__(9411)
/**
* @param {string} value
* @returns {boolean}
*/
function isCTLExcludingHtab (value) {
if (value.length === 0) {
return false
@@ -14196,31 +14196,13 @@ function stringify (cookie) {
return out.join('; ')
}
let kHeadersListNode
function getHeadersList (headers) {
if (headers[kHeadersList]) {
return headers[kHeadersList]
}
if (!kHeadersListNode) {
kHeadersListNode = Object.getOwnPropertySymbols(headers).find(
(symbol) => symbol.description === 'headers list'
)
assert(kHeadersListNode, 'Headers cannot be parsed')
}
const headersList = headers[kHeadersListNode]
assert(headersList)
return headersList
}
module.exports = {
isCTLExcludingHtab,
stringify,
getHeadersList
validateCookieName,
validateCookiePath,
validateCookieValue,
toIMFDate,
stringify
}
@@ -18224,6 +18206,7 @@ const {
isValidHeaderName,
isValidHeaderValue
} = __nccwpck_require__(555)
const util = __nccwpck_require__(9023)
const { webidl } = __nccwpck_require__(8134)
const assert = __nccwpck_require__(2613)
@@ -18777,6 +18760,9 @@ Object.defineProperties(Headers.prototype, {
[Symbol.toStringTag]: {
value: 'Headers',
configurable: true
},
[util.inspect.custom]: {
enumerable: false
}
})
@@ -27953,6 +27939,20 @@ class Pool extends PoolBase {
? { ...options.interceptors }
: undefined
this[kFactory] = factory
this.on('connectionError', (origin, targets, error) => {
// If a connection error occurs, we remove the client from the pool,
// and emit a connectionError event. They will not be re-used.
// Fixes https://github.com/nodejs/undici/issues/3895
for (const target of targets) {
// Do not use kRemoveClient here, as it will close the client,
// but the client cannot be closed in this state.
const idx = this[kClients].indexOf(target)
if (idx !== -1) {
this[kClients].splice(idx, 1)
}
}
})
}
[kGetDispatcher] () {
@@ -88715,7 +88715,8 @@ async function computeKeys() {
const suffix = inputs_1.cacheSuffix ? `-${inputs_1.cacheSuffix}` : "";
const pythonVersion = await getPythonVersion();
const platform = await (0, platforms_1.getPlatform)();
return `setup-uv-${CACHE_VERSION}-${(0, platforms_1.getArch)()}-${platform}-${pythonVersion}${cacheDependencyPathHash}${suffix}`;
const pruned = inputs_1.pruneCache ? "-pruned" : "";
return `setup-uv-${CACHE_VERSION}-${(0, platforms_1.getArch)()}-${platform}-${pythonVersion}${pruned}${cacheDependencyPathHash}${suffix}`;
}
async function getPythonVersion() {
if (inputs_1.pythonVersion !== "") {
@@ -88731,7 +88732,7 @@ async function getPythonVersion() {
},
};
try {
const execArgs = ["python", "find"];
const execArgs = ["python", "find", "--directory", inputs_1.workingDirectory];
await exec.exec("uv", execArgs, options);
const pythonPath = output.trim();
output = "";
@@ -88997,13 +88998,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.githubToken = exports.toolDir = exports.toolBinDir = exports.ignoreEmptyWorkdir = exports.ignoreNothingToCache = exports.pruneCache = exports.cacheDependencyGlob = exports.cacheLocalPath = exports.cacheSuffix = exports.enableCache = exports.checkSum = exports.pythonVersion = exports.uvFile = exports.pyProjectFile = exports.version = void 0;
exports.manifestFile = exports.githubToken = exports.serverUrl = exports.toolDir = exports.toolBinDir = exports.ignoreEmptyWorkdir = exports.ignoreNothingToCache = exports.pruneCache = exports.cacheDependencyGlob = exports.cacheLocalPath = exports.cacheSuffix = exports.enableCache = exports.checkSum = exports.workingDirectory = exports.activateEnvironment = exports.pythonVersion = exports.versionFile = exports.version = void 0;
const core = __importStar(__nccwpck_require__(7484));
const node_path_1 = __importDefault(__nccwpck_require__(6760));
exports.version = core.getInput("version");
exports.pyProjectFile = core.getInput("pyproject-file");
exports.uvFile = core.getInput("uv-file");
exports.versionFile = core.getInput("version-file");
exports.pythonVersion = core.getInput("python-version");
exports.activateEnvironment = core.getBooleanInput("activate-environment");
exports.workingDirectory = core.getInput("working-directory");
exports.checkSum = core.getInput("checksum");
exports.enableCache = getEnableCache();
exports.cacheSuffix = core.getInput("cache-suffix") || "";
@@ -89014,7 +89016,9 @@ exports.ignoreNothingToCache = core.getInput("ignore-nothing-to-cache") === "tru
exports.ignoreEmptyWorkdir = core.getInput("ignore-empty-workdir") === "true";
exports.toolBinDir = getToolBinDir();
exports.toolDir = getToolDir();
exports.serverUrl = core.getInput("server-url");
exports.githubToken = core.getInput("github-token");
exports.manifestFile = getManifestFile();
function getEnableCache() {
const enableCacheInput = core.getInput("enable-cache");
if (enableCacheInput === "auto") {
@@ -89053,10 +89057,16 @@ function getCacheLocalPath() {
if (cacheLocalPathInput !== "") {
return expandTilde(cacheLocalPathInput);
}
if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${node_path_1.default.sep}setup-uv-cache`;
if (process.env.RUNNER_ENVIRONMENT === "github-hosted") {
if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${node_path_1.default.sep}setup-uv-cache`;
}
throw Error("Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input");
}
throw Error("Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input");
if (process.platform === "win32") {
return `${process.env.APPDATA}${node_path_1.default.sep}uv${node_path_1.default.sep}cache`;
}
return `${process.env.HOME}${node_path_1.default.sep}.cache${node_path_1.default.sep}uv`;
}
function expandTilde(input) {
if (input.startsWith("~")) {
@@ -89064,6 +89074,13 @@ function expandTilde(input) {
}
return input;
}
function getManifestFile() {
const manifestFileInput = core.getInput("manifest-file");
if (manifestFileInput !== "") {
return manifestFileInput;
}
return undefined;
}
/***/ }),

1944
dist/setup/index.js generated vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

451
package-lock.json generated
View File

@@ -15,22 +15,23 @@
"@actions/glob": "^0.5.0",
"@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.2",
"@octokit/core": "^6.1.4",
"@octokit/plugin-paginate-rest": "^11.4.3",
"@octokit/plugin-rest-endpoint-methods": "^13.3.1",
"@octokit/core": "^7.0.2",
"@octokit/plugin-paginate-rest": "^13.1.1",
"@octokit/plugin-rest-endpoint-methods": "^16.0.0",
"@renovatebot/pep440": "^4.1.0",
"smol-toml": "^1.3.1",
"undici": "^7.5.0"
"smol-toml": "^1.3.4",
"undici": "^7.10.0"
},
"devDependencies": {
"@biomejs/biome": "1.9.4",
"@types/node": "^22.13.10",
"@types/semver": "^7.5.8",
"@types/js-yaml": "^4.0.9",
"@types/node": "^24.0.14",
"@types/semver": "^7.7.0",
"@vercel/ncc": "^0.38.3",
"jest": "^29.7.0",
"js-yaml": "^4.1.0",
"ts-jest": "^29.2.6",
"typescript": "^5.8.2"
"ts-jest": "^29.4.0",
"typescript": "^5.8.3"
}
},
"node_modules/@actions/cache": {
@@ -96,9 +97,10 @@
}
},
"node_modules/@actions/http-client/node_modules/undici": {
"version": "5.28.5",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz",
"integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==",
"version": "5.29.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
"integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
"license": "MIT",
"dependencies": {
"@fastify/busboy": "^2.0.0"
},
@@ -1512,120 +1514,130 @@
}
},
"node_modules/@octokit/auth-token": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
"integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==",
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz",
"integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==",
"license": "MIT",
"engines": {
"node": ">= 18"
"node": ">= 20"
}
},
"node_modules/@octokit/core": {
"version": "6.1.4",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz",
"integrity": "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==",
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.2.tgz",
"integrity": "sha512-ODsoD39Lq6vR6aBgvjTnA3nZGliknKboc9Gtxr7E4WDNqY24MxANKcuDQSF0jzapvGb3KWOEDrKfve4HoWGK+g==",
"license": "MIT",
"dependencies": {
"@octokit/auth-token": "^5.0.0",
"@octokit/graphql": "^8.1.2",
"@octokit/request": "^9.2.1",
"@octokit/request-error": "^6.1.7",
"@octokit/types": "^13.6.2",
"before-after-hook": "^3.0.2",
"@octokit/auth-token": "^6.0.0",
"@octokit/graphql": "^9.0.1",
"@octokit/request": "^10.0.2",
"@octokit/request-error": "^7.0.0",
"@octokit/types": "^14.0.0",
"before-after-hook": "^4.0.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
"node": ">= 18"
"node": ">= 20"
}
},
"node_modules/@octokit/endpoint": {
"version": "10.1.3",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz",
"integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==",
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.0.tgz",
"integrity": "sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==",
"license": "MIT",
"dependencies": {
"@octokit/types": "^13.6.2",
"@octokit/types": "^14.0.0",
"universal-user-agent": "^7.0.2"
},
"engines": {
"node": ">= 18"
"node": ">= 20"
}
},
"node_modules/@octokit/graphql": {
"version": "8.1.2",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.2.tgz",
"integrity": "sha512-bdlj/CJVjpaz06NBpfHhp4kGJaRZfz7AzC+6EwUImRtrwIw8dIgJ63Xg0OzV9pRn3rIzrt5c2sa++BL0JJ8GLw==",
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.1.tgz",
"integrity": "sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==",
"license": "MIT",
"dependencies": {
"@octokit/request": "^9.1.4",
"@octokit/types": "^13.6.2",
"@octokit/request": "^10.0.2",
"@octokit/types": "^14.0.0",
"universal-user-agent": "^7.0.0"
},
"engines": {
"node": ">= 18"
"node": ">= 20"
}
},
"node_modules/@octokit/openapi-types": {
"version": "23.0.1",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz",
"integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g=="
"version": "25.1.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz",
"integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==",
"license": "MIT"
},
"node_modules/@octokit/plugin-paginate-rest": {
"version": "11.4.3",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.3.tgz",
"integrity": "sha512-tBXaAbXkqVJlRoA/zQVe9mUdb8rScmivqtpv3ovsC5xhje/a+NOCivs7eUhWBwCApJVsR4G5HMeaLbq7PxqZGA==",
"version": "13.1.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-13.1.1.tgz",
"integrity": "sha512-q9iQGlZlxAVNRN2jDNskJW/Cafy7/XE52wjZ5TTvyhyOD904Cvx//DNyoO3J/MXJ0ve3rPoNWKEg5iZrisQSuw==",
"license": "MIT",
"dependencies": {
"@octokit/types": "^13.7.0"
"@octokit/types": "^14.1.0"
},
"engines": {
"node": ">= 18"
"node": ">= 20"
},
"peerDependencies": {
"@octokit/core": ">=6"
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods": {
"version": "13.3.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.1.tgz",
"integrity": "sha512-o8uOBdsyR+WR8MK9Cco8dCgvG13H1RlM1nWnK/W7TEACQBFux/vPREgKucxUfuDQ5yi1T3hGf4C5ZmZXAERgwQ==",
"version": "16.0.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-16.0.0.tgz",
"integrity": "sha512-kJVUQk6/dx/gRNLWUnAWKFs1kVPn5O5CYZyssyEoNYaFedqZxsfYs7DwI3d67hGz4qOwaJ1dpm07hOAD1BXx6g==",
"license": "MIT",
"dependencies": {
"@octokit/types": "^13.8.0"
"@octokit/types": "^14.1.0"
},
"engines": {
"node": ">= 18"
"node": ">= 20"
},
"peerDependencies": {
"@octokit/core": ">=6"
}
},
"node_modules/@octokit/request": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz",
"integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==",
"version": "10.0.2",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.2.tgz",
"integrity": "sha512-iYj4SJG/2bbhh+iIpFmG5u49DtJ4lipQ+aPakjL9OKpsGY93wM8w06gvFbEQxcMsZcCvk5th5KkIm2m8o14aWA==",
"license": "MIT",
"dependencies": {
"@octokit/endpoint": "^10.1.3",
"@octokit/request-error": "^6.1.7",
"@octokit/types": "^13.6.2",
"fast-content-type-parse": "^2.0.0",
"@octokit/endpoint": "^11.0.0",
"@octokit/request-error": "^7.0.0",
"@octokit/types": "^14.0.0",
"fast-content-type-parse": "^3.0.0",
"universal-user-agent": "^7.0.2"
},
"engines": {
"node": ">= 18"
"node": ">= 20"
}
},
"node_modules/@octokit/request-error": {
"version": "6.1.7",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
"integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.0.tgz",
"integrity": "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==",
"license": "MIT",
"dependencies": {
"@octokit/types": "^13.6.2"
"@octokit/types": "^14.0.0"
},
"engines": {
"node": ">= 18"
"node": ">= 20"
}
},
"node_modules/@octokit/types": {
"version": "13.8.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz",
"integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==",
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz",
"integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==",
"license": "MIT",
"dependencies": {
"@octokit/openapi-types": "^23.0.1"
"@octokit/openapi-types": "^25.1.0"
}
},
"node_modules/@opentelemetry/api": {
@@ -1814,12 +1826,20 @@
"@types/istanbul-lib-report": "*"
}
},
"node_modules/@types/js-yaml": {
"version": "4.0.9",
"resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz",
"integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/node": {
"version": "22.13.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz",
"integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==",
"version": "24.0.14",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.14.tgz",
"integrity": "sha512-4zXMWD91vBLGRtHK3YbIoFMia+1nqEz72coM42C5ETjnNCa/heoj7NT1G67iAfOqMmcfhuCZ4uNpyz8EjlAejw==",
"license": "MIT",
"dependencies": {
"undici-types": "~6.20.0"
"undici-types": "~7.8.0"
}
},
"node_modules/@types/node-fetch": {
@@ -1845,10 +1865,11 @@
}
},
"node_modules/@types/semver": {
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
"integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
"dev": true
"version": "7.7.0",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz",
"integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/stack-utils": {
"version": "2.0.1",
@@ -2077,9 +2098,10 @@
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"node_modules/before-after-hook": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
"integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz",
"integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==",
"license": "Apache-2.0"
},
"node_modules/brace-expansion": {
"version": "1.1.11",
@@ -2547,9 +2569,9 @@
}
},
"node_modules/fast-content-type-parse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
"integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz",
"integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==",
"funding": [
{
"type": "github",
@@ -2559,7 +2581,8 @@
"type": "opencollective",
"url": "https://opencollective.com/fastify"
}
]
],
"license": "MIT"
},
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
@@ -4182,9 +4205,10 @@
}
},
"node_modules/smol-toml": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz",
"integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==",
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.4.tgz",
"integrity": "sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA==",
"license": "BSD-3-Clause",
"engines": {
"node": ">= 18"
},
@@ -4360,19 +4384,20 @@
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"node_modules/ts-jest": {
"version": "29.2.6",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.6.tgz",
"integrity": "sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==",
"version": "29.4.0",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.0.tgz",
"integrity": "sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"bs-logger": "^0.2.6",
"ejs": "^3.1.10",
"fast-json-stable-stringify": "^2.1.0",
"jest-util": "^29.0.0",
"json5": "^2.2.3",
"lodash.memoize": "^4.1.2",
"make-error": "^1.3.6",
"semver": "^7.7.1",
"semver": "^7.7.2",
"type-fest": "^4.41.0",
"yargs-parser": "^21.1.1"
},
"bin": {
@@ -4383,10 +4408,11 @@
},
"peerDependencies": {
"@babel/core": ">=7.0.0-beta.0 <8",
"@jest/transform": "^29.0.0",
"@jest/types": "^29.0.0",
"babel-jest": "^29.0.0",
"jest": "^29.0.0",
"@jest/transform": "^29.0.0 || ^30.0.0",
"@jest/types": "^29.0.0 || ^30.0.0",
"babel-jest": "^29.0.0 || ^30.0.0",
"jest": "^29.0.0 || ^30.0.0",
"jest-util": "^29.0.0 || ^30.0.0",
"typescript": ">=4.3 <6"
},
"peerDependenciesMeta": {
@@ -4404,14 +4430,18 @@
},
"esbuild": {
"optional": true
},
"jest-util": {
"optional": true
}
}
},
"node_modules/ts-jest/node_modules/semver": {
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
},
@@ -4441,11 +4471,25 @@
"node": ">=4"
}
},
"node_modules/typescript": {
"version": "5.8.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
"integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
"node_modules/type-fest": {
"version": "4.41.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
"integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/typescript": {
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"dev": true,
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -4455,22 +4499,25 @@
}
},
"node_modules/undici": {
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.5.0.tgz",
"integrity": "sha512-NFQG741e8mJ0fLQk90xKxFdaSM7z4+IQpAgsFI36bCDY9Z2+aXXZjVy2uUksMouWfMI9+w5ejOq5zYYTBCQJDQ==",
"version": "7.10.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz",
"integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==",
"license": "MIT",
"engines": {
"node": ">=20.18.1"
}
},
"node_modules/undici-types": {
"version": "6.20.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="
"version": "7.8.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
"integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==",
"license": "MIT"
},
"node_modules/universal-user-agent": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
"integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q=="
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz",
"integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==",
"license": "ISC"
},
"node_modules/update-browserslist-db": {
"version": "1.0.10",
@@ -4732,9 +4779,9 @@
},
"dependencies": {
"undici": {
"version": "5.28.5",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz",
"integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==",
"version": "5.29.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
"integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
"requires": {
"@fastify/busboy": "^2.0.0"
}
@@ -5800,90 +5847,90 @@
}
},
"@octokit/auth-token": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz",
"integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz",
"integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w=="
},
"@octokit/core": {
"version": "6.1.4",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz",
"integrity": "sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==",
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.2.tgz",
"integrity": "sha512-ODsoD39Lq6vR6aBgvjTnA3nZGliknKboc9Gtxr7E4WDNqY24MxANKcuDQSF0jzapvGb3KWOEDrKfve4HoWGK+g==",
"requires": {
"@octokit/auth-token": "^5.0.0",
"@octokit/graphql": "^8.1.2",
"@octokit/request": "^9.2.1",
"@octokit/request-error": "^6.1.7",
"@octokit/types": "^13.6.2",
"before-after-hook": "^3.0.2",
"@octokit/auth-token": "^6.0.0",
"@octokit/graphql": "^9.0.1",
"@octokit/request": "^10.0.2",
"@octokit/request-error": "^7.0.0",
"@octokit/types": "^14.0.0",
"before-after-hook": "^4.0.0",
"universal-user-agent": "^7.0.0"
}
},
"@octokit/endpoint": {
"version": "10.1.3",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz",
"integrity": "sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==",
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.0.tgz",
"integrity": "sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==",
"requires": {
"@octokit/types": "^13.6.2",
"@octokit/types": "^14.0.0",
"universal-user-agent": "^7.0.2"
}
},
"@octokit/graphql": {
"version": "8.1.2",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.2.tgz",
"integrity": "sha512-bdlj/CJVjpaz06NBpfHhp4kGJaRZfz7AzC+6EwUImRtrwIw8dIgJ63Xg0OzV9pRn3rIzrt5c2sa++BL0JJ8GLw==",
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.1.tgz",
"integrity": "sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==",
"requires": {
"@octokit/request": "^9.1.4",
"@octokit/types": "^13.6.2",
"@octokit/request": "^10.0.2",
"@octokit/types": "^14.0.0",
"universal-user-agent": "^7.0.0"
}
},
"@octokit/openapi-types": {
"version": "23.0.1",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz",
"integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g=="
"version": "25.1.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz",
"integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA=="
},
"@octokit/plugin-paginate-rest": {
"version": "11.4.3",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.3.tgz",
"integrity": "sha512-tBXaAbXkqVJlRoA/zQVe9mUdb8rScmivqtpv3ovsC5xhje/a+NOCivs7eUhWBwCApJVsR4G5HMeaLbq7PxqZGA==",
"version": "13.1.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-13.1.1.tgz",
"integrity": "sha512-q9iQGlZlxAVNRN2jDNskJW/Cafy7/XE52wjZ5TTvyhyOD904Cvx//DNyoO3J/MXJ0ve3rPoNWKEg5iZrisQSuw==",
"requires": {
"@octokit/types": "^13.7.0"
"@octokit/types": "^14.1.0"
}
},
"@octokit/plugin-rest-endpoint-methods": {
"version": "13.3.1",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.1.tgz",
"integrity": "sha512-o8uOBdsyR+WR8MK9Cco8dCgvG13H1RlM1nWnK/W7TEACQBFux/vPREgKucxUfuDQ5yi1T3hGf4C5ZmZXAERgwQ==",
"version": "16.0.0",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-16.0.0.tgz",
"integrity": "sha512-kJVUQk6/dx/gRNLWUnAWKFs1kVPn5O5CYZyssyEoNYaFedqZxsfYs7DwI3d67hGz4qOwaJ1dpm07hOAD1BXx6g==",
"requires": {
"@octokit/types": "^13.8.0"
"@octokit/types": "^14.1.0"
}
},
"@octokit/request": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz",
"integrity": "sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==",
"version": "10.0.2",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.2.tgz",
"integrity": "sha512-iYj4SJG/2bbhh+iIpFmG5u49DtJ4lipQ+aPakjL9OKpsGY93wM8w06gvFbEQxcMsZcCvk5th5KkIm2m8o14aWA==",
"requires": {
"@octokit/endpoint": "^10.1.3",
"@octokit/request-error": "^6.1.7",
"@octokit/types": "^13.6.2",
"fast-content-type-parse": "^2.0.0",
"@octokit/endpoint": "^11.0.0",
"@octokit/request-error": "^7.0.0",
"@octokit/types": "^14.0.0",
"fast-content-type-parse": "^3.0.0",
"universal-user-agent": "^7.0.2"
}
},
"@octokit/request-error": {
"version": "6.1.7",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz",
"integrity": "sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==",
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.0.tgz",
"integrity": "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==",
"requires": {
"@octokit/types": "^13.6.2"
"@octokit/types": "^14.0.0"
}
},
"@octokit/types": {
"version": "13.8.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz",
"integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==",
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz",
"integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==",
"requires": {
"@octokit/openapi-types": "^23.0.1"
"@octokit/openapi-types": "^25.1.0"
}
},
"@opentelemetry/api": {
@@ -6047,12 +6094,18 @@
"@types/istanbul-lib-report": "*"
}
},
"@types/js-yaml": {
"version": "4.0.9",
"resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz",
"integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==",
"dev": true
},
"@types/node": {
"version": "22.13.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz",
"integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==",
"version": "24.0.14",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.14.tgz",
"integrity": "sha512-4zXMWD91vBLGRtHK3YbIoFMia+1nqEz72coM42C5ETjnNCa/heoj7NT1G67iAfOqMmcfhuCZ4uNpyz8EjlAejw==",
"requires": {
"undici-types": "~6.20.0"
"undici-types": "~7.8.0"
}
},
"@types/node-fetch": {
@@ -6077,9 +6130,9 @@
}
},
"@types/semver": {
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
"integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
"version": "7.7.0",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz",
"integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==",
"dev": true
},
"@types/stack-utils": {
@@ -6260,9 +6313,9 @@
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"before-after-hook": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
"integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A=="
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz",
"integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ=="
},
"brace-expansion": {
"version": "1.1.11",
@@ -6581,9 +6634,9 @@
}
},
"fast-content-type-parse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz",
"integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q=="
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz",
"integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg=="
},
"fast-json-stable-stringify": {
"version": "2.1.0",
@@ -7801,9 +7854,9 @@
"dev": true
},
"smol-toml": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz",
"integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ=="
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.4.tgz",
"integrity": "sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA=="
},
"source-map": {
"version": "0.6.1",
@@ -7933,26 +7986,26 @@
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"ts-jest": {
"version": "29.2.6",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.6.tgz",
"integrity": "sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==",
"version": "29.4.0",
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.0.tgz",
"integrity": "sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q==",
"dev": true,
"requires": {
"bs-logger": "^0.2.6",
"ejs": "^3.1.10",
"fast-json-stable-stringify": "^2.1.0",
"jest-util": "^29.0.0",
"json5": "^2.2.3",
"lodash.memoize": "^4.1.2",
"make-error": "^1.3.6",
"semver": "^7.7.1",
"semver": "^7.7.2",
"type-fest": "^4.41.0",
"yargs-parser": "^21.1.1"
},
"dependencies": {
"semver": {
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"dev": true
}
}
@@ -7973,26 +8026,32 @@
"integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"dev": true
},
"type-fest": {
"version": "4.41.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
"integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
"dev": true
},
"typescript": {
"version": "5.8.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
"integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"dev": true
},
"undici": {
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.5.0.tgz",
"integrity": "sha512-NFQG741e8mJ0fLQk90xKxFdaSM7z4+IQpAgsFI36bCDY9Z2+aXXZjVy2uUksMouWfMI9+w5ejOq5zYYTBCQJDQ=="
"version": "7.10.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz",
"integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw=="
},
"undici-types": {
"version": "6.20.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="
"version": "7.8.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz",
"integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw=="
},
"universal-user-agent": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
"integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q=="
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz",
"integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A=="
},
"update-browserslist-db": {
"version": "1.0.10",

View File

@@ -9,10 +9,10 @@
"format": "biome format --fix",
"format-check": "biome format",
"lint": "biome lint --fix",
"package": "ncc build -o dist/setup src/setup-uv.ts && ncc build -o dist/save-cache src/save-cache.ts && ncc build -o dist/update-known-checksums src/update-known-checksums.ts",
"package": "ncc build -o dist/setup src/setup-uv.ts && ncc build -o dist/save-cache src/save-cache.ts && ncc build -o dist/update-known-versions src/update-known-versions.ts",
"test": "jest",
"act": "act pull_request -W .github/workflows/test.yml --container-architecture linux/amd64 -s GITHUB_TOKEN=\"$(gh auth token)\"",
"update-known-checksums": "RUNNER_TEMP=known_checksums node dist/update-known-checksums/index.js src/download/checksum/known-checksums.ts \"$(gh auth token)\"",
"update-known-versions": "RUNNER_TEMP=known_versions node dist/update-known-versions/index.js src/download/checksum/known-versions.ts \"$(gh auth token)\"",
"all": "npm run build && npm run format && npm run lint && npm run package && npm test"
},
"repository": {
@@ -29,21 +29,22 @@
"@actions/glob": "^0.5.0",
"@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.2",
"@octokit/core": "^6.1.4",
"@octokit/plugin-paginate-rest": "^11.4.3",
"@octokit/plugin-rest-endpoint-methods": "^13.3.1",
"@octokit/core": "^7.0.2",
"@octokit/plugin-paginate-rest": "^13.1.1",
"@octokit/plugin-rest-endpoint-methods": "^16.0.0",
"@renovatebot/pep440": "^4.1.0",
"smol-toml": "^1.3.1",
"undici": "^7.5.0"
"smol-toml": "^1.3.4",
"undici": "^7.10.0"
},
"devDependencies": {
"@biomejs/biome": "1.9.4",
"@types/node": "^22.13.10",
"@types/semver": "^7.5.8",
"@types/js-yaml": "^4.0.9",
"@types/node": "^24.0.14",
"@types/semver": "^7.7.0",
"@vercel/ncc": "^0.38.3",
"jest": "^29.7.0",
"js-yaml": "^4.1.0",
"ts-jest": "^29.2.6",
"typescript": "^5.8.2"
"ts-jest": "^29.4.0",
"typescript": "^5.8.3"
}
}

View File

@@ -4,7 +4,9 @@ import {
cacheDependencyGlob,
cacheLocalPath,
cacheSuffix,
pruneCache,
pythonVersion as pythonVersionInput,
workingDirectory,
} from "../utils/inputs";
import { getArch, getPlatform } from "../utils/platforms";
import { hashFiles } from "../hash/hash-files";
@@ -54,7 +56,8 @@ async function computeKeys(): Promise<string> {
const suffix = cacheSuffix ? `-${cacheSuffix}` : "";
const pythonVersion = await getPythonVersion();
const platform = await getPlatform();
return `setup-uv-${CACHE_VERSION}-${getArch()}-${platform}-${pythonVersion}${cacheDependencyPathHash}${suffix}`;
const pruned = pruneCache ? "-pruned" : "";
return `setup-uv-${CACHE_VERSION}-${getArch()}-${platform}-${pythonVersion}${pruned}${cacheDependencyPathHash}${suffix}`;
}
async function getPythonVersion(): Promise<string> {
@@ -73,7 +76,7 @@ async function getPythonVersion(): Promise<string> {
};
try {
const execArgs = ["python", "find"];
const execArgs = ["python", "find", "--directory", workingDirectory];
await exec.exec("uv", execArgs, options);
const pythonPath = output.trim();

View File

@@ -1,5 +1,909 @@
// AUTOGENERATED_DO_NOT_EDIT
export const KNOWN_CHECKSUMS: { [key: string]: string } = {
"aarch64-apple-darwin-0.7.22":
"707677074a9ae6906d4ccb22089341e3541db78022dc926e985bcc35fbb53a74",
"aarch64-pc-windows-msvc-0.7.22":
"bcbee39a55eca43ea286cbaa467b083888c7811ab8f47458063bc53331224f4d",
"aarch64-unknown-linux-gnu-0.7.22":
"d2ee24524f5ed45baceaddebded48493f7dd2692fad8a1d1796c606134c133b7",
"aarch64-unknown-linux-musl-0.7.22":
"1d524e7d61336ccdc4caa2299df811f318b96d81034ff621b7217d6c440a1702",
"arm-unknown-linux-musleabihf-0.7.22":
"ad458ba424cbd77f8278b634e9e14a2fea0ba1610b7a51b38e611cd8a8072792",
"armv7-unknown-linux-gnueabihf-0.7.22":
"3523c1f0396249bc3eae97f15141921108214e4fdce50f153272c79c91d3e737",
"armv7-unknown-linux-musleabihf-0.7.22":
"b96ec5d9be9527fe3a4e6642e26489cd1b12a8cbd3f2b80145bd61bd4919e188",
"i686-pc-windows-msvc-0.7.22":
"aca18c571d8bd6d370e0440a16544afde421ea01585721a46d3847c11404fb41",
"i686-unknown-linux-gnu-0.7.22":
"ea5f6c1460843bd1c391e06d731278707806666438a9389f957e604f60be3eca",
"i686-unknown-linux-musl-0.7.22":
"e20e7eceb3100bc93ed638d723a5b4f9985dd2650398b3f10b175a93e744c7b7",
"powerpc64-unknown-linux-gnu-0.7.22":
"7e7281c99a62a729483ea0268511bf9416a97f6256cc9123d7910b42d7c27937",
"powerpc64le-unknown-linux-gnu-0.7.22":
"0891f6f9fb7099cf35cc6bf4d3e565504ce793466d0a592056703518cb771dcf",
"riscv64gc-unknown-linux-gnu-0.7.22":
"8bf7e0bff7f1cfa2c8057405c2f5a377c7b864a83dfff8ce045f5773374f7add",
"s390x-unknown-linux-gnu-0.7.22":
"d7aba1fe8783e39f5f05061fc255a28d98eff0b83600915b606903ee1764b674",
"x86_64-apple-darwin-0.7.22":
"af8fb83280a000f5864653ca0c9a1f69bbdbc8b2bbfeb2e1d450ce7fd1518ff1",
"x86_64-pc-windows-msvc-0.7.22":
"ce5c13291643e8306e8d2dbcaf340d36ea985a761a53f2ca0a45e1a8e8936c85",
"x86_64-unknown-linux-gnu-0.7.22":
"8379e040fa1828e662968edaa3856aaeb6e1a0a0ec76ef8583096be1f72f19d4",
"x86_64-unknown-linux-musl-0.7.22":
"0508e73f28fa4024c76c4e0a5e347fea6aeb4bead0234618e6cfb76804237259",
"aarch64-apple-darwin-0.7.21":
"c73af7a4e0bcea9b5b593a0c7e5c025ee78d8be3f7cd60bfeadc8614a16c92ef",
"aarch64-pc-windows-msvc-0.7.21":
"877454562ba2af12a020652fb8f63d14b6c05aa6d1d3497441822c6c0b198541",
"aarch64-unknown-linux-gnu-0.7.21":
"1dae18211605b9d00767d913da5108aea50200a88372bf8a2e1f56abdbe509f0",
"aarch64-unknown-linux-musl-0.7.21":
"6577895c91a6bf6c1fda5f0fdfd07f8ee05f75f24a70a49193f8fb8dcde81fc3",
"arm-unknown-linux-musleabihf-0.7.21":
"cb175698eeb3abf77c00c4d19e9c5e10ed847f6988769f5b18a5c98c1ebd21ad",
"armv7-unknown-linux-gnueabihf-0.7.21":
"9c64218ebc2f96520105fddf3b500026a50d9319c7faf4d2221a7113efd96fd7",
"armv7-unknown-linux-musleabihf-0.7.21":
"9f83f0c4821e572e9289e270e64429495b188e372519ee88524e97b50943e657",
"i686-pc-windows-msvc-0.7.21":
"aaf3f3bc934616214e1f33ccb22432dc59110211b2b15636d66e8e42e9cf2f6f",
"i686-unknown-linux-gnu-0.7.21":
"141a4ecfe0bf08e82fe5834a0fd265cf3c27833c1bfbab69344efb1604c2d964",
"i686-unknown-linux-musl-0.7.21":
"ae1faeda2475f0df8733215133771da58de159d9e7b5a728f30047708e21a724",
"powerpc64-unknown-linux-gnu-0.7.21":
"bef76b3992d21682dfc82e096d18f449d43a757f28a00a62eb7e05002349f287",
"powerpc64le-unknown-linux-gnu-0.7.21":
"107c6c5a444c27bf772b1ec233b5b83dffd79348488cccc832dc9c14ee5ddf56",
"riscv64gc-unknown-linux-gnu-0.7.21":
"c5c160e64809ae29404354e555df7264763f7cf67012ffc1350619cc9d19299b",
"s390x-unknown-linux-gnu-0.7.21":
"77f3472201867a766e6f2a37ceb2e2f2f78343d3460c2313e3643483c80ecf92",
"x86_64-apple-darwin-0.7.21":
"f8a9b4f4a80a44653344d36b53e148134176e8f7cc99f8e823676a57c884595e",
"x86_64-pc-windows-msvc-0.7.21":
"7a4e427ceaf3c7d8437e512cbc25af84796c4079cf842c3349d4b646a9209da5",
"x86_64-unknown-linux-gnu-0.7.21":
"ca3e8898adfce5fcc891d393a079013fa4bd0d9636cef11aded8a7485bcba312",
"x86_64-unknown-linux-musl-0.7.21":
"7400debadcd63e530cf58c3cfc71d43d5a1017d2f699be86c6e91d7dc2073c7c",
"aarch64-apple-darwin-0.7.20":
"69da236af5934209a5c059fff1b2f69068918c423601f42448b1d92336853127",
"aarch64-pc-windows-msvc-0.7.20":
"34f3720cdd736f034f3b0d1b03d6b74b85d3528ccefd3552b3aadf455f191b2f",
"aarch64-unknown-linux-gnu-0.7.20":
"675165f879d6833aa313ecb25ac44781e131933a984727e180b3218d2cd6c1e9",
"aarch64-unknown-linux-musl-0.7.20":
"0f68f4a4583923635e56f7f930526bbbcc14d090f1c1a7ec1d28cc4ddad05279",
"arm-unknown-linux-musleabihf-0.7.20":
"9d3eb7fd1e3580a40e5d3f25db5d8a0719fb77be1d750b4849f6dbc96885e39f",
"armv7-unknown-linux-gnueabihf-0.7.20":
"775c3634a1ed7f0c23e5ce8e418acdb394fe87df1ac21af9f274e1e68df0d9b4",
"armv7-unknown-linux-musleabihf-0.7.20":
"27ac3e7f44c1af5bb9f01560e1848893e09c502a85552521cc9cf0d2cd4322c5",
"i686-pc-windows-msvc-0.7.20":
"90367e9f5adc46d6effd2b2107bee5f900f959c64898ae3ffb1e28b9519b15e5",
"i686-unknown-linux-gnu-0.7.20":
"9b53f988b7024728da39fc3e4217bf8cf233d1aa7afda20599dc3acb2049f328",
"i686-unknown-linux-musl-0.7.20":
"fa3091a175cdba4202367b30bda899bc3ed3b6c2161b7c42500c3bd1b388c3e2",
"powerpc64-unknown-linux-gnu-0.7.20":
"84b76581c50071a87609d340050b2cd0ba7fad7e929106202d4c99f4c5a41243",
"powerpc64le-unknown-linux-gnu-0.7.20":
"25082231ee1b479cc9fc486949e3196affda09b82bf0c6b3c8eacde37f56e9db",
"riscv64gc-unknown-linux-gnu-0.7.20":
"339015c2c934b93355a972c737f649fdf96abb699bebbc1b0955de9e5fff04bb",
"s390x-unknown-linux-gnu-0.7.20":
"16819d631e56438ea2e58b60bfb99feb8b2b8cdbec73e375e21c6dbe1de8c725",
"x86_64-apple-darwin-0.7.20":
"0c0edf17aff045bcb9bf89ffa43fefaec2d6585ff69debdb0ade62608f8ff069",
"x86_64-pc-windows-msvc-0.7.20":
"ddf35e258c32971c00f3f4213cf1b5cf0847a42dac578738cb294d379e4a9f6c",
"x86_64-unknown-linux-gnu-0.7.20":
"10f204426ff188925d22a53c1d0310d190a8d4d24513712e1b8e2ca9873f0666",
"x86_64-unknown-linux-musl-0.7.20":
"c8efa6bacde9154aa705feb35985cbc852d75c7d634e8a6867aa2f5571b27a62",
"aarch64-apple-darwin-0.7.19":
"698d24883fd441960fb4bc153b7030b89517a295502017ff3fdbba2fb0a0aa67",
"aarch64-pc-windows-msvc-0.7.19":
"c843b95d9bad3e364ead2af00b793d42156cb4f8ac0c2e33bfd2b3e50a0efc86",
"aarch64-unknown-linux-gnu-0.7.19":
"31b81b4b4ecd51ee4202f1e710fc22b72666f716ffbb825aa397c8246624d60f",
"aarch64-unknown-linux-musl-0.7.19":
"e83c7c6d86c8e7456078c736a72550ce20222df8083f9317fc58cd49422ce5eb",
"arm-unknown-linux-musleabihf-0.7.19":
"fe9834d5383feccd095cbfdbc290d7379f64bafc894ae8d8eb0724edfa754853",
"armv7-unknown-linux-gnueabihf-0.7.19":
"6678e4d1a91349dacd3405b0efa88656d1c8a16fa7ccea822c368039988f8339",
"armv7-unknown-linux-musleabihf-0.7.19":
"3022a75e757a31978e896e2e3fc2cf2dc966267a8757a270be0b421f541467e4",
"i686-pc-windows-msvc-0.7.19":
"063829d117c2e42322b0e3a59ee91020dcb1d95522889b903ffad392df197a11",
"i686-unknown-linux-gnu-0.7.19":
"1785537fc65a35609dc33063b5f1cc85437a08ade4c0a832071c018481afe515",
"i686-unknown-linux-musl-0.7.19":
"e64bc4f74cee116694ea63ad0722245f62f386de271be1a1c28a6e4fd977326e",
"powerpc64-unknown-linux-gnu-0.7.19":
"fb8a4a0d20dd3e236a88229e15af89fa3144bd06c4087dbfc7ba8ca691b0a953",
"powerpc64le-unknown-linux-gnu-0.7.19":
"b335d0593c165fbfcc51915b3eb056f45c5691d06744a5ded7210d789469870a",
"riscv64gc-unknown-linux-gnu-0.7.19":
"36ccef1387594e8fb212257fbeafa9e260709b363e1b262f43bd5a679134e4ac",
"s390x-unknown-linux-gnu-0.7.19":
"08ac0245d24ba16bbf224b00e8bc8021d081f9dcfdc61881cb6e4ac83954705a",
"x86_64-apple-darwin-0.7.19":
"40667bcb615b5af3e373ad611c4a9b95639b97e19b5924a436df8e69ca9331e2",
"x86_64-pc-windows-msvc-0.7.19":
"3098b38638b271d8b14b81247d6d69bb105807ec9fc5eb85f8cc8b6de5867c86",
"x86_64-unknown-linux-gnu-0.7.19":
"5ad6f11d5a04cb3af2418666031f20b63190f82032ec5a7f3a174385cc5567e4",
"x86_64-unknown-linux-musl-0.7.19":
"6236ed00a7442ab2c0f56f807d5a3331f3fb5c7640a357482fbc8492682641b2",
"aarch64-apple-darwin-0.7.18":
"c33cfaab95da1413a0403f643b7edb1c5af6798d8a2370196a80fc37b894df48",
"aarch64-pc-windows-msvc-0.7.18":
"c9c78de380e459f8424f648d107d4ab5286273ab19622a5d17796dc6689de453",
"aarch64-unknown-linux-gnu-0.7.18":
"2af8d0d963f547deba09c52aca79a26113f0ed5c903c101241fedcac90c2d8f4",
"aarch64-unknown-linux-musl-0.7.18":
"32872da98e5c48945e45406d427b3b4fdc11f04e4b8f297f49f76724894eb61b",
"arm-unknown-linux-musleabihf-0.7.18":
"c6c9e718aee25142139b25bf6bb5f9566c57812abced3efa71b4677ac3ef1275",
"armv7-unknown-linux-gnueabihf-0.7.18":
"00cdc4c898a251ea0c12f5db7b22929ff6f73f87a51fc6f874dfb57aecdcc995",
"armv7-unknown-linux-musleabihf-0.7.18":
"92a07d26943b5e223e941b64fa22e048c13fb6462ccb35f18fe2e212cfdc1c18",
"i686-pc-windows-msvc-0.7.18":
"4293c65f1fce52bd5396ec4419ce1c76412e276e0f292ec2464c319b7f8d59be",
"i686-unknown-linux-gnu-0.7.18":
"e5db36cb7b7edbe405c70211802ffe3b161983027f7644ca9ddc9ed5605dd504",
"i686-unknown-linux-musl-0.7.18":
"5829e240206ca895f8e500e9432dd87553091459a80d2a40c0d144688d443336",
"powerpc64-unknown-linux-gnu-0.7.18":
"927af365bc8388da27d241149a52ee3b9772db87ebace6fec6b00062aedd4a24",
"powerpc64le-unknown-linux-gnu-0.7.18":
"dc7ca0bca11efd40a4f85c40e2d83d830dacb7b0f9626bc40360a6697aa035e6",
"riscv64gc-unknown-linux-gnu-0.7.18":
"2cd75769322d264151e9abc2cf89edd086239afa00c0a1354d52a700657f7deb",
"s390x-unknown-linux-gnu-0.7.18":
"bc63ad2eefe5278b121a78255e8c488eb69ae29784b69012439ef365701393db",
"x86_64-apple-darwin-0.7.18":
"7a4a3350224a3a3904589ea306041af68686d72ec4d4b68e34c15d25dfc5cb4a",
"x86_64-pc-windows-msvc-0.7.18":
"5a5b3ef7c6aee0bb1101ef047f35a0fc7cc82e34eef3286e54c5badd261cb599",
"x86_64-unknown-linux-gnu-0.7.18":
"bcb8093f59eb08539087faf895ea1e794fe3db395de79eb41ddaa41d8c25adf7",
"x86_64-unknown-linux-musl-0.7.18":
"c8b51ed978b5f95a7c34dfe39e1dce966f7497fc12179f27507d507d9f3ff40b",
"aarch64-apple-darwin-0.7.17":
"0777e13ba598ccb9a9f78df209c98922b219a195765b9f1b309457a08cbae43d",
"aarch64-pc-windows-msvc-0.7.17":
"be0e7263e4106ca73ac72b4f84ae1c203db446d42d764b2b6459bf1d84aa1859",
"aarch64-unknown-linux-gnu-0.7.17":
"b88fda8f37769d445dd4b433c83490112afa18fc009b75e3cb28412a1d189c53",
"aarch64-unknown-linux-musl-0.7.17":
"789f3749497181311fbc27d2da322f4f836d814389901e8a7917ee664f500a6b",
"arm-unknown-linux-musleabihf-0.7.17":
"7f39a83f2cd7925aa25020dce70f9d2617213b710aec1c9fd686c3314ee814a2",
"armv7-unknown-linux-gnueabihf-0.7.17":
"9a4ee0fe51b07b8badf7ca874b3a065a0d2cf3b04c69aa2c7618c03d6ddd46ce",
"armv7-unknown-linux-musleabihf-0.7.17":
"6a5d3fa02a7bb5696ac392d6277f29174f27bc38e0100016ee67c55c8a472e3b",
"i686-pc-windows-msvc-0.7.17":
"45ffa8cd52e6a0764c2bde7c97be840b6c7606f976e6ae51bab394a891653f52",
"i686-unknown-linux-gnu-0.7.17":
"043897d13541c11c1221761c768d4234b889ce1fa39f1f27a567e11ca2c86233",
"i686-unknown-linux-musl-0.7.17":
"0d7a846ff1ae9d620243da530adcc468bba4aa317cb3ba4210c724e2ec5734b4",
"powerpc64-unknown-linux-gnu-0.7.17":
"46331c3771dbc8aaaa4c75421b6195edb763bac5ca4b8d551efd2da013351252",
"powerpc64le-unknown-linux-gnu-0.7.17":
"9f7e13304c7f3977c2e1eaa068a6beb36e6974a2abcf8cb1b8e0d8b96c251203",
"riscv64gc-unknown-linux-gnu-0.7.17":
"789fea86b495397c7bd12c92221259f07c78ba738d568757b06500ac94b6ebe8",
"s390x-unknown-linux-gnu-0.7.17":
"208c6609012ca921aa3ca67d49dde34464e405041b1d8b041c15078687456570",
"x86_64-apple-darwin-0.7.17":
"c0aff6481443e7dc38c01dfb3535814db42c00ad3ab374e7b4ed4ebb7f5b2237",
"x86_64-pc-windows-msvc-0.7.17":
"b49d1a02662ac4a490c886fff8a340a4adc32da8d0634fc653a69459d2b5f863",
"x86_64-unknown-linux-gnu-0.7.17":
"e9bf64a66a318a82d3c37a74c31527df0ac7e7c821a10f5e1032415f000d7d43",
"x86_64-unknown-linux-musl-0.7.17":
"ffd877241741df0a6436ba6ed0d8cd6573f1f922ede3a967c32c57d2133c72b0",
"aarch64-apple-darwin-0.7.16":
"a157919a2a615fac5de0fcef5120a63de7e6582fb6e0ae4428238af347ed1054",
"aarch64-pc-windows-msvc-0.7.16":
"a832dd02c44cd8d373b226ca34128982aca5303dd3b477c90c5a1f83efa874b0",
"aarch64-unknown-linux-gnu-0.7.16":
"4ff5b8542514b453073cad1dfba08db751ada21981b869c69a2ac29fd639b586",
"aarch64-unknown-linux-musl-0.7.16":
"c1536a85aa85cae05c51d25b2819c5b9869f67c66c65948aadeb0c38c4bd51b3",
"arm-unknown-linux-musleabihf-0.7.16":
"20902d98f9a309df2a83ffd31ecfda444dfb75249c2779eedaeed7d73274f34b",
"armv7-unknown-linux-gnueabihf-0.7.16":
"72afc7e60eff20a1c2181f88c9d96e06553f854192b3a13069aba0f8b045a839",
"armv7-unknown-linux-musleabihf-0.7.16":
"c0b5300958a489330a9790b701f1491a1bec72e402281cdaf6a2362b51fa4c13",
"i686-pc-windows-msvc-0.7.16":
"6d4c4de0cc8c88fb7d94138c05091dac6746a7bc9d94b3743e804a485546154b",
"i686-unknown-linux-gnu-0.7.16":
"ee03aaf5d736524a8b6e74c273d5877be1bb720933cb8f7f5e70b42c70933418",
"i686-unknown-linux-musl-0.7.16":
"b815f060a689e0fe95ec36498533bb261b92dab5cdb60b02cc19fa30c6cd7e57",
"powerpc64-unknown-linux-gnu-0.7.16":
"a2b78151e50646b26cacef24de87d625d4b100efe69347c88a8a6d340b0e82cb",
"powerpc64le-unknown-linux-gnu-0.7.16":
"c231b3880c6584b6fe411b0c7507ed0c091856a64f84720b732ddd39b21b7e6c",
"riscv64gc-unknown-linux-gnu-0.7.16":
"6be4c3e27989ffd49befc689884b78b55c53c817a27040b8e232edd92185b037",
"s390x-unknown-linux-gnu-0.7.16":
"f4e1814f2326db1eb0d0d2ea96ee36c361a856e8c9d8d82817936aad9baa4299",
"x86_64-apple-darwin-0.7.16":
"414cb3c348b0482bc88fdabbc267973a11401e684a78fd471b2c4553fa8b6965",
"x86_64-pc-windows-msvc-0.7.16":
"409d19c14a9b1ce83bf7331dbda89984802efb3a2fbf9ffdf149b22ab9cf2826",
"x86_64-unknown-linux-gnu-0.7.16":
"c51f5dc9fd33e789992839d2957d6cfe0b6dce1cd7ec641740af456b12e9d468",
"x86_64-unknown-linux-musl-0.7.16":
"34c9da84a673e6c06d2e081d72d953f278fe5bb6aba0437210ba62817b340eb7",
"aarch64-apple-darwin-0.7.15":
"7a20f3d33cbbc75683d66e0562d4bdbd702ca656d7dc1b7be3c592de6a6517b9",
"aarch64-pc-windows-msvc-0.7.15":
"d15770be109fdde45c60a522fcc97bf19e0d9d9de8a0d2f0dadc772786110123",
"aarch64-unknown-linux-gnu-0.7.15":
"a8241809c6efcf5ff649d259276dabd297a2c46e9e2f78891a1f9b8ae858e1e8",
"aarch64-unknown-linux-musl-0.7.15":
"4351c1e2ec13f5eb4da058ac1c39f00ae3042de9d6fdb6480e0170f32813210f",
"arm-unknown-linux-musleabihf-0.7.15":
"26c7f1baf3f14857d8d5d2df86ea47a3ce5a0e6223c1db9af2a32bb3d216d5f1",
"armv7-unknown-linux-gnueabihf-0.7.15":
"6609e0f39c958a2b728ffec99ed53741cee92d5db168fb275448216a9e2f5a63",
"armv7-unknown-linux-musleabihf-0.7.15":
"3a60e3bfc6b927537eff1c6fdb359bdfb5a02a59820bb964e04144d731b12ca9",
"i686-pc-windows-msvc-0.7.15":
"831ac11382c9ae014f6f5d27506c8977bfba5aa6b104e278d3a87ff4d1e311d3",
"i686-unknown-linux-gnu-0.7.15":
"8d11cd225843aa7e7b25a5300721d48519a13bc82fc8b7bf63b063b8520b2db6",
"i686-unknown-linux-musl-0.7.15":
"8640a014e5ef7020b33a8e95fabd5e0c75adf80beeaf265ed50dfe2bee92aeb2",
"powerpc64-unknown-linux-gnu-0.7.15":
"6a4c0fe1075c4f3b9dfb8d0654a58ca547aaa84f829bc9e1b60a096153d18686",
"powerpc64le-unknown-linux-gnu-0.7.15":
"81f6d18b857cc3517f249fd7e321b9cad6e6c17bc7d7ad88cefc0c25cca3e486",
"riscv64gc-unknown-linux-gnu-0.7.15":
"6a0a6ef8fa3d03b6a6cab9185cd84e28c78db1e5736efa711e6f5efa4e6c27e3",
"s390x-unknown-linux-gnu-0.7.15":
"d5a2343934c7fec124fb0a140b12c4dd30e20c5473e67b11d064f5b6e52eead0",
"x86_64-apple-darwin-0.7.15":
"4c7c1fe116566b6f8725a3801a33fa5e066b8687643acd73249e5db1351c2103",
"x86_64-pc-windows-msvc-0.7.15":
"b78c2d265e74b21b1c04b5b4ffd61c5c7b8110f9188e24949ee9f6fd5fbaf0a8",
"x86_64-unknown-linux-gnu-0.7.15":
"b1dc0892749e93382decbd894755be0ba1535587f0bb8333572b072d1b0f652a",
"x86_64-unknown-linux-musl-0.7.15":
"c97afc120614c88bd8c13dac2d35015bc59656289633d61bc438e7e680a38710",
"aarch64-apple-darwin-0.7.14":
"7cb9cb6b3005a16356493887d7e7e297237b754b5753b91e826ada98ab2da172",
"aarch64-pc-windows-msvc-0.7.14":
"f28f27e529e30e96e7b289b724c8229cfc5ca25312c23bdae089d6998ffd0aae",
"aarch64-unknown-linux-gnu-0.7.14":
"c0932f428d24d87aaad6a6b7ad48aa09f260d2da5c69e877acd87c3ac90fbbad",
"aarch64-unknown-linux-musl-0.7.14":
"30e41b1f68b3e57c1375c0b2e7fe932a9eb5487fbcef7c4c7d03def3e05b9f7e",
"arm-unknown-linux-musleabihf-0.7.14":
"3b494d3d6a892d9c03d1fa6dcec8ac6077653939a6645570ab6f1f40adbd0b3c",
"armv7-unknown-linux-gnueabihf-0.7.14":
"d5d1f6c49559914678267ce9f3a57528ab45e26e907a816736306b4f10a7b4b8",
"armv7-unknown-linux-musleabihf-0.7.14":
"0016d3138edc52de9f2f4b0587afb6b579dc3bb3abfe2df151f97cc43a4ab421",
"i686-pc-windows-msvc-0.7.14":
"42391f3a71229342b17d944e956d116aabc5147b0ed28a26c59601feac1f24cd",
"i686-unknown-linux-gnu-0.7.14":
"71c358c315da7ddd2de334fe52a54719f9bdac8d6970e7966e2d080ae73ad028",
"i686-unknown-linux-musl-0.7.14":
"d02de9391fe7b7d7e97dc2fa63a539201a31eb51d2c6a87b7570cf8a5ac22398",
"powerpc64-unknown-linux-gnu-0.7.14":
"a2a43332f860520f7cd3d32f5a4ed5e0d938cc59e025372f8f1bfe47ea64355a",
"powerpc64le-unknown-linux-gnu-0.7.14":
"3c545528b601a75baad5e1cc93cbf973123e9e6df6d905b432d91ba9ca769c0b",
"riscv64gc-unknown-linux-gnu-0.7.14":
"4085fd8d4acb0a50a012fa63ae37e50472bf8742d58f4943529b5b5bda95a1a9",
"s390x-unknown-linux-gnu-0.7.14":
"b20a69092f3171dd99445fe0d71e3ed3e67ff85346cb0723a43a1b8d55ce0f33",
"x86_64-apple-darwin-0.7.14":
"352a56bb3823040f19f936dd5e277340cd304da03e5b00c0959800a72a9f55ac",
"x86_64-pc-windows-msvc-0.7.14":
"f9ac952c69d32b2263ba19ba93d18d9e708dcb9bddb8124555bbda96d6d5168f",
"x86_64-unknown-linux-gnu-0.7.14":
"2b38641d02bf107c5099f09778fda93bbaa4a4a2ee44ba303a4097102254e5e5",
"x86_64-unknown-linux-musl-0.7.14":
"8c62a823744630e6cf3fdf0bf38c4fe4558bfcbe082b076a76446a3aab2af5f5",
"aarch64-apple-darwin-0.7.13":
"721f532b73171586574298d4311a91d5ea2c802ef4db3ebafc434239330090c6",
"aarch64-pc-windows-msvc-0.7.13":
"bb40708ad549ad6a12209cb139dd751bf0ede41deb679ce7513ce197bd9ef234",
"aarch64-unknown-linux-gnu-0.7.13":
"0b2ad9fe4295881615295add8cc5daa02549d29cc9a61f0578e397efcf12f08f",
"aarch64-unknown-linux-musl-0.7.13":
"52baba71881c978d32b7c32216ad0cde4546a4dc62e606c9834ec4616c1610eb",
"arm-unknown-linux-musleabihf-0.7.13":
"ff2b11fff489301f9d55c851b9ebce7ca5530d743d2c0a3861cc45896715ea9b",
"armv7-unknown-linux-gnueabihf-0.7.13":
"903350811ee31b2b758c8afb853490c27a34382a535b236739705b104bc13894",
"armv7-unknown-linux-musleabihf-0.7.13":
"7e3b2aa966c54ced0fcd9febea6b913ee7ea12ee85246513895f199ab13296a8",
"i686-pc-windows-msvc-0.7.13":
"5cf71014fde208ee0833026b3828007f8eaf514ec003784dc1ae92633877179b",
"i686-unknown-linux-gnu-0.7.13":
"ff031258ff08b3aca46648398e21fe9679744501e3c9a928c8e42d596a708bbc",
"i686-unknown-linux-musl-0.7.13":
"41851d695bb5401bce5af81a156d63215087cf8e8e1275e69dd96de4bfa30c26",
"powerpc64-unknown-linux-gnu-0.7.13":
"02a80ce1436bf673b0d7276bb24dea0bbc70958dc91e5fb04ad37ac515be7424",
"powerpc64le-unknown-linux-gnu-0.7.13":
"60c8907cce089de97dcce732ae363eda0620f7196c25e8bd539f168b93f9e34c",
"riscv64gc-unknown-linux-gnu-0.7.13":
"521a5235bc5a053dd7f0221c363544cef6d033064cc9d92dbb4ef19771000052",
"s390x-unknown-linux-gnu-0.7.13":
"41e4b6093dd408b41dffb4c9e08c4aa31424ee4573ce9c95566c2617f7f2d0c6",
"x86_64-apple-darwin-0.7.13":
"d785753ac092e25316180626aa691c5dfe1fb075290457ba4fdb72c7c5661321",
"x86_64-pc-windows-msvc-0.7.13":
"e199b10bef1a7cc540014483e7f60f825a174988f41020e9d2a6b01bd60f0669",
"x86_64-unknown-linux-gnu-0.7.13":
"909278eb197c5ed0e9b5f16317d1255270d1f9ea4196e7179ce934d48c4c2545",
"x86_64-unknown-linux-musl-0.7.13":
"560bb64e060354e45138d7dd47c8dd48a4f7a349af5520d29cd3c704e79f286c",
"aarch64-apple-darwin-0.7.12":
"189108cd026c25d40fb086eaaf320aac52c3f7aab63e185bac51305a1576fc7e",
"aarch64-pc-windows-msvc-0.7.12":
"fbedfb71356d0e63c86b507cf1434a58406afe6eac77aee9d37b8282d4006e14",
"aarch64-unknown-linux-gnu-0.7.12":
"23233d2e950ed8187858350da5c6803b14cbbeaef780382093bb2f2bc4ba1200",
"aarch64-unknown-linux-musl-0.7.12":
"0589f6d27bbbe2e205aa6fc25e4cd28ab97e984cdba20842de8d3a00714e13e9",
"arm-unknown-linux-musleabihf-0.7.12":
"6996e32ac1c37af33a4c6e40ab0126a82d62ccb94edb164b7dae554be4dd8336",
"armv7-unknown-linux-gnueabihf-0.7.12":
"aee2dc202deed7e15984d71eb59803111052fbe8c0fb3ffad27ae0a6d290d74f",
"armv7-unknown-linux-musleabihf-0.7.12":
"87bd7676d31858d9e1937ab69d13e30cc93ebb09fb246dde6a8f183e9570a82c",
"i686-pc-windows-msvc-0.7.12":
"c7ec71ba64d01ef3cdb89553445de94ab4fd7375c8f2a7068353aec7a3a06342",
"i686-unknown-linux-gnu-0.7.12":
"d1def68ff10b30327a5cacab497664aaf8338e192ba277b76f45dad63208f2e2",
"i686-unknown-linux-musl-0.7.12":
"f56a0a9c84b35b7e910c4d628c667b843fb3fa1d9dddb0bbf4bf3f21eeaee07f",
"powerpc64-unknown-linux-gnu-0.7.12":
"6eafb546d1b8642a5c27e4dfda213659fee41b0fd150b4c33ef96c917e595344",
"powerpc64le-unknown-linux-gnu-0.7.12":
"0d550348d7a0f54352824cd751dc7baea0c23b17d744a5a7784b6b825e5fc909",
"s390x-unknown-linux-gnu-0.7.12":
"76f5a2c1c13446233312d140136f3f55fa7c162176327830eb109ccaae6c9cea",
"x86_64-apple-darwin-0.7.12":
"a338354420dba089218c05d4d585e4bcf174a65fe53260592b2af19ceec85835",
"x86_64-pc-windows-msvc-0.7.12":
"2cf29c8ffaa2549aa0f86927b2510008e8ca3dcd2100277d86faf437382a371b",
"x86_64-unknown-linux-gnu-0.7.12":
"735891fb553d0be129f3aa39dc8e9c4c49aaa76ec17f7dfb6a732e79a714873a",
"x86_64-unknown-linux-musl-0.7.12":
"bb493f1e6ae426c06b5a103cb71aa60c678976d2377f0590644538658656c2a7",
"aarch64-apple-darwin-0.7.11":
"b5f4cb27a3002d6590c3681377c6d826db0b52e2a9529c7144fcd53fec89ba79",
"aarch64-pc-windows-msvc-0.7.11":
"856bac93344a6980b2703a4143f26fc042c941b02f11ed21f55ec6be3fdfde87",
"aarch64-unknown-linux-gnu-0.7.11":
"80cf695c4e10b532e9db3c7fbbcfb0f8356f2e70e7a4a5040e005f0fae70923d",
"aarch64-unknown-linux-musl-0.7.11":
"2ad20d143c74d7f63d1c99db3999f239f045b7be041e23f6ac8b269c99fa54fe",
"arm-unknown-linux-musleabihf-0.7.11":
"21fec46f09d96cd9f51378fe01ed050dd2032c1fef823f8bd81fa50a2337bbcc",
"armv7-unknown-linux-gnueabihf-0.7.11":
"1a75aaff4695c07151d5b9abb50232ea9fb6f5ccc82d4b319abd8796605d9db8",
"armv7-unknown-linux-musleabihf-0.7.11":
"431b3115ab8fb5e2210d01f29b7901e6eb1174ff65545ec49318d6d4adf4c802",
"i686-pc-windows-msvc-0.7.11":
"985f5eabf42b8ad0166ae6b9f799564220fa932938a8401c890d5e07321ce7c0",
"i686-unknown-linux-gnu-0.7.11":
"619e205d56594fc530dbde6c6a543dd094c796791a5e2cfcd3bb70fa5767bf9d",
"i686-unknown-linux-musl-0.7.11":
"838c6336ba8e88818459b10c3520e83601b9c0a9850a209accef9782c050faad",
"powerpc64-unknown-linux-gnu-0.7.11":
"769c7f32cbc2ad918ccf9ae661d99a6c0d0fd3a0056691832b4a79049a9d06ec",
"powerpc64le-unknown-linux-gnu-0.7.11":
"c9bbbcc2d4f11c83e0edbff5868d95f07f81455adb6f2f909cdb9b992928101b",
"s390x-unknown-linux-gnu-0.7.11":
"0e7b9b27e9fef1b42aa052173a2a47a2ec33bad82425237dfac402b7f69bd073",
"x86_64-apple-darwin-0.7.11":
"97980b067dc3fea16534371b030eaf38554d701de5058004edcfd542a88a2e84",
"x86_64-pc-windows-msvc-0.7.11":
"0f4ef69fde75bb8bcfba7ecf0a4134d8875578cd2e98c9fcfc21573e746c70ac",
"x86_64-unknown-linux-gnu-0.7.11":
"df54b274e99b7ef26030dc21d105ce115bc21a644fc6a321bde9222cb1616de6",
"x86_64-unknown-linux-musl-0.7.11":
"e4e8948645ebea1950a3c77574ce079dfe1c71547ba5a8a141d6e362fa036684",
"aarch64-apple-darwin-0.7.10":
"316b80c19832ff4085748c3a20a3e05f36e1d19234e8b9399a6fd1c971241bce",
"aarch64-pc-windows-msvc-0.7.10":
"1eed0f11bca79403648195f8ce257763d956e861cb73de98c480dae15358bb26",
"aarch64-unknown-linux-gnu-0.7.10":
"8746acb754807050124c6dbcb05fcad2665a3f0cdb2a0fe9de528bd37b092656",
"aarch64-unknown-linux-musl-0.7.10":
"f9000f08850a5c575d5fe1ddc2ec928ecc9f287ecdcd9fa1ea4e3f405b23d4a3",
"arm-unknown-linux-musleabihf-0.7.10":
"657b1b8a534f7fe78e63aff56aac5bbcb21f6254df79825fe204d5c7c1219653",
"armv7-unknown-linux-gnueabihf-0.7.10":
"1cf4a8f40abbd802a7b44fe9695da356701100d267eb3567c17db27e0a24cf69",
"armv7-unknown-linux-musleabihf-0.7.10":
"5282b825f469295dc2b88c94eccd375a93135a279b0711cb10e615e7a71a0617",
"i686-pc-windows-msvc-0.7.10":
"f3c62ff935685d9d4312b82d01ed386493b97c3d22bd434d943fc99ce9aef83a",
"i686-unknown-linux-gnu-0.7.10":
"24a2a3eb0e89b74de6aac492516303747519439775d22254e838d33410ac27b2",
"i686-unknown-linux-musl-0.7.10":
"e317d35af60b38ad32935390a83d12adc3ed7ffdbc2ccccd3039bf6cef650eb3",
"powerpc64-unknown-linux-gnu-0.7.10":
"c1ab41ec53cd720179f3351b61b4ded73ec520804413b75051736829a125e4fe",
"powerpc64le-unknown-linux-gnu-0.7.10":
"ce2c3fdf177facf6c77c5316bb54b9deaf498bee9f664e01a4030ecf27063ab1",
"s390x-unknown-linux-gnu-0.7.10":
"b7603e3f4494e9093a86ace1103e3fcfa172a952989f0c7dca6eeac7f77be81f",
"x86_64-apple-darwin-0.7.10":
"9123e8aa944654404787f80731ec08850c4e9b9129c0d0445c9e41438828b8b8",
"x86_64-pc-windows-msvc-0.7.10":
"1568a71af55e9d9bc4a050ec79134a342a8a3765a73f6b7ec26490c2814f8797",
"x86_64-unknown-linux-gnu-0.7.10":
"ff2ef46298963fee8104ccb3c0a4ecbc97c057ac6a0bc5fec7636c855384252e",
"x86_64-unknown-linux-musl-0.7.10":
"b2cf1f63e83a873652ffef032681bbbe1469e3bab617f7e715e09529c30f5689",
"aarch64-apple-darwin-0.7.9":
"7a8b716a2b5905fb89512371ce6c6dbc0dd0344185bd1cd93a3fe27516eef7ec",
"aarch64-pc-windows-msvc-0.7.9":
"63c0990b9c49dc9f9a92aaaa27ba627cbf9cf6b2e42766588ef6f880208893de",
"aarch64-unknown-linux-gnu-0.7.9":
"23242a8051e2191ed8d61f71a6792f2fc069ef18e6cdf07dedac3d3f648643c5",
"aarch64-unknown-linux-musl-0.7.9":
"60f30508c9002b2b7af55d70db2741cf7ea24c066ced710ad09681a6d2d19b3a",
"arm-unknown-linux-musleabihf-0.7.9":
"57d8e43e257f0ccd9df2b8581338c5145b9937aba53e9c9bb81b31044b720c61",
"armv7-unknown-linux-gnueabihf-0.7.9":
"83353ee7e1724083ea94d7f488fa34c9159995a3996f87017fdf72e422c93242",
"armv7-unknown-linux-musleabihf-0.7.9":
"b2d8d81bc2abbdd857bad7cd3bf0d36c5155c0681aae8ac9fb8f49d54b95b3f2",
"i686-pc-windows-msvc-0.7.9":
"b5dc0dc10d9dd0dcf5729a94e98538418760d13877d4d4b1bc4efa9926280e78",
"i686-unknown-linux-gnu-0.7.9":
"fb8f1a7cb593c819c0fff71afa2dc480237ca80a3f5d8d433c8b51d2ae90ffdf",
"i686-unknown-linux-musl-0.7.9":
"a77592be13fea81ca42b2b7815784e769e1fd9ff476cfab69f2652823f99c55e",
"powerpc64-unknown-linux-gnu-0.7.9":
"26fee4867c158c04dd3a51ff9a23b4220a9ba69fae2e71be618d2cfa48164d96",
"powerpc64le-unknown-linux-gnu-0.7.9":
"d588fbb01cacccb7fd6e0f101d34282ebb0569381f967d332f8072055e39840e",
"s390x-unknown-linux-gnu-0.7.9":
"d823d68ff662b7e59c6791281427bf1019dae791a964ffae31ae1d2d723dfc08",
"x86_64-apple-darwin-0.7.9":
"a4c084568850588b77e4a34c21b7df5c8cf9e2160b4d614307ed92fa12411742",
"x86_64-pc-windows-msvc-0.7.9":
"f91d8a3322a10caf257fd416807bd8d2801285b80b46ee37f2d0c6e426b8822c",
"x86_64-unknown-linux-gnu-0.7.9":
"b8450a419c0bcc85841bbed8511eb59e2a5683ddd3f813f2b98b97babf6b1b8b",
"x86_64-unknown-linux-musl-0.7.9":
"95918a1e1faf851a39cad402f1a77318e8fc90b7f829833ebaff27de9722d60e",
"aarch64-apple-darwin-0.7.8":
"ad6b3825ba277de70b9d0a37055f7d828f3f37416aee1cde65000f330efd4587",
"aarch64-pc-windows-msvc-0.7.8":
"e43448e5e3267dffb6bbdc30ffa291f8db664d1da9d084c44f99dc568f459e0a",
"aarch64-unknown-linux-gnu-0.7.8":
"da9e1c97f1452b25c8955127c92da7b68be228ad0b43bf50bba4dadb25c8b337",
"aarch64-unknown-linux-musl-0.7.8":
"4d18efb46f93fa942dc4c212dea3b6b07e3db62fe57d0c3d08de6bf5d9f9bb51",
"arm-unknown-linux-musleabihf-0.7.8":
"133b1c3fb850ec496bfb4ef84379bfaeff1d2c322114a0984d8a5c2e10e63028",
"armv7-unknown-linux-gnueabihf-0.7.8":
"7d61c6e18e81447482dc80c090c65a6615a1232512899943566baf2808ca37bb",
"armv7-unknown-linux-musleabihf-0.7.8":
"0b6d6afcdb7c78e5df42cb2ab0929d2bec2654a350a8efacc6f95e830a31eb6e",
"i686-pc-windows-msvc-0.7.8":
"0d4b01372ca972543cd40366bb5480bb457e79dcf45b5f662721d709d6932dbd",
"i686-unknown-linux-gnu-0.7.8":
"db1c60961aea7a7f8c64a098801e0138e761b7556d1c1691fc4f3f771f0e47ae",
"i686-unknown-linux-musl-0.7.8":
"b765eb1817bc1d545f4860eff0adeb0c7907ea66be14536653192e588386b308",
"powerpc64-unknown-linux-gnu-0.7.8":
"2c894b104195ab194af05c6ad756ce8746a349a8620c83888207db5fccf29a8f",
"powerpc64le-unknown-linux-gnu-0.7.8":
"4b0d93385685f756068f76af1871dcb7cc8f427ab6d650afc07493d06dca71db",
"s390x-unknown-linux-gnu-0.7.8":
"e58fc9f6d846ccbf50d9bcf27920ff4bc061541df8a6a3aa6f13be24981e0772",
"x86_64-apple-darwin-0.7.8":
"f046249639014eb70b43cbaf83eb6f56aac724ada354f9b9aad65f9960737920",
"x86_64-pc-windows-msvc-0.7.8":
"355736ddf9a01ab9da918b35470027c12128d7ed1d7f54f54771507d79529679",
"x86_64-unknown-linux-gnu-0.7.8":
"285981409c746508c1fd125f66a1ea654e487bf1e4d9f45371a062338f788adb",
"x86_64-unknown-linux-musl-0.7.8":
"8a707e45e0d1a8bdbc5bd1af0ae7d19ffab55f3722c5e73471039561900e3d48",
"aarch64-apple-darwin-0.7.7":
"6a06eaa8165d5abd89c3dc37ffbe1db60fcf49a87d7c612bfca7e87a1514695d",
"aarch64-pc-windows-msvc-0.7.7":
"e86cd59f2569f4bf475e5ad944910142c0ab107ad12613429ad8873a6f41087f",
"aarch64-unknown-linux-gnu-0.7.7":
"013061d4d33385e9a3fc52df18d22334f20f12616970b0d81583d5125ce8d6fa",
"aarch64-unknown-linux-musl-0.7.7":
"4014dc9dc024bb5a082f16c54adcd5936d47dae664bafa38453b3017ede41aab",
"arm-unknown-linux-musleabihf-0.7.7":
"c1dc010e3ab855391f3a6906fcffbeac873d136df2b20cfd998105385444e45c",
"armv7-unknown-linux-gnueabihf-0.7.7":
"e08406cfcc1ccc0c069d22c91008967f662664abdbf8a15779a1944070e0f5b2",
"armv7-unknown-linux-musleabihf-0.7.7":
"35379428e6d001e63714449c26c9111d1d5ee6f3b6a95559c724ad57df9d8d17",
"i686-pc-windows-msvc-0.7.7":
"5e47a44df7707b58884cdf5d30527857ec1bf186e8f200517fd11a572669cacc",
"i686-unknown-linux-gnu-0.7.7":
"fc782a829cccb0201c4a918d9f5a3a114511d734953f7e5e60aed52951264454",
"i686-unknown-linux-musl-0.7.7":
"10b852326ee48502d6da26c7fe394345b7ce7ca94d76f293dbe4cde9577c3993",
"powerpc64-unknown-linux-gnu-0.7.7":
"4b26663e0c21289bd21c05a3ba344e6b069c600e5a6333e660ae16eb38027bd5",
"powerpc64le-unknown-linux-gnu-0.7.7":
"e691d6a8a8c285cd644cf1f6d47c2568740ddca645c860f9bb23799790b54e56",
"s390x-unknown-linux-gnu-0.7.7":
"b21953a1c6c5475306e64f9ccf721762d2fc6aa572ee5268ed61a3b1531f06c1",
"x86_64-apple-darwin-0.7.7":
"4b337495ced2a9797357ee853873c2f5a45cc52f6ed68c9feba3c997443452b0",
"x86_64-pc-windows-msvc-0.7.7":
"a27a1fdf3f6b850dfb45fb009f7ea0fe3db1a59f692ebdc64c24ff8dbd0467d1",
"x86_64-unknown-linux-gnu-0.7.7":
"d83e2b9c2b251c93985824d9a12d97f5b036b7a9ff0b7d647c9ca7ae5ff2ae1b",
"x86_64-unknown-linux-musl-0.7.7":
"3876cafbb6599287a78778d2c265fd2050acfc247409ed677a8583f20385a3ae",
"aarch64-apple-darwin-0.7.6":
"a0e7c0e44ec4b2743e1c1d1f6edca1418687b05084f48c007c6e1c7d3a35bcd2",
"aarch64-pc-windows-msvc-0.7.6":
"2ada1290e87144726b6a723b38fd34ce64da5a3fe820a21685564924f894408c",
"aarch64-unknown-linux-gnu-0.7.6":
"4eae30038653bbec528257054fe07495f20c5d4bc663b630258e87d159e282b6",
"aarch64-unknown-linux-musl-0.7.6":
"9e59f0753383d6a27404be238360165e415605b1504b209349852a27cc01d48f",
"arm-unknown-linux-musleabihf-0.7.6":
"b81d59deeba1f92aba48aefce2b364530baa1cb8aa4c59fc2a90c9acf98c9a20",
"armv7-unknown-linux-gnueabihf-0.7.6":
"e9d1b7d52def14fb1ab8af2fa52963ff8e4323934ec2e78720a94d92261fa9fc",
"armv7-unknown-linux-musleabihf-0.7.6":
"c525ad0f41c67d944e56362adffcda206aef36f3ed84daf90386fcbfa4a62c66",
"i686-pc-windows-msvc-0.7.6":
"aca45dbdb75cd2c5fdf70bf5ff436306d476352b135fcab544c4a9759d7d1af8",
"i686-unknown-linux-gnu-0.7.6":
"71448fddb93306b1b67f0c2e711eb79b6ea33d027212259abd7546a48d15b49f",
"i686-unknown-linux-musl-0.7.6":
"a641ada8b2ca3ec22c24414c2edef8c01370d7d4ac79998eac091b84f743c476",
"powerpc64-unknown-linux-gnu-0.7.6":
"9f63727933d11b0157ebc3fd640811c1224fe55215acff24e8ec5747fb4f90fc",
"powerpc64le-unknown-linux-gnu-0.7.6":
"da746e6e809f32ab9709e45c7d5e7c37901478cc610119c08ae335c43ac089b2",
"s390x-unknown-linux-gnu-0.7.6":
"a07d4303e97f72312f9db8a1a67bae08f02d883f1879fa917b9ae87aec90d933",
"x86_64-apple-darwin-0.7.6":
"718cfd68b13a1a642fadc53646742785cd33b2e06124a01454ad358617841852",
"x86_64-pc-windows-msvc-0.7.6":
"4c81818cc89d75ca54762e2641deebad69c0af6594212a9fb24b9849df8ac413",
"x86_64-unknown-linux-gnu-0.7.6":
"0c5f0935bba35359150774fc5876d72947b863b8173c94dda776e6d88014a0df",
"x86_64-unknown-linux-musl-0.7.6":
"be755e8503b7e7174f24ad8cdcadab94f0662fe0b60df4fc35e1ddae48b19f35",
"aarch64-apple-darwin-0.7.5":
"8d82c7f6fcfd79b142c8845f694c8225dd5b401cd720e8e1e2a35a1c4150f516",
"aarch64-pc-windows-msvc-0.7.5":
"9ec005bf0b472d47ab730e463cc5a156b18ca9a9a6fe1c72bf18d97384d0b717",
"aarch64-unknown-linux-gnu-0.7.5":
"715bd03f6b2924b8f742b716d0f4b9d31ccbb1ad4a7f8df4ce2f572efff7f2cb",
"aarch64-unknown-linux-musl-0.7.5":
"ce23f5e1d22f1cdfc0db4358d3b2642c115ad99d404aef15030af31e39ef3484",
"arm-unknown-linux-musleabihf-0.7.5":
"2e85c3ba3ba461822940bca197198babcb1a8ce620c3d1c624423e68bba49d43",
"armv7-unknown-linux-gnueabihf-0.7.5":
"cbd7990fb0d06750f7e966a54dc344396e4d605d029aa94a0cf00d695cb283e9",
"armv7-unknown-linux-musleabihf-0.7.5":
"96d5eb1246e654f4e2c37542797196d94c0d72fe44e470050a9fbf67e356fb10",
"i686-pc-windows-msvc-0.7.5":
"84e70b46e0f218db9573b0efce085c13e0e5ce7808b3143b990d1a334e5a8ee6",
"i686-unknown-linux-gnu-0.7.5":
"20efc06bc129d8757e81fdd00cf828a9c1d928a4a30c8c538c6d1ed219b52c5d",
"i686-unknown-linux-musl-0.7.5":
"3cc8dbcdb230a6abbaa3cd6b918d6150f747f45f8f96b7399d6258c54fab5867",
"powerpc64-unknown-linux-gnu-0.7.5":
"dab5571d40ce3347fe295b9afec9f560ad709461883ae604d0de827071b8d2f8",
"powerpc64le-unknown-linux-gnu-0.7.5":
"4c3843068cd0e1bf9e5f68e5487fba28feef3196c025a1b1eaddd533a52b7bd7",
"s390x-unknown-linux-gnu-0.7.5":
"1b286e386a4d66dd9393caf78888a881cf63202522a6a88262e551bc7b8b3995",
"x86_64-apple-darwin-0.7.5":
"751ae339c91a6b8eddb868a64222c2533c722042476e4f28466683ddf96fa488",
"x86_64-pc-windows-msvc-0.7.5":
"e95cb3789b2f80052c80048ff2865e06eae7512d06d304127898c70c4fd3564f",
"x86_64-unknown-linux-gnu-0.7.5":
"a3d1964080a855e1f8806975b5fa943376045a64852c06ba80540813aa333305",
"x86_64-unknown-linux-musl-0.7.5":
"be058167ae65f7a2b56f607b070bd4e93dacd09be52511ccb8ebb10fa132709f",
"aarch64-apple-darwin-0.7.4":
"1af8c353479890b29b75933706890627555bbc07e12a0117ae62da3ec2ee372e",
"aarch64-pc-windows-msvc-0.7.4":
"3800868f3cc1509d6ea16036e3268ff45fd22a85c922cf3de4fb9535dbb0099e",
"aarch64-unknown-linux-gnu-0.7.4":
"c407e4c7431ee6cb28deb842edb49fea1ee3f5674a357f11244bfb0fd57e2ae4",
"aarch64-unknown-linux-musl-0.7.4":
"ff0d9172d2105da526501e01c38ecf0558ea323cfcd25adff9a89cd7fad5c076",
"arm-unknown-linux-musleabihf-0.7.4":
"4e6b7d15444ae58bc196ee4e7e6e11b451b4e994c0c73968254d3d4ff1c89bca",
"armv7-unknown-linux-gnueabihf-0.7.4":
"303bac0f866c450fefe7543297fa87563941f924cb13f007dfe7cc02ac64dcd7",
"armv7-unknown-linux-musleabihf-0.7.4":
"004e22fe946fabec6b5dff668f4bd8f93569dab30efe0f3d4640f266760744bd",
"i686-pc-windows-msvc-0.7.4":
"113070d23ba1498cf9fff9ae634893a2a1dce42a0baa617c4a82009f61c71fbc",
"i686-unknown-linux-gnu-0.7.4":
"19f0f19dfe9d722a2fb89bde4771682cf632182d6204cc4ddb11d700d5b34c07",
"i686-unknown-linux-musl-0.7.4":
"fe281041401b4140a387f6101e64fcf4abb344791c12398c441c7e339510423d",
"powerpc64-unknown-linux-gnu-0.7.4":
"ef2320254e52234750d9745e6dc6e3b3c990aa51e506057d0869d4d18b55e5e3",
"powerpc64le-unknown-linux-gnu-0.7.4":
"e143278764aab89b68c6f55dfdfa4242c8f5d5213880b584880a776a5ca1b0dd",
"s390x-unknown-linux-gnu-0.7.4":
"14dbae76be8999dcc8336fac1f6f86710e7ce4f4c3e1aec01e7ef7f9a3468811",
"x86_64-apple-darwin-0.7.4":
"a6c5fd8aa67db03447934b14703a2d7bb04b5e5f7ff45630a749760393c5610f",
"x86_64-pc-windows-msvc-0.7.4":
"966d0dd8d86f02f94128714180cd5ff42cd2ea9b33b86fc197f25cfa066aaea1",
"x86_64-unknown-linux-gnu-0.7.4":
"5264d9b2bf021fccbaf6edb97bc17ce4863687745f2443460a8ca71e55891614",
"x86_64-unknown-linux-musl-0.7.4":
"70083140d9efaf82cbb7ffa6231d5de3536d6497ec84d708afaf9b7e2fffbac2",
"aarch64-apple-darwin-0.7.3":
"162b328fc63e0075d4267688201de91356e1c1b81db50419fa4466cfe2dfdebc",
"aarch64-pc-windows-msvc-0.7.3":
"542b318c98b0295dd3d620fbcd63388757f382e14c69c569cb3ce793aa75c975",
"aarch64-unknown-linux-gnu-0.7.3":
"2c2be8bbb83e9bc722f2013de8bb7506cfe6521d0e30b4ad046849d036b3eea6",
"aarch64-unknown-linux-musl-0.7.3":
"a3f01c3c993b57fa8d13855c5ba60e3847bda4f8e795a52d52879e242e886604",
"arm-unknown-linux-musleabihf-0.7.3":
"87f72dc1c3b1b598e08c8efc7f9ab8eca23df8549cf4c1fc27a4a6b2524809c1",
"armv7-unknown-linux-gnueabihf-0.7.3":
"69f285d861cd1809a4bad0f08c2ea8a77ec17cbe20524a4ebbee4c5a7c868520",
"armv7-unknown-linux-musleabihf-0.7.3":
"1a0071551cd575bbecef3218fb13bf05ab96ceb71b4b1d13a99b8a4af059f99f",
"i686-pc-windows-msvc-0.7.3":
"1c9becbc63c15dcf43b09c0ba84e0ba6fa533fa799b7baf57a36363ef42fbc52",
"i686-unknown-linux-gnu-0.7.3":
"a2b56cb262337380aa02b6d131e973d54090c3e655d3e55385d02850454c24de",
"i686-unknown-linux-musl-0.7.3":
"d6e846079ef38929206079147448c5683a3018116b2b3e6059cf4c26bcfbb290",
"powerpc64-unknown-linux-gnu-0.7.3":
"a9b94c618a5d5bc992102733a45759e38db9a9e069830c3e94c744d1bfc33c21",
"powerpc64le-unknown-linux-gnu-0.7.3":
"782e9c343cb7c219b5514e64a799a8b9fa82585f6176b53ed095dc030a22d993",
"s390x-unknown-linux-gnu-0.7.3":
"ea803eafd6e3414d3a18aed9257f8ded8f7d1f6f182d2572969c4c487faa1986",
"x86_64-apple-darwin-0.7.3":
"d676940b51bdd5606b218bc2965fed67731f94ad07926045716acbf78626e09b",
"x86_64-pc-windows-msvc-0.7.3":
"20d3a420abbf2af9699cd9a02225d9325344046af8deb15563cc451e3c4fd059",
"x86_64-unknown-linux-gnu-0.7.3":
"17fc118ba4d7e9303f84fcabdc0a593fc3480ba76eb6980668fdbbb96fe88562",
"x86_64-unknown-linux-musl-0.7.3":
"325143825b88e7b0dadd1a8e8d3cbe4791d3cbbb9e2244350d917803fec8b3d1",
"aarch64-apple-darwin-0.7.2":
"8edc0bea8a9e35409f970b352036326393e79a6039577d8cc9ef63872c178a99",
"aarch64-pc-windows-msvc-0.7.2":
"a3d7affcd62e617bd2dd2a91fde679dd8d68a84762c8f3aaac294606ec14ffe5",
"aarch64-unknown-linux-gnu-0.7.2":
"2872fdf4785666575d129ba90590c44e6508e22584735f3e7e8a30d773dfc3db",
"aarch64-unknown-linux-musl-0.7.2":
"d5b31df40da794dab943c55e67d14fc111146e185b14a6de6eb749ee264a641c",
"arm-unknown-linux-musleabihf-0.7.2":
"fd203cef8c6cd775c2a5f7da31f69a72020a6c74b6fb808db3217ab04b70a038",
"armv7-unknown-linux-gnueabihf-0.7.2":
"b69999c29c759f5a47f71c1f328d6e7c489229efa5ce0e84afce026201730abb",
"armv7-unknown-linux-musleabihf-0.7.2":
"f98a827e198de2d0a7224ecad87eb64c18c9c0ed4f0c768456e9b48482015d2f",
"i686-pc-windows-msvc-0.7.2":
"8b06489b2cc8814fc23dae4562c5e7d500e782c2b0d2556529f515a4d1e0b8e3",
"i686-unknown-linux-gnu-0.7.2":
"36f26a496c6dc53703e070761ef96f07acc88eae868f94c4665f5c17a88d8acf",
"i686-unknown-linux-musl-0.7.2":
"763bf7cd2119c40858cbd0892fd9b2c7102c79e5c590800b2f8e9c2f427cb7d1",
"powerpc64-unknown-linux-gnu-0.7.2":
"bd4a42ed0b9ab725f0cb565ae29c338ea6ce0689ddb35da632535a47c891e72f",
"powerpc64le-unknown-linux-gnu-0.7.2":
"9a598869167b7e56ab971614972a2c486c8137681210094009a6fb61ac36699b",
"s390x-unknown-linux-gnu-0.7.2":
"7dd2240d60b1628869a2348ca0901cceee572bc20116ab04f9484ea0b6d40813",
"x86_64-apple-darwin-0.7.2":
"7d30b59d54900c97c492f3c07ff21cc3387a9e5bd8ca6db2d502462eaaeefd68",
"x86_64-pc-windows-msvc-0.7.2":
"35fd793df52fd13773425c9a97cc94cc13c8ee63abec6380b5083c183c688019",
"x86_64-unknown-linux-gnu-0.7.2":
"cfaab1b5166a6439ff66f020333d3a12bbdf622deee3b510718283e8f06c9de7",
"x86_64-unknown-linux-musl-0.7.2":
"dd10babf6c531597d246c97e55e32ca17b44fe251405fe539ec8ea2f22fac2d6",
"aarch64-apple-darwin-0.7.1":
"236d70d7738a5f41b45253d68665fda039fecee579939921e0795680d300f55f",
"aarch64-pc-windows-msvc-0.7.1":
"5fdbc703e6f22696ac053811e9750ff3cf50814aabf1792b9bc49f2647b836c6",
"aarch64-unknown-linux-gnu-0.7.1":
"ee8a98f485a22837be9e95eb55e4cd06db6c8deba94b6a2dd63d828fb5ef4226",
"aarch64-unknown-linux-musl-0.7.1":
"b65409802669913f5fd49ed6656d45c434aa9273fb864aefa0fbbb685b9834b6",
"arm-unknown-linux-musleabihf-0.7.1":
"96cfceb7716a9003750111c7f1a62aebccf02e0288f95bc670c69062d2ec6e61",
"armv7-unknown-linux-gnueabihf-0.7.1":
"f156bdedd8a969dc49a5e01f6b38c7e50a63cf69acf3b5982adfaf232dfcb80f",
"armv7-unknown-linux-musleabihf-0.7.1":
"ae21a9c0b413976a24c51f095603294ca36da9089813022cb9bae0b84f0be6de",
"i686-pc-windows-msvc-0.7.1":
"38a98c532e463169e8c4f1ae3649dd500c168f6db687e3b29570930c55ffedf7",
"i686-unknown-linux-gnu-0.7.1":
"133a41ae763d8474cc4ff8e0c24ab8cdaf422f261cbcc284f4b90b57aa60f3fe",
"i686-unknown-linux-musl-0.7.1":
"6e55fea1ee9a8c5c1d29b3aeb033a8b01d3895a347b27ee108ba94c53d60cfb7",
"powerpc64-unknown-linux-gnu-0.7.1":
"cd6714a55577d6eb0ecad313646a4ade3c7a4407e1a2a4703a2fbb83c88681d5",
"powerpc64le-unknown-linux-gnu-0.7.1":
"a354eda3a43323cf5445cfdf0197ebd4b36e967df9537e97910c47dcd9321aaa",
"s390x-unknown-linux-gnu-0.7.1":
"59d194c544a8a53186c3da6ac26f90ab0f453fae71fd2e0d4d177a8ed8890abb",
"x86_64-apple-darwin-0.7.1":
"a81e655cc0b6a5ccf9197f2dc0df513171e68804e498c17076d6e56b41234c5d",
"x86_64-pc-windows-msvc-0.7.1":
"b4d48072e384014ecd04ec5c544aee523ead1faaebcd428ba5f6abf2836096df",
"x86_64-unknown-linux-gnu-0.7.1":
"cec71afc57276b1857970d6ec96e110989c3e4ed0d81f0c4c11c1231970b7e56",
"x86_64-unknown-linux-musl-0.7.1":
"9b714ddf470795d5f1aa5c8111ea153139ae202216ffbe4105fb92f202e0b02b",
"aarch64-apple-darwin-0.7.0":
"964ebe641b563920e0650a60bf5ac21e6c8c56557704e5ecfaaad7ff62c3a73c",
"aarch64-pc-windows-msvc-0.7.0":
"c00950aa4b243e1043d1ec651fdfd71e5f4e5b80135b30fcf3b70fc201aeb1c4",
"aarch64-unknown-linux-gnu-0.7.0":
"540fcb8f2f972c82260a8063a6a4b496d7ff858edc42aa0e2c733a7b55ef8dd8",
"aarch64-unknown-linux-musl-0.7.0":
"f6367e288617021aba6176945ba20a7f8ea3b22a5f8896314a7d0acb863b533e",
"arm-unknown-linux-musleabihf-0.7.0":
"6fc85b25a4b3cb27b924e1f3181f96197667b7465fe52bf703afb5539d09c09c",
"armv7-unknown-linux-gnueabihf-0.7.0":
"035b46fde90a7ee4b48292ff9d116cc771b10d9e955d1979b1a1cd6b3998f602",
"armv7-unknown-linux-musleabihf-0.7.0":
"5f43390685fbb9f29d6075df1d492f9bf39cabb868bf37e0da3cd925c679b068",
"i686-pc-windows-msvc-0.7.0":
"f045db339b2acecc790d2071598275086978a99262d9c4b0c52189c26cba68a9",
"i686-unknown-linux-gnu-0.7.0":
"9936acd12616548a04ce6875aa125ea34f3b288181f2188bfb72d914965680be",
"i686-unknown-linux-musl-0.7.0":
"bfad15225152d9fa8769731b35dd53e0b39cba045900b6d43f90e655652af5b8",
"powerpc64-unknown-linux-gnu-0.7.0":
"91cfac9b5a9ba844c3ba90944e00bfb79da2983b7c6306bdb054c75ab3fea0fe",
"powerpc64le-unknown-linux-gnu-0.7.0":
"d690793c993a1a03049b7e7f3f0e41c94ba2c45b0155bdde917d550ecd4ee02d",
"s390x-unknown-linux-gnu-0.7.0":
"429ffee0dddd8c0c59e246fb89bef721d1ed22a4c051925d7dfafcfc7dce464f",
"x86_64-apple-darwin-0.7.0":
"dc5037f3ffbf8074b3ee63de7a73aa57421b0da0837a478e26317424dbab16f3",
"x86_64-pc-windows-msvc-0.7.0":
"62836c9d6e3f346d06c45fee4109be21ca9d1df8d087472dcc8d51815f182332",
"x86_64-unknown-linux-gnu-0.7.0":
"ca1e8196672bf04ccb926519f2071208a8d6c0ce02fb65bc7d0a85be1b684b0f",
"x86_64-unknown-linux-musl-0.7.0":
"08e1bb8fdea2c6d5edbe40ab1651de097b884020056c0925a9973582ff669d04",
"aarch64-apple-darwin-0.6.17":
"e686c73b9314c77a36a6a4c9f94b07c001f0c9157c50c63c764941141c0d0088",
"aarch64-pc-windows-msvc-0.6.17":
"3a9468e90df970f75759da6caed7dfde2816e0f3842031235c3835fc0c4e7d09",
"aarch64-unknown-linux-gnu-0.6.17":
"6fb716c36e8ca9cf98b7cb347b0ced41679145837eb22890ee5fa9d8b68ce9f5",
"aarch64-unknown-linux-musl-0.6.17":
"98750f5c0cd9eb520799d10649efb18441b616150f07e6c1125f616a3fd137e8",
"arm-unknown-linux-musleabihf-0.6.17":
"649d8d0f37e8365af5aaa012b09dd083d6e71018e569a4d2e78316d5013f18a7",
"armv7-unknown-linux-gnueabihf-0.6.17":
"efc12955d7a6120ea0be2de5ee03dbb33d0d7d9de9dbe0dce560514f2ee129d3",
"armv7-unknown-linux-musleabihf-0.6.17":
"0661d97df8262ef83ccdc6a55ed101abfe8f1cf1ff1be879d9b0d7d1e894c970",
"i686-pc-windows-msvc-0.6.17":
"56dea6c98e1606e95445e77177d7e3cd49bb3d1a63c81b11fe49bf733adb62a2",
"i686-unknown-linux-gnu-0.6.17":
"4bc37f8303a4a5aae1c309f08166884027f325b6872c418cfbaa2cf20a2b2ac5",
"i686-unknown-linux-musl-0.6.17":
"8ec08cca0806a9205ccf5758258c617b57e413b33275bcd861fca363e0eaddf7",
"powerpc64-unknown-linux-gnu-0.6.17":
"d33b70ab206e1ed0663e755506a11db3776787012bfe9d2b2138a90942f506be",
"powerpc64le-unknown-linux-gnu-0.6.17":
"cd91a579850fc45d3b786a654a2c0343836f007929b2e35de9606082eec5361f",
"s390x-unknown-linux-gnu-0.6.17":
"3c753a9d3485bbac23403a0b41a9e70ceeb586f3b4df891ced7ed27d4c6c542b",
"x86_64-apple-darwin-0.6.17":
"61e9bdc02aacdb994da6ea2a477b11b34c23fc09203237aeee8d3817daab012d",
"x86_64-pc-windows-msvc-0.6.17":
"32882cf98f646cafca003e7a7c471b7ff4ba977b681c9fa3b12cf908ba64af82",
"x86_64-unknown-linux-gnu-0.6.17":
"720ec28f7a94aa8cd91d3d57dec1434d64b9ae13d1dd6a25f4c0cdb837ba9cf6",
"x86_64-unknown-linux-musl-0.6.17":
"28bd6b50be068cc09d8a46b76f8c4b72271d471c6673a5bdb47793622e62224d",
"aarch64-apple-darwin-0.6.16":
"2b1ea0d5cf27375738f5f0f229587bc3590c0f501cb00bc48133a3d122d28364",
"aarch64-pc-windows-msvc-0.6.16":
"5abca187b8aecbdffef7547cb39a527168e4cb93d8d2e4ce14271f5831a4d902",
"aarch64-unknown-linux-gnu-0.6.16":
"a82f96ab5f285825f9acee6ac1563683c4940d80df2f08549cad43d37c7ba4a7",
"aarch64-unknown-linux-musl-0.6.16":
"ae3f793c62fe6ced80483d6c78cb49f06a01088bc5d86f1446a9b5988b2acecc",
"arm-unknown-linux-musleabihf-0.6.16":
"91f7f5a4eb97b7983a8e5421d5bfea8802064422ce2f535055f373726eb0aa9a",
"armv7-unknown-linux-gnueabihf-0.6.16":
"a4ffe043952bf4e757a5ca0f546bb83b055b6ee0646dd5c4f5e5f13dbc5ee8f8",
"armv7-unknown-linux-musleabihf-0.6.16":
"0237c8d9914e0d9fd2f022d6d5f91ce392d13e0ccbb7fa7ebe601296a67c3d6c",
"i686-pc-windows-msvc-0.6.16":
"f5c6400f07db2014b2b0c66770e1125fa70efe4dd99cc8351838bed0045c34f8",
"i686-unknown-linux-gnu-0.6.16":
"f46f89efcc599a6695e8378a1201e62cd4afb9a4438d65a89098ab11201f84ab",
"i686-unknown-linux-musl-0.6.16":
"afe69380a9d3592a87893d6bdc11ff33e4180b98f1e1fd4e626c0307d7598914",
"powerpc64-unknown-linux-gnu-0.6.16":
"bf455747580dbbf76cbcf616f67f825c40bd1bdec20c9ff993e03485f9eaad44",
"powerpc64le-unknown-linux-gnu-0.6.16":
"508ec561b1740a551d2b33e96671e0e8435a1bcc0e97080f3d7ba88a096bd360",
"s390x-unknown-linux-gnu-0.6.16":
"e25c5527826524f51f114388bff47871bf1ca67badbfd72d45427bdba4b46794",
"x86_64-apple-darwin-0.6.16":
"ce512b5e40a8ad2916a46df2bdba729d5541e4b3649a09aaddff6e525be012e4",
"x86_64-pc-windows-msvc-0.6.16":
"f1b4c24ec602b6c0b06b6bc64aa447bbe4cf313e93fbec326741961e80ffa8b7",
"x86_64-unknown-linux-gnu-0.6.16":
"e9ef28b675df68978a60f87192fb8c730b8bfca9bef42b121686b218ea0f6542",
"x86_64-unknown-linux-musl-0.6.16":
"25024557931d04cc34f80b818c7547c9c62b762ec6df807e30cb52f383fa2615",
"aarch64-apple-darwin-0.6.15":
"1c5b25f75c6438b6910dbc4c6903debe53f31ee14aee55d02243dfe7bf7c9f72",
"aarch64-pc-windows-msvc-0.6.15":
"317fe0b29e647aad1e9f02ffe764dcbbc6e2ef189f018c81b673884173ab98ba",
"aarch64-unknown-linux-gnu-0.6.15":
"3bf650aec162157b7e01461f41c2a9797366b6043452c6e7035c6c926d0a585b",
"aarch64-unknown-linux-musl-0.6.15":
"183cebae8c9d91bbd48219f9006a5c0c41c90a075d6724aec53a7ea0503c665a",
"arm-unknown-linux-musleabihf-0.6.15":
"d83c76e130ffb25fb6a4ba8ea5870207d810190733a14ae87084c63a417912f6",
"armv7-unknown-linux-gnueabihf-0.6.15":
"d661ec44e5fc7553cd8dd5ad5f48848c5a4d5279ba0df0036c0e2422ec9f312b",
"armv7-unknown-linux-musleabihf-0.6.15":
"6fc86a829965362f99602c47627b269c9b676731586a60ca5bb9d6069677938d",
"i686-pc-windows-msvc-0.6.15":
"7f15e3377e94fac882b33465cb8cbb24705f5c8d63d9d65c6f1b0816c1d30a0b",
"i686-unknown-linux-gnu-0.6.15":
"bfedd03be9f579a9bc10e6c25176017e514cca0500cfb9bba43794387a577661",
"i686-unknown-linux-musl-0.6.15":
"82bf8666c0a57514af4e5403f162314b710e1682e1065ab71a845ebb5d8db0b7",
"powerpc64-unknown-linux-gnu-0.6.15":
"6e9795344d61ee9ac497d6e03a447d808f2aab13925f30e44c00638abec57deb",
"powerpc64le-unknown-linux-gnu-0.6.15":
"e38f13284ed8b645b87ef07c8b549d1f1a5b746aa0411c2115dcd5cda0da13fc",
"s390x-unknown-linux-gnu-0.6.15":
"416f61249b330ea9735cda0c866c9460f87111bc9d4e040c98916fda6a45be09",
"x86_64-apple-darwin-0.6.15":
"97adf61511c0f6ea42c090443c38d8d71116b78ae626363f9f149924c91ae886",
"x86_64-pc-windows-msvc-0.6.15":
"10c75d566db1447f3bdcbcb31d6598e4b5f4ea638be5d8b73a7350929389512b",
"x86_64-unknown-linux-gnu-0.6.15":
"85d98ef282cdbfcb4020922f0c12421ecca4130f0a4570d3b827a15ffd544acc",
"x86_64-unknown-linux-musl-0.6.15":
"78289c93836cb32b8b24e3216b5b316e7fdf483365de2fc571844d308387e8a4",
"aarch64-apple-darwin-0.6.14":
"4ea4731010fbd1bc8e790e07f199f55a5c7c2c732e9b77f85e302b0bee61b756",
"aarch64-pc-windows-msvc-0.6.14":

View File

@@ -7,6 +7,10 @@ import { OWNER, REPO, TOOL_CACHE_NAME } from "../utils/constants";
import type { Architecture, Platform } from "../utils/platforms";
import { validateChecksum } from "./checksum/checksum";
import { Octokit } from "../utils/octokit";
import {
getDownloadUrl,
getLatestKnownVersion as getLatestVersionInManifest,
} from "./version-manifest";
export function tryGetFromToolCache(
arch: Architecture,
@@ -23,36 +27,85 @@ export function tryGetFromToolCache(
return { version: resolvedVersion, installedPath };
}
export async function downloadVersion(
export async function downloadVersionFromGithub(
serverUrl: string,
platform: Platform,
arch: Architecture,
version: string,
checkSum: string | undefined,
githubToken: string,
): Promise<{ version: string; cachedToolDir: string }> {
const resolvedVersion = await resolveVersion(version, githubToken);
const artifact = `uv-${arch}-${platform}`;
let extension = ".tar.gz";
if (platform === "pc-windows-msvc") {
extension = ".zip";
}
const downloadUrl = `https://github.com/${OWNER}/${REPO}/releases/download/${resolvedVersion}/${artifact}${extension}`;
core.info(`Downloading uv from "${downloadUrl}" ...`);
const extension = getExtension(platform);
const downloadUrl = `${serverUrl}/${OWNER}/${REPO}/releases/download/${version}/${artifact}${extension}`;
return await downloadVersion(
downloadUrl,
artifact,
platform,
arch,
version,
checkSum,
githubToken,
);
}
export async function downloadVersionFromManifest(
manifestUrl: string | undefined,
platform: Platform,
arch: Architecture,
version: string,
checkSum: string | undefined,
githubToken: string,
): Promise<{ version: string; cachedToolDir: string }> {
const downloadUrl = await getDownloadUrl(
manifestUrl,
version,
arch,
platform,
);
if (!downloadUrl) {
core.info(
`manifest-file does not contain version ${version}, arch ${arch}, platform ${platform}. Falling back to GitHub releases.`,
);
return await downloadVersionFromGithub(
"https://github.com",
platform,
arch,
version,
checkSum,
githubToken,
);
}
return await downloadVersion(
downloadUrl,
`uv-${arch}-${platform}`,
platform,
arch,
version,
checkSum,
githubToken,
);
}
async function downloadVersion(
downloadUrl: string,
artifactName: string,
platform: Platform,
arch: Architecture,
version: string,
checkSum: string | undefined,
githubToken: string,
): Promise<{ version: string; cachedToolDir: string }> {
core.info(`Downloading uv from "${downloadUrl}" ...`);
const downloadPath = await tc.downloadTool(
downloadUrl,
undefined,
githubToken,
);
await validateChecksum(
checkSum,
downloadPath,
arch,
platform,
resolvedVersion,
);
await validateChecksum(checkSum, downloadPath, arch, platform, version);
let uvDir: string;
const extension = getExtension(platform);
if (platform === "pc-windows-msvc") {
const fullPathWithExtension = `${downloadPath}${extension}`;
await fs.copyFile(downloadPath, fullPathWithExtension);
@@ -60,26 +113,39 @@ export async function downloadVersion(
// On windows extracting the zip does not create an intermediate directory
} else {
const extractedDir = await tc.extractTar(downloadPath);
uvDir = path.join(extractedDir, artifact);
uvDir = path.join(extractedDir, artifactName);
}
const cachedToolDir = await tc.cacheDir(
uvDir,
TOOL_CACHE_NAME,
resolvedVersion,
version,
arch,
);
return { version: resolvedVersion, cachedToolDir };
return { version: version, cachedToolDir };
}
function getExtension(platform: Platform): string {
return platform === "pc-windows-msvc" ? ".zip" : ".tar.gz";
}
export async function resolveVersion(
versionInput: string,
manifestFile: string | undefined,
githubToken: string,
): Promise<string> {
core.debug(`Resolving version: ${versionInput}`);
const version =
versionInput === "latest"
? await getLatestVersion(githubToken)
: versionInput;
let version: string;
if (manifestFile) {
version =
versionInput === "latest"
? await getLatestVersionInManifest(manifestFile)
: versionInput;
} else {
version =
versionInput === "latest"
? await getLatestVersion(githubToken)
: versionInput;
}
if (tc.isExplicitVersion(version)) {
core.debug(`Version ${version} is an explicit version.`);
return version;

View File

@@ -0,0 +1,91 @@
import { promises as fs } from "node:fs";
import * as core from "@actions/core";
import * as semver from "semver";
import { fetch } from "../utils/fetch";
import { join } from "node:path";
const localManifestFile = join(__dirname, "..", "..", "version-manifest.json");
interface ManifestEntry {
version: string;
artifactName: string;
arch: string;
platform: string;
downloadUrl: string;
}
export async function getLatestKnownVersion(
manifestUrl: string | undefined,
): Promise<string> {
const manifestEntries = await getManifestEntries(manifestUrl);
return manifestEntries.reduce((a, b) =>
semver.gt(a.version, b.version) ? a : b,
).version;
}
export async function getDownloadUrl(
manifestUrl: string | undefined,
version: string,
arch: string,
platform: string,
): Promise<string | undefined> {
const manifestEntries = await getManifestEntries(manifestUrl);
const entry = manifestEntries.find(
(entry) =>
entry.version === version &&
entry.arch === arch &&
entry.platform === platform,
);
return entry ? entry.downloadUrl : undefined;
}
async function getManifestEntries(
manifestUrl: string | undefined,
): Promise<ManifestEntry[]> {
let data: string;
if (manifestUrl !== undefined) {
core.info(`Fetching manifest-file from: ${manifestUrl}`);
const response = await fetch(manifestUrl, {});
if (!response.ok) {
throw new Error(
`Failed to fetch manifest-file: ${response.status} ${response.statusText}`,
);
}
data = await response.text();
} else {
core.info("manifest-file not provided, reading from local file.");
const fileContent = await fs.readFile(localManifestFile);
data = fileContent.toString();
}
return JSON.parse(data);
}
export async function updateVersionManifest(
manifestUrl: string,
downloadUrls: string[],
): Promise<void> {
const manifest: ManifestEntry[] = [];
for (const downloadUrl of downloadUrls) {
const urlParts = downloadUrl.split("/");
const version = urlParts[urlParts.length - 2];
const artifactName = urlParts[urlParts.length - 1];
if (!artifactName.startsWith("uv-")) {
continue;
}
if (artifactName.startsWith("uv-installer")) {
continue;
}
const artifactParts = artifactName.split(".")[0].split("-");
manifest.push({
version: version,
artifactName: artifactName,
arch: artifactParts[1],
platform: artifactName.split(`uv-${artifactParts[1]}-`)[1].split(".")[0],
downloadUrl: downloadUrl,
});
}
core.debug(`Updating manifest-file: ${JSON.stringify(manifest)}`);
await fs.writeFile(manifestUrl, JSON.stringify(manifest));
}

View File

@@ -1,9 +1,10 @@
import * as core from "@actions/core";
import * as path from "node:path";
import {
downloadVersion,
tryGetFromToolCache,
resolveVersion,
downloadVersionFromGithub,
downloadVersionFromManifest,
} from "./download/download-version";
import { restoreCache } from "./cache/restore-cache";
@@ -14,21 +15,24 @@ import {
type Platform,
} from "./utils/platforms";
import {
activateEnvironment as activateEnvironmentInput,
cacheLocalPath,
checkSum,
ignoreEmptyWorkdir,
enableCache,
githubToken,
pyProjectFile,
pythonVersion,
toolBinDir,
toolDir,
uvFile,
version as versionInput,
versionFile as versionFileInput,
workingDirectory,
serverUrl,
manifestFile,
} from "./utils/inputs";
import * as exec from "@actions/exec";
import fs from "node:fs";
import { getUvVersionFromConfigFile } from "./utils/pyproject";
import { getUvVersionFromFile } from "./version/resolve";
async function run(): Promise<void> {
detectEmptyWorkdir();
@@ -47,7 +51,8 @@ async function run(): Promise<void> {
addToolBinToPath();
addUvToPathAndOutput(setupResult.uvDir);
setToolDir();
await setupPython();
setupPython();
await activateEnvironment();
addMatchers();
setCacheDir(cacheLocalPath);
@@ -83,7 +88,7 @@ async function setupUv(
checkSum: string | undefined,
githubToken: string,
): Promise<{ uvDir: string; version: string }> {
const resolvedVersion = await determineVersion();
const resolvedVersion = await determineVersion(manifestFile);
const toolCacheResult = tryGetFromToolCache(arch, resolvedVersion);
if (toolCacheResult.installedPath) {
core.info(`Found uv in tool-cache for ${toolCacheResult.version}`);
@@ -93,13 +98,29 @@ async function setupUv(
};
}
const downloadVersionResult = await downloadVersion(
platform,
arch,
resolvedVersion,
checkSum,
githubToken,
);
let downloadVersionResult: { version: string; cachedToolDir: string };
if (serverUrl !== "https://github.com") {
core.warning(
"The input server-url is deprecated. Please use manifest-file instead.",
);
downloadVersionResult = await downloadVersionFromGithub(
serverUrl,
platform,
arch,
resolvedVersion,
checkSum,
githubToken,
);
} else {
downloadVersionResult = await downloadVersionFromManifest(
manifestFile,
platform,
arch,
resolvedVersion,
checkSum,
githubToken,
);
}
return {
uvDir: downloadVersionResult.cachedToolDir,
@@ -107,26 +128,37 @@ async function setupUv(
};
}
async function determineVersion(): Promise<string> {
async function determineVersion(
manifestFile: string | undefined,
): Promise<string> {
if (versionInput !== "") {
return await resolveVersion(versionInput, githubToken);
return await resolveVersion(versionInput, manifestFile, githubToken);
}
const configFile = uvFile !== "" ? uvFile : pyProjectFile;
if (configFile !== "") {
const versionFromConfigFile = getUvVersionFromConfigFile(configFile);
if (versionFromConfigFile === undefined) {
core.warning(
`Could not find required-version under [tool.uv] in ${configFile}. Falling back to latest`,
if (versionFileInput !== "") {
const versionFromFile = getUvVersionFromFile(versionFileInput);
if (versionFromFile === undefined) {
throw new Error(
`Could not determine uv version from file: ${versionFileInput}`,
);
}
return await resolveVersion(versionFromConfigFile || "latest", githubToken);
return await resolveVersion(versionFromFile, manifestFile, githubToken);
}
if (!fs.existsSync("uv.toml") && !fs.existsSync("pyproject.toml")) {
return await resolveVersion("latest", githubToken);
const versionFromUvToml = getUvVersionFromFile(
`${workingDirectory}${path.sep}uv.toml`,
);
const versionFromPyproject = getUvVersionFromFile(
`${workingDirectory}${path.sep}pyproject.toml`,
);
if (versionFromUvToml === undefined && versionFromPyproject === undefined) {
core.info(
"Could not determine uv version from uv.toml or pyproject.toml. Falling back to latest.",
);
}
const versionFile = fs.existsSync("uv.toml") ? "uv.toml" : "pyproject.toml";
const versionFromConfigFile = getUvVersionFromConfigFile(versionFile);
return await resolveVersion(versionFromConfigFile || "latest", githubToken);
return await resolveVersion(
versionFromUvToml || versionFromPyproject || "latest",
manifestFile,
githubToken,
);
}
function addUvToPathAndOutput(cachedPath: string): void {
@@ -163,24 +195,29 @@ function setToolDir(): void {
}
}
async function setupPython(): Promise<void> {
function setupPython(): void {
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];
}
}
async function activateEnvironment(): Promise<void> {
if (activateEnvironmentInput) {
const execArgs = ["venv", ".venv", "--directory", workingDirectory];
core.info("Activating python venv...");
await exec.exec("uv", execArgs, options);
await exec.exec("uv", execArgs);
let venvBinPath = ".venv/bin";
let venvBinPath = `${workingDirectory}${path.sep}.venv${path.sep}bin`;
if (process.platform === "win32") {
venvBinPath = ".venv/Scripts";
venvBinPath = `${workingDirectory}${path.sep}.venv${path.sep}Scripts`;
}
core.addPath(path.resolve(venvBinPath));
core.exportVariable("VIRTUAL_ENV", path.resolve(".venv"));
core.exportVariable(
"VIRTUAL_ENV",
path.resolve(`${workingDirectory}${path.sep}.venv`),
);
}
}

View File

@@ -1,34 +0,0 @@
import * as semver from "semver";
import * as core from "@actions/core";
import { Octokit } from "./utils/octokit";
import { OWNER, REPO } from "./utils/constants";
import { updateChecksums } from "./download/checksum/update-known-checksums";
async function run(): Promise<void> {
const checksumFilePath = process.argv.slice(2)[0];
const github_token = process.argv.slice(2)[1];
const octokit = new Octokit({
auth: github_token,
});
const response = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: OWNER,
repo: REPO,
});
const downloadUrls: string[] = response.flatMap((release) =>
release.assets
.filter((asset) => asset.name.endsWith(".sha256"))
.map((asset) => asset.browser_download_url),
);
await updateChecksums(checksumFilePath, downloadUrls);
const latestVersion = response
.map((release) => release.tag_name)
.sort(semver.rcompare)[0];
core.setOutput("latest-version", latestVersion);
}
run();

View File

@@ -0,0 +1,58 @@
import * as semver from "semver";
import * as core from "@actions/core";
import { Octokit } from "./utils/octokit";
import { OWNER, REPO } from "./utils/constants";
import { updateChecksums } from "./download/checksum/update-known-checksums";
import {
updateVersionManifest,
getLatestKnownVersion,
} from "./download/version-manifest";
async function run(): Promise<void> {
const checksumFilePath = process.argv.slice(2)[0];
const versionsManifestFile = process.argv.slice(2)[1];
const githubToken = process.argv.slice(2)[2];
const octokit = new Octokit({
auth: githubToken,
});
const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({
owner: OWNER,
repo: REPO,
});
const latestKnownVersion = await getLatestKnownVersion(undefined);
if (semver.lte(latestRelease.tag_name, latestKnownVersion)) {
core.info(
`Latest release (${latestRelease.tag_name}) is not newer than the latest known version (${latestKnownVersion}). Skipping update.`,
);
return;
}
const releases = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: OWNER,
repo: REPO,
});
const checksumDownloadUrls: string[] = releases.flatMap((release) =>
release.assets
.filter((asset) => asset.name.endsWith(".sha256"))
.map((asset) => asset.browser_download_url),
);
await updateChecksums(checksumFilePath, checksumDownloadUrls);
const artifactDownloadUrls: string[] = releases.flatMap((release) =>
release.assets
.filter((asset) => !asset.name.endsWith(".sha256"))
.map((asset) => asset.browser_download_url),
);
await updateVersionManifest(versionsManifestFile, artifactDownloadUrls);
core.setOutput("latest-version", latestRelease.tag_name);
}
run();

21
src/utils/fetch.ts Normal file
View File

@@ -0,0 +1,21 @@
import { fetch as undiciFetch, ProxyAgent, type RequestInit } from "undici";
export function getProxyAgent() {
const httpProxy = process.env.HTTP_PROXY || process.env.http_proxy;
if (httpProxy) {
return new ProxyAgent(httpProxy);
}
const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
if (httpsProxy) {
return new ProxyAgent(httpsProxy);
}
return undefined;
}
export const fetch = async (url: string, opts: RequestInit) =>
await undiciFetch(url, {
dispatcher: getProxyAgent(),
...opts,
});

View File

@@ -1,10 +1,12 @@
import * as core from "@actions/core";
import path from "node:path";
import { getManifestFromRepo } from "@actions/tool-cache";
export const version = core.getInput("version");
export const pyProjectFile = core.getInput("pyproject-file");
export const uvFile = core.getInput("uv-file");
export const versionFile = core.getInput("version-file");
export const pythonVersion = core.getInput("python-version");
export const activateEnvironment = core.getBooleanInput("activate-environment");
export const workingDirectory = core.getInput("working-directory");
export const checkSum = core.getInput("checksum");
export const enableCache = getEnableCache();
export const cacheSuffix = core.getInput("cache-suffix") || "";
@@ -17,7 +19,9 @@ export const ignoreEmptyWorkdir =
core.getInput("ignore-empty-workdir") === "true";
export const toolBinDir = getToolBinDir();
export const toolDir = getToolDir();
export const serverUrl = core.getInput("server-url");
export const githubToken = core.getInput("github-token");
export const manifestFile = getManifestFile();
function getEnableCache(): boolean {
const enableCacheInput = core.getInput("enable-cache");
@@ -64,12 +68,18 @@ function getCacheLocalPath(): string {
if (cacheLocalPathInput !== "") {
return expandTilde(cacheLocalPathInput);
}
if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${path.sep}setup-uv-cache`;
if (process.env.RUNNER_ENVIRONMENT === "github-hosted") {
if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${path.sep}setup-uv-cache`;
}
throw Error(
"Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input",
);
}
throw Error(
"Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input",
);
if (process.platform === "win32") {
return `${process.env.APPDATA}${path.sep}uv${path.sep}cache`;
}
return `${process.env.HOME}${path.sep}.cache${path.sep}uv`;
}
function expandTilde(input: string): string {
@@ -78,3 +88,11 @@ function expandTilde(input: string): string {
}
return input;
}
function getManifestFile(): string | undefined {
const manifestFileInput = core.getInput("manifest-file");
if (manifestFileInput !== "") {
return manifestFileInput;
}
return undefined;
}

View File

@@ -8,7 +8,7 @@ import {
type PaginateInterface,
} from "@octokit/plugin-paginate-rest";
import { legacyRestEndpointMethods } from "@octokit/plugin-rest-endpoint-methods";
import { fetch as undiciFetch, ProxyAgent, type RequestInit } from "undici";
import { fetch as customFetch } from "./fetch";
export type { RestEndpointMethodTypes } from "@octokit/plugin-rest-endpoint-methods";
@@ -17,26 +17,6 @@ const DEFAULTS = {
userAgent: "setup-uv",
};
export function getProxyAgent() {
const httpProxy = process.env.HTTP_PROXY || process.env.http_prox;
if (httpProxy) {
return new ProxyAgent(httpProxy);
}
const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
if (httpsProxy) {
return new ProxyAgent(httpsProxy);
}
return undefined;
}
export const customFetch = async (url: string, opts: RequestInit) =>
await undiciFetch(url, {
dispatcher: getProxyAgent(),
...opts,
});
export const Octokit: typeof Core &
Constructor<
{

View File

@@ -1,46 +0,0 @@
import fs from "node:fs";
import * as core from "@actions/core";
import * as toml from "smol-toml";
export function getUvVersionFromConfigFile(
filePath: string,
): string | undefined {
core.debug(`Trying to find required-version for uv in: ${filePath}`);
if (!fs.existsSync(filePath)) {
core.warning(`Could not find file: ${filePath}`);
return undefined;
}
let requiredVersion: string | undefined;
try {
requiredVersion = getRequiredVersion(filePath);
} catch (err) {
const message = (err as Error).message;
core.warning(`Error while parsing ${filePath}: ${message}`);
return undefined;
}
if (requiredVersion?.startsWith("==")) {
requiredVersion = requiredVersion.slice(2);
}
if (requiredVersion !== undefined) {
core.info(
`Found required-version for uv in ${filePath}: ${requiredVersion}`,
);
}
return requiredVersion;
}
function getRequiredVersion(filePath: string): string | undefined {
const fileContent = fs.readFileSync(filePath, "utf-8");
if (filePath.endsWith("pyproject.toml")) {
const tomlContent = toml.parse(fileContent) as {
tool?: { uv?: { "required-version"?: string } };
};
return tomlContent?.tool?.uv?.["required-version"];
}
const tomlContent = toml.parse(fileContent) as {
"required-version"?: string;
};
return tomlContent["required-version"];
}

View File

@@ -0,0 +1,22 @@
import fs from "node:fs";
import * as toml from "smol-toml";
export function getRequiredVersionFromConfigFile(
filePath: string,
): string | undefined {
if (!filePath.endsWith(".toml")) {
return undefined;
}
const fileContent = fs.readFileSync(filePath, "utf-8");
if (filePath.endsWith("pyproject.toml")) {
const tomlContent = toml.parse(fileContent) as {
tool?: { uv?: { "required-version"?: string } };
};
return tomlContent?.tool?.uv?.["required-version"];
}
const tomlContent = toml.parse(fileContent) as {
"required-version"?: string;
};
return tomlContent["required-version"];
}

View File

@@ -0,0 +1,43 @@
import * as toml from "smol-toml";
import fs from "node:fs";
export function getUvVersionFromRequirementsFile(
filePath: string,
): string | undefined {
const fileContent = fs.readFileSync(filePath, "utf-8");
if (filePath.endsWith(".txt")) {
return getUvVersionFromAllDependencies(fileContent.split("\n"));
}
const dependencies = parsePyprojectDependencies(fileContent);
return getUvVersionFromAllDependencies(dependencies);
}
function getUvVersionFromAllDependencies(
allDependencies: string[],
): string | undefined {
return allDependencies
.find((dep: string) => dep.match(/^uv[=<>~!]/))
?.match(/^uv([=<>~!]+.*)$/)?.[1]
.trim();
}
interface Pyproject {
project?: {
dependencies?: string[];
"optional-dependencies"?: Record<string, string[]>;
};
"dependency-groups"?: Record<string, Array<string | object>>;
}
function parsePyprojectDependencies(pyprojectContent: string): string[] {
const pyproject: Pyproject = toml.parse(pyprojectContent);
const dependencies: string[] = pyproject?.project?.dependencies || [];
const optionalDependencies: string[] = Object.values(
pyproject?.project?.["optional-dependencies"] || {},
).flat();
const devDependencies: string[] = Object.values(
pyproject?.["dependency-groups"] || {},
)
.flat()
.filter((item: string | object) => typeof item === "string");
return dependencies.concat(optionalDependencies, devDependencies);
}

30
src/version/resolve.ts Normal file
View File

@@ -0,0 +1,30 @@
import * as core from "@actions/core";
import fs from "node:fs";
import { getRequiredVersionFromConfigFile } from "./config-file";
import { getUvVersionFromRequirementsFile } from "./requirements-file";
export function getUvVersionFromFile(filePath: string): string | undefined {
core.info(`Trying to find version for uv in: ${filePath}`);
if (!fs.existsSync(filePath)) {
core.info(`Could not find file: ${filePath}`);
return undefined;
}
let uvVersion: string | undefined;
try {
uvVersion = getRequiredVersionFromConfigFile(filePath);
if (uvVersion === undefined) {
uvVersion = getUvVersionFromRequirementsFile(filePath);
}
} catch (err) {
const message = (err as Error).message;
core.warning(`Error while parsing ${filePath}: ${message}`);
return undefined;
}
if (uvVersion?.startsWith("==")) {
uvVersion = uvVersion.slice(2);
}
if (uvVersion !== undefined) {
core.info(`Found version for uv in ${filePath}: ${uvVersion}`);
}
return uvVersion;
}

22738
version-manifest.json Normal file

File diff suppressed because it is too large Load Diff