Compare commits

...

14 Commits

Author SHA1 Message Date
Kevin Stillhammer fac544c07d chore(deps): roll up dependabot updates (#903)
test / test-specific-version (map[expected-version:0.4.25 resolution-strategy:lowest version-input:>=0.4.25]) (push) Failing after 54s
test / test-uv-no-modify-path (push) Failing after 55s
test / test-specific-version (map[expected-version:0.1.0 resolution-strategy:lowest version-input:>=0.1.0,<0.2]) (push) Failing after 57s
test / test-default-version (ubuntu-latest) (push) Failing after 59s
test / test-specific-version (map[expected-version:0.3.0 version-input:0.3.0]) (push) Failing after 1m2s
test / test-specific-version (map[expected-version:0.4.25 resolution-strategy:lowest version-input:>=0.4.25,<0.5]) (push) Failing after 1m7s
test / test-specific-version (map[expected-version:0.3.2 version-input:0.3.2]) (push) Failing after 1m7s
test / test-specific-version (map[expected-version:0.4.30 version-input:>=0.4.25,<0.5]) (push) Failing after 1m7s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3]) (push) Failing after 1m7s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3.x]) (push) Failing after 1m9s
test / test-specific-version (map[expected-version:0.1.45 resolution-strategy:highest version-input:>=0.1,<0.2]) (push) Failing after 1m10s
test / test-latest-version (>=0.8) (push) Failing after 1m11s
test / test-latest-version (latest) (push) Failing after 1m12s
test / test-from-working-directory-version (map[expected-version:0.5.15 working-directory:__tests__/fixtures/uv-toml-project]) (push) Failing after 31s
test / test-from-working-directory-version (map[expected-version:0.5.14 working-directory:__tests__/fixtures/pyproject-toml-project]) (push) Failing after 1m13s
test / test-version-file-version (map[expected-version:0.6.17 version-file:__tests__/fixtures/uv-in-requirements-txt-project/requirements.txt]) (push) Failing after 45s
test / test-version-file-version (map[expected-version:0.5.15 version-file:__tests__/fixtures/.tool-versions]) (push) Failing after 47s
test / test-version-file-version (map[expected-version:0.8.3 version-file:__tests__/fixtures/uv-in-requirements-hash-txt-project/requirements.txt]) (push) Failing after 44s
test / test-malformed-pyproject-file-fallback (push) Failing after 52s
test / test-checksum (map[checksum:4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd os:ubuntu-latest]) (push) Failing after 48s
test / test-uvx (push) Failing after 50s
test / test-with-explicit-token (push) Failing after 50s
test / test-activate-environment (ubuntu-latest) (push) Failing after 48s
test / test-tool-install (ubuntu-latest) (push) Failing after 51s
test / test-python-version (ubuntu-latest) (push) Failing after 51s
test / test-activate-environment-custom-path (ubuntu-latest) (push) Failing after 52s
test / test-debian-unstable (push) Failing after 50s
CodeQL / Analyze (TypeScript) (push) Failing after 2m6s
test / test-musl (push) Failing after 40s
test / test-activate-environment-no-project (push) Failing after 55s
test / test-setup-cache (false, ubuntu-latest) (push) Failing after 30s
test / test-setup-cache (auto, ubuntu-latest) (push) Failing after 31s
test / test-setup-cache (true, ubuntu-latest) (push) Failing after 25s
test / test-setup-cache-requirements-txt (push) Failing after 53s
test / test-restore-cache-requirements-txt (push) Has been skipped
test / test-cache-key-os-version (ubuntu-22.04, ubuntu-22.04) (push) Failing after 1m8s
test / test-setup-cache-dependency-glob (push) Failing after 55s
test / test-restore-cache-dependency-glob (push) Has been skipped
test / test-setup-cache-save-cache-false (push) Failing after 54s
test / test-restore-cache-save-cache-false (push) Has been skipped
test / test-setup-cache-restore-cache-false (push) Failing after 54s
test / test-restore-cache-restore-cache-false (push) Has been skipped
test / test-cache-local (map[expected-cache-dir:/home/runner/work/_temp/setup-uv-cache os:ubuntu-latest]) (push) Failing after 54s
test / test-cache-local-cache-disabled (push) Failing after 54s
test / test-cache-local-cache-disabled-but-explicit-path (push) Failing after 54s
test / test-custom-manifest-file (push) Failing after 53s
test / test-download-from-astral-mirror-false (push) Failing after 53s
test / test-no-python-version (push) Failing after 55s
test / test-cache-prune-force (push) Failing after 48s
test / test-absolute-path (push) Failing after 55s
test / test-cache-dir-from-file (push) Failing after 47s
test / test-cache-python-missing-managed-install-dir (push) Failing after 18s
test / test-relative-path (push) Failing after 54s
test / test-act (push) Failing after 26s
test / test-python-install-dir (map[expected-python-dir:/home/runner/work/_temp/uv-python-dir os:ubuntu-latest]) (push) Failing after 29s
test / test-cache-python-installs (push) Failing after 32s
test / test-restore-python-installs (push) Has been skipped
test / validate-typings (push) Successful in 56s
test / lint (push) Failing after 11m27s
test / test-tool-install (macos-14) (push) Has been cancelled
test / test-tool-install (macos-latest) (push) Has been cancelled
test / test-tool-install (windows-latest) (push) Has been cancelled
test / test-default-version (macos-14) (push) Has been cancelled
test / test-default-version (macos-latest) (push) Has been cancelled
test / test-default-version (windows-latest) (push) Has been cancelled
test / test-setup-cache (false, windows-latest) (push) Has been cancelled
test / test-checksum (map[checksum:a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218 os:macos-latest]) (push) Has been cancelled
test / test-python-version (macos-latest) (push) Has been cancelled
test / test-python-version (windows-latest) (push) Has been cancelled
test / test-activate-environment (macos-latest) (push) Has been cancelled
test / test-restore-cache (true, windows-latest) (push) Has been cancelled
test / test-activate-environment (windows-latest) (push) Has been cancelled
test / test-activate-environment-custom-path (macos-latest) (push) Has been cancelled
test / test-activate-environment-custom-path (windows-latest) (push) Has been cancelled
test / test-cache-key-os-version (macos-14, macos-14) (push) Has been cancelled
test / test-cache-key-os-version (macos-15, macos-15) (push) Has been cancelled
test / test-cache-key-os-version (ubuntu-24.04, ubuntu-24.04) (push) Has been cancelled
test / test-cache-key-os-version (windows-2022, windows-2022) (push) Has been cancelled
test / test-cache-key-os-version (windows-2025, windows-2025) (push) Has been cancelled
test / test-setup-cache (auto, windows-latest) (push) Has been cancelled
test / test-setup-cache (true, windows-latest) (push) Has been cancelled
test / test-restore-cache (auto, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (auto, windows-latest) (push) Has been cancelled
test / test-restore-cache (false, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (false, windows-latest) (push) Has been cancelled
test / test-restore-cache (true, ubuntu-latest) (push) Has been cancelled
test / test-cache-local (map[expected-cache-dir:D:\a\_temp\setup-uv-cache os:windows-latest]) (push) Has been cancelled
test / test-python-install-dir (map[expected-python-dir:D:\a\_temp\uv-python-dir os:windows-latest]) (push) Has been cancelled
test / all-tests-passed (push) Has been cancelled
Release Drafter / ✏️ Draft release (push) Has been cancelled
Rolls up the current open Dependabot npm updates:

- #848 esbuild from 0.27.5 to 0.28.0
- #847 undici from 8.0.0 to 8.3.0
- #846 ts-jest from 29.4.9 to 29.4.11
- #841 @biomejs/biome from 2.4.10 to 2.4.15, including the matching
biome.json schema URL update

Validation:

- npm run all
2026-06-03 10:21:55 +02:00
Kevin Stillhammer 7390f777b0 docs: update dependabot rollup biome guidance (#902)
Updates the dependabot-pr-rollup skill to document that @biomejs/biome
dependency updates must also update the matching schema URL version in
biome.json.
2026-06-03 09:50:08 +02:00
Kevin Stillhammer 363c64a728 chore(deps): roll up dependabot updates (#901)
Rolls up the current open Dependabot npm updates:

- #848 esbuild from 0.27.4 to 0.27.5
- #847 undici from 7.24.2 to 8.0.0
- #846 ts-jest from 29.4.6 to 29.4.9
- #841 @biomejs/biome from 2.4.7 to 2.4.10, including the matching
biome.json schema URL update
- #834 smol-toml from 1.6.0 to 1.6.1

Validation:

- npm run all
2026-06-03 09:49:40 +02:00
dependabot[bot] c4fcbafce4 chore(deps): bump release-drafter/release-drafter from 7.3.0 to 7.3.1 (#900)
Bumps
[release-drafter/release-drafter](https://github.com/release-drafter/release-drafter)
from 7.3.0 to 7.3.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/release-drafter/release-drafter/releases">release-drafter/release-drafter's
releases</a>.</em></p>
<blockquote>
<h2>v7.3.1</h2>
<h1>What's Changed</h1>
<h2>Bug Fixes</h2>
<ul>
<li>fix: output name and tag_name in dry-run mode (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1625">#1625</a>)
<a href="https://github.com/cchanche"><code>@​cchanche</code></a></li>
</ul>
<h2>Maintenance</h2>
<ul>
<li>chore(deps): update graphql-codegen to 7.0.0 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1619">#1619</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>chore(deps): update dependency nock to 14.0.15 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1609">#1609</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>chore(deps): update graphql-codegen (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1615">#1615</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>chore(deps): update dependency typescript to 6.0.3 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1610">#1610</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>ci(deps): update actions/download-artifact action to v8.0.1 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1620">#1620</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>chore(deps): update dependency <code>@​types/node</code> to 24.12.3
(<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1608">#1608</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>chore(deps): update vitest to 4.1.5 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1612">#1612</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>chore(deps): update dependency <code>@​biomejs/biome</code> to
2.4.15 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1607">#1607</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>chore(deps): update dependency vite to 8.0.11 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1611">#1611</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>ci(deps): pin dependencies (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1606">#1606</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
</ul>
<h2>Dependency Updates</h2>
<!-- raw HTML omitted -->
<ul>
<li>chore(deps): update node.js to v24.15.0 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1616">#1616</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>chore(deps): update vite to v8.0.13 and vitest to v4.1.6 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1624">#1624</a>)
<a href="https://github.com/cchanche"><code>@​cchanche</code></a></li>
<li>fix(deps): update dependency semver to 7.8.0 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1622">#1622</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>chore(deps): update npm tool constraint to 11.14.1 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1617">#1617</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>fix(deps): update dependency zod to 4.4.3 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1618">#1618</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>fix(deps): update actions (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1613">#1613</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>chore(deps): update dependency <code>@​biomejs/biome</code> to
2.4.15 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1607">#1607</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
<li>fix(deps): update dependency yaml to 2.8.4 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1614">#1614</a>)
@<a href="https://github.com/apps/renovate">renovate[bot]</a></li>
</ul>
<!-- raw HTML omitted -->
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-drafter/release-drafter/compare/v7.3.0...v7.3.1">https://github.com/release-drafter/release-drafter/compare/v7.3.0...v7.3.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/693d20e7c1ce1a81d3a41962f85914253b518449"><code>693d20e</code></a>
chore: release v7.3.1</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/8339e41baa2bbe599e9144446202a730b0b512dc"><code>8339e41</code></a>
docs: update contributing docs for release process</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/62d8da40388ce452db900d9dd413236c55d8527b"><code>62d8da4</code></a>
fix: output name and tag_name in dry-run mode (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1625">#1625</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/2c6d3958ca8ff5559d1816902d569397e6e7cd40"><code>2c6d395</code></a>
chore(deps): update node.js to v24.15.0 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1616">#1616</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/3b62240da12f1ebb0e312c0e333efb7c975c9f83"><code>3b62240</code></a>
chore(deps): update vite to v8.0.13 and vitest to v4.1.6 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1624">#1624</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/446e1517c52f0f2658eccfb62fe528f3c863e2ce"><code>446e151</code></a>
fix(deps): adapt to graphql-codegen 7 type changes</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/4cd06dcb5f73b1a2c718f7902ca013a7b3ebffc1"><code>4cd06dc</code></a>
chore(deps): update graphql-codegen to 7.0.0</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/80457684ebeb5980a2523289611de1d198148dc0"><code>8045768</code></a>
fix(deps): update dependency semver to 7.8.0</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/1cf836b3aa269940ddd548267ab0a35726568d79"><code>1cf836b</code></a>
ci(release): use local action for publish step</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/485c120935331ce9b7d39543ad7441a80d6c7194"><code>485c120</code></a>
chore(deps): update npm tool constraint to 11.14.1</li>
<li>Additional commits viewable in <a
href="https://github.com/release-drafter/release-drafter/compare/c2e2804cc59f45f57076a99af580d0fedb697927...693d20e7c1ce1a81d3a41962f85914253b518449">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=release-drafter/release-drafter&package-manager=github_actions&previous-version=7.3.0&new-version=7.3.1)](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 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>
2026-06-03 09:37:40 +02:00
github-actions[bot] 8e642c5e62 chore: update known checksums for 0.11.18 (#899)
test / test-latest-version (latest) (push) Failing after 32s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3.x]) (push) Failing after 33s
test / test-specific-version (map[expected-version:0.3.0 version-input:0.3.0]) (push) Failing after 36s
test / test-default-version (ubuntu-latest) (push) Failing after 38s
test / test-specific-version (map[expected-version:0.1.0 resolution-strategy:lowest version-input:>=0.1.0,<0.2]) (push) Failing after 42s
test / test-specific-version (map[expected-version:0.3.2 version-input:0.3.2]) (push) Failing after 44s
test / test-specific-version (map[expected-version:0.4.30 version-input:>=0.4.25,<0.5]) (push) Failing after 44s
test / test-latest-version (>=0.8) (push) Failing after 44s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3]) (push) Failing after 46s
test / test-specific-version (map[expected-version:0.4.25 resolution-strategy:lowest version-input:>=0.4.25,<0.5]) (push) Failing after 47s
test / test-from-working-directory-version (map[expected-version:0.5.14 working-directory:__tests__/fixtures/pyproject-toml-project]) (push) Failing after 49s
test / test-specific-version (map[expected-version:0.4.25 resolution-strategy:lowest version-input:>=0.4.25]) (push) Failing after 47s
test / test-specific-version (map[expected-version:0.1.45 resolution-strategy:highest version-input:>=0.1,<0.2]) (push) Failing after 49s
test / test-uv-no-modify-path (push) Failing after 51s
test / test-from-working-directory-version (map[expected-version:0.5.15 working-directory:__tests__/fixtures/uv-toml-project]) (push) Failing after 21s
test / test-version-file-version (map[expected-version:0.5.15 version-file:__tests__/fixtures/.tool-versions]) (push) Failing after 24s
test / test-version-file-version (map[expected-version:0.8.3 version-file:__tests__/fixtures/uv-in-requirements-hash-txt-project/requirements.txt]) (push) Failing after 23s
test / test-version-file-version (map[expected-version:0.6.17 version-file:__tests__/fixtures/uv-in-requirements-txt-project/requirements.txt]) (push) Failing after 25s
test / test-malformed-pyproject-file-fallback (push) Failing after 26s
test / test-with-explicit-token (push) Failing after 31s
test / test-checksum (map[checksum:4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd os:ubuntu-latest]) (push) Failing after 32s
test / test-uvx (push) Failing after 32s
test / test-python-version (ubuntu-latest) (push) Failing after 32s
test / test-tool-install (ubuntu-latest) (push) Failing after 34s
test / test-activate-environment (ubuntu-latest) (push) Failing after 32s
test / test-activate-environment-custom-path (ubuntu-latest) (push) Failing after 33s
test / test-debian-unstable (push) Failing after 35s
test / test-activate-environment-no-project (push) Failing after 37s
test / test-musl (push) Failing after 34s
test / test-setup-cache (auto, ubuntu-latest) (push) Failing after 31s
test / test-setup-cache (false, ubuntu-latest) (push) Failing after 30s
test / test-setup-cache (true, ubuntu-latest) (push) Failing after 27s
test / test-cache-key-os-version (ubuntu-22.04, ubuntu-22.04) (push) Failing after 41s
CodeQL / Analyze (TypeScript) (push) Failing after 1m44s
test / test-setup-cache-requirements-txt (push) Failing after 32s
test / test-restore-cache-requirements-txt (push) Has been skipped
test / test-setup-cache-dependency-glob (push) Failing after 37s
test / test-setup-cache-restore-cache-false (push) Failing after 36s
test / test-restore-cache-dependency-glob (push) Has been skipped
test / test-restore-cache-restore-cache-false (push) Has been skipped
test / test-restore-cache-save-cache-false (push) Has been skipped
test / test-setup-cache-save-cache-false (push) Failing after 38s
test / test-cache-local (map[expected-cache-dir:/home/runner/work/_temp/setup-uv-cache os:ubuntu-latest]) (push) Failing after 39s
test / test-cache-local-cache-disabled (push) Failing after 39s
test / test-cache-local-cache-disabled-but-explicit-path (push) Failing after 39s
test / test-custom-manifest-file (push) Failing after 39s
test / test-download-from-astral-mirror-false (push) Failing after 38s
test / test-no-python-version (push) Failing after 42s
test / test-cache-prune-force (push) Failing after 36s
test / test-absolute-path (push) Failing after 41s
test / test-cache-python-missing-managed-install-dir (push) Failing after 31s
test / test-cache-dir-from-file (push) Failing after 38s
test / test-relative-path (push) Failing after 46s
test / test-python-install-dir (map[expected-python-dir:/home/runner/work/_temp/uv-python-dir os:ubuntu-latest]) (push) Failing after 26s
test / test-act (push) Failing after 26s
test / test-cache-python-installs (push) Failing after 34s
test / test-restore-python-installs (push) Has been skipped
test / validate-typings (push) Successful in 45s
test / lint (push) Failing after 7m29s
test / test-tool-install (windows-latest) (push) Has been cancelled
Release Drafter / ✏️ Draft release (push) Has been cancelled
test / test-default-version (macos-14) (push) Has been cancelled
test / test-default-version (macos-latest) (push) Has been cancelled
test / test-default-version (windows-latest) (push) Has been cancelled
test / test-checksum (map[checksum:a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218 os:macos-latest]) (push) Has been cancelled
test / test-tool-install (macos-14) (push) Has been cancelled
test / test-tool-install (macos-latest) (push) Has been cancelled
test / test-python-version (macos-latest) (push) Has been cancelled
test / test-python-version (windows-latest) (push) Has been cancelled
test / test-activate-environment (macos-latest) (push) Has been cancelled
test / test-activate-environment (windows-latest) (push) Has been cancelled
test / test-activate-environment-custom-path (macos-latest) (push) Has been cancelled
test / test-activate-environment-custom-path (windows-latest) (push) Has been cancelled
test / test-cache-key-os-version (macos-14, macos-14) (push) Has been cancelled
test / test-cache-key-os-version (macos-15, macos-15) (push) Has been cancelled
test / test-cache-key-os-version (ubuntu-24.04, ubuntu-24.04) (push) Has been cancelled
test / test-cache-key-os-version (windows-2022, windows-2022) (push) Has been cancelled
test / test-cache-key-os-version (windows-2025, windows-2025) (push) Has been cancelled
test / test-setup-cache (auto, windows-latest) (push) Has been cancelled
test / test-setup-cache (false, windows-latest) (push) Has been cancelled
test / test-setup-cache (true, windows-latest) (push) Has been cancelled
test / test-cache-local (map[expected-cache-dir:D:\a\_temp\setup-uv-cache os:windows-latest]) (push) Has been cancelled
test / test-python-install-dir (map[expected-python-dir:D:\a\_temp\uv-python-dir os:windows-latest]) (push) Has been cancelled
test / test-restore-cache (false, windows-latest) (push) Has been cancelled
test / test-restore-cache (auto, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (auto, windows-latest) (push) Has been cancelled
test / test-restore-cache (false, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (true, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (true, windows-latest) (push) Has been cancelled
test / all-tests-passed (push) Has been cancelled
chore: update known checksums for 0.11.18

Co-authored-by: eifinger <eifinger@users.noreply.github.com>
2026-06-02 08:33:00 +02:00
Kevin Stillhammer a92cb43098 Add quiet input to suppress info-level log output (#898)
test / test-latest-version (latest) (push) Failing after 35s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3.x]) (push) Failing after 36s
test / test-from-working-directory-version (map[expected-version:0.5.14 working-directory:__tests__/fixtures/pyproject-toml-project]) (push) Failing after 37s
test / test-specific-version (map[expected-version:0.3.2 version-input:0.3.2]) (push) Failing after 40s
test / test-specific-version (map[expected-version:0.4.30 version-input:>=0.4.25,<0.5]) (push) Failing after 44s
test / test-uv-no-modify-path (push) Failing after 50s
test / test-latest-version (>=0.8) (push) Failing after 49s
test / test-specific-version (map[expected-version:0.1.0 resolution-strategy:lowest version-input:>=0.1.0,<0.2]) (push) Failing after 51s
test / test-specific-version (map[expected-version:0.4.25 resolution-strategy:lowest version-input:>=0.4.25]) (push) Failing after 50s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3]) (push) Failing after 50s
test / test-default-version (ubuntu-latest) (push) Failing after 51s
test / test-specific-version (map[expected-version:0.1.45 resolution-strategy:highest version-input:>=0.1,<0.2]) (push) Failing after 52s
test / test-specific-version (map[expected-version:0.3.0 version-input:0.3.0]) (push) Failing after 53s
test / test-specific-version (map[expected-version:0.4.25 resolution-strategy:lowest version-input:>=0.4.25,<0.5]) (push) Failing after 53s
test / test-from-working-directory-version (map[expected-version:0.5.15 working-directory:__tests__/fixtures/uv-toml-project]) (push) Failing after 31s
test / test-version-file-version (map[expected-version:0.5.15 version-file:__tests__/fixtures/.tool-versions]) (push) Failing after 33s
test / test-version-file-version (map[expected-version:0.8.3 version-file:__tests__/fixtures/uv-in-requirements-hash-txt-project/requirements.txt]) (push) Failing after 46s
test / test-version-file-version (map[expected-version:0.6.17 version-file:__tests__/fixtures/uv-in-requirements-txt-project/requirements.txt]) (push) Failing after 49s
test / test-malformed-pyproject-file-fallback (push) Failing after 49s
test / test-uvx (push) Failing after 47s
test / test-python-version (ubuntu-latest) (push) Failing after 48s
test / test-checksum (map[checksum:4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd os:ubuntu-latest]) (push) Failing after 52s
test / test-with-explicit-token (push) Failing after 53s
test / test-activate-environment (ubuntu-latest) (push) Failing after 53s
test / test-tool-install (ubuntu-latest) (push) Failing after 54s
test / test-activate-environment-custom-path (ubuntu-latest) (push) Failing after 53s
test / test-debian-unstable (push) Failing after 55s
test / test-musl (push) Failing after 43s
test / test-activate-environment-no-project (push) Failing after 58s
test / test-cache-key-os-version (ubuntu-22.04, ubuntu-22.04) (push) Failing after 55s
test / test-setup-cache (auto, ubuntu-latest) (push) Failing after 39s
test / test-setup-cache (false, ubuntu-latest) (push) Failing after 40s
test / lint (push) Failing after 2m10s
test / test-setup-cache (true, ubuntu-latest) (push) Failing after 42s
test / test-setup-cache-requirements-txt (push) Failing after 50s
test / test-setup-cache-dependency-glob (push) Failing after 49s
test / test-restore-cache-requirements-txt (push) Has been skipped
test / test-restore-cache-dependency-glob (push) Has been skipped
test / test-setup-cache-save-cache-false (push) Failing after 51s
test / test-setup-cache-restore-cache-false (push) Failing after 51s
test / test-restore-cache-save-cache-false (push) Has been skipped
test / test-restore-cache-restore-cache-false (push) Has been skipped
test / test-cache-local-cache-disabled (push) Failing after 51s
test / test-cache-local (map[expected-cache-dir:/home/runner/work/_temp/setup-uv-cache os:ubuntu-latest]) (push) Failing after 53s
test / test-cache-local-cache-disabled-but-explicit-path (push) Failing after 52s
test / test-custom-manifest-file (push) Failing after 50s
test / test-download-from-astral-mirror-false (push) Failing after 49s
test / test-no-python-version (push) Failing after 53s
test / test-cache-prune-force (push) Failing after 38s
test / test-absolute-path (push) Failing after 43s
test / test-cache-python-missing-managed-install-dir (push) Failing after 32s
test / test-cache-dir-from-file (push) Failing after 40s
test / test-python-install-dir (map[expected-python-dir:/home/runner/work/_temp/uv-python-dir os:ubuntu-latest]) (push) Failing after 24s
test / test-relative-path (push) Failing after 47s
test / test-act (push) Failing after 21s
test / test-cache-python-installs (push) Failing after 26s
test / test-restore-python-installs (push) Has been skipped
test / validate-typings (push) Successful in 49s
CodeQL / Analyze (TypeScript) (push) Failing after 18m18s
test / test-tool-install (windows-latest) (push) Has been cancelled
Release Drafter / ✏️ Draft release (push) Has been cancelled
test / test-default-version (macos-14) (push) Has been cancelled
test / test-default-version (macos-latest) (push) Has been cancelled
test / test-default-version (windows-latest) (push) Has been cancelled
test / test-checksum (map[checksum:a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218 os:macos-latest]) (push) Has been cancelled
test / test-tool-install (macos-latest) (push) Has been cancelled
test / test-python-version (macos-latest) (push) Has been cancelled
test / test-python-version (windows-latest) (push) Has been cancelled
test / test-activate-environment (macos-latest) (push) Has been cancelled
test / test-activate-environment (windows-latest) (push) Has been cancelled
test / test-cache-key-os-version (macos-14, macos-14) (push) Has been cancelled
test / test-tool-install (macos-14) (push) Has been cancelled
test / test-activate-environment-custom-path (macos-latest) (push) Has been cancelled
test / test-activate-environment-custom-path (windows-latest) (push) Has been cancelled
test / test-cache-key-os-version (macos-15, macos-15) (push) Has been cancelled
test / test-cache-key-os-version (ubuntu-24.04, ubuntu-24.04) (push) Has been cancelled
test / test-cache-key-os-version (windows-2022, windows-2022) (push) Has been cancelled
test / test-cache-key-os-version (windows-2025, windows-2025) (push) Has been cancelled
test / test-setup-cache (auto, windows-latest) (push) Has been cancelled
test / test-setup-cache (false, windows-latest) (push) Has been cancelled
test / test-setup-cache (true, windows-latest) (push) Has been cancelled
test / test-cache-local (map[expected-cache-dir:D:\a\_temp\setup-uv-cache os:windows-latest]) (push) Has been cancelled
test / test-python-install-dir (map[expected-python-dir:D:\a\_temp\uv-python-dir os:windows-latest]) (push) Has been cancelled
test / test-restore-cache (false, windows-latest) (push) Has been cancelled
test / test-restore-cache (auto, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (auto, windows-latest) (push) Has been cancelled
test / test-restore-cache (false, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (true, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (true, windows-latest) (push) Has been cancelled
test / all-tests-passed (push) Has been cancelled
## Summary

Adds a new `quiet` input (default: `false`) that suppresses `info`-level
log output when set to `true`. Only warnings and errors are shown.

Contributes to: #868
2026-05-31 21:13:30 +02:00
dependabot[bot] e07f2ac4b7 chore(deps): bump eifinger/actionlint-action from 1.10.1 to 1.10.2 (#842)
Bumps
[eifinger/actionlint-action](https://github.com/eifinger/actionlint-action)
from 1.10.1 to 1.10.2.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/eifinger/actionlint-action/commit/1fc89649be682d16ec5cf65ea16e269eb88d3982"><code>1fc8964</code></a>
build(deps): bump actions/checkout from 6.0.1 to 6.0.2 (<a
href="https://redirect.github.com/eifinger/actionlint-action/issues/34">#34</a>)</li>
<li><a
href="https://github.com/eifinger/actionlint-action/commit/77c97feb783dfe1768d10f9dda219af0936f44a7"><code>77c97fe</code></a>
build(deps): bump release-drafter/release-drafter from 6.2.0 to 7.1.1
(<a
href="https://redirect.github.com/eifinger/actionlint-action/issues/40">#40</a>)</li>
<li><a
href="https://github.com/eifinger/actionlint-action/commit/bc5a34046e0b08d672f8a517047621ce16320c2b"><code>bc5a340</code></a>
chore: bump actionlint to 1.7.12 (<a
href="https://redirect.github.com/eifinger/actionlint-action/issues/41">#41</a>)</li>
<li>See full diff in <a
href="https://github.com/eifinger/actionlint-action/compare/7802e0cc3ab3f81cbffb36fb0bf1a3621d994b89...1fc89649be682d16ec5cf65ea16e269eb88d3982">compare
view</a></li>
</ul>
</details>
<br />


> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-31 21:09:12 +02:00
dependabot[bot] bc4034eedf chore(deps): bump github/codeql-action from 4.35.4 to 4.36.0 (#893)
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 4.35.4 to 4.36.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.36.0</h2>
<ul>
<li><em>Breaking change</em>: Bump the minimum required CodeQL bundle
version to 2.19.4. <a
href="https://redirect.github.com/github/codeql-action/pull/3894">#3894</a></li>
<li>Add support for SHA-256 Git object IDs. <a
href="https://redirect.github.com/github/codeql-action/pull/3893">#3893</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5">2.25.5</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3926">#3926</a></li>
</ul>
<h2>v4.35.5</h2>
<ul>
<li>We have improved how the JavaScript bundles for the CodeQL Action
are generated to avoid duplication across bundles and reduce the size of
the repository by around 70%. This should have no effect on the runtime
behaviour of the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3899">#3899</a></li>
<li>For performance and accuracy reasons, <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> will now only be enabled on a pull request when
diff-informed analysis is also enabled for that run. If diff-informed
analysis is unavailable (for example, because the PR diff ranges could
not be computed), the action will fall back to a full analysis. <a
href="https://redirect.github.com/github/codeql-action/pull/3791">#3791</a></li>
<li>If multiple inputs are provided for the GitHub-internal
<code>analysis-kinds</code> input, only <code>code-scanning</code> will
be enabled. The <code>analysis-kinds</code> input is experimental, for
GitHub-internal use only, and may change without notice at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/3892">#3892</a></li>
<li>Added an experimental change which, when running a Code Scanning
analysis for a PR with <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> enabled, prefers CodeQL CLI versions that have
a cached overlay-base database for the configured languages. This speeds
up analysis for a repository when there is not yet a cached overlay-base
database for the latest CLI version. We expect to roll this change out
to everyone in May. <a
href="https://redirect.github.com/github/codeql-action/pull/3880">#3880</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>4.36.0 - 22 May 2026</h2>
<ul>
<li><em>Breaking change</em>: Bump the minimum required CodeQL bundle
version to 2.19.4. <a
href="https://redirect.github.com/github/codeql-action/pull/3894">#3894</a></li>
<li>Add support for SHA-256 Git object IDs. <a
href="https://redirect.github.com/github/codeql-action/pull/3893">#3893</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5">2.25.5</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3926">#3926</a></li>
</ul>
<h2>4.35.5 - 15 May 2026</h2>
<ul>
<li>We have improved how the JavaScript bundles for the CodeQL Action
are generated to avoid duplication across bundles and reduce the size of
the repository by around 70%. This should have no effect on the runtime
behaviour of the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3899">#3899</a></li>
<li>For performance and accuracy reasons, <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> will now only be enabled on a pull request when
diff-informed analysis is also enabled for that run. If diff-informed
analysis is unavailable (for example, because the PR diff ranges could
not be computed), the action will fall back to a full analysis. <a
href="https://redirect.github.com/github/codeql-action/pull/3791">#3791</a></li>
<li>If multiple inputs are provided for the GitHub-internal
<code>analysis-kinds</code> input, only <code>code-scanning</code> will
be enabled. The <code>analysis-kinds</code> input is experimental, for
GitHub-internal use only, and may change without notice at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/3892">#3892</a></li>
<li>Added an experimental change which, when running a Code Scanning
analysis for a PR with <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> enabled, prefers CodeQL CLI versions that have
a cached overlay-base database for the configured languages. This speeds
up analysis for a repository when there is not yet a cached overlay-base
database for the latest CLI version. We expect to roll this change out
to everyone in May. <a
href="https://redirect.github.com/github/codeql-action/pull/3880">#3880</a></li>
</ul>
<h2>4.35.4 - 07 May 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.4">2.25.4</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3881">#3881</a></li>
</ul>
<h2>4.35.3 - 01 May 2026</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.19.3 and earlier. These versions of
CodeQL were discontinued on 9 April 2026 alongside GitHub Enterprise
Server 3.15, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3837">#3837</a></li>
<li>Configurations for private registries that use Cloudsmith or GCP
OIDC are now accepted. <a
href="https://redirect.github.com/github/codeql-action/pull/3850">#3850</a></li>
<li>Best-effort connection tests for private registries now use
<code>GET</code> requests instead of <code>HEAD</code> for better
compatibility with various registry implementations. For NuGet feeds,
the test is now always performed against the service index. <a
href="https://redirect.github.com/github/codeql-action/pull/3853">#3853</a></li>
<li>Fixed a bug where two diagnostics produced within the same
millisecond could overwrite each other on disk, causing one of them to
be lost. <a
href="https://redirect.github.com/github/codeql-action/pull/3852">#3852</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.3">2.25.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3865">#3865</a></li>
</ul>
<h2>4.35.2 - 15 Apr 2026</h2>
<ul>
<li>The undocumented TRAP cache cleanup feature that could be enabled
using the <code>CODEQL_ACTION_CLEANUP_TRAP_CACHES</code> environment
variable is deprecated and will be removed in May 2026. If you are
affected by this, we recommend disabling TRAP caching by passing the
<code>trap-caching: false</code> input to the <code>init</code> Action.
<a
href="https://redirect.github.com/github/codeql-action/pull/3795">#3795</a></li>
<li>The Git version 2.36.0 requirement for improved incremental analysis
now only applies to repositories that contain submodules. <a
href="https://redirect.github.com/github/codeql-action/pull/3789">#3789</a></li>
<li>Python analysis on GHES no longer extracts the standard library,
relying instead on models of the standard library. This should result in
significantly faster extraction and analysis times, while the effect on
alerts should be minimal. <a
href="https://redirect.github.com/github/codeql-action/pull/3794">#3794</a></li>
<li>Fixed a bug in the validation of OIDC configurations for private
registries that was added in CodeQL Action 4.33.0 / 3.33.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3807">#3807</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.2">2.25.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3823">#3823</a></li>
</ul>
<h2>4.35.1 - 27 Mar 2026</h2>
<ul>
<li>Fix incorrect minimum required Git version for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a>: it should have been 2.36.0, not 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3781">#3781</a></li>
</ul>
<h2>4.35.0 - 27 Mar 2026</h2>
<ul>
<li>Reduced the minimum Git version required for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> from 2.38.0 to 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3767">#3767</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.1">2.25.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3773">#3773</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/7211b7c8077ea37d8641b6271f6a365a22a5fbfa"><code>7211b7c</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3927">#3927</a>
from github/update-v4.36.0-ebc2d9e2b</li>
<li><a
href="https://github.com/github/codeql-action/commit/7740f2fb21add1d46278215acea47540db22f022"><code>7740f2f</code></a>
Update changelog for v4.36.0</li>
<li><a
href="https://github.com/github/codeql-action/commit/ebc2d9e2bc247eec51bee8d4df806c4030eb0761"><code>ebc2d9e</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3926">#3926</a>
from github/update-bundle/codeql-bundle-v2.25.5</li>
<li><a
href="https://github.com/github/codeql-action/commit/d1f74b777c95c777bf4f42ce4b250bc916e745c7"><code>d1f74b7</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/2dc40cec39bdc63d3561d74fa6100cebb0418ff4"><code>2dc40ce</code></a>
Update default bundle to codeql-bundle-v2.25.5</li>
<li><a
href="https://github.com/github/codeql-action/commit/84498526a009a99c875e83ef4821a8ba52de7c22"><code>8449852</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3910">#3910</a>
from github/henrymercer/repo-size-diff-check</li>
<li><a
href="https://github.com/github/codeql-action/commit/72ac23c6d16b29fbe801e87e3439941558c53094"><code>72ac23c</code></a>
Update excluded required check list</li>
<li><a
href="https://github.com/github/codeql-action/commit/c5297a28a2c3e6a8062041b58858bd7117cebe37"><code>c5297a2</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3919">#3919</a>
from github/henrymercer/workflow-concurrency</li>
<li><a
href="https://github.com/github/codeql-action/commit/8ffeae7d05bc1b914a009d197e64e4f5c9e14503"><code>8ffeae7</code></a>
CI: Automatically cancel non-generated workflows</li>
<li><a
href="https://github.com/github/codeql-action/commit/f3f52bf568dc44a1069faafa538caa6b1fec40c9"><code>f3f52bf</code></a>
Revert <code>getErrorMessage</code> import</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/68bde559dea0fdcac2102bfdf6230c5f70eb485e...7211b7c8077ea37d8641b6271f6a365a22a5fbfa">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=4.35.4&new-version=4.36.0)](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 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>
2026-05-31 21:08:54 +02:00
dependabot[bot] df42d4f6ba chore(deps): bump zizmorcore/zizmor-action from 0.5.5 to 0.5.6 (#891)
test / test-specific-version (map[expected-version:0.3.0 version-input:0.3.0]) (push) Failing after 35s
test / test-specific-version (map[expected-version:0.1.45 resolution-strategy:highest version-input:>=0.1,<0.2]) (push) Failing after 38s
test / test-default-version (ubuntu-latest) (push) Failing after 39s
test / test-specific-version (map[expected-version:0.1.0 resolution-strategy:lowest version-input:>=0.1.0,<0.2]) (push) Failing after 42s
test / test-uv-no-modify-path (push) Failing after 47s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3.x]) (push) Failing after 47s
test / test-specific-version (map[expected-version:0.3.2 version-input:0.3.2]) (push) Failing after 47s
test / test-latest-version (>=0.8) (push) Failing after 47s
test / test-specific-version (map[expected-version:0.4.25 resolution-strategy:lowest version-input:>=0.4.25]) (push) Failing after 48s
test / test-from-working-directory-version (map[expected-version:0.5.14 working-directory:__tests__/fixtures/pyproject-toml-project]) (push) Failing after 49s
test / test-specific-version (map[expected-version:0.4.25 resolution-strategy:lowest version-input:>=0.4.25,<0.5]) (push) Failing after 50s
test / test-specific-version (map[expected-version:0.4.30 version-input:>=0.4.25,<0.5]) (push) Failing after 50s
test / test-latest-version (latest) (push) Failing after 51s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3]) (push) Failing after 53s
test / test-from-working-directory-version (map[expected-version:0.5.15 working-directory:__tests__/fixtures/uv-toml-project]) (push) Failing after 22s
test / test-version-file-version (map[expected-version:0.5.15 version-file:__tests__/fixtures/.tool-versions]) (push) Failing after 22s
test / test-version-file-version (map[expected-version:0.6.17 version-file:__tests__/fixtures/uv-in-requirements-txt-project/requirements.txt]) (push) Failing after 22s
test / test-version-file-version (map[expected-version:0.8.3 version-file:__tests__/fixtures/uv-in-requirements-hash-txt-project/requirements.txt]) (push) Failing after 20s
test / test-malformed-pyproject-file-fallback (push) Failing after 27s
test / test-checksum (map[checksum:4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd os:ubuntu-latest]) (push) Failing after 36s
test / test-with-explicit-token (push) Failing after 42s
test / test-uvx (push) Failing after 43s
test / test-python-version (ubuntu-latest) (push) Failing after 42s
test / test-tool-install (ubuntu-latest) (push) Failing after 44s
test / test-activate-environment (ubuntu-latest) (push) Failing after 43s
test / test-debian-unstable (push) Failing after 40s
test / test-activate-environment-custom-path (ubuntu-latest) (push) Failing after 42s
test / test-musl (push) Failing after 37s
test / test-cache-key-os-version (ubuntu-22.04, ubuntu-22.04) (push) Failing after 39s
test / test-activate-environment-no-project (push) Failing after 49s
test / test-setup-cache (false, ubuntu-latest) (push) Failing after 39s
test / test-setup-cache (auto, ubuntu-latest) (push) Failing after 41s
CodeQL / Analyze (TypeScript) (push) Failing after 1m46s
test / test-setup-cache (true, ubuntu-latest) (push) Failing after 33s
test / test-restore-cache-requirements-txt (push) Has been skipped
test / test-setup-cache-requirements-txt (push) Failing after 24s
test / test-setup-cache-dependency-glob (push) Failing after 23s
test / test-restore-cache-dependency-glob (push) Has been skipped
test / test-setup-cache-save-cache-false (push) Failing after 30s
test / test-restore-cache-save-cache-false (push) Has been skipped
test / test-setup-cache-restore-cache-false (push) Failing after 40s
test / test-cache-local (map[expected-cache-dir:/home/runner/work/_temp/setup-uv-cache os:ubuntu-latest]) (push) Failing after 40s
test / test-restore-cache-restore-cache-false (push) Has been skipped
test / test-cache-local-cache-disabled (push) Failing after 40s
test / test-cache-local-cache-disabled-but-explicit-path (push) Failing after 42s
test / test-custom-manifest-file (push) Failing after 46s
test / test-download-from-astral-mirror-false (push) Failing after 42s
test / test-no-python-version (push) Failing after 49s
test / test-cache-prune-force (push) Failing after 42s
test / test-cache-python-missing-managed-install-dir (push) Failing after 41s
test / test-python-install-dir (map[expected-python-dir:/home/runner/work/_temp/uv-python-dir os:ubuntu-latest]) (push) Failing after 35s
test / test-absolute-path (push) Failing after 48s
test / test-cache-dir-from-file (push) Failing after 47s
test / test-act (push) Failing after 32s
test / test-relative-path (push) Failing after 53s
test / test-restore-python-installs (push) Has been skipped
test / test-cache-python-installs (push) Failing after 47s
test / validate-typings (push) Successful in 26s
test / lint (push) Failing after 2m49s
test / test-tool-install (macos-latest) (push) Has been cancelled
test / test-tool-install (windows-latest) (push) Has been cancelled
test / test-default-version (macos-14) (push) Has been cancelled
test / test-default-version (macos-latest) (push) Has been cancelled
test / test-default-version (windows-latest) (push) Has been cancelled
test / test-tool-install (macos-14) (push) Has been cancelled
test / test-checksum (map[checksum:a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218 os:macos-latest]) (push) Has been cancelled
test / test-python-version (macos-latest) (push) Has been cancelled
test / test-python-version (windows-latest) (push) Has been cancelled
test / test-activate-environment (macos-latest) (push) Has been cancelled
test / test-activate-environment (windows-latest) (push) Has been cancelled
test / test-activate-environment-custom-path (macos-latest) (push) Has been cancelled
test / test-activate-environment-custom-path (windows-latest) (push) Has been cancelled
test / test-cache-key-os-version (macos-14, macos-14) (push) Has been cancelled
test / test-cache-key-os-version (macos-15, macos-15) (push) Has been cancelled
test / test-cache-key-os-version (ubuntu-24.04, ubuntu-24.04) (push) Has been cancelled
test / test-cache-key-os-version (windows-2022, windows-2022) (push) Has been cancelled
test / test-cache-key-os-version (windows-2025, windows-2025) (push) Has been cancelled
test / test-setup-cache (auto, windows-latest) (push) Has been cancelled
test / test-setup-cache (false, windows-latest) (push) Has been cancelled
test / test-setup-cache (true, windows-latest) (push) Has been cancelled
test / test-restore-cache (auto, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (auto, windows-latest) (push) Has been cancelled
test / test-restore-cache (false, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (false, windows-latest) (push) Has been cancelled
test / test-restore-cache (true, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (true, windows-latest) (push) Has been cancelled
test / test-cache-local (map[expected-cache-dir:D:\a\_temp\setup-uv-cache os:windows-latest]) (push) Has been cancelled
test / test-python-install-dir (map[expected-python-dir:D:\a\_temp\uv-python-dir os:windows-latest]) (push) Has been cancelled
test / all-tests-passed (push) Has been cancelled
Release Drafter / ✏️ Draft release (push) Has been cancelled
Bumps
[zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action)
from 0.5.5 to 0.5.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/zizmorcore/zizmor-action/releases">zizmorcore/zizmor-action's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.6</h2>
<ul>
<li>1.25.2 is now available via the action</li>
<li>1.25.2 is now the default version of zizmor used by the action</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/5f14fd08f7cf1cb1609c1e344975f152c7ee938d"><code>5f14fd0</code></a>
Sync zizmor versions (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/114">#114</a>)</li>
<li>See full diff in <a
href="https://github.com/zizmorcore/zizmor-action/compare/a16621b09c6db4281f81a93cb393b05dcd7b7165...5f14fd08f7cf1cb1609c1e344975f152c7ee938d">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zizmorcore/zizmor-action&package-manager=github_actions&previous-version=0.5.5&new-version=0.5.6)](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 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>
2026-05-31 12:17:39 +02:00
Kevin Stillhammer b9c8c4c7ba feat: add download-from-astral-mirror input (#897)
## Summary

Add a new boolean input `download-from-astral-mirror` (default: `true`)
that controls whether uv is downloaded from the Astral mirror or
directly from GitHub Releases.

When set to `false`, the mirror rewrite is skipped entirely and the
download goes straight to GitHub Releases.

Closes: #870
2026-05-31 11:47:01 +02:00
dependabot[bot] 80cc27528e chore(deps): bump release-drafter/release-drafter from 7.2.0 to 7.3.0 (#884)
Bumps
[release-drafter/release-drafter](https://github.com/release-drafter/release-drafter)
from 7.2.0 to 7.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/release-drafter/release-drafter/releases">release-drafter/release-drafter's
releases</a>.</em></p>
<blockquote>
<h2>v7.3.0</h2>
<h1>What's Changed</h1>
<h2>New</h2>
<ul>
<li>feat: recover recently merged PRs missed by associated PRs lag (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1604">#1604</a>)
<a href="https://github.com/jetersen"><code>@​jetersen</code></a></li>
<li>feat: switch release discovery to ref comparison and explicit
missing-baseline warnings (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1570">#1570</a>)
<a href="https://github.com/jetersen"><code>@​jetersen</code></a></li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li>fix: restore prerelease-identifier on first run when no prior
releases exist (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1602">#1602</a>)
<a href="https://github.com/jrbeilke"><code>@​jrbeilke</code></a></li>
<li>fix: prevent using commitish like refs/pull (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1598">#1598</a>)
<a href="https://github.com/cchanche"><code>@​cchanche</code></a></li>
</ul>
<h2>Maintenance</h2>
<ul>
<li>ci: rebuild dist after codegen so generated PRs include bundle
updates (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1605">#1605</a>)
<a href="https://github.com/jetersen"><code>@​jetersen</code></a></li>
<li>chore: update generated GraphQL types (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1600">#1600</a>)
@<a
href="https://github.com/apps/github-actions">github-actions[bot]</a></li>
<li>chore: clarify base repository pr filtering (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1599">#1599</a>)
<a href="https://github.com/cchanche"><code>@​cchanche</code></a></li>
</ul>
<h2>Dependency Updates</h2>
<ul>
<li>build(deps-dev): bump postcss from 8.5.8 to 8.5.12 (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1597">#1597</a>)
@<a href="https://github.com/apps/dependabot">dependabot[bot]</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-drafter/release-drafter/compare/v7.2.1...v7.3.0">https://github.com/release-drafter/release-drafter/compare/v7.2.1...v7.3.0</a></p>
<h2>v7.2.1</h2>
<h1>What's Changed</h1>
<h2>Bug Fixes</h2>
<ul>
<li>fix: initial-commits-since in config not overwritten by input (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1593">#1593</a>)
<a href="https://github.com/sroebert"><code>@​sroebert</code></a></li>
<li>fix: clarify prerelease-identifier behavior and precedence in
configuration (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1594">#1594</a>)
<a href="https://github.com/neilime"><code>@​neilime</code></a></li>
</ul>
<h2>Maintenance</h2>
<ul>
<li>chore: disable &quot;No version input...&quot; warning (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1595">#1595</a>)
<a href="https://github.com/cchanche"><code>@​cchanche</code></a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/release-drafter/release-drafter/compare/v7.2.0...v7.2.1">https://github.com/release-drafter/release-drafter/compare/v7.2.0...v7.2.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/c2e2804cc59f45f57076a99af580d0fedb697927"><code>c2e2804</code></a>
chore: release v7.3.0</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/0c28acd0bcb335f1f86b350a4283045eb03025b9"><code>0c28acd</code></a>
feat: recover recently merged PRs missed by associated PRs lag (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1604">#1604</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/3052ee00309feb828889940f8ea4fb642ff57f4e"><code>3052ee0</code></a>
fix: restore prerelease-identifier on first run when no prior releases
exist ...</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/0503d11169c6098c4ff53bb412ae8887b6fbb79c"><code>0503d11</code></a>
ci: rebuild dist after codegen so generated PRs include bundle updates
(<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1605">#1605</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/a553731db26761b6a6446a23e3a978949cba6e2b"><code>a553731</code></a>
chore: update generated GraphQL types (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1600">#1600</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/c5dd36151c0584427a1f10cb41d5ba73cebcdad4"><code>c5dd361</code></a>
ci: add warning on automatic codegen PRs</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/705c5afff81196e065284562dd78729d4bbdab7a"><code>705c5af</code></a>
ci: add maintenance label to automated codegen updates</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/acfaf4fa10f83604f93febbc544d5be415f0458e"><code>acfaf4f</code></a>
chore: clarify base repository pr filtering (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1599">#1599</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/d181a5a9df5268ebc5c1cdebeaef584ddbe14412"><code>d181a5a</code></a>
fix: prevent using commitish like refs/pull (<a
href="https://redirect.github.com/release-drafter/release-drafter/issues/1598">#1598</a>)</li>
<li><a
href="https://github.com/release-drafter/release-drafter/commit/f188d08e9e71d8903f02ca1c5e7aea645a815537"><code>f188d08</code></a>
feat: switch release discovery to ref comparison and explicit
missing-baselin...</li>
<li>Additional commits viewable in <a
href="https://github.com/release-drafter/release-drafter/compare/5de93583980a40bd78603b6dfdcda5b4df377b32...c2e2804cc59f45f57076a99af580d0fedb697927">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=release-drafter/release-drafter&package-manager=github_actions&previous-version=7.2.0&new-version=7.3.0)](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 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>
2026-05-31 11:26:42 +02:00
Kevin Stillhammer 818affc359 fix: report unexpected cache save failures (#896)
## Summary
- add top-level uncaughtException and unhandledRejection handlers for
the save-cache entrypoint
- report unexpected post-action failures through core.setFailed with
stack/context
- regenerate the committed save-cache bundle
2026-05-31 11:25:35 +02:00
Kevin Stillhammer feda7fc6a9 fix: report unexpected setup failures (#895)
## Summary
- add top-level uncaughtException and unhandledRejection handlers for
the setup entrypoint
- report unexpected failures through core.setFailed with stack/context
- regenerate the committed setup bundle
2026-05-31 11:17:46 +02:00
eifinger-bot 8dc20b2aca fix: add timeout to fetch to prevent silent hangs (#883)
test / test-musl (push) Failing after 40s
test / test-uv-no-modify-path (push) Failing after 22s
test / test-latest-version (latest) (push) Failing after 21s
test / test-specific-version (map[expected-version:0.1.45 resolution-strategy:highest version-input:>=0.1,<0.2]) (push) Failing after 24s
test / test-specific-version (map[expected-version:0.4.25 resolution-strategy:lowest version-input:>=0.4.25,<0.5]) (push) Failing after 27s
test / test-specific-version (map[expected-version:0.4.30 version-input:>=0.4.25,<0.5]) (push) Failing after 31s
test / test-default-version (ubuntu-latest) (push) Failing after 36s
test / test-latest-version (>=0.8) (push) Failing after 35s
test / test-specific-version (map[expected-version:0.4.25 resolution-strategy:lowest version-input:>=0.4.25]) (push) Failing after 36s
test / test-specific-version (map[expected-version:0.3.0 version-input:0.3.0]) (push) Failing after 37s
test / test-specific-version (map[expected-version:0.3.2 version-input:0.3.2]) (push) Failing after 37s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3]) (push) Failing after 39s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3.x]) (push) Failing after 40s
test / test-from-working-directory-version (map[expected-version:0.5.14 working-directory:__tests__/fixtures/pyproject-toml-project]) (push) Failing after 39s
test / test-specific-version (map[expected-version:0.1.0 resolution-strategy:lowest version-input:>=0.1.0,<0.2]) (push) Failing after 42s
test / test-from-working-directory-version (map[expected-version:0.5.15 working-directory:__tests__/fixtures/uv-toml-project]) (push) Failing after 32s
test / test-version-file-version (map[expected-version:0.5.15 version-file:__tests__/fixtures/.tool-versions]) (push) Failing after 46s
test / test-version-file-version (map[expected-version:0.6.17 version-file:__tests__/fixtures/uv-in-requirements-txt-project/requirements.txt]) (push) Failing after 54s
test / test-version-file-version (map[expected-version:0.8.3 version-file:__tests__/fixtures/uv-in-requirements-hash-txt-project/requirements.txt]) (push) Failing after 55s
test / test-malformed-pyproject-file-fallback (push) Failing after 54s
test / test-checksum (map[checksum:4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd os:ubuntu-latest]) (push) Failing after 50s
test / test-with-explicit-token (push) Failing after 51s
test / test-tool-install (ubuntu-latest) (push) Failing after 51s
test / test-uvx (push) Failing after 53s
test / test-debian-unstable (push) Failing after 49s
test / test-python-version (ubuntu-latest) (push) Failing after 55s
test / test-activate-environment (ubuntu-latest) (push) Failing after 55s
test / test-activate-environment-custom-path (ubuntu-latest) (push) Failing after 56s
test / test-activate-environment-no-project (push) Failing after 57s
test / test-setup-cache (auto, ubuntu-latest) (push) Failing after 23s
test / test-setup-cache (false, ubuntu-latest) (push) Failing after 21s
test / test-setup-cache (true, ubuntu-latest) (push) Failing after 31s
test / test-setup-cache-requirements-txt (push) Failing after 55s
test / test-setup-cache-save-cache-false (push) Failing after 53s
test / test-restore-cache-requirements-txt (push) Has been skipped
test / test-restore-cache-save-cache-false (push) Has been skipped
test / test-restore-cache-dependency-glob (push) Has been skipped
test / test-setup-cache-dependency-glob (push) Failing after 54s
test / test-setup-cache-restore-cache-false (push) Failing after 58s
test / test-cache-local (map[expected-cache-dir:/home/runner/work/_temp/setup-uv-cache os:ubuntu-latest]) (push) Failing after 56s
test / test-restore-cache-restore-cache-false (push) Has been skipped
test / test-cache-local-cache-disabled (push) Failing after 55s
test / test-cache-local-cache-disabled-but-explicit-path (push) Failing after 55s
test / test-custom-manifest-file (push) Failing after 56s
test / test-cache-prune-force (push) Failing after 50s
test / test-no-python-version (push) Failing after 1m1s
test / test-absolute-path (push) Failing after 58s
test / test-cache-dir-from-file (push) Failing after 44s
test / test-relative-path (push) Failing after 1m3s
test / test-cache-python-missing-managed-install-dir (push) Failing after 24s
test / test-python-install-dir (map[expected-python-dir:/home/runner/work/_temp/uv-python-dir os:ubuntu-latest]) (push) Failing after 26s
test / test-act (push) Failing after 24s
test / test-cache-python-installs (push) Failing after 32s
test / test-restore-python-installs (push) Has been skipped
test / test-cache-key-os-version (ubuntu-22.04, ubuntu-22.04) (push) Failing after 1m46s
test / validate-typings (push) Successful in 42s
CodeQL / Analyze (TypeScript) (push) Failing after 7m14s
test / lint (push) Failing after 11m14s
test / test-tool-install (windows-latest) (push) Has been cancelled
test / test-python-version (macos-latest) (push) Has been cancelled
test / test-default-version (macos-14) (push) Has been cancelled
test / test-default-version (macos-latest) (push) Has been cancelled
test / test-default-version (windows-latest) (push) Has been cancelled
test / test-checksum (map[checksum:a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218 os:macos-latest]) (push) Has been cancelled
test / test-tool-install (macos-14) (push) Has been cancelled
test / test-tool-install (macos-latest) (push) Has been cancelled
test / test-python-version (windows-latest) (push) Has been cancelled
test / test-activate-environment (macos-latest) (push) Has been cancelled
test / test-activate-environment (windows-latest) (push) Has been cancelled
test / test-activate-environment-custom-path (macos-latest) (push) Has been cancelled
test / test-activate-environment-custom-path (windows-latest) (push) Has been cancelled
test / test-cache-key-os-version (macos-14, macos-14) (push) Has been cancelled
test / test-cache-key-os-version (macos-15, macos-15) (push) Has been cancelled
test / test-cache-key-os-version (ubuntu-24.04, ubuntu-24.04) (push) Has been cancelled
test / test-cache-key-os-version (windows-2022, windows-2022) (push) Has been cancelled
test / test-cache-key-os-version (windows-2025, windows-2025) (push) Has been cancelled
test / test-setup-cache (auto, windows-latest) (push) Has been cancelled
test / test-setup-cache (false, windows-latest) (push) Has been cancelled
test / test-restore-cache (true, windows-latest) (push) Has been cancelled
test / test-setup-cache (true, windows-latest) (push) Has been cancelled
test / test-restore-cache (auto, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (auto, windows-latest) (push) Has been cancelled
test / test-restore-cache (false, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (false, windows-latest) (push) Has been cancelled
test / test-restore-cache (true, ubuntu-latest) (push) Has been cancelled
test / test-cache-local (map[expected-cache-dir:D:\a\_temp\setup-uv-cache os:windows-latest]) (push) Has been cancelled
test / test-python-install-dir (map[expected-python-dir:D:\a\_temp\uv-python-dir os:windows-latest]) (push) Has been cancelled
test / all-tests-passed (push) Has been cancelled
Release Drafter / ✏️ Draft release (push) Has been cancelled
Add `AbortSignal.timeout(5s)` to fetch requests to ensure they fail fast
instead of hanging indefinitely when network issues occur.
2026-05-31 09:37:59 +02:00
28 changed files with 5697 additions and 3882 deletions
@@ -26,6 +26,7 @@ Use this skill when the user wants to:
- Inspect `package.json` before editing.
- Run `npm ci --ignore-scripts` before applying updates.
- Use `npm install ... --ignore-scripts` for direct dependency changes so `package-lock.json` stays in sync.
- When updating `@biomejs/biome`, also update the Biome schema URL version in `biome.json` to match the installed Biome version.
7. Run `npm run all`.
8. If requested, commit the changed source, lockfile, and generated artifacts, then push and open a PR.
+3 -3
View File
@@ -47,7 +47,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4
uses: github/codeql-action/init@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4.36.0
with:
languages: ${{ matrix.language }}
source-root: src
@@ -59,7 +59,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4
uses: github/codeql-action/autobuild@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4.36.0
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -73,4 +73,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v4.35.4
uses: github/codeql-action/analyze@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4.36.0
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
pull-requests: read
steps:
- name: 🚀 Run Release Drafter
uses: release-drafter/release-drafter@5de93583980a40bd78603b6dfdcda5b4df377b32 # v7.2.0
uses: release-drafter/release-drafter@693d20e7c1ce1a81d3a41962f85914253b518449 # v7.3.1
with:
commitish: ${{ github.sha }}
env:
+17 -2
View File
@@ -25,9 +25,9 @@ jobs:
with:
persist-credentials: false
- name: Actionlint
uses: eifinger/actionlint-action@7802e0cc3ab3f81cbffb36fb0bf1a3621d994b89 # v1.10.1
uses: eifinger/actionlint-action@1fc89649be682d16ec5cf65ea16e269eb88d3982 # v1.10.2
- name: Run zizmor
uses: zizmorcore/zizmor-action@a16621b09c6db4281f81a93cb393b05dcd7b7165 # v0.5.5
uses: zizmorcore/zizmor-action@5f14fd08f7cf1cb1609c1e344975f152c7ee938d # v0.5.6
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version-file: .nvmrc
@@ -861,6 +861,20 @@ jobs:
exit 1
fi
test-download-from-astral-mirror-false:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install with download-from-astral-mirror disabled
id: setup-uv
uses: ./
with:
download-from-astral-mirror: false
- name: Verify uv is installed
run: uv --version
test-absolute-path:
runs-on: ubuntu-latest
steps:
@@ -1119,6 +1133,7 @@ jobs:
- test-restore-cache-restore-cache-false
- test-no-python-version
- test-custom-manifest-file
- test-download-from-astral-mirror-false
- test-absolute-path
- test-relative-path
- test-cache-prune-force
+6
View File
@@ -120,8 +120,14 @@ Have a look under [Advanced Configuration](#advanced-configuration) for detailed
# URL to a custom manifest file in the astral-sh/versions format
manifest-file: ""
# Download uv from the Astral mirror instead of directly from GitHub Releases
download-from-astral-mirror: "true"
# Add problem matchers
add-problem-matchers: "true"
# Suppress info-level log output. Only warnings and errors are shown
quiet: "false"
```
### Outputs
@@ -376,6 +376,32 @@ describe("download-version", () => {
"0.9.26",
);
});
it("skips the Astral mirror when downloadFromAstralMirror is false", async () => {
mockGetArtifact.mockResolvedValue({
archiveFormat: "tar.gz",
checksum: "abc123",
downloadUrl:
"https://github.com/astral-sh/uv/releases/download/0.9.26/uv-x86_64-unknown-linux-gnu.tar.gz",
});
await downloadVersion(
"unknown-linux-gnu",
"x86_64",
"0.9.26",
undefined,
"token",
undefined,
false,
);
expect(mockDownloadTool).toHaveBeenCalledWith(
"https://github.com/astral-sh/uv/releases/download/0.9.26/uv-x86_64-unknown-linux-gnu.tar.gz",
undefined,
"token",
);
expect(mockDownloadTool).toHaveBeenCalledTimes(1);
});
});
describe("rewriteToMirror", () => {
+4
View File
@@ -52,8 +52,12 @@ inputs:
type: string
manifest-file:
type: string
download-from-astral-mirror:
type: boolean
add-problem-matchers:
type: boolean
quiet:
type: boolean
resolution-strategy:
type: enum
allowed-values:
+6
View File
@@ -80,9 +80,15 @@ inputs:
manifest-file:
description: "URL to a custom manifest file in the astral-sh/versions format."
required: false
download-from-astral-mirror:
description: "Download uv from the Astral mirror instead of directly from GitHub Releases."
default: "true"
add-problem-matchers:
description: "Add problem matchers."
default: "true"
quiet:
description: "Suppress info-level log output. Only warnings and errors are shown."
default: "false"
resolution-strategy:
description: "Resolution strategy to use when resolving version ranges. 'highest' uses the latest compatible version, 'lowest' uses the oldest compatible version."
default: "highest"
+1 -1
View File
@@ -1,5 +1,5 @@
{
"$schema": "https://biomejs.dev/schemas/2.4.7/schema.json",
"$schema": "https://biomejs.dev/schemas/2.4.15/schema.json",
"assist": {
"actions": {
"source": {
Generated Vendored
+187 -149
View File
@@ -133,7 +133,7 @@ var require_tunnel = __commonJS({
connectOptions.headers = connectOptions.headers || {};
connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64");
}
debug2("making CONNECT request");
debug3("making CONNECT request");
var connectReq = self2.request(connectOptions);
connectReq.useChunkedEncodingByDefault = false;
connectReq.once("response", onResponse);
@@ -153,7 +153,7 @@ var require_tunnel = __commonJS({
connectReq.removeAllListeners();
socket.removeAllListeners();
if (res.statusCode !== 200) {
debug2(
debug3(
"tunneling socket could not be established, statusCode=%d",
res.statusCode
);
@@ -165,7 +165,7 @@ var require_tunnel = __commonJS({
return;
}
if (head.length > 0) {
debug2("got illegal response body from proxy");
debug3("got illegal response body from proxy");
socket.destroy();
var error2 = new Error("got illegal response body from proxy");
error2.code = "ECONNRESET";
@@ -173,13 +173,13 @@ var require_tunnel = __commonJS({
self2.removeSocket(placeholder);
return;
}
debug2("tunneling connection has established");
debug3("tunneling connection has established");
self2.sockets[self2.sockets.indexOf(placeholder)] = socket;
return cb(socket);
}
function onError(cause) {
connectReq.removeAllListeners();
debug2(
debug3(
"tunneling socket could not be established, cause=%s\n",
cause.message,
cause.stack
@@ -241,9 +241,9 @@ var require_tunnel = __commonJS({
}
return target;
}
var debug2;
var debug3;
if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
debug2 = function() {
debug3 = function() {
var args = Array.prototype.slice.call(arguments);
if (typeof args[0] === "string") {
args[0] = "TUNNEL: " + args[0];
@@ -253,10 +253,10 @@ var require_tunnel = __commonJS({
console.error.apply(console, args);
};
} else {
debug2 = function() {
debug3 = function() {
};
}
exports2.debug = debug2;
exports2.debug = debug3;
}
});
@@ -18936,7 +18936,7 @@ var require_minimatch = __commonJS({
}
this.parseNegate();
var set = this.globSet = this.braceExpand();
if (options.debug) this.debug = function debug2() {
if (options.debug) this.debug = function debug3() {
console.error.apply(console, arguments);
};
this.debug(this.pattern, set);
@@ -19414,9 +19414,9 @@ var require_constants6 = __commonJS({
var require_debug = __commonJS({
"node_modules/@actions/cache/node_modules/semver/internal/debug.js"(exports2, module2) {
"use strict";
var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
var debug3 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
};
module2.exports = debug2;
module2.exports = debug3;
}
});
@@ -19429,7 +19429,7 @@ var require_re = __commonJS({
MAX_SAFE_BUILD_LENGTH,
MAX_LENGTH
} = require_constants6();
var debug2 = require_debug();
var debug3 = require_debug();
exports2 = module2.exports = {};
var re = exports2.re = [];
var safeRe = exports2.safeRe = [];
@@ -19452,7 +19452,7 @@ var require_re = __commonJS({
var createToken = (name, value, isGlobal) => {
const safe = makeSafeRegex(value);
const index = R++;
debug2(name, index, value);
debug3(name, index, value);
t[name] = index;
src[index] = value;
safeSrc[index] = safe;
@@ -19556,7 +19556,7 @@ var require_identifiers = __commonJS({
var require_semver = __commonJS({
"node_modules/@actions/cache/node_modules/semver/classes/semver.js"(exports2, module2) {
"use strict";
var debug2 = require_debug();
var debug3 = require_debug();
var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants6();
var { safeRe: re, t } = require_re();
var parseOptions = require_parse_options();
@@ -19578,7 +19578,7 @@ var require_semver = __commonJS({
`version is longer than ${MAX_LENGTH} characters`
);
}
debug2("SemVer", version3, options);
debug3("SemVer", version3, options);
this.options = options;
this.loose = !!options.loose;
this.includePrerelease = !!options.includePrerelease;
@@ -19626,7 +19626,7 @@ var require_semver = __commonJS({
return this.version;
}
compare(other) {
debug2("SemVer.compare", this.version, this.options, other);
debug3("SemVer.compare", this.version, this.options, other);
if (!(other instanceof _SemVer)) {
if (typeof other === "string" && other === this.version) {
return 0;
@@ -19677,7 +19677,7 @@ var require_semver = __commonJS({
do {
const a = this.prerelease[i];
const b = other.prerelease[i];
debug2("prerelease compare", i, a, b);
debug3("prerelease compare", i, a, b);
if (a === void 0 && b === void 0) {
return 0;
} else if (b === void 0) {
@@ -19699,7 +19699,7 @@ var require_semver = __commonJS({
do {
const a = this.build[i];
const b = other.build[i];
debug2("build compare", i, a, b);
debug3("build compare", i, a, b);
if (a === void 0 && b === void 0) {
return 0;
} else if (b === void 0) {
@@ -20327,21 +20327,21 @@ var require_range = __commonJS({
const loose = this.options.loose;
const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
range2 = range2.replace(hr, hyphenReplace(this.options.includePrerelease));
debug2("hyphen replace", range2);
debug3("hyphen replace", range2);
range2 = range2.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
debug2("comparator trim", range2);
debug3("comparator trim", range2);
range2 = range2.replace(re[t.TILDETRIM], tildeTrimReplace);
debug2("tilde trim", range2);
debug3("tilde trim", range2);
range2 = range2.replace(re[t.CARETTRIM], caretTrimReplace);
debug2("caret trim", range2);
debug3("caret trim", range2);
let rangeList = range2.split(" ").map((comp26) => parseComparator(comp26, this.options)).join(" ").split(/\s+/).map((comp26) => replaceGTE0(comp26, this.options));
if (loose) {
rangeList = rangeList.filter((comp26) => {
debug2("loose invalid filter", comp26, this.options);
debug3("loose invalid filter", comp26, this.options);
return !!comp26.match(re[t.COMPARATORLOOSE]);
});
}
debug2("range list", rangeList);
debug3("range list", rangeList);
const rangeMap = /* @__PURE__ */ new Map();
const comparators = rangeList.map((comp26) => new Comparator(comp26, this.options));
for (const comp26 of comparators) {
@@ -20396,7 +20396,7 @@ var require_range = __commonJS({
var cache = new LRU();
var parseOptions = require_parse_options();
var Comparator = require_comparator();
var debug2 = require_debug();
var debug3 = require_debug();
var SemVer = require_semver();
var {
safeRe: re,
@@ -20422,15 +20422,15 @@ var require_range = __commonJS({
};
var parseComparator = (comp26, options) => {
comp26 = comp26.replace(re[t.BUILD], "");
debug2("comp", comp26, options);
debug3("comp", comp26, options);
comp26 = replaceCarets(comp26, options);
debug2("caret", comp26);
debug3("caret", comp26);
comp26 = replaceTildes(comp26, options);
debug2("tildes", comp26);
debug3("tildes", comp26);
comp26 = replaceXRanges(comp26, options);
debug2("xrange", comp26);
debug3("xrange", comp26);
comp26 = replaceStars(comp26, options);
debug2("stars", comp26);
debug3("stars", comp26);
return comp26;
};
var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
@@ -20440,7 +20440,7 @@ var require_range = __commonJS({
var replaceTilde = (comp26, options) => {
const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
return comp26.replace(r, (_, M, m, p, pr) => {
debug2("tilde", comp26, _, M, m, p, pr);
debug3("tilde", comp26, _, M, m, p, pr);
let ret;
if (isX(M)) {
ret = "";
@@ -20449,12 +20449,12 @@ var require_range = __commonJS({
} else if (isX(p)) {
ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
} else if (pr) {
debug2("replaceTilde pr", pr);
debug3("replaceTilde pr", pr);
ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
} else {
ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
}
debug2("tilde return", ret);
debug3("tilde return", ret);
return ret;
});
};
@@ -20462,11 +20462,11 @@ var require_range = __commonJS({
return comp26.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" ");
};
var replaceCaret = (comp26, options) => {
debug2("caret", comp26, options);
debug3("caret", comp26, options);
const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
const z = options.includePrerelease ? "-0" : "";
return comp26.replace(r, (_, M, m, p, pr) => {
debug2("caret", comp26, _, M, m, p, pr);
debug3("caret", comp26, _, M, m, p, pr);
let ret;
if (isX(M)) {
ret = "";
@@ -20479,7 +20479,7 @@ var require_range = __commonJS({
ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;
}
} else if (pr) {
debug2("replaceCaret pr", pr);
debug3("replaceCaret pr", pr);
if (M === "0") {
if (m === "0") {
ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
@@ -20490,7 +20490,7 @@ var require_range = __commonJS({
ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
}
} else {
debug2("no pr");
debug3("no pr");
if (M === "0") {
if (m === "0") {
ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
@@ -20501,19 +20501,19 @@ var require_range = __commonJS({
ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
}
}
debug2("caret return", ret);
debug3("caret return", ret);
return ret;
});
};
var replaceXRanges = (comp26, options) => {
debug2("replaceXRanges", comp26, options);
debug3("replaceXRanges", comp26, options);
return comp26.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ");
};
var replaceXRange = (comp26, options) => {
comp26 = comp26.trim();
const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
return comp26.replace(r, (ret, gtlt, M, m, p, pr) => {
debug2("xRange", comp26, ret, gtlt, M, m, p, pr);
debug3("xRange", comp26, ret, gtlt, M, m, p, pr);
const xM = isX(M);
const xm = xM || isX(m);
const xp = xm || isX(p);
@@ -20560,16 +20560,16 @@ var require_range = __commonJS({
} else if (xp) {
ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
}
debug2("xRange return", ret);
debug3("xRange return", ret);
return ret;
});
};
var replaceStars = (comp26, options) => {
debug2("replaceStars", comp26, options);
debug3("replaceStars", comp26, options);
return comp26.trim().replace(re[t.STAR], "");
};
var replaceGTE0 = (comp26, options) => {
debug2("replaceGTE0", comp26, options);
debug3("replaceGTE0", comp26, options);
return comp26.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "");
};
var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {
@@ -20607,7 +20607,7 @@ var require_range = __commonJS({
}
if (version3.prerelease.length && !options.includePrerelease) {
for (let i = 0; i < set.length; i++) {
debug2(set[i].semver);
debug3(set[i].semver);
if (set[i].semver === Comparator.ANY) {
continue;
}
@@ -20644,7 +20644,7 @@ var require_comparator = __commonJS({
}
}
comp26 = comp26.trim().split(/\s+/).join(" ");
debug2("comparator", comp26, options);
debug3("comparator", comp26, options);
this.options = options;
this.loose = !!options.loose;
this.parse(comp26);
@@ -20653,7 +20653,7 @@ var require_comparator = __commonJS({
} else {
this.value = this.operator + this.semver.version;
}
debug2("comp", this);
debug3("comp", this);
}
parse(comp26) {
const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
@@ -20675,7 +20675,7 @@ var require_comparator = __commonJS({
return this.value;
}
test(version3) {
debug2("Comparator.test", version3, this.options.loose);
debug3("Comparator.test", version3, this.options.loose);
if (this.semver === ANY || version3 === ANY) {
return true;
}
@@ -20732,7 +20732,7 @@ var require_comparator = __commonJS({
var parseOptions = require_parse_options();
var { safeRe: re, t } = require_re();
var cmp = require_cmp();
var debug2 = require_debug();
var debug3 = require_debug();
var SemVer = require_semver();
var Range = require_range();
}
@@ -21456,11 +21456,11 @@ var require_common = __commonJS({
let enableOverride = null;
let namespacesCache;
let enabledCache;
function debug2(...args) {
if (!debug2.enabled) {
function debug3(...args) {
if (!debug3.enabled) {
return;
}
const self2 = debug2;
const self2 = debug3;
const curr = Number(/* @__PURE__ */ new Date());
const ms = curr - (prevTime || curr);
self2.diff = ms;
@@ -21490,12 +21490,12 @@ var require_common = __commonJS({
const logFn = self2.log || createDebug.log;
logFn.apply(self2, args);
}
debug2.namespace = namespace;
debug2.useColors = createDebug.useColors();
debug2.color = createDebug.selectColor(namespace);
debug2.extend = extend2;
debug2.destroy = createDebug.destroy;
Object.defineProperty(debug2, "enabled", {
debug3.namespace = namespace;
debug3.useColors = createDebug.useColors();
debug3.color = createDebug.selectColor(namespace);
debug3.extend = extend2;
debug3.destroy = createDebug.destroy;
Object.defineProperty(debug3, "enabled", {
enumerable: true,
configurable: false,
get: () => {
@@ -21513,9 +21513,9 @@ var require_common = __commonJS({
}
});
if (typeof createDebug.init === "function") {
createDebug.init(debug2);
createDebug.init(debug3);
}
return debug2;
return debug3;
}
function extend2(namespace, delimiter3) {
const newDebug = createDebug(this.namespace + (typeof delimiter3 === "undefined" ? ":" : delimiter3) + namespace);
@@ -22025,11 +22025,11 @@ var require_node = __commonJS({
function load() {
return process.env.DEBUG;
}
function init(debug2) {
debug2.inspectOpts = {};
function init(debug3) {
debug3.inspectOpts = {};
const keys = Object.keys(exports2.inspectOpts);
for (let i = 0; i < keys.length; i++) {
debug2.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]];
debug3.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]];
}
}
module2.exports = require_common()(exports2);
@@ -22292,7 +22292,7 @@ var require_parse_proxy_response = __commonJS({
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.parseProxyResponse = void 0;
var debug_1 = __importDefault(require_src());
var debug2 = (0, debug_1.default)("https-proxy-agent:parse-proxy-response");
var debug3 = (0, debug_1.default)("https-proxy-agent:parse-proxy-response");
function parseProxyResponse(socket) {
return new Promise((resolve2, reject) => {
let buffersLength = 0;
@@ -22311,12 +22311,12 @@ var require_parse_proxy_response = __commonJS({
}
function onend() {
cleanup();
debug2("onend");
debug3("onend");
reject(new Error("Proxy connection ended before receiving CONNECT response"));
}
function onerror(err) {
cleanup();
debug2("onerror %o", err);
debug3("onerror %o", err);
reject(err);
}
function ondata(b) {
@@ -22325,7 +22325,7 @@ var require_parse_proxy_response = __commonJS({
const buffered = Buffer.concat(buffers, buffersLength);
const endOfHeaders = buffered.indexOf("\r\n\r\n");
if (endOfHeaders === -1) {
debug2("have not received end of HTTP headers yet...");
debug3("have not received end of HTTP headers yet...");
read();
return;
}
@@ -22358,7 +22358,7 @@ var require_parse_proxy_response = __commonJS({
headers[key] = value;
}
}
debug2("got proxy server response: %o %o", firstLine, headers);
debug3("got proxy server response: %o %o", firstLine, headers);
cleanup();
resolve2({
connect: {
@@ -22421,7 +22421,7 @@ var require_dist2 = __commonJS({
var agent_base_1 = require_dist();
var url_1 = require("url");
var parse_proxy_response_1 = require_parse_proxy_response();
var debug2 = (0, debug_1.default)("https-proxy-agent");
var debug3 = (0, debug_1.default)("https-proxy-agent");
var setServernameFromNonIpHost = (options) => {
if (options.servername === void 0 && options.host && !net.isIP(options.host)) {
return {
@@ -22437,7 +22437,7 @@ var require_dist2 = __commonJS({
this.options = { path: void 0 };
this.proxy = typeof proxy === "string" ? new url_1.URL(proxy) : proxy;
this.proxyHeaders = opts?.headers ?? {};
debug2("Creating new HttpsProxyAgent instance: %o", this.proxy.href);
debug3("Creating new HttpsProxyAgent instance: %o", this.proxy.href);
const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, "");
const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80;
this.connectOpts = {
@@ -22459,10 +22459,10 @@ var require_dist2 = __commonJS({
}
let socket;
if (proxy.protocol === "https:") {
debug2("Creating `tls.Socket`: %o", this.connectOpts);
debug3("Creating `tls.Socket`: %o", this.connectOpts);
socket = tls.connect(setServernameFromNonIpHost(this.connectOpts));
} else {
debug2("Creating `net.Socket`: %o", this.connectOpts);
debug3("Creating `net.Socket`: %o", this.connectOpts);
socket = net.connect(this.connectOpts);
}
const headers = typeof this.proxyHeaders === "function" ? this.proxyHeaders() : { ...this.proxyHeaders };
@@ -22490,7 +22490,7 @@ var require_dist2 = __commonJS({
if (connect.statusCode === 200) {
req.once("socket", resume);
if (opts.secureEndpoint) {
debug2("Upgrading socket connection to TLS");
debug3("Upgrading socket connection to TLS");
return tls.connect({
...omit(setServernameFromNonIpHost(opts), "host", "path", "port"),
socket
@@ -22502,7 +22502,7 @@ var require_dist2 = __commonJS({
const fakeSocket = new net.Socket({ writable: false });
fakeSocket.readable = true;
req.once("socket", (s) => {
debug2("Replaying proxy buffer for failed request");
debug3("Replaying proxy buffer for failed request");
(0, assert_1.default)(s.listenerCount("data") > 0);
s.push(buffered);
s.push(null);
@@ -22570,13 +22570,13 @@ var require_dist3 = __commonJS({
var events_1 = require("events");
var agent_base_1 = require_dist();
var url_1 = require("url");
var debug2 = (0, debug_1.default)("http-proxy-agent");
var debug3 = (0, debug_1.default)("http-proxy-agent");
var HttpProxyAgent2 = class extends agent_base_1.Agent {
constructor(proxy, opts) {
super(opts);
this.proxy = typeof proxy === "string" ? new url_1.URL(proxy) : proxy;
this.proxyHeaders = opts?.headers ?? {};
debug2("Creating new HttpProxyAgent instance: %o", this.proxy.href);
debug3("Creating new HttpProxyAgent instance: %o", this.proxy.href);
const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, "");
const port = this.proxy.port ? parseInt(this.proxy.port, 10) : this.proxy.protocol === "https:" ? 443 : 80;
this.connectOpts = {
@@ -22622,21 +22622,21 @@ var require_dist3 = __commonJS({
}
let first;
let endOfHeaders;
debug2("Regenerating stored HTTP header string for request");
debug3("Regenerating stored HTTP header string for request");
req._implicitHeader();
if (req.outputData && req.outputData.length > 0) {
debug2("Patching connection write() output buffer with updated header");
debug3("Patching connection write() output buffer with updated header");
first = req.outputData[0].data;
endOfHeaders = first.indexOf("\r\n\r\n") + 4;
req.outputData[0].data = req._header + first.substring(endOfHeaders);
debug2("Output buffer: %o", req.outputData[0].data);
debug3("Output buffer: %o", req.outputData[0].data);
}
let socket;
if (this.proxy.protocol === "https:") {
debug2("Creating `tls.Socket`: %o", this.connectOpts);
debug3("Creating `tls.Socket`: %o", this.connectOpts);
socket = tls.connect(this.connectOpts);
} else {
debug2("Creating `net.Socket`: %o", this.connectOpts);
debug3("Creating `net.Socket`: %o", this.connectOpts);
socket = net.connect(this.connectOpts);
}
await (0, events_1.once)(socket, "connect");
@@ -24039,9 +24039,9 @@ var require_reflection_type_check = __commonJS({
var reflection_info_1 = require_reflection_info();
var oneof_1 = require_oneof();
var ReflectionTypeCheck = class {
constructor(info2) {
constructor(info3) {
var _a;
this.fields = (_a = info2.fields) !== null && _a !== void 0 ? _a : [];
this.fields = (_a = info3.fields) !== null && _a !== void 0 ? _a : [];
}
prepare() {
if (this.data)
@@ -24287,8 +24287,8 @@ var require_reflection_json_reader = __commonJS({
var assert_1 = require_assert();
var reflection_long_convert_1 = require_reflection_long_convert();
var ReflectionJsonReader = class {
constructor(info2) {
this.info = info2;
constructor(info3) {
this.info = info3;
}
prepare() {
var _a;
@@ -24584,9 +24584,9 @@ var require_reflection_json_writer = __commonJS({
var reflection_info_1 = require_reflection_info();
var assert_1 = require_assert();
var ReflectionJsonWriter = class {
constructor(info2) {
constructor(info3) {
var _a;
this.fields = (_a = info2.fields) !== null && _a !== void 0 ? _a : [];
this.fields = (_a = info3.fields) !== null && _a !== void 0 ? _a : [];
}
/**
* Converts the message to a JSON object, based on the field descriptors.
@@ -24839,8 +24839,8 @@ var require_reflection_binary_reader = __commonJS({
var reflection_long_convert_1 = require_reflection_long_convert();
var reflection_scalar_default_1 = require_reflection_scalar_default();
var ReflectionBinaryReader = class {
constructor(info2) {
this.info = info2;
constructor(info3) {
this.info = info3;
}
prepare() {
var _a;
@@ -25013,8 +25013,8 @@ var require_reflection_binary_writer = __commonJS({
var assert_1 = require_assert();
var pb_long_1 = require_pb_long();
var ReflectionBinaryWriter = class {
constructor(info2) {
this.info = info2;
constructor(info3) {
this.info = info3;
}
prepare() {
if (!this.fields) {
@@ -25264,9 +25264,9 @@ var require_reflection_merge_partial = __commonJS({
"use strict";
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.reflectionMergePartial = void 0;
function reflectionMergePartial4(info2, target, source) {
function reflectionMergePartial4(info3, target, source) {
let fieldValue, input = source, output;
for (let field of info2.fields) {
for (let field of info3.fields) {
let name = field.localName;
if (field.oneof) {
const group = input[field.oneof];
@@ -25335,12 +25335,12 @@ var require_reflection_equals = __commonJS({
Object.defineProperty(exports2, "__esModule", { value: true });
exports2.reflectionEquals = void 0;
var reflection_info_1 = require_reflection_info();
function reflectionEquals(info2, a, b) {
function reflectionEquals(info3, a, b) {
if (a === b)
return true;
if (!a || !b)
return false;
for (let field of info2.fields) {
for (let field of info3.fields) {
let localName = field.localName;
let val_a = field.oneof ? a[field.oneof][localName] : a[localName];
let val_b = field.oneof ? b[field.oneof][localName] : b[localName];
@@ -28045,12 +28045,12 @@ var HttpClient = class {
throw new Error("Client has already been disposed.");
}
const parsedUrl = new URL(requestUrl);
let info2 = this._prepareRequest(verb, parsedUrl, headers);
let info3 = this._prepareRequest(verb, parsedUrl, headers);
const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) ? this._maxRetries + 1 : 1;
let numTries = 0;
let response;
do {
response = yield this.requestRaw(info2, data);
response = yield this.requestRaw(info3, data);
if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) {
let authenticationHandler;
for (const handler of this.handlers) {
@@ -28060,7 +28060,7 @@ var HttpClient = class {
}
}
if (authenticationHandler) {
return authenticationHandler.handleAuthentication(this, info2, data);
return authenticationHandler.handleAuthentication(this, info3, data);
} else {
return response;
}
@@ -28083,8 +28083,8 @@ var HttpClient = class {
}
}
}
info2 = this._prepareRequest(verb, parsedRedirectUrl, headers);
response = yield this.requestRaw(info2, data);
info3 = this._prepareRequest(verb, parsedRedirectUrl, headers);
response = yield this.requestRaw(info3, data);
redirectsRemaining--;
}
if (!response.message.statusCode || !HttpResponseRetryCodes.includes(response.message.statusCode)) {
@@ -28113,7 +28113,7 @@ var HttpClient = class {
* @param info
* @param data
*/
requestRaw(info2, data) {
requestRaw(info3, data) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve2, reject) => {
function callbackForResult(err, res) {
@@ -28125,7 +28125,7 @@ var HttpClient = class {
resolve2(res);
}
}
this.requestRawWithCallback(info2, data, callbackForResult);
this.requestRawWithCallback(info3, data, callbackForResult);
});
});
}
@@ -28135,12 +28135,12 @@ var HttpClient = class {
* @param data
* @param onResult
*/
requestRawWithCallback(info2, data, onResult) {
requestRawWithCallback(info3, data, onResult) {
if (typeof data === "string") {
if (!info2.options.headers) {
info2.options.headers = {};
if (!info3.options.headers) {
info3.options.headers = {};
}
info2.options.headers["Content-Length"] = Buffer.byteLength(data, "utf8");
info3.options.headers["Content-Length"] = Buffer.byteLength(data, "utf8");
}
let callbackCalled = false;
function handleResult(err, res) {
@@ -28149,7 +28149,7 @@ var HttpClient = class {
onResult(err, res);
}
}
const req = info2.httpModule.request(info2.options, (msg) => {
const req = info3.httpModule.request(info3.options, (msg) => {
const res = new HttpClientResponse(msg);
handleResult(void 0, res);
});
@@ -28161,7 +28161,7 @@ var HttpClient = class {
if (socket) {
socket.end();
}
handleResult(new Error(`Request timeout: ${info2.options.path}`));
handleResult(new Error(`Request timeout: ${info3.options.path}`));
});
req.on("error", function(err) {
handleResult(err);
@@ -28197,27 +28197,27 @@ var HttpClient = class {
return this._getProxyAgentDispatcher(parsedUrl, proxyUrl);
}
_prepareRequest(method, requestUrl, headers) {
const info2 = {};
info2.parsedUrl = requestUrl;
const usingSsl = info2.parsedUrl.protocol === "https:";
info2.httpModule = usingSsl ? https : http;
const info3 = {};
info3.parsedUrl = requestUrl;
const usingSsl = info3.parsedUrl.protocol === "https:";
info3.httpModule = usingSsl ? https : http;
const defaultPort = usingSsl ? 443 : 80;
info2.options = {};
info2.options.host = info2.parsedUrl.hostname;
info2.options.port = info2.parsedUrl.port ? parseInt(info2.parsedUrl.port) : defaultPort;
info2.options.path = (info2.parsedUrl.pathname || "") + (info2.parsedUrl.search || "");
info2.options.method = method;
info2.options.headers = this._mergeHeaders(headers);
info3.options = {};
info3.options.host = info3.parsedUrl.hostname;
info3.options.port = info3.parsedUrl.port ? parseInt(info3.parsedUrl.port) : defaultPort;
info3.options.path = (info3.parsedUrl.pathname || "") + (info3.parsedUrl.search || "");
info3.options.method = method;
info3.options.headers = this._mergeHeaders(headers);
if (this.userAgent != null) {
info2.options.headers["user-agent"] = this.userAgent;
info3.options.headers["user-agent"] = this.userAgent;
}
info2.options.agent = this._getAgent(info2.parsedUrl);
info3.options.agent = this._getAgent(info3.parsedUrl);
if (this.handlers) {
for (const handler of this.handlers) {
handler.prepareRequest(info2.options);
handler.prepareRequest(info3.options);
}
}
return info2;
return info3;
}
_mergeHeaders(headers) {
if (this.requestOptions && this.requestOptions.headers) {
@@ -30601,14 +30601,14 @@ function disable() {
return result;
}
function createDebugger(namespace) {
const newDebugger = Object.assign(debug2, {
const newDebugger = Object.assign(debug3, {
enabled: enabled(namespace),
destroy,
log: debugObj.log,
namespace,
extend
});
function debug2(...args) {
function debug3(...args) {
if (!newDebugger.enabled) {
return;
}
@@ -34098,12 +34098,12 @@ function getOperationRequestInfo(request) {
if (hasOriginalRequest(request)) {
return getOperationRequestInfo(request[originalRequestSymbol]);
}
let info2 = state2.operationRequestMap.get(request);
if (!info2) {
info2 = {};
state2.operationRequestMap.set(request, info2);
let info3 = state2.operationRequestMap.get(request);
if (!info3) {
info3 = {};
state2.operationRequestMap.set(request, info3);
}
return info2;
return info3;
}
// node_modules/@azure/core-client/dist/esm/deserializationPolicy.js
@@ -62241,6 +62241,21 @@ function saveCacheV2(paths_1, key_1, options_1) {
// src/save-cache.ts
var pep440 = __toESM(require_pep440(), 1);
// src/utils/logging.ts
var quiet;
function isQuiet() {
if (quiet === void 0) {
quiet = typeof getInput === "function" && getInput("quiet") === "true";
}
return quiet;
}
function info2(msg) {
if (!isQuiet()) {
info(msg);
}
}
var warning2 = warning;
// src/cache/restore-cache.ts
var STATE_CACHE_KEY = "cache-key";
var STATE_CACHE_MATCHED_KEY = "cache-matched-key";
@@ -62327,9 +62342,14 @@ function skipComment(str, ptr) {
}
function skipVoid(str, ptr, banNewLines, banComments) {
let c;
while ((c = str[ptr]) === " " || c === " " || !banNewLines && (c === "\n" || c === "\r" && str[ptr + 1] === "\n"))
ptr++;
return banComments || c !== "#" ? ptr : skipVoid(str, skipComment(str, ptr), banNewLines);
while (1) {
while ((c = str[ptr]) === " " || c === " " || !banNewLines && (c === "\n" || c === "\r" && str[ptr + 1] === "\n"))
ptr++;
if (banComments || c !== "#")
break;
ptr = skipComment(str, ptr);
}
return ptr;
}
function skipUntil(str, ptr, sep7, end, banNewLines = false) {
if (!end) {
@@ -62990,7 +63010,9 @@ function loadInputs() {
const pythonDir = getUvPythonDir();
const githubToken = getInput("github-token");
const manifestFile = getManifestFile();
const downloadFromAstralMirror = getInput("download-from-astral-mirror") === "true";
const addProblemMatchers = getInput("add-problem-matchers") === "true";
const quiet2 = getInput("quiet") === "true";
const resolutionStrategy = getResolutionStrategy();
return {
activateEnvironment,
@@ -63000,6 +63022,7 @@ function loadInputs() {
cachePython,
cacheSuffix,
checksum,
downloadFromAstralMirror,
enableCache,
githubToken,
ignoreEmptyWorkdir,
@@ -63009,6 +63032,7 @@ function loadInputs() {
pruneCache: pruneCache2,
pythonDir,
pythonVersion,
quiet: quiet2,
resolutionStrategy,
restoreCache: restoreCache2,
saveCache: saveCache4,
@@ -63032,7 +63056,7 @@ function getVenvPath(workingDirectory, activateEnvironment) {
const venvPathInput = getInput("venv-path");
if (venvPathInput !== "") {
if (!activateEnvironment) {
warning("venv-path is only used when activate-environment is true");
warning2("venv-path is only used when activate-environment is true");
}
const tildeExpanded = expandTilde(venvPathInput);
return normalizePath(resolveRelativePath(workingDirectory, tildeExpanded));
@@ -63095,7 +63119,7 @@ function getCacheLocalPath(workingDirectory, versionFile, enableCache) {
return { path: cacheDirFromConfig, source: 1 /* Config */ };
}
if (process.env.UV_CACHE_DIR !== void 0) {
info(`UV_CACHE_DIR is already set to ${process.env.UV_CACHE_DIR}`);
info2(`UV_CACHE_DIR is already set to ${process.env.UV_CACHE_DIR}`);
return { path: process.env.UV_CACHE_DIR, source: 2 /* Env */ };
}
if (enableCache) {
@@ -63128,12 +63152,12 @@ function getCacheDirFromConfig(workingDirectory, versionFile) {
try {
const cacheDir = getConfigValueFromTomlFile(resolvedPath, "cache-dir");
if (cacheDir !== void 0) {
info(`Found cache-dir in ${resolvedPath}: ${cacheDir}`);
info2(`Found cache-dir in ${resolvedPath}: ${cacheDir}`);
return cacheDir;
}
} catch (err) {
const message = err.message;
warning(`Error while parsing ${filePath}: ${message}`);
warning2(`Error while parsing ${filePath}: ${message}`);
return void 0;
}
}
@@ -63141,7 +63165,7 @@ function getCacheDirFromConfig(workingDirectory, versionFile) {
}
function getUvPythonDir() {
if (process.env.UV_PYTHON_INSTALL_DIR !== void 0) {
info(
info2(
`UV_PYTHON_INSTALL_DIR is already set to ${process.env.UV_PYTHON_INSTALL_DIR}`
);
return process.env.UV_PYTHON_INSTALL_DIR;
@@ -63211,6 +63235,22 @@ function getResolutionStrategy() {
}
// src/save-cache.ts
function formatUnexpectedFailure(error2) {
if (error2 instanceof Error) {
return error2.stack ?? error2.message;
}
return String(error2);
}
function failUnexpectedly(event, error2) {
setFailed(`${event}: ${formatUnexpectedFailure(error2)}`);
process.exit(1);
}
process.on("uncaughtException", (error2) => {
failUnexpectedly("Uncaught exception", error2);
});
process.on("unhandledRejection", (reason) => {
failUnexpectedly("Unhandled promise rejection", reason);
});
async function run() {
try {
const inputs = loadInputs();
@@ -63218,7 +63258,7 @@ async function run() {
if (inputs.saveCache) {
await saveCache3(inputs);
} else {
info("save-cache is false. Skipping save cache step.");
info2("save-cache is false. Skipping save cache step.");
}
await new Promise((resolve2) => setTimeout(resolve2, 100));
process.exit(0);
@@ -63232,11 +63272,11 @@ async function saveCache3(inputs) {
const cacheKey = getState(STATE_CACHE_KEY);
const matchedKey = getState(STATE_CACHE_MATCHED_KEY);
if (!cacheKey) {
warning("Error retrieving cache key from state.");
warning2("Error retrieving cache key from state.");
return;
}
if (matchedKey === cacheKey) {
info(`Cache hit occurred on key ${cacheKey}, not saving cache.`);
info2(`Cache hit occurred on key ${cacheKey}, not saving cache.`);
} else {
if (inputs.pruneCache) {
await pruneCache();
@@ -63244,7 +63284,7 @@ async function saveCache3(inputs) {
const actualCachePath = getUvCachePath(inputs);
if (!fs7.existsSync(actualCachePath)) {
if (inputs.ignoreNothingToCache) {
info(
info2(
"No cacheable uv cache paths were found. Ignoring because ignore-nothing-to-cache is enabled."
);
} else {
@@ -63263,7 +63303,7 @@ async function saveCache3(inputs) {
}
if (inputs.cachePython) {
if (!fs7.existsSync(inputs.pythonDir)) {
warning(
warning2(
`Python cache path ${inputs.pythonDir} does not exist on disk. Skipping Python cache save because no managed Python installation was found. If you want uv to install managed Python instead of using a system interpreter, set UV_PYTHON_PREFERENCE=only-managed.`
);
return;
@@ -63286,7 +63326,7 @@ async function pruneCache() {
if (forceSupported) {
execArgs.push("--force");
}
info("Pruning cache...");
info2("Pruning cache...");
const uvPath = getState(STATE_UV_PATH);
await exec(uvPath, execArgs, options);
}
@@ -63297,7 +63337,7 @@ function getUvCachePath(inputs) {
);
}
if (process.env.UV_CACHE_DIR && process.env.UV_CACHE_DIR !== inputs.cacheLocalPath.path) {
warning(
warning2(
`The environment variable UV_CACHE_DIR has been changed to "${process.env.UV_CACHE_DIR}", by an action or step running after astral-sh/setup-uv. This can lead to unexpected behavior. If you expected this to happen set the cache-local-path input to "${process.env.UV_CACHE_DIR}" instead of "${inputs.cacheLocalPath.path}".`
);
return process.env.UV_CACHE_DIR;
@@ -63307,14 +63347,12 @@ function getUvCachePath(inputs) {
async function saveCacheToKey(cacheKey, cachePath, stateKey, cacheName) {
const matchedKey = getState(stateKey);
if (matchedKey === cacheKey) {
info(
`${cacheName} hit occurred on key ${cacheKey}, not saving cache.`
);
info2(`${cacheName} hit occurred on key ${cacheKey}, not saving cache.`);
return;
}
info(`Including ${cacheName} path: ${cachePath}`);
info2(`Including ${cacheName} path: ${cachePath}`);
await saveCache2([cachePath], cacheKey);
info(`${cacheName} saved with key: ${cacheKey}`);
info2(`${cacheName} saved with key: ${cacheKey}`);
}
run();
// Annotate the CommonJS export names for ESM import in node:
Generated Vendored
+2548 -1740
View File
File diff suppressed because one or more lines are too long
+2380 -1590
View File
File diff suppressed because one or more lines are too long
+325 -325
View File
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -35,19 +35,19 @@
"@actions/io": "^3.0.2",
"@actions/tool-cache": "^4.0.0",
"@renovatebot/pep440": "^4.2.2",
"smol-toml": "^1.6.0",
"undici": "^7.24.2"
"smol-toml": "^1.6.1",
"undici": "^8.3.0"
},
"devDependencies": {
"@biomejs/biome": "^2.4.7",
"@biomejs/biome": "^2.4.15",
"@types/js-yaml": "^4.0.9",
"@types/node": "^25.5.0",
"@types/semver": "^7.7.1",
"@vercel/ncc": "^0.38.4",
"esbuild": "^0.27.4",
"esbuild": "^0.28.0",
"jest": "^30.3.0",
"js-yaml": "^4.1.1",
"ts-jest": "^29.4.6",
"ts-jest": "^29.4.11",
"typescript": "^5.9.3"
}
}
+8 -7
View File
@@ -2,6 +2,7 @@ import * as cache from "@actions/cache";
import * as core from "@actions/core";
import { hashFiles } from "../hash/hash-files";
import type { SetupInputs } from "../utils/inputs";
import * as log from "../utils/logging";
import { getArch, getOSNameVersion, getPlatform } from "../utils/platforms";
export const STATE_CACHE_KEY = "cache-key";
@@ -19,7 +20,7 @@ export async function restoreCache(
core.setOutput("cache-key", cacheKey);
if (!inputs.restoreCache) {
core.info("restore-cache is false. Skipping restore cache step.");
log.info("restore-cache is false. Skipping restore cache step.");
core.setOutput("python-cache-hit", false);
return;
}
@@ -55,7 +56,7 @@ async function restoreCacheFromKey(
stateKey: string,
outputKey: string,
): Promise<void> {
core.info(
log.info(
`Trying to restore cache from GitHub Actions cache with key: ${cacheKey}`,
);
let matchedKey: string | undefined;
@@ -63,7 +64,7 @@ async function restoreCacheFromKey(
matchedKey = await cache.restoreCache([cachePath], cacheKey);
} catch (err) {
const message = (err as Error).message;
core.warning(message);
log.warning(message);
core.setOutput(outputKey, false);
return;
}
@@ -77,7 +78,7 @@ async function computeKeys(
): Promise<string> {
let cacheDependencyPathHash = "-";
if (inputs.cacheDependencyGlob !== "") {
core.info(
log.info(
`Searching files using cache dependency glob: ${inputs.cacheDependencyGlob.split("\n").join(",")}`,
);
cacheDependencyPathHash += await hashFiles(
@@ -85,7 +86,7 @@ async function computeKeys(
true,
);
if (cacheDependencyPathHash === "-") {
core.warning(
log.warning(
`No file matched to [${inputs.cacheDependencyGlob.split("\n").join(",")}]. The cache will never get invalidated. Make sure you have checked out the target repository and configured the cache-dependency-glob input correctly.`,
);
}
@@ -109,12 +110,12 @@ function handleMatchResult(
outputKey: string,
): void {
if (!matchedKey) {
core.info(`No GitHub Actions cache found for key: ${primaryKey}`);
log.info(`No GitHub Actions cache found for key: ${primaryKey}`);
core.setOutput(outputKey, false);
return;
}
core.saveState(stateKey, matchedKey);
core.info(`cache restored from GitHub Actions cache with key: ${matchedKey}`);
log.info(`cache restored from GitHub Actions cache with key: ${matchedKey}`);
core.setOutput(outputKey, true);
}
+36
View File
@@ -1,5 +1,41 @@
// AUTOGENERATED_DO_NOT_EDIT
export const KNOWN_CHECKSUMS: { [key: string]: string } = {
"aarch64-apple-darwin-0.11.18":
"1a7adf8dadae3b55853115d13a8bf564d219597ad13824b93b213706933863e5",
"aarch64-pc-windows-msvc-0.11.18":
"0689e1a40d36b387522d2b1b865cd98a15ddd4a7507e256ad93be6f6a335fec1",
"aarch64-unknown-linux-gnu-0.11.18":
"0f03c6648df1c159557f4222c0f37250f84733fb88d6fc3c16770e17c177a8c9",
"aarch64-unknown-linux-musl-0.11.18":
"6d895725333680bf7633ad635baff8e49dc45d3b52e00b2b3adf6ced41f2ebe2",
"arm-unknown-linux-musleabihf-0.11.18":
"c4fe354b28c489fa6649531808076c43eb3a34122df49b0a3005bb75dbf101c3",
"armv7-unknown-linux-gnueabihf-0.11.18":
"a70a8b1124dc1fabcce9f2bbe6591c72a05d49df74125d1c327b5745f2becbb6",
"armv7-unknown-linux-musleabihf-0.11.18":
"f8b6f4df3ff9d142a25892be575ade438672a8353ad71997f7db88e9b9a1062d",
"i686-pc-windows-msvc-0.11.18":
"7505112a7bf72f50391c50f2aa07950b95b3c43c7d9fd4da5626876407d15dda",
"i686-unknown-linux-gnu-0.11.18":
"5f3df0d62af1d174a06b82a6faf1a5e9a1f729b87d11c7d9cd87d4241e04f23d",
"i686-unknown-linux-musl-0.11.18":
"4237cfcd03fb8767a7ec713ab3db14381d83bbd0bf5ccc88cd6f28ac8c2c616f",
"powerpc64le-unknown-linux-gnu-0.11.18":
"fc8f46a198e540ca2d89fd9480da0648d673ff3e25b4048c82ca5c292a478052",
"riscv64gc-unknown-linux-gnu-0.11.18":
"cdb0555db7828bbd1dc24e55171b8ac3dbbc24fe17b6a7387783cd4d543a1538",
"riscv64gc-unknown-linux-musl-0.11.18":
"3d5b533080bb593c82b281b8d289e29d51b97c0994655099845752e948181fe2",
"s390x-unknown-linux-gnu-0.11.18":
"7a91aa963680f2fe14ebf89291cf8eafcff634eccdeb6d301e0252b282171818",
"x86_64-apple-darwin-0.11.18":
"00a61e3db99b53c927a7e6c4ccdccb898aa3253d07928822211e9dc570a25661",
"x86_64-pc-windows-msvc-0.11.18":
"bf8e0021336b7c77bd80a078b612125f385b08f541437edaea8c8ca9e574db0d",
"x86_64-unknown-linux-gnu-0.11.18":
"588f3e360f69ce02b6982aa99f2240e803933a6b7e176ac01617830adf955add",
"x86_64-unknown-linux-musl-0.11.18":
"a095a969fc8357f42e35652e0554525a47a29010ddb814bd82650c2ffa7d6d62",
"aarch64-apple-darwin-0.11.17":
"2a162f6b90ff3691a2f9cae1622e066a3ce592e110f66670cdcc841324b28226",
"aarch64-pc-windows-msvc-0.11.17":
+8 -4
View File
@@ -8,6 +8,7 @@ import {
TOOL_CACHE_NAME,
VERSIONS_MANIFEST_URL,
} from "../utils/constants";
import * as log from "../utils/logging";
import type { Architecture, Platform } from "../utils/platforms";
import { validateChecksum } from "./checksum/checksum";
import { getArtifact } from "./manifest";
@@ -36,6 +37,7 @@ export async function downloadVersion(
checksum: string | undefined,
githubToken: string,
manifestUrl?: string,
downloadFromAstralMirror = true,
): Promise<{ version: string; cachedToolDir: string }> {
const artifact = await getArtifact(version, arch, platform, manifestUrl);
@@ -52,7 +54,9 @@ export async function downloadVersion(
? checksum
: resolveChecksum(checksum, artifact.checksum);
const mirrorUrl = rewriteToMirror(artifact.downloadUrl);
const mirrorUrl = downloadFromAstralMirror
? rewriteToMirror(artifact.downloadUrl)
: undefined;
const downloadUrl = mirrorUrl ?? artifact.downloadUrl;
try {
@@ -70,7 +74,7 @@ export async function downloadVersion(
throw err;
}
core.warning(
log.warning(
`Failed to download from mirror, falling back to GitHub Releases: ${(err as Error).message}`,
);
@@ -120,7 +124,7 @@ async function downloadArtifact(
checksum: string | undefined,
githubToken: string | undefined,
): Promise<{ version: string; cachedToolDir: string }> {
core.info(`Downloading uv from "${downloadUrl}" ...`);
log.info(`Downloading uv from "${downloadUrl}" ...`);
const downloadPath = await tc.downloadTool(
downloadUrl,
undefined,
@@ -136,7 +140,7 @@ async function downloadArtifact(
// so this may fail if another tar, like gnu tar, ends up being used.
uvDir = await tc.extractTar(downloadPath, undefined, "x");
} catch (err) {
core.info(
log.info(
`Extracting with tar failed, falling back to zip extraction: ${(err as Error).message}`,
);
const extension = getExtension(platform);
+3 -2
View File
@@ -1,6 +1,7 @@
import * as core from "@actions/core";
import { VERSIONS_MANIFEST_URL } from "../utils/constants";
import { fetch } from "../utils/fetch";
import * as log from "../utils/logging";
import { selectDefaultVariant } from "./variant-selection";
export interface ManifestArtifact {
@@ -33,7 +34,7 @@ export async function fetchManifest(
return cachedVersions;
}
core.info(`Fetching manifest data from ${manifestUrl} ...`);
log.info(`Fetching manifest data from ${manifestUrl} ...`);
const response = await fetch(manifestUrl, {});
if (!response.ok) {
throw new Error(
@@ -111,7 +112,7 @@ export async function getLatestVersion(
export async function getAllVersions(
manifestUrl: string = VERSIONS_MANIFEST_URL,
): Promise<string[]> {
core.info(
log.info(
`Getting available versions from ${manifestSource(manifestUrl)} ...`,
);
const versions = await fetchManifest(manifestUrl);
+2 -2
View File
@@ -2,8 +2,8 @@ import * as crypto from "node:crypto";
import * as fs from "node:fs";
import * as stream from "node:stream";
import * as util from "node:util";
import * as core from "@actions/core";
import { create } from "@actions/glob";
import * as log from "../utils/logging";
/**
* Hashes files matching the given glob pattern.
@@ -19,7 +19,7 @@ export async function hashFiles(
): Promise<string> {
const globber = await create(pattern);
let hasMatch = false;
const writeDelegate = verbose ? core.info : core.debug;
const writeDelegate = verbose ? log.info : log.debug;
const result = crypto.createHash("sha256");
let count = 0;
for await (const file of globber.globGenerator()) {
+31 -12
View File
@@ -10,6 +10,27 @@ import {
} from "./cache/restore-cache";
import { STATE_UV_PATH, STATE_UV_VERSION } from "./utils/constants";
import { loadInputs, type SetupInputs } from "./utils/inputs";
import * as log from "./utils/logging";
function formatUnexpectedFailure(error: unknown): string {
if (error instanceof Error) {
return error.stack ?? error.message;
}
return String(error);
}
function failUnexpectedly(event: string, error: unknown): never {
core.setFailed(`${event}: ${formatUnexpectedFailure(error)}`);
process.exit(1);
}
process.on("uncaughtException", (error) => {
failUnexpectedly("Uncaught exception", error);
});
process.on("unhandledRejection", (reason) => {
failUnexpectedly("Unhandled promise rejection", reason);
});
export async function run(): Promise<void> {
try {
@@ -18,7 +39,7 @@ export async function run(): Promise<void> {
if (inputs.saveCache) {
await saveCache(inputs);
} else {
core.info("save-cache is false. Skipping save cache step.");
log.info("save-cache is false. Skipping save cache step.");
}
// https://github.com/nodejs/node/issues/56645#issuecomment-3924958861
await new Promise((resolve) => setTimeout(resolve, 100));
@@ -41,11 +62,11 @@ async function saveCache(inputs: SetupInputs): Promise<void> {
const matchedKey = core.getState(STATE_CACHE_MATCHED_KEY);
if (!cacheKey) {
core.warning("Error retrieving cache key from state.");
log.warning("Error retrieving cache key from state.");
return;
}
if (matchedKey === cacheKey) {
core.info(`Cache hit occurred on key ${cacheKey}, not saving cache.`);
log.info(`Cache hit occurred on key ${cacheKey}, not saving cache.`);
} else {
if (inputs.pruneCache) {
await pruneCache();
@@ -54,7 +75,7 @@ async function saveCache(inputs: SetupInputs): Promise<void> {
const actualCachePath = getUvCachePath(inputs);
if (!fs.existsSync(actualCachePath)) {
if (inputs.ignoreNothingToCache) {
core.info(
log.info(
"No cacheable uv cache paths were found. Ignoring because ignore-nothing-to-cache is enabled.",
);
} else {
@@ -74,7 +95,7 @@ async function saveCache(inputs: SetupInputs): Promise<void> {
if (inputs.cachePython) {
if (!fs.existsSync(inputs.pythonDir)) {
core.warning(
log.warning(
`Python cache path ${inputs.pythonDir} does not exist on disk. Skipping Python cache save because no managed Python installation was found. If you want uv to install managed Python instead of using a system interpreter, set UV_PYTHON_PREFERENCE=only-managed.`,
);
return;
@@ -101,7 +122,7 @@ async function pruneCache(): Promise<void> {
execArgs.push("--force");
}
core.info("Pruning cache...");
log.info("Pruning cache...");
const uvPath = core.getState(STATE_UV_PATH);
await exec.exec(uvPath, execArgs, options);
}
@@ -116,7 +137,7 @@ function getUvCachePath(inputs: SetupInputs): string {
process.env.UV_CACHE_DIR &&
process.env.UV_CACHE_DIR !== inputs.cacheLocalPath.path
) {
core.warning(
log.warning(
`The environment variable UV_CACHE_DIR has been changed to "${process.env.UV_CACHE_DIR}", by an action or step running after astral-sh/setup-uv. This can lead to unexpected behavior. If you expected this to happen set the cache-local-path input to "${process.env.UV_CACHE_DIR}" instead of "${inputs.cacheLocalPath.path}".`,
);
return process.env.UV_CACHE_DIR;
@@ -133,15 +154,13 @@ async function saveCacheToKey(
const matchedKey = core.getState(stateKey);
if (matchedKey === cacheKey) {
core.info(
`${cacheName} hit occurred on key ${cacheKey}, not saving cache.`,
);
log.info(`${cacheName} hit occurred on key ${cacheKey}, not saving cache.`);
return;
}
core.info(`Including ${cacheName} path: ${cachePath}`);
log.info(`Including ${cacheName} path: ${cachePath}`);
await cache.saveCache([cachePath], cacheKey);
core.info(`${cacheName} saved with key: ${cacheKey}`);
log.info(`${cacheName} saved with key: ${cacheKey}`);
}
run();
+43 -21
View File
@@ -9,6 +9,7 @@ import {
} from "./download/download-version";
import { STATE_UV_PATH, STATE_UV_VERSION } from "./utils/constants";
import { CacheLocalSource, loadInputs, type SetupInputs } from "./utils/inputs";
import * as log from "./utils/logging";
import {
type Architecture,
getArch,
@@ -19,6 +20,26 @@ import { resolveUvVersion } from "./version/resolve";
const sourceDir = __dirname;
function formatUnexpectedFailure(error: unknown): string {
if (error instanceof Error) {
return error.stack ?? error.message;
}
return String(error);
}
function failUnexpectedly(event: string, error: unknown): never {
core.setFailed(`${event}: ${formatUnexpectedFailure(error)}`);
process.exit(1);
}
process.on("uncaughtException", (error) => {
failUnexpectedly("Uncaught exception", error);
});
process.on("unhandledRejection", (reason) => {
failUnexpectedly("Unhandled promise rejection", reason);
});
async function getPythonVersion(inputs: SetupInputs): Promise<string> {
if (inputs.pythonVersion !== "") {
return inputs.pythonVersion;
@@ -76,7 +97,7 @@ async function run(): Promise<void> {
core.setOutput("uv-version", setupResult.version);
core.saveState(STATE_UV_VERSION, setupResult.version);
core.info(`Successfully installed uv version ${setupResult.version}`);
log.info(`Successfully installed uv version ${setupResult.version}`);
const detectedPythonVersion = await getPythonVersion(inputs);
core.setOutput("python-version", detectedPythonVersion);
@@ -95,11 +116,11 @@ async function run(): Promise<void> {
function detectEmptyWorkdir(inputs: SetupInputs): void {
if (fs.readdirSync(inputs.workingDirectory).length === 0) {
if (inputs.ignoreEmptyWorkdir) {
core.info(
log.info(
"Empty workdir detected. Ignoring because ignore-empty-workdir is enabled",
);
} else {
core.warning(
log.warning(
"Empty workdir detected. This may cause unexpected behavior. You can enable ignore-empty-workdir to mute this warning.",
);
}
@@ -120,7 +141,7 @@ async function setupUv(
});
const toolCacheResult = tryGetFromToolCache(arch, resolvedVersion);
if (toolCacheResult.installedPath) {
core.info(`Found uv in tool-cache for ${toolCacheResult.version}`);
log.info(`Found uv in tool-cache for ${toolCacheResult.version}`);
return {
uvDir: toolCacheResult.installedPath,
version: toolCacheResult.version,
@@ -134,6 +155,7 @@ async function setupUv(
inputs.checksum,
inputs.githubToken,
inputs.manifestFile,
inputs.downloadFromAstralMirror,
);
return {
@@ -147,39 +169,39 @@ function addUvToPathAndOutput(cachedPath: string): void {
core.saveState(STATE_UV_PATH, `${cachedPath}${path.sep}uv`);
core.setOutput("uvx-path", `${cachedPath}${path.sep}uvx`);
if (process.env.UV_NO_MODIFY_PATH !== undefined) {
core.info("UV_NO_MODIFY_PATH is set, not modifying PATH");
log.info("UV_NO_MODIFY_PATH is set, not modifying PATH");
} else {
core.addPath(cachedPath);
core.info(`Added ${cachedPath} to the path`);
log.info(`Added ${cachedPath} to the path`);
}
}
function addToolBinToPath(inputs: SetupInputs): void {
if (inputs.toolBinDir !== undefined) {
core.exportVariable("UV_TOOL_BIN_DIR", inputs.toolBinDir);
core.info(`Set UV_TOOL_BIN_DIR to ${inputs.toolBinDir}`);
log.info(`Set UV_TOOL_BIN_DIR to ${inputs.toolBinDir}`);
if (process.env.UV_NO_MODIFY_PATH !== undefined) {
core.info(
log.info(
`UV_NO_MODIFY_PATH is set, not adding ${inputs.toolBinDir} to path`,
);
} else {
core.addPath(inputs.toolBinDir);
core.info(`Added ${inputs.toolBinDir} to the path`);
log.info(`Added ${inputs.toolBinDir} to the path`);
}
} else {
if (process.env.UV_NO_MODIFY_PATH !== undefined) {
core.info("UV_NO_MODIFY_PATH is set, not adding user local bin to path");
log.info("UV_NO_MODIFY_PATH is set, not adding user local bin to path");
return;
}
if (process.env.XDG_BIN_HOME !== undefined) {
core.addPath(process.env.XDG_BIN_HOME);
core.info(`Added ${process.env.XDG_BIN_HOME} to the path`);
log.info(`Added ${process.env.XDG_BIN_HOME} to the path`);
} else if (process.env.XDG_DATA_HOME !== undefined) {
core.addPath(`${process.env.XDG_DATA_HOME}/../bin`);
core.info(`Added ${process.env.XDG_DATA_HOME}/../bin to the path`);
log.info(`Added ${process.env.XDG_DATA_HOME}/../bin to the path`);
} else {
core.addPath(`${process.env.HOME}/.local/bin`);
core.info(`Added ${process.env.HOME}/.local/bin to the path`);
log.info(`Added ${process.env.HOME}/.local/bin to the path`);
}
}
}
@@ -187,25 +209,25 @@ function addToolBinToPath(inputs: SetupInputs): void {
function setToolDir(inputs: SetupInputs): void {
if (inputs.toolDir !== undefined) {
core.exportVariable("UV_TOOL_DIR", inputs.toolDir);
core.info(`Set UV_TOOL_DIR to ${inputs.toolDir}`);
log.info(`Set UV_TOOL_DIR to ${inputs.toolDir}`);
}
}
function addPythonDirToPath(inputs: SetupInputs): void {
core.exportVariable("UV_PYTHON_INSTALL_DIR", inputs.pythonDir);
core.info(`Set UV_PYTHON_INSTALL_DIR to ${inputs.pythonDir}`);
log.info(`Set UV_PYTHON_INSTALL_DIR to ${inputs.pythonDir}`);
if (process.env.UV_NO_MODIFY_PATH !== undefined) {
core.info("UV_NO_MODIFY_PATH is set, not adding python dir to path");
log.info("UV_NO_MODIFY_PATH is set, not adding python dir to path");
} else {
core.addPath(inputs.pythonDir);
core.info(`Added ${inputs.pythonDir} to the path`);
log.info(`Added ${inputs.pythonDir} to the path`);
}
}
function setupPython(inputs: SetupInputs): void {
if (inputs.pythonVersion !== "") {
core.exportVariable("UV_PYTHON", inputs.pythonVersion);
core.info(`Set UV_PYTHON to ${inputs.pythonVersion}`);
log.info(`Set UV_PYTHON to ${inputs.pythonVersion}`);
}
}
@@ -217,7 +239,7 @@ async function activateEnvironment(inputs: SetupInputs): Promise<void> {
);
}
core.info(`Creating and activating python venv at ${inputs.venvPath}...`);
log.info(`Creating and activating python venv at ${inputs.venvPath}...`);
const venvArgs = [
"venv",
inputs.venvPath,
@@ -243,13 +265,13 @@ async function activateEnvironment(inputs: SetupInputs): Promise<void> {
function setCacheDir(inputs: SetupInputs): void {
if (inputs.cacheLocalPath !== undefined) {
if (inputs.cacheLocalPath.source === CacheLocalSource.Config) {
core.info(
log.info(
"Using cache-dir from uv config file, not modifying UV_CACHE_DIR",
);
return;
}
core.exportVariable("UV_CACHE_DIR", inputs.cacheLocalPath.path);
core.info(`Set UV_CACHE_DIR to ${inputs.cacheLocalPath.path}`);
log.info(`Set UV_CACHE_DIR to ${inputs.cacheLocalPath.path}`);
}
}
+2 -1
View File
@@ -10,6 +10,7 @@ import {
getLatestVersion,
type ManifestVersion,
} from "./download/manifest";
import * as log from "./utils/logging";
const VERSION_IN_CHECKSUM_KEY_PATTERN =
/-(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)$/;
@@ -26,7 +27,7 @@ async function run(): Promise<void> {
const latestKnownVersion = getLatestKnownVersionFromChecksums();
if (semver.lte(latestVersion, latestKnownVersion)) {
core.info(
log.info(
`Latest release (${latestVersion}) is not newer than the latest known version (${latestKnownVersion}). Skipping update.`,
);
return;
+11 -2
View File
@@ -14,8 +14,17 @@ export function getProxyAgent() {
return undefined;
}
export const fetch = async (url: string, opts: RequestInit) =>
await undiciFetch(url, {
export const fetch = async (url: string, opts: RequestInit) => {
// Merge timeout signal with any existing signal from opts
const timeoutSignal = AbortSignal.timeout(5_000);
const existingSignal = opts.signal;
const mergedSignal = existingSignal
? AbortSignal.any([timeoutSignal, existingSignal])
: timeoutSignal;
return await undiciFetch(url, {
dispatcher: getProxyAgent(),
...opts,
signal: mergedSignal,
});
};
+13 -5
View File
@@ -1,6 +1,7 @@
import path from "node:path";
import * as core from "@actions/core";
import { getConfigValueFromTomlFile } from "./config-file";
import * as log from "./logging";
export enum CacheLocalSource {
Input,
@@ -40,7 +41,9 @@ export interface SetupInputs {
pythonDir: string;
githubToken: string;
manifestFile?: string;
downloadFromAstralMirror: boolean;
addProblemMatchers: boolean;
quiet: boolean;
resolutionStrategy: ResolutionStrategy;
}
@@ -73,7 +76,10 @@ export function loadInputs(): SetupInputs {
const pythonDir = getUvPythonDir();
const githubToken = core.getInput("github-token");
const manifestFile = getManifestFile();
const downloadFromAstralMirror =
core.getInput("download-from-astral-mirror") === "true";
const addProblemMatchers = core.getInput("add-problem-matchers") === "true";
const quiet = core.getInput("quiet") === "true";
const resolutionStrategy = getResolutionStrategy();
return {
@@ -84,6 +90,7 @@ export function loadInputs(): SetupInputs {
cachePython,
cacheSuffix,
checksum,
downloadFromAstralMirror,
enableCache,
githubToken,
ignoreEmptyWorkdir,
@@ -93,6 +100,7 @@ export function loadInputs(): SetupInputs {
pruneCache,
pythonDir,
pythonVersion,
quiet,
resolutionStrategy,
restoreCache,
saveCache,
@@ -121,7 +129,7 @@ function getVenvPath(
const venvPathInput = core.getInput("venv-path");
if (venvPathInput !== "") {
if (!activateEnvironment) {
core.warning("venv-path is only used when activate-environment is true");
log.warning("venv-path is only used when activate-environment is true");
}
const tildeExpanded = expandTilde(venvPathInput);
return normalizePath(resolveRelativePath(workingDirectory, tildeExpanded));
@@ -192,7 +200,7 @@ function getCacheLocalPath(
return { path: cacheDirFromConfig, source: CacheLocalSource.Config };
}
if (process.env.UV_CACHE_DIR !== undefined) {
core.info(`UV_CACHE_DIR is already set to ${process.env.UV_CACHE_DIR}`);
log.info(`UV_CACHE_DIR is already set to ${process.env.UV_CACHE_DIR}`);
return { path: process.env.UV_CACHE_DIR, source: CacheLocalSource.Env };
}
if (enableCache) {
@@ -229,12 +237,12 @@ function getCacheDirFromConfig(
try {
const cacheDir = getConfigValueFromTomlFile(resolvedPath, "cache-dir");
if (cacheDir !== undefined) {
core.info(`Found cache-dir in ${resolvedPath}: ${cacheDir}`);
log.info(`Found cache-dir in ${resolvedPath}: ${cacheDir}`);
return cacheDir;
}
} catch (err) {
const message = (err as Error).message;
core.warning(`Error while parsing ${filePath}: ${message}`);
log.warning(`Error while parsing ${filePath}: ${message}`);
return undefined;
}
}
@@ -243,7 +251,7 @@ function getCacheDirFromConfig(
export function getUvPythonDir(): string {
if (process.env.UV_PYTHON_INSTALL_DIR !== undefined) {
core.info(
log.info(
`UV_PYTHON_INSTALL_DIR is already set to ${process.env.UV_PYTHON_INSTALL_DIR}`,
);
return process.env.UV_PYTHON_INSTALL_DIR;
+21
View File
@@ -0,0 +1,21 @@
import * as core from "@actions/core";
let quiet: boolean | undefined;
function isQuiet(): boolean {
if (quiet === undefined) {
quiet =
typeof core.getInput === "function" && core.getInput("quiet") === "true";
}
return quiet;
}
export function info(msg: string): void {
if (!isQuiet()) {
core.info(msg);
}
}
export const warning = core.warning;
export const error = core.error;
export const debug = core.debug;
+5 -7
View File
@@ -1,6 +1,6 @@
import fs from "node:fs";
import * as core from "@actions/core";
import { getConfigValueFromTomlContent } from "../utils/config-file";
import * as log from "../utils/logging";
import {
getUvVersionFromParsedPyproject,
getUvVersionFromRequirementsText,
@@ -62,10 +62,10 @@ const VERSION_FILE_PARSERS: VersionFileParser[] = [
export function getParsedVersionFile(
filePath: string,
): ParsedVersionFile | undefined {
core.info(`Trying to find version for uv in: ${filePath}`);
log.info(`Trying to find version for uv in: ${filePath}`);
if (!fs.existsSync(filePath)) {
core.info(`Could not find file: ${filePath}`);
log.info(`Could not find file: ${filePath}`);
return undefined;
}
@@ -81,15 +81,13 @@ export function getParsedVersionFile(
}
const normalizedSpecifier = normalizeVersionSpecifier(specifier);
core.info(`Found version for uv in ${filePath}: ${normalizedSpecifier}`);
log.info(`Found version for uv in ${filePath}: ${normalizedSpecifier}`);
return {
format: parser.format,
specifier: normalizedSpecifier,
};
} catch (error) {
core.warning(
`Error while parsing ${filePath}: ${(error as Error).message}`,
);
log.warning(`Error while parsing ${filePath}: ${(error as Error).message}`);
return undefined;
}
}
+2 -1
View File
@@ -4,6 +4,7 @@ import * as pep440 from "@renovatebot/pep440";
import * as semver from "semver";
import { getAllVersions, getLatestVersion } from "../download/manifest";
import type { ResolutionStrategy } from "../utils/inputs";
import * as log from "../utils/logging";
import {
type ParsedVersionSpecifier,
parseVersionSpecifier,
@@ -56,7 +57,7 @@ class LatestVersionResolver implements ConcreteVersionResolver {
context.parsedSpecifier.kind === "range" &&
context.parsedSpecifier.isSimpleMinimumVersionSpecifier
) {
core.info("Found minimum version specifier, using latest version");
log.info("Found minimum version specifier, using latest version");
}
const latestVersion = await getLatestVersion(context.manifestUrl);
+2 -2
View File
@@ -1,5 +1,5 @@
import * as path from "node:path";
import * as core from "@actions/core";
import * as log from "../utils/logging";
import { getParsedVersionFile } from "./file-parser";
import { normalizeVersionSpecifier } from "./specifier";
import type {
@@ -111,7 +111,7 @@ export class WorkspaceVersionResolver implements VersionRequestResolver {
};
}
core.info(
log.info(
"Could not determine uv version from uv.toml or pyproject.toml. Falling back to latest.",
);
return undefined;