Compare commits

..

No commits in common. "main" and "v5.2.1" have entirely different histories.
main ... v5.2.1

32 changed files with 54293 additions and 111999 deletions

View file

View file

@ -1,9 +0,0 @@
self-hosted-runner:
# Custom labels of self-hosted or large GitHub hosted runners
# so that actionlint knows that they are not a typo
labels:
- selfhosted-ubuntu-arm64
# Configuration variables in array of strings defined in your repository or
# organization. `null` means disabling configuration variables check.
# Empty array means no configuration variable is allowed.
config-variables: null

49
.github/workflows/check-dist.yml vendored Normal file
View file

@ -0,0 +1,49 @@
# `dist/index.js` is a special file in Actions.
# When you reference an action with `uses:` in a workflow,
# `index.js` is the code that will run.
# For our project, we generate this file through a build process from other source files.
# We need to make sure the checked-in `index.js` actually matches what we expect it to be.
name: Check dist/
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
jobs:
check-dist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
- name: Rebuild the dist/ directory
run: |
npm run build
npm run package
- name: Compare the expected and actual dist/ directories
run: |
if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then
echo "Detected uncommitted changes after build. See status below:"
git diff --text -v
exit 1
fi
id: diff
# If index.js was different than expected, upload the expected version as an artifact
- uses: actions/upload-artifact@v4
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
with:
name: dist
path: dist/

View file

@ -12,14 +12,13 @@
name: "CodeQL"
on:
workflow_dispatch:
push:
branches:
- main
branches: [main]
pull_request:
# The branches below must be a subset of the branches above
branches:
- main
branches: [main]
schedule:
- cron: "31 7 * * 3"
jobs:
analyze:

View file

@ -3,20 +3,17 @@ name: Release Drafter
# yamllint disable-line rule:truthy
on:
workflow_dispatch:
push:
branches:
- main
workflow_dispatch:
jobs:
update_release_draft:
name: ✏️ Draft release
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: read
steps:
- name: 🚀 Run Release Drafter
uses: release-drafter/release-drafter@v6.1.0
uses: release-drafter/release-drafter@v6.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -0,0 +1,43 @@
name: "test-cache-windows"
on:
pull_request:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test-setup-cache:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup with cache
uses: ./
with:
enable-cache: true
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}
- run: uv sync
working-directory: __tests__\fixtures\uv-project
test-restore-cache:
runs-on: windows-latest
needs: test-setup-cache
steps:
- uses: actions/checkout@v4
- name: Restore with cache
id: restore
uses: ./
with:
enable-cache: true
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}
- name: Cache was hit
run: |
if ($env:CACHE_HIT -ne "true") {
exit 1
}
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
- run: uv sync
working-directory: __tests__\fixtures\uv-project

229
.github/workflows/test-cache.yml vendored Normal file
View file

@ -0,0 +1,229 @@
name: "test-cache"
on:
pull_request:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test-setup-cache:
runs-on: ${{ matrix.os }}
strategy:
matrix:
enable-cache: [ "true", "false", "auto" ]
os: ["ubuntu-latest", "selfhosted-ubuntu-arm64"]
steps:
- uses: actions/checkout@v4
- name: Setup with cache
uses: ./
with:
enable-cache: ${{ matrix.enable-cache }}
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-${{ matrix.os }}-${{ matrix.enable-cache }}
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-restore-cache:
runs-on: ${{ matrix.os }}
strategy:
matrix:
enable-cache: [ "true", "false", "auto" ]
os: [ "ubuntu-latest", "selfhosted-ubuntu-arm64" ]
needs: test-setup-cache
steps:
- uses: actions/checkout@v4
- name: Restore with cache
id: restore
uses: ./
with:
enable-cache: ${{ matrix.enable-cache }}
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-${{ matrix.os }}-${{ matrix.enable-cache }}
- name: Cache was hit
if: ${{ matrix.enable-cache == 'true' || (matrix.enable-cache == 'auto' && matrix.os == 'ubuntu-latest') }}
run: |
if [ "$CACHE_HIT" != "true" ]; then
exit 1
fi
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
- name: Cache was not hit
if: ${{ matrix.enable-cache == 'false' || (matrix.enable-cache == 'auto' && matrix.os == 'selfhosted-ubuntu-arm64') }}
run: |
if [ "$CACHE_HIT" == "true" ]; then
exit 1
fi
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-setup-cache-requirements-txt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup with cache
uses: ./
with:
enable-cache: true
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-requirements-txt
- run: |
uv venv
uv pip install -r requirements.txt
working-directory: __tests__/fixtures/requirements-txt-project
test-restore-cache-requirements-txt:
runs-on: ubuntu-latest
needs: test-setup-cache
steps:
- uses: actions/checkout@v4
- name: Restore with cache
id: restore
uses: ./
with:
enable-cache: true
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-requirements-txt
- name: Cache was hit
run: |
if [ "$CACHE_HIT" != "true" ]; then
exit 1
fi
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
- run: |
uv venv
uv pip install -r requirements.txt
working-directory: __tests__/fixtures/requirements-txt-project
test-setup-cache-dependency-glob:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup with cache
uses: ./
with:
enable-cache: true
cache-dependency-glob: |
__tests__/fixtures/uv-project/uv.lock
**/pyproject.toml
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-dependency-glob
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-restore-cache-dependency-glob:
runs-on: ubuntu-latest
needs: test-setup-cache-dependency-glob
steps:
- uses: actions/checkout@v4
- name: Change pyproject.toml
run: |
echo '[tool.uv]' >> __tests__/fixtures/uv-project/pyproject.toml
echo 'dev-dependencies = []' >> __tests__/fixtures/uv-project/pyproject.toml
- name: Restore with cache
id: restore
uses: ./
with:
enable-cache: true
cache-dependency-glob: |
__tests__/fixtures/uv-project/uv.lock
**/pyproject.toml
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-dependency-glob
ignore-nothing-to-cache: true
- name: Cache was not hit
run: |
if [ "$CACHE_HIT" == "true" ]; then
exit 1
fi
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
test-setup-cache-local:
runs-on: selfhosted-ubuntu-arm64
steps:
- uses: actions/checkout@v4
- name: Setup with cache
uses: ./
with:
enable-cache: true
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-local
cache-local-path: /tmp/uv-cache
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-restore-cache-local:
runs-on: selfhosted-ubuntu-arm64
needs: test-setup-cache-local
steps:
- uses: actions/checkout@v4
- name: Restore with cache
id: restore
uses: ./
with:
enable-cache: true
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-local
cache-local-path: /tmp/uv-cache
- name: Cache was hit
run: |
if [ "$CACHE_HIT" != "true" ]; then
exit 1
fi
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-tilde-expansion-cache-local-path:
runs-on: selfhosted-ubuntu-arm64
steps:
- uses: actions/checkout@v4
- name: Create cache directory
run: mkdir -p ~/uv-cache
shell: bash
- name: Setup with cache
uses: ./
with:
cache-local-path: ~/uv-cache/cache-local-path
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-tilde-expansion-cache-dependency-glob:
runs-on: selfhosted-ubuntu-arm64
steps:
- uses: actions/checkout@v4
- name: Create cache directory
run: mkdir -p ~/uv-cache
shell: bash
- name: Create cache dependency glob file
run: touch ~/uv-cache.glob
shell: bash
- name: Setup with cache
uses: ./
with:
enable-cache: true
cache-local-path: ~/uv-cache/cache-dependency-glob
cache-dependency-glob: "~/uv-cache.glob"
- run: uv sync
working-directory: __tests__/fixtures/uv-project
cleanup-tilde-expansion-tests:
needs:
- test-tilde-expansion-cache-local-path
- test-tilde-expansion-cache-dependency-glob
runs-on: selfhosted-ubuntu-arm64
steps:
- name: Remove cache directory
run: rm -rf ~/uv-cache
shell: bash
- name: Remove cache dependency glob file
run: rm -f ~/uv-cache.glob
shell: bash
test-no-python-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Fake pyproject.toml at root
run: cp __tests__/fixtures/old-python-constraint-project/pyproject.toml pyproject.toml
- name: Setup with cache
uses: ./
with:
enable-cache: true
- run: uv sync
working-directory: __tests__/fixtures/old-python-constraint-project

27
.github/workflows/test-windows.yml vendored Normal file
View file

@ -0,0 +1,27 @@
name: "test-windows"
on:
pull_request:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test-default-version:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Should not be on path
run: |
if (!(Get-Command -Name "uv" -ErrorAction SilentlyContinue)) {
exit 0
} else {
exit 1
}
- name: Setup uv
uses: ./
- run: uv sync
working-directory: __tests__\fixtures\uv-project

View file

@ -1,9 +1,6 @@
name: "test"
on:
workflow_dispatch:
pull_request:
branches:
- main
push:
branches:
- main
@ -12,16 +9,11 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
lint:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Actionlint
uses: eifinger/actionlint-action@23c85443d840cd73bbecb9cddfc933cc21649a38 # v1.9.1
- uses: actions/setup-node@v4
with:
node-version: "20"
@ -31,26 +23,18 @@ jobs:
npm run all
- name: Make sure no changes from linters are detected
run: |
git diff --exit-code || (echo "::error::Please run 'npm run all' to fix the issues" && exit 1)
git diff --exit-code
test-default-version:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, macos-14, windows-latest]
os: [ubuntu-latest, macos-latest, macos-14]
steps:
- uses: actions/checkout@v4
- name: Install latest version
id: setup-uv
uses: ./
- run: uv sync
working-directory: __tests__/fixtures/uv-project
shell: bash
- name: Check uv-path is set
run: ${{ steps.setup-uv.outputs.uv-path }} --version
- name: Check uvx-path is set
run: ${{ steps.setup-uv.outputs.uvx-path }} --version
test-specific-version:
runs-on: ubuntu-latest
strategy:
@ -64,7 +48,6 @@ jobs:
version: ${{ matrix.uv-version }}
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-semver-range:
runs-on: ubuntu-latest
steps:
@ -81,24 +64,6 @@ jobs:
fi
env:
UV_VERSION: ${{ steps.setup-uv.outputs.uv-version }}
test-pep440-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install version 0.4.30
id: setup-uv
uses: ./
with:
version: ">=0.4.25,<0.5"
- name: Correct version gets installed
run: |
if [ "$UV_VERSION" != "0.4.30" ]; then
exit 1
fi
env:
UV_VERSION: ${{ steps.setup-uv.outputs.uv-version }}
test-pyproject-file-version:
runs-on: ubuntu-latest
steps:
@ -115,19 +80,6 @@ jobs:
fi
env:
UV_VERSION: ${{ steps.setup-uv.outputs.uv-version }}
test-malformed-pyproject-file-fallback:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install using malformed pyproject.toml
id: setup-uv
uses: ./
with:
pyproject-file: "__tests__/fixtures/malformed-pyproject-toml-project/pyproject.toml"
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-uv-file-version:
runs-on: ubuntu-latest
steps:
@ -145,14 +97,17 @@ jobs:
fi
env:
UV_VERSION: ${{ steps.setup-uv.outputs.uv-version }}
test-checksum:
runs-on: ${{ matrix.inputs.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
inputs:
- os: ubuntu-latest
os: [ubuntu-latest, macos-latest]
checksum:
["4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd"]
exclude:
- os: macos-latest
checksum: "4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd"
include:
- os: macos-latest
checksum: "a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218"
steps:
@ -161,10 +116,9 @@ jobs:
uses: ./
with:
version: "0.3.2"
checksum: ${{ matrix.inputs.checksum }}
checksum: ${{ matrix.checksum }}
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-with-explicit-token:
runs-on: ubuntu-latest
steps:
@ -175,7 +129,6 @@ jobs:
github-token: ${{ secrets.GITHUB_TOKEN }}
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-uvx:
runs-on: ubuntu-latest
steps:
@ -183,7 +136,6 @@ jobs:
- name: Install default version
uses: ./
- run: uvx ruff --version
test-tool-install:
runs-on: ${{ matrix.os }}
strategy:
@ -201,7 +153,6 @@ jobs:
uses: ./
- run: uv tool install ruff
- run: ruff --version
test-tilde-expansion-tool-dirs:
runs-on: selfhosted-ubuntu-arm64
steps:
@ -221,7 +172,6 @@ jobs:
echo "UV_TOOL_DIR does not contain /home/ubuntu/tool-dir: $UV_TOOL_DIR"
exit 1
fi
test-python-version:
runs-on: ubuntu-latest
strategy:
@ -250,271 +200,3 @@ jobs:
exit 1
fi
shell: bash
test-musl:
runs-on: ubuntu-latest
container: alpine
steps:
- uses: actions/checkout@v4
- name: Install latest version
uses: ./
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-setup-cache:
runs-on: ${{ matrix.os }}
strategy:
matrix:
enable-cache: [ "true", "false", "auto" ]
os: [ "ubuntu-latest", "selfhosted-ubuntu-arm64", "windows-latest" ]
steps:
- uses: actions/checkout@v4
- name: Setup with cache
uses: ./
with:
enable-cache: ${{ matrix.enable-cache }}
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-${{ matrix.os }}-${{ matrix.enable-cache }}
- run: uv sync
working-directory: __tests__/fixtures/uv-project
shell: bash
test-restore-cache:
runs-on: ${{ matrix.os }}
strategy:
matrix:
enable-cache: [ "true", "false", "auto" ]
os: [ "ubuntu-latest", "selfhosted-ubuntu-arm64", "windows-latest" ]
needs: test-setup-cache
steps:
- uses: actions/checkout@v4
- name: Restore with cache
id: restore
uses: ./
with:
enable-cache: ${{ matrix.enable-cache }}
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-${{ matrix.os }}-${{ matrix.enable-cache }}
- name: Cache was hit
if: ${{ matrix.enable-cache == 'true' || (matrix.enable-cache == 'auto' && matrix.os == 'ubuntu-latest') }}
run: |
if [ "$CACHE_HIT" != "true" ]; then
exit 1
fi
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
shell: bash
- name: Cache was not hit
if: ${{ matrix.enable-cache == 'false' || (matrix.enable-cache == 'auto' && matrix.os == 'selfhosted-ubuntu-arm64') }}
run: |
if [ "$CACHE_HIT" == "true" ]; then
exit 1
fi
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
shell: bash
- run: uv sync
working-directory: __tests__/fixtures/uv-project
shell: bash
test-setup-cache-requirements-txt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup with cache
uses: ./
with:
enable-cache: true
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-requirements-txt
- run: |
uv venv
uv pip install -r requirements.txt
working-directory: __tests__/fixtures/requirements-txt-project
test-restore-cache-requirements-txt:
runs-on: ubuntu-latest
needs: test-setup-cache
steps:
- uses: actions/checkout@v4
- name: Restore with cache
id: restore
uses: ./
with:
enable-cache: true
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-requirements-txt
- name: Cache was hit
run: |
if [ "$CACHE_HIT" != "true" ]; then
exit 1
fi
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
- run: |
uv venv
uv pip install -r requirements.txt
working-directory: __tests__/fixtures/requirements-txt-project
test-setup-cache-dependency-glob:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup with cache
uses: ./
with:
enable-cache: true
cache-dependency-glob: |
__tests__/fixtures/uv-project/uv.lock
**/pyproject.toml
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-dependency-glob
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-restore-cache-dependency-glob:
runs-on: ubuntu-latest
needs: test-setup-cache-dependency-glob
steps:
- uses: actions/checkout@v4
- name: Change pyproject.toml
run: |
echo '[tool.uv]' >> __tests__/fixtures/uv-project/pyproject.toml
echo 'dev-dependencies = []' >> __tests__/fixtures/uv-project/pyproject.toml
- name: Restore with cache
id: restore
uses: ./
with:
enable-cache: true
cache-dependency-glob: |
__tests__/fixtures/uv-project/uv.lock
**/pyproject.toml
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-dependency-glob
ignore-nothing-to-cache: true
- name: Cache was not hit
run: |
if [ "$CACHE_HIT" == "true" ]; then
exit 1
fi
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
test-setup-cache-local:
runs-on: selfhosted-ubuntu-arm64
steps:
- uses: actions/checkout@v4
- name: Setup with cache
uses: ./
with:
enable-cache: true
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-local
cache-local-path: /tmp/uv-cache
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-restore-cache-local:
runs-on: selfhosted-ubuntu-arm64
needs: test-setup-cache-local
steps:
- uses: actions/checkout@v4
- name: Restore with cache
id: restore
uses: ./
with:
enable-cache: true
cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }}-test-setup-cache-local
cache-local-path: /tmp/uv-cache
- name: Cache was hit
run: |
if [ "$CACHE_HIT" != "true" ]; then
exit 1
fi
env:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-tilde-expansion-cache-local-path:
runs-on: selfhosted-ubuntu-arm64
steps:
- uses: actions/checkout@v4
- name: Create cache directory
run: mkdir -p ~/uv-cache
shell: bash
- name: Setup with cache
uses: ./
with:
cache-local-path: ~/uv-cache/cache-local-path
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-tilde-expansion-cache-dependency-glob:
runs-on: selfhosted-ubuntu-arm64
steps:
- uses: actions/checkout@v4
- name: Create cache directory
run: mkdir -p ~/uv-cache
shell: bash
- name: Create cache dependency glob file
run: touch ~/uv-cache.glob
shell: bash
- name: Setup with cache
uses: ./
with:
enable-cache: true
cache-local-path: ~/uv-cache/cache-dependency-glob
cache-dependency-glob: "~/uv-cache.glob"
- run: uv sync
working-directory: __tests__/fixtures/uv-project
cleanup-tilde-expansion-tests:
needs:
- test-tilde-expansion-cache-local-path
- test-tilde-expansion-cache-dependency-glob
if: always()
runs-on: selfhosted-ubuntu-arm64
steps:
- name: Remove cache directory
run: rm -rf ~/uv-cache
shell: bash
- name: Remove cache dependency glob file
run: rm -f ~/uv-cache.glob
shell: bash
test-no-python-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Fake pyproject.toml at root
run: cp __tests__/fixtures/old-python-constraint-project/pyproject.toml pyproject.toml
- name: Setup with cache
uses: ./
with:
enable-cache: true
- run: uv sync
working-directory: __tests__/fixtures/old-python-constraint-project
all-tests-passed:
runs-on: ubuntu-latest
needs:
- lint
- test-default-version
- test-specific-version
- test-semver-range
- test-pep440-version
- test-pyproject-file-version
- test-malformed-pyproject-file-fallback
- test-uv-file-version
- test-checksum
- test-with-explicit-token
- test-uvx
- test-tool-install
- test-tilde-expansion-tool-dirs
- test-python-version
- test-musl
- test-restore-cache
- test-restore-cache-requirements-txt
- test-restore-cache-dependency-glob
- test-restore-cache-local
- test-tilde-expansion-cache-local-path
- test-tilde-expansion-cache-dependency-glob
- cleanup-tilde-expansion-tests
- test-no-python-version
if: always()
steps:
- name: All tests passed
run: |
echo "All jobs passed: ${{ !contains(needs.*.result, 'failure') }}"
# shellcheck disable=SC2242
exit ${{ contains(needs.*.result, 'failure') && 1 || 0 }}

View file

@ -1,15 +1,10 @@
name: "Update known checksums"
on:
workflow_dispatch:
schedule:
- cron: "0 4 * * *" # Run every day at 4am UTC
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
@ -22,7 +17,7 @@ jobs:
src/download/checksum/known-checksums.ts ${{ secrets.GITHUB_TOKEN }}
- run: npm install && npm run all
- name: Create Pull Request
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6
with:
commit-message: "chore: update known checksums"
title:

View file

@ -1,6 +1,7 @@
---
name: Update Major Minor Tags
# yamllint disable-line rule:truthy
on:
push:
branches-ignore:
@ -12,36 +13,7 @@ jobs:
update_major_minor_tags:
name: Make sure major and minor tags are up to date on a patch release
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Update Major Minor Tags
run: |
set -x
cd "${GITHUB_WORKSPACE}" || exit
# Set up variables.
TAG="${GITHUB_REF#refs/tags/}" # v1.2.3
MINOR="${TAG%.*}" # v1.2
MAJOR="${MINOR%.*}" # v1
if [ "${GITHUB_REF}" = "${TAG}" ]; then
echo "This workflow is not triggered by tag push: GITHUB_REF=${GITHUB_REF}"
exit 1
fi
MESSAGE="Release ${TAG}"
# Set up Git.
git config user.name "${GITHUB_ACTOR}"
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
# Update MAJOR/MINOR tag
git tag -fa "${MAJOR}" -m "${MESSAGE}"
git tag -fa "${MINOR}" -m "${MESSAGE}"
# Push
git push --force origin "${MINOR}"
git push --force origin "${MAJOR}"
- name: Run Update semver
uses: haya14busa/action-update-semver@v1.2.1

View file

@ -11,11 +11,9 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
## Contents
- [Usage](#usage)
- [Install a required-version or latest (default)](#install-a-required-version-or-latest-default)
- [Install the latest version](#install-the-latest-version)
- [Install the latest version (default)](#install-the-latest-version-default)
- [Install a specific version](#install-a-specific-version)
- [Install a version by supplying a semver range or pep440 specifier](#install-a-version-by-supplying-a-semver-range-or-pep440-specifier)
- [Install a required-version](#install-a-required-version)
- [Install a version by supplying a semver range](#install-a-version-by-supplying-a-semver-range)
- [Python version](#python-version)
- [Validate checksum](#validate-checksum)
- [Enable Caching](#enable-caching)
@ -63,10 +61,9 @@ For an example workflow, see
version: "0.4.4"
```
### Install a version by supplying a semver range or pep440 specifier
### Install a version by supplying a semver range
You can specify a [semver range](https://github.com/npm/node-semver?tab=readme-ov-file#ranges)
or [pep440 specifier](https://peps.python.org/pep-0440/#version-specifiers)
to install the latest version that satisfies the range.
```yaml
@ -83,13 +80,6 @@ to install the latest version that satisfies the range.
version: "0.4.x"
```
```yaml
- name: Install a pep440-specifier-satisfying version of uv
uses: astral-sh/setup-uv@v5
with:
version: ">=0.4.25,<0.5"
```
### Install a required-version
You can specify a [required-version](https://docs.astral.sh/uv/reference/settings/#required-version)
@ -164,7 +154,6 @@ are automatically verified by this action. The sha256 hashes can be found on the
If you enable caching, the [uv cache](https://docs.astral.sh/uv/concepts/cache/) will be uploaded to
the GitHub Actions cache. This can speed up runs that reuse the cache by several minutes.
Caching is enabled by default on GitHub-hosted runners.
> [!TIP]
>
@ -199,8 +188,6 @@ changes. If you use relative paths, they are relative to the repository root.
> [!NOTE]
>
> You can look up supported patterns [here](https://github.com/actions/toolkit/tree/main/packages/glob#patterns)
>
> The default is
> ```yaml
> cache-dependency-glob: |
@ -289,20 +276,6 @@ If you want to ignore this, set the `ignore-nothing-to-cache` input to `true`.
ignore-nothing-to-cache: true
```
### Ignore empty workdir
By default, the action will warn if the workdir is empty, because this is usually the case when
`actions/checkout` is configured to run after `setup-uv`, which is not supported.
If you want to ignore this, set the `ignore-empty-workdir` input to `true`.
```yaml
- name: Ignore empty workdir
uses: astral-sh/setup-uv@v5
with:
ignore-empty-workdir: true
```
### GitHub authentication token
This action uses the GitHub API to fetch the uv release artifacts. To avoid hitting the GitHub API
@ -437,47 +410,6 @@ output:
run: echo "Installed uv version is ${{ steps.setup-uv.outputs.uv-version }}"
```
### Should I include the resolution strategy in the cache key?
**Yes!**
The cache key gets computed by using the [cache-dependency-glob](#cache-dependency-glob).
If you
have jobs which use the same dependency definitions from `requirements.txt` or
`pyproject.toml` but different
[resolution strategies](https://docs.astral.sh/uv/concepts/resolution/#resolution-strategy),
each job will have different dependencies or dependency versions.
But if you do not add the resolution strategy as a [cache-suffix](#enable-caching),
they will have the same cache key.
This means the first job which starts uploading its cache will win and all other job will fail
uploading the cache,
because they try to upload with the same cache key.
You might see errors like
`Failed to save: Failed to CreateCacheEntry: Received non-retryable error: Failed request: (409) Conflict: cache entry with the same key, version, and scope already exists`
### Why do I see warnings like `No GitHub Actions cache found for key`
When a workflow runs for the first time on a branch and has a new cache key, because the
[cache-dependency-glob](#cache-dependency-glob) found changed files (changed dependencies),
the cache will not be found and the warning `No GitHub Actions cache found for key` will be printed.
While this might be irritating at first, it is expected behaviour and the cache will be created
and reused in later workflows.
The reason for the warning is, that we have to way to know if this is the first run of a new
cache key or the user accidentally misconfigured the [cache-dependency-glob](#cache-dependency-glob)
or [cache-suffix](#enable-caching) and the cache never gets used.
### Do I have to run `actions/checkout` before or after `setup-uv`?
Some workflows need uv but do not need to access the repository content.
But **if** you need to access the repository content, you have run `actions/checkout` before running `setup-uv`.
Running `actions/checkout` after `setup-uv` **is not supported**.
## Acknowledgements
`setup-uv` was initially written and published by [Kevin Stillhammer](https://github.com/eifinger)

View file

@ -1,6 +0,0 @@
def main():
print("Hello from malformed-pyproject-toml-project!")
if __name__ == "__main__":
main()

View file

@ -1,9 +0,0 @@
[project]
name = "malformed-pyproject-toml-project"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = []
[malformed-toml

View file

@ -45,9 +45,6 @@ inputs:
ignore-nothing-to-cache:
description: "Ignore when nothing is found to cache."
default: "false"
ignore-empty-workdir:
description: "Ignore when the working directory is empty."
default: "false"
tool-dir:
description: "Custom path to set UV_TOOL_DIR to."
required: false
@ -57,10 +54,6 @@ inputs:
outputs:
uv-version:
description: "The installed uv version. Useful when using latest."
uv-path:
description: "The path to the installed uv binary."
uvx-path:
description: "The path to the installed uvx binary."
cache-hit:
description: "A boolean value to indicate a cache entry was found"
runs:

47464
dist/save-cache/index.js generated vendored

File diff suppressed because one or more lines are too long

68803
dist/setup/index.js generated vendored

File diff suppressed because one or more lines are too long

46676
dist/update-known-checksums/index.js generated vendored

File diff suppressed because one or more lines are too long

1426
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -23,27 +23,24 @@
"author": "@eifinger",
"license": "MIT",
"dependencies": {
"@actions/cache": "^4.0.3",
"@actions/cache": "^4.0.0",
"@actions/core": "^1.11.1",
"@actions/exec": "^1.1.1",
"@actions/github": "^6.0.0",
"@actions/glob": "^0.5.0",
"@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.2",
"@octokit/core": "^6.1.4",
"@octokit/plugin-paginate-rest": "^11.4.3",
"@octokit/plugin-rest-endpoint-methods": "^13.3.1",
"@renovatebot/pep440": "^4.1.0",
"smol-toml": "^1.3.1",
"undici": "^7.5.0"
"@actions/tool-cache": "^2.0.1",
"@octokit/rest": "^21.1.0",
"smol-toml": "^1.3.1"
},
"devDependencies": {
"@biomejs/biome": "1.9.4",
"@types/node": "^22.13.10",
"@types/node": "^22.10.6",
"@types/semver": "^7.5.8",
"@vercel/ncc": "^0.38.3",
"jest": "^29.7.0",
"js-yaml": "^4.1.0",
"ts-jest": "^29.2.6",
"typescript": "^5.8.2"
"ts-jest": "^29.2.5",
"typescript": "^5.7.3"
}
}

View file

@ -53,8 +53,7 @@ async function computeKeys(): Promise<string> {
}
const suffix = cacheSuffix ? `-${cacheSuffix}` : "";
const pythonVersion = await getPythonVersion();
const platform = await getPlatform();
return `setup-uv-${CACHE_VERSION}-${getArch()}-${platform}-${pythonVersion}${cacheDependencyPathHash}${suffix}`;
return `setup-uv-${CACHE_VERSION}-${getArch()}-${getPlatform()}-${pythonVersion}${cacheDependencyPathHash}${suffix}`;
}
async function getPythonVersion(): Promise<string> {

View file

@ -1,813 +1,5 @@
// AUTOGENERATED_DO_NOT_EDIT
export const KNOWN_CHECKSUMS: { [key: string]: string } = {
"aarch64-apple-darwin-0.6.12":
"fab8db5b62da1e945524b8d1a9d4946fcc6d9b77ec0cab423d953e82159967ac",
"aarch64-pc-windows-msvc-0.6.12":
"d72d8cf0633dc40198a868e906442bc6bacfa38c3b807c26bcbf3fc364af5d96",
"aarch64-unknown-linux-gnu-0.6.12":
"d867553e5ea19f9cea08e564179d909c69ecfce5e7e382099d1844dbf1c9878c",
"aarch64-unknown-linux-musl-0.6.12":
"e999ae0679bfabe8a1e6343b8b204a531a6c851e315caff9b326f34182884af6",
"arm-unknown-linux-musleabihf-0.6.12":
"da8d0700ec5e0cb0b2f20cc20834b48d5927197042e49bea5eef7fd139d72fe9",
"armv7-unknown-linux-gnueabihf-0.6.12":
"b5dedaca5fbb46f412c5426102eec7c9f10003a67dd41b943232e4a2b6a5cc16",
"armv7-unknown-linux-musleabihf-0.6.12":
"8fb6c1b16f8b3c2aa4073cd02729432f9afd9389f110850aed8228464fa37398",
"i686-pc-windows-msvc-0.6.12":
"23431d1a798aee234bd7b271bce306fbd760c91d98e19a314ddd890a065aff83",
"i686-unknown-linux-gnu-0.6.12":
"d0774e847de6c0fe6a9c3aba44b7d400261d01171ae32da60c472eb410691785",
"i686-unknown-linux-musl-0.6.12":
"02e4503b244cbb18d2fa14b3a7e9433fe437e767ffcbfc39c5f0fdff9b8dd65e",
"powerpc64-unknown-linux-gnu-0.6.12":
"046b43cf8af74d8892e9559e8b3181ec1e4045a4910a4dfdd00b110694c93188",
"powerpc64le-unknown-linux-gnu-0.6.12":
"e61ba76fa6dfd6041c985881c024385c31d544d6a182d1a050da7594438f073f",
"s390x-unknown-linux-gnu-0.6.12":
"6eae67730009eb4f8ad7a4e5733ab69b6c4dcb21b482f4567015e3e6d0729357",
"x86_64-apple-darwin-0.6.12":
"5b6ee08766de11dc49ee9e292333e8b46ef2ceaaa3ebb0388467e114fca2ed8c",
"x86_64-pc-windows-msvc-0.6.12":
"30fdf26c209f0cb7c97d3b08a26ab4e78ce5ae0e031b88798cbaccc0f24f452b",
"x86_64-unknown-linux-gnu-0.6.12":
"eec3ccf53616e00905279a302bc043451bd96ca71a159a2ac3199452ac914c26",
"x86_64-unknown-linux-musl-0.6.12":
"25f055a556576003fefc0f5fd213bf3c6df1824d4c7fc35e6361fbecc420139f",
"aarch64-apple-darwin-0.6.11":
"a5b14a92448b908d1a5415f2a49522010fef8972695e2f7bbb4e5c5f88024573",
"aarch64-pc-windows-msvc-0.6.11":
"858e523d9498a332aab093852c30c524bbd94622137dd6f773d19da14ac920b4",
"aarch64-unknown-linux-gnu-0.6.11":
"5384098938893f060b8b47e606918c271a419b52eedda1546a4d6febae4b0c06",
"aarch64-unknown-linux-musl-0.6.11":
"de20c247ef6a6bc0948e611ace3f3f321c098d7bf75b737f169c1db06b4f4d69",
"arm-unknown-linux-musleabihf-0.6.11":
"76a1558e2cb8d0e5e646a0cf8a204b53d3779221bea3af50b204c8d28532daa7",
"armv7-unknown-linux-gnueabihf-0.6.11":
"5abacc141dabb6071fcc3a19a301874083c6cc4a36d6eb6b0654a276efbfd33b",
"armv7-unknown-linux-musleabihf-0.6.11":
"cf05ab1fe44494cc490ec5c29578e200a3c195b395e67fe62d45be9a4c897d06",
"i686-pc-windows-msvc-0.6.11":
"331e94f1db12fa92266f764f63586d8c18e6cea5d37d430af2eb7673f108e874",
"i686-unknown-linux-gnu-0.6.11":
"b9d193f28736c3166f533c61fc4a2e8e8a4c7961c6bd46e17c3db66f750ef4b6",
"i686-unknown-linux-musl-0.6.11":
"dfa735baacc13ba9962fb9b7167599407aa733bfc7853824a785773769c58ed5",
"powerpc64-unknown-linux-gnu-0.6.11":
"b79060dc0726a1fc8a4458a80fb1ce0489198dd3ad334fe54bb7926e473750ed",
"powerpc64le-unknown-linux-gnu-0.6.11":
"ebd219d0b5f0a60a584ebb88e1379c616e746cabaaf79608d54be5919d742ee3",
"s390x-unknown-linux-gnu-0.6.11":
"3b5563127303c16e0531c1fd13356763decc0ea91b860eb5f63c3108a275aa2c",
"x86_64-apple-darwin-0.6.11":
"099b163ce5098558ccdc1df54bdcf8b02eb11364458095e95f8dd54ff8984d96",
"x86_64-pc-windows-msvc-0.6.11":
"292ade13fc2e1530d0021ec7fd42526df58a8436974b8a5b829685db856e667e",
"x86_64-unknown-linux-gnu-0.6.11":
"c19b3be7ac26f8b211f7a5f07f01a77fd4d2b6205ff257790770a585f7f5bda4",
"x86_64-unknown-linux-musl-0.6.11":
"23aabfa5d0bde26d151eaf31a392595a5c88e74e0bc804351b02fbb0328f8aaa",
"aarch64-apple-darwin-0.6.10":
"82bf2cb3b34ab504eb08486093c9e97cfaf5299da4d4a60e14b6642a2a2e9b8e",
"aarch64-pc-windows-msvc-0.6.10":
"afc3c1ed78273843417b781fd30b263ba417dcfd05ef9a65be50eec7aa500f20",
"aarch64-unknown-linux-gnu-0.6.10":
"527f0adc3bcf841a3a0df0d3fef8db277b8afffac588d80948638719b611a8c2",
"aarch64-unknown-linux-musl-0.6.10":
"36c36aafdf4b2fb8040d0b8db2eaa4b3f44260a689a6e789bc1cd95689e890bc",
"arm-unknown-linux-musleabihf-0.6.10":
"abef3136f0da26055368df298f3379bbd0d6776ba7e7a0c12275e403136408d8",
"armv7-unknown-linux-gnueabihf-0.6.10":
"8b776d606b3b9566ae659ab8b2c767e771f1f3e2e632b4c634ff80b26796795f",
"armv7-unknown-linux-musleabihf-0.6.10":
"d5af6869e1f69753e9ac2b8bacadd6356f84f373b0f6edfda60dc85c194d3a6b",
"i686-pc-windows-msvc-0.6.10":
"ff6c580750d6bdbca1cb7c64601ebf0f079cc6d8ab79df6472e5fd61e4f89cf9",
"i686-unknown-linux-gnu-0.6.10":
"978e8d7b495251d842250045a3f15c59e9fe148d09538aa322d4c045db632cc3",
"i686-unknown-linux-musl-0.6.10":
"432c0609dec5d196f516639de8845fdf9393b4591978a927f6b2bfa92edd0220",
"powerpc64-unknown-linux-gnu-0.6.10":
"ec4285062cc4bec8aa7f95efba227c4ee3301503938735902fdd896c3ef8ec7f",
"powerpc64le-unknown-linux-gnu-0.6.10":
"d1dcbdd11b133bcce003aa48be6710a56f1c938eff496eb021dbeac8c09b5c2d",
"s390x-unknown-linux-gnu-0.6.10":
"4a68f92213c567a8d2bc22ccc10a328f3dd851967f315c517fc1eb52c8f58ed5",
"x86_64-apple-darwin-0.6.10":
"ddd27652b1a4053b848e35c348500841a8fde38e8ac2b37233464ab91e8f7788",
"x86_64-pc-windows-msvc-0.6.10":
"c41c4f34782558d3263f7a51e4efd053bc4d074dc46fefa574c4fdb2ed0a00e1",
"x86_64-unknown-linux-gnu-0.6.10":
"d58885f055fdb726d12cdd1cc54119432a0e4557c8e8ba04ca1d625058b98832",
"x86_64-unknown-linux-musl-0.6.10":
"1bdeaa0396405a30c4bff35b2d7c9df832836da50eec132ccc0d92657a336c4c",
"aarch64-apple-darwin-0.6.9":
"a6841484affb3c123313df98bcd8932208bdfb3d9d90a72aec274e8a696caa88",
"aarch64-pc-windows-msvc-0.6.9":
"bdb7e5eebaa5bb807f2c665b909dbba4bce6f23adf774134924a4a3c6acd4e72",
"aarch64-unknown-linux-gnu-0.6.9":
"f5032ad47151c7906c0fb25f7c3b00a85ab0bfed2170cbc444e79c438799095b",
"aarch64-unknown-linux-musl-0.6.9":
"4de15999c38a0e57a3708eccb1fe3295b3d1c0c69410029b16e5e42452d232a9",
"arm-unknown-linux-musleabihf-0.6.9":
"1a228a1cc86689894c771d0b4635b74708db416c240cfbdc36ddd87c90ae0eb0",
"armv7-unknown-linux-gnueabihf-0.6.9":
"a9a307d6b3e6a3500aa0102ff7b03cccebe2a9af40130df97382688574afc637",
"armv7-unknown-linux-musleabihf-0.6.9":
"2cf77dcd0e73b323c5f10120452f6ef34191cab3bb8061ee01d5e62706af7493",
"i686-pc-windows-msvc-0.6.9":
"709d6d7e6d0e8244b4d51ac9ef0f373d2ac2cb20570e8bdf71c84ccab8c8cba0",
"i686-unknown-linux-gnu-0.6.9":
"4000a6fd98af6ed84c9a7c2f06019cab5f4a8cfa4e5a9c37b6984e4c7cae1df2",
"i686-unknown-linux-musl-0.6.9":
"d227586d574264922f344cf98b0f469335ce52d3443619d15448140b44ff8204",
"powerpc64-unknown-linux-gnu-0.6.9":
"f12b8dbc8ed1ca24dfadbd3969730ab9c2cf797e117cdb508732f49b9fa4b620",
"powerpc64le-unknown-linux-gnu-0.6.9":
"451cd936bd35405c1cf2d0b63c975d5490e2646f1516b9bcb27af66688946903",
"s390x-unknown-linux-gnu-0.6.9":
"e25ec6762b68383abfbecb1ec24c1eda52a64dc67866021280c649ef3813726f",
"x86_64-apple-darwin-0.6.9":
"96eb2bfbe2bb3b74836aa5d6f563ae21bbb9e071148adfda1e67000735a020a3",
"x86_64-pc-windows-msvc-0.6.9":
"4d959abc2517c38b5527e3368b6755d66ecbb85679a9b2b34b7a78796c6cf7f8",
"x86_64-unknown-linux-gnu-0.6.9":
"001b87a0c2ea642a3c75a98c6af3e8528aa473d560e653cf213efcc9aaa4a028",
"x86_64-unknown-linux-musl-0.6.9":
"2b2914da53f9412a1aad7457cee424680da037e6a49c378365c3b5ff5ef0b926",
"aarch64-apple-darwin-0.6.8":
"e4f83fc42d9735512198c2d86a6fc136e2f5a2b59b3ccc4f104018ed07465499",
"aarch64-pc-windows-msvc-0.6.8":
"5619c7fbc026544c8cc77ade994ef79e799fc521a050268172aa47826f364834",
"aarch64-unknown-linux-gnu-0.6.8":
"3ffcaa4f4dba917fa58484a1c3dcb96a958a4baca0204e9c10a4799f81b9ee2f",
"aarch64-unknown-linux-musl-0.6.8":
"c1d4504ee47d8577761989c9daa4bbd1b93e5d04056215584a0415ad8738b0f9",
"arm-unknown-linux-musleabihf-0.6.8":
"7280cb1425787faf335bed8e9f2d575bcb179e1b19489ee7984c546d6ef07fff",
"armv7-unknown-linux-gnueabihf-0.6.8":
"6753d79f3f8e1556a855912f0f859b039b67e591332f6ee794e2c51f2eda1658",
"armv7-unknown-linux-musleabihf-0.6.8":
"ba73e8503d3ded103cc1fd946bd307f5b986e096d673296eb616f2edb6cf23aa",
"i686-pc-windows-msvc-0.6.8":
"c28ab471753368b79887fd5cbd12b002704fa7fb2e96b0f5a98277e4f1d8572a",
"i686-unknown-linux-gnu-0.6.8":
"df60b14b5b6bf29c75c06d8d04b0dd358070bf91f19c6f23afaf738fd05fa271",
"i686-unknown-linux-musl-0.6.8":
"b1e92aabb97fa356e8f0d4b61f698e0f372b6a5582df949ffbcc60565e7a9c7a",
"powerpc64-unknown-linux-gnu-0.6.8":
"a18998d2f8f426b1ccf1f6c7ec279dd35ccc1cbe76d90b185e453e6b199df245",
"powerpc64le-unknown-linux-gnu-0.6.8":
"0d7460fe945a7ed48a9236d50f683a5eb937f22eaa605f4e6eb6a5f9cdf3676e",
"s390x-unknown-linux-gnu-0.6.8":
"127a7d547be5029b29532f937822332fed690e135d0a97ec9574d43904a4622a",
"x86_64-apple-darwin-0.6.8":
"e069e79f6e0c430d7beaca3025b398980357b8b5c6faa7191032e20d5ee75970",
"x86_64-pc-windows-msvc-0.6.8":
"d31c3d01ca3e1a75e15ed9514c135239770b6b40a99cae716661e28e433aa495",
"x86_64-unknown-linux-gnu-0.6.8":
"2378ea0122bd56a11ee7ae2ad6116c1f22f4657c03b9efb78ac150236bf7974c",
"x86_64-unknown-linux-musl-0.6.8":
"58902317e1872994b5e707c3c77f4cbf3010104d4b07990a5110bbc09f3e9b8a",
"aarch64-apple-darwin-0.6.7":
"1a4d04477893c215e3def30149208fabe58a70d031388684d0125f553e3cd74f",
"aarch64-pc-windows-msvc-0.6.7":
"1c6de0c79ad35baadb61f6be7a014f3114a320809868b4ccb09c4d16b7118b48",
"aarch64-unknown-linux-gnu-0.6.7":
"b64c4ec32d55bd8e8b726b3162be0dfb3c117c3ca4cd798862497d33fe68e7b9",
"aarch64-unknown-linux-musl-0.6.7":
"df9e1b9530ad63085b66936e65cca107acc98197856e2ac22b896b1ab3936ac4",
"arm-unknown-linux-musleabihf-0.6.7":
"03a4b36d50fe4f0e50845559a524ed75610762072075c411f7ed84479e6c736d",
"armv7-unknown-linux-gnueabihf-0.6.7":
"a877f7697375f6b19d3b537c5152cbb3d86430120b20d957cfa7c084e6b79d6c",
"armv7-unknown-linux-musleabihf-0.6.7":
"e337a7dd6b86c842dac78041acfa9d9402662d5a8cede1d0ae694c9c17057162",
"i686-pc-windows-msvc-0.6.7":
"33002d9f1dab894f48254f43b4b882f6c88078d70ace883ed29fcde82616bbb0",
"i686-unknown-linux-gnu-0.6.7":
"b5f04a274f96aa41e8094b1c4355632f6caa9dfb7e62a45908950ca1c5d3fb38",
"i686-unknown-linux-musl-0.6.7":
"bd56de94a3ffac99a06fc0d37e7cb45e1c35ba275924b5ed502da833dc712d12",
"powerpc64-unknown-linux-gnu-0.6.7":
"57c668908878e1b12c726efc0439cd609697892a22e1e43c0ebb520ef2995a27",
"powerpc64le-unknown-linux-gnu-0.6.7":
"abe3004c0fc468e89ddcf8490991c7fc83abc9d9f6e6a29c59473541265e8bd5",
"s390x-unknown-linux-gnu-0.6.7":
"b6c60b7b907f871880a9be43294b02f84be5ec3187b1a16d7705f5beb622e01a",
"x86_64-apple-darwin-0.6.7":
"680be39f40bf00a8c3a6776e9ddaa9c3c18ef2efbb0c1a9a854b333660ca8678",
"x86_64-pc-windows-msvc-0.6.7":
"11b902b07e98331cef0d648c182c6aa1f279cde688c4411eb9153dc957d48f90",
"x86_64-unknown-linux-gnu-0.6.7":
"601c2b1147117c4471a154b4cebbdb31c818105f796d5f8115fe42d2526689c8",
"x86_64-unknown-linux-musl-0.6.7":
"a31bd6916eff780a7a44c84c194f4f8b70a8250b9175b3839ce2d4403fd735de",
"aarch64-apple-darwin-0.6.6":
"d0fb047593122746c7529960f8efd5d7d10d2cb230302f71158e9765ad37727b",
"aarch64-pc-windows-msvc-0.6.6":
"6bb6d5a28e8a181fd5b0046778b97a75c3ec1c5117a058e1961e0f6df9ee2925",
"aarch64-unknown-linux-gnu-0.6.6":
"37a543598cdb7d8fc9b74e6b1fe1fdf8b9a279c6137c7ff8396a88f69ec7a43c",
"aarch64-unknown-linux-musl-0.6.6":
"1f11c12ccfb693a6928c097c6b2ae3caa8e073744661795a6c96c5ffa9358f24",
"arm-unknown-linux-musleabihf-0.6.6":
"6cbd68ca3cef4a9a2f0f5c53492d47596494c82df8f1017df144c37a39d13294",
"armv7-unknown-linux-gnueabihf-0.6.6":
"97c71ad1f443182b3594ef671624e23f8f7960cb84badbbbda38598457845f83",
"armv7-unknown-linux-musleabihf-0.6.6":
"bee1941d59c8703fa143e186db1f335324b1922f38201cd52bfdfe1b29062987",
"i686-pc-windows-msvc-0.6.6":
"2231f24bfe6b8729427a5ecccf0339c5feacf96309f62da51c5077f4cfe8954e",
"i686-unknown-linux-gnu-0.6.6":
"16667b429a57ee917b10093e81e52956e4c19f9fd73d05dd87c3cbc27779ac7e",
"i686-unknown-linux-musl-0.6.6":
"96fab088198ef251facccfdf3850139720249f673c937cf6cc21642f54f19894",
"powerpc64-unknown-linux-gnu-0.6.6":
"564d1207601cdb3a3684f7d3ac31bf40436ac6912df7de340216b30a2e94ca44",
"powerpc64le-unknown-linux-gnu-0.6.6":
"c2aa7d2686b1f5943a562488153141f9690acfa59d6fdb01a2272019dc4f94dd",
"s390x-unknown-linux-gnu-0.6.6":
"fe7a1425620325b6063bf8b5c008846bc0ef7c867e7a155049adf5d9c356db2d",
"x86_64-apple-darwin-0.6.6":
"c584b85e81df8d8ae8142876b80ae977e41c6bba14c57cc1061b6a87f361ad2e",
"x86_64-pc-windows-msvc-0.6.6":
"72d7866fac1a9f5e895ec632a0b8a98ea59627cb2c3b8e68af4fec899ee4b43b",
"x86_64-unknown-linux-gnu-0.6.6":
"4c3426c4919d9f44633ab9884827fa1ad64ad8d993516d636eb955a3835c4a8c",
"x86_64-unknown-linux-musl-0.6.6":
"bcc30541d54156d434a74d6070a44c333263edc65ea423d3039cb8112ed78c95",
"aarch64-apple-darwin-0.6.5":
"4952c6275778fbc7e5cf6b5739ffd944c47063134d6ea43a7037b0a028ef771e",
"aarch64-pc-windows-msvc-0.6.5":
"2af20abb3a289d57ae6a8f34ec9f6a60276947fdfb80de6d7304a1b49242cc64",
"aarch64-unknown-linux-gnu-0.6.5":
"ebf0707ab949b948ad14250ed93f968fec954e20d12ce6bc9fce74b0ce7e4900",
"aarch64-unknown-linux-musl-0.6.5":
"8e3eae9802c443f87f7519518c9900a323e95a54e47f89433452287d9d2e9d13",
"arm-unknown-linux-musleabihf-0.6.5":
"85caa3c874d98ae5cb981d13e127602c2063d69874b8fd18ca0d1083805a04b1",
"armv7-unknown-linux-gnueabihf-0.6.5":
"184051f8cceccaafee109787f5c8f5788ed6e619ad65edc98779a96b3a8782c2",
"armv7-unknown-linux-musleabihf-0.6.5":
"86c7f7dcd0197c131ecce8f3c34807470753c145e1570cec5f0836e34481af9d",
"i686-pc-windows-msvc-0.6.5":
"65dac0af6d2f143736e83fe17f5b52546686fa000fb2f1f89dbb26d1c96183db",
"i686-unknown-linux-gnu-0.6.5":
"beb346c6a869d6e742de8a797fa7c2a489c6cbc3127387e08a9106a944f56dc2",
"i686-unknown-linux-musl-0.6.5":
"5a254d1f0dc92e00c3f2a9c97f27a1adb1261f841e08f1ed3e4f03dcf45b7c12",
"powerpc64-unknown-linux-gnu-0.6.5":
"1f8fd8dde91258380dbcd4b9fc65f15a7dc3af6cfffefb9a4f99d32c4c67436d",
"powerpc64le-unknown-linux-gnu-0.6.5":
"d2b6e19ca7ecd8d7e0d1ddced965aa91a3c822d07a7f7657743945245c1f627a",
"s390x-unknown-linux-gnu-0.6.5":
"43a3e39f19fd5d098bb8c896b6c0f99a146253c271d78409cf31c2f55f2763d0",
"x86_64-apple-darwin-0.6.5":
"d336d862694e1c36afea55eb15f5df02aa77c04a168b781df515d641e23285f0",
"x86_64-pc-windows-msvc-0.6.5":
"a3e9f0913189c38b804bf6bb3d348af305a8ceabc690be92b6e111245a821640",
"x86_64-unknown-linux-gnu-0.6.5":
"8fc9895719a1291ecd193cb86f9282ff3649cef797d29eacc74c4f573aab1e2f",
"x86_64-unknown-linux-musl-0.6.5":
"ed4830b7b6293b9413618970b84dad7bc9245f4a7dfa741f943afdb647c196c4",
"aarch64-apple-darwin-0.6.4":
"1497302e13b33188d6ea4b255520e72f4b9ca9a2c5e9ad30b7bc919e5a0b1071",
"aarch64-pc-windows-msvc-0.6.4":
"92d18fec3da41dd759ff5c05074445def51d30a325cee0e94d4539fbaabae795",
"aarch64-unknown-linux-gnu-0.6.4":
"4c78928aa92170bb1c68245da3a5ce0c051e185b7cb6356c33909f94f033ae84",
"aarch64-unknown-linux-musl-0.6.4":
"fec5583459f22a26eab91aa32cb922cdb7bd72826b3e23c6c164c3814126f462",
"arm-unknown-linux-musleabihf-0.6.4":
"e9e1ef68e6b316b47a5ee48a48e5b28898a351fb588f0944666b004fa5baed2c",
"armv7-unknown-linux-gnueabihf-0.6.4":
"65df00771f9d4928853ecb5a627745edc829af3ee1339171c2f53f2afa935323",
"armv7-unknown-linux-musleabihf-0.6.4":
"f963d53f99ddcf5281b79545cf905dc66a6b25a4a5dcdefaecefd42a63710b88",
"i686-pc-windows-msvc-0.6.4":
"ecdb47abb3fc29511a2adc9df0407fe604371c6518cd2861235c8aa178928941",
"i686-unknown-linux-gnu-0.6.4":
"7e8c9c6d1b1c9f43eb50a634742f03c34d87a94d8155d2602f1f23c2c6cbfc22",
"i686-unknown-linux-musl-0.6.4":
"f3985d87a510c1fded1c8de25c6e70bcc2039e587f17efc5ab328b20c956b224",
"powerpc64-unknown-linux-gnu-0.6.4":
"81d3430b221d57070af86cdd868d766316266515fa49aa61c660ff1d61e5fa78",
"powerpc64le-unknown-linux-gnu-0.6.4":
"c8aba58a91854645ee41deeb9b0223c5218231c4d03b5b9cbe17f2ddd2f62358",
"s390x-unknown-linux-gnu-0.6.4":
"a73197566e1b706a6ca0427556b6d4732185eb6d621f0730d70c165ee5b1395e",
"x86_64-apple-darwin-0.6.4":
"af09c768697edd009ac1af66eaea35bbd29f145bd9c2c02b8f93309e23670b4f",
"x86_64-pc-windows-msvc-0.6.4":
"4526b772f5d9b0afdd61a780ab649730d125e0a56348daa7463ee44c0c5e5762",
"x86_64-unknown-linux-gnu-0.6.4":
"ed38cde84d822c1878c484e560e28c157a1c025204151efa60aa46831500f4d6",
"x86_64-unknown-linux-musl-0.6.4":
"1b04edff73d7d7f837b9d6a36a556fe2feb59cc9f747c4fcd01f76c886dd3579",
"aarch64-apple-darwin-0.6.3":
"51b84818bbfe08358a298ba3389c6d448d3ddc0f2601a2d63c5a62cb7b704062",
"aarch64-pc-windows-msvc-0.6.3":
"ec3561ca86328aa351919de2d5208f6761a58d42a2e0e50e1d1d80d10039756a",
"aarch64-unknown-linux-gnu-0.6.3":
"447726788204106ffd8ecc59396fccc75fae7aca998555265b5ea6950b00160c",
"aarch64-unknown-linux-musl-0.6.3":
"2bb44c9fb8a13e244d502a577d6c32669b680941c996c35524817971e6e56460",
"arm-unknown-linux-musleabihf-0.6.3":
"d1e508cdbb4b479c496d6a50febe4b0f0159ef1d0693d09d274c119471545aea",
"armv7-unknown-linux-gnueabihf-0.6.3":
"d067b079991909b3f76279c048c57470aaa2d0fcf1ce3307b7f15fec88b7a99d",
"armv7-unknown-linux-musleabihf-0.6.3":
"82c7b7aca1855f285db509ae3c957f9b1ca5e3eaa77ecbd80da8349fe0a6491e",
"i686-pc-windows-msvc-0.6.3":
"83173da302701020c44cefdab5d127e5cde9e4333ca7e7cbefc03e39908b7a39",
"i686-unknown-linux-gnu-0.6.3":
"7c044bd2db0690cce49b0613abf01daaeb6fb829737ef9ec7978191f218e1542",
"i686-unknown-linux-musl-0.6.3":
"a3401dd97c1ee55c1def00c5b98419087da2fd0ce81a74df1cf268a95b338998",
"powerpc64-unknown-linux-gnu-0.6.3":
"6023103b5d761da0e06c70a95197476796ba68ed3f6849529c89d603609a82d5",
"powerpc64le-unknown-linux-gnu-0.6.3":
"e41eec560bd166f5bd155772ef120ec7220a80dcb4b70e71d8f4781276c5d102",
"s390x-unknown-linux-gnu-0.6.3":
"2c3c03d95c20adb2e521efaeddf6f9947c427c5e8140e38585595f3c947cebed",
"x86_64-apple-darwin-0.6.3":
"a675d2d0fcf533f89f4b584bfa8ee3173a1ffbc87d9d1d48fcc3abb8c55d946d",
"x86_64-pc-windows-msvc-0.6.3":
"40b50b3da3cf74dc5717802acd076b4669b6d7d2c91c4482875b4e5e46c62ba3",
"x86_64-unknown-linux-gnu-0.6.3":
"b7a37a33d62cb7672716c695226450231e8c02a8eb2b468fa61cd28a8f86eab2",
"x86_64-unknown-linux-musl-0.6.3":
"7c77a5bc7c5fc56becf266c2ea8dae1e0fd4f9fe2c510110d097ad9066cacfb1",
"aarch64-apple-darwin-0.6.2":
"4af802a1216053650dd82eee85ea4241994f432937d41c8b0bc90f2639e6ae14",
"aarch64-pc-windows-msvc-0.6.2":
"02299bd78e4fbd2850532710c52a92368601f77654e3c6c342c651d75e6ca1f6",
"aarch64-unknown-linux-gnu-0.6.2":
"ca4c08724764a2b6c8f2173c4e3ca9dcde0d9d328e73b4d725cfb6b17a925eed",
"aarch64-unknown-linux-musl-0.6.2":
"9a90ef4761d75ee1a5158cc2fbd787c78dcfb1c12532a00a3c13b915db720c2e",
"arm-unknown-linux-musleabihf-0.6.2":
"f3643b8b67d6f711876a5682d4607b4a31e6e2935b4ccb35d7a98ec067b944d9",
"armv7-unknown-linux-gnueabihf-0.6.2":
"79a0df9c7e1df089722ff5338c7766e2437a2d3e40b4e232c72be4a4e9e3a7b9",
"armv7-unknown-linux-musleabihf-0.6.2":
"6aff9c4d54a1466be66234a754181f6e48501ac206d02dd5cf5e81df4c9efbfd",
"i686-pc-windows-msvc-0.6.2":
"29e46887292d4d645cb941731bfbc688fc1689255f9898b25e6b1c96bf1b954c",
"i686-unknown-linux-gnu-0.6.2":
"66301b549ea0e8e6960dc6d1eb7b9dcf5fc8d8913f2bb480434918af25f1c6c4",
"i686-unknown-linux-musl-0.6.2":
"b85ec115f14ca15418db3540c597e13a970546df49a85c1905c16286b86eb471",
"powerpc64-unknown-linux-gnu-0.6.2":
"de17553549280fd877452dd1f7f9d0a604e3544bfad007b8ec0b9943f103796f",
"powerpc64le-unknown-linux-gnu-0.6.2":
"f341fd4874d2d007135626a0657d1478f331a78991d8a1a06aaa0d52fbe16183",
"s390x-unknown-linux-gnu-0.6.2":
"17fd89bd8de75da9c91baf918b8079c1f1f92bb6a398f0cfbc5ddefe0c7f0ee5",
"x86_64-apple-darwin-0.6.2":
"2b9e78b2562aea93f13e42df1177cb07c59a4d4f1c8ff8907d0c31f3a5e5e8db",
"x86_64-pc-windows-msvc-0.6.2":
"5f33c3cc5c183775cc51b3e661a0d2ce31142d32a50406a67c7ad0321fc841d9",
"x86_64-unknown-linux-gnu-0.6.2":
"37ea31f099678a3bee56f8a757d73551aad43f8025d377a8dde80dd946c1b7f2",
"x86_64-unknown-linux-musl-0.6.2":
"fcd01693df76379be5bc325efa43c644cf0704a2e720ccd6695f41ded09934d7",
"aarch64-apple-darwin-0.6.1":
"90e10cc7f26cbaf3eaa867cf99344ffd550e942fd4b660e88f2f91c23022dc5a",
"aarch64-pc-windows-msvc-0.6.1":
"a9bce4582ec8dcc93e19e94b4d7ab653b378a68da1a7e72f5ea82ddd2d42fb44",
"aarch64-unknown-linux-gnu-0.6.1":
"f355989fb5ecf47c9f9087a0b21e2ee7d7c802bc3d0cf6edae07560d4297751f",
"aarch64-unknown-linux-musl-0.6.1":
"6455886f9aef3392df0af630dee9df892787fdffda0f0800245f86a735bd810d",
"arm-unknown-linux-musleabihf-0.6.1":
"4bbd397391134dbfedebb938d40845573eafe6dfd1e8e1882e89c21de702104e",
"armv7-unknown-linux-gnueabihf-0.6.1":
"811e19387997ac14f1b775c3e975a7d560c93f866eb5fd2955132f9718445a0a",
"armv7-unknown-linux-musleabihf-0.6.1":
"a2022883913d55c0913001869f64208b8b3244ec6286c9e097ad9563b9f747b9",
"i686-pc-windows-msvc-0.6.1":
"920e08d6d649a414981c2c1814746fcb0a10f25e2c65e359abf534212e1f0c8c",
"i686-unknown-linux-gnu-0.6.1":
"943a9a4637151d9f950de65725b28f0dfe3f73e7ad5b2b9ab35392cbc44b3cec",
"i686-unknown-linux-musl-0.6.1":
"63d269c67e7da4f645cd6be593b55e2f0e84a9bb7cf2d45faca791c27c5f9f66",
"powerpc64-unknown-linux-gnu-0.6.1":
"8775b00b1c44a7400e8a8d5238efc5ecc636f62ed8e865bd612486c67c6272b3",
"powerpc64le-unknown-linux-gnu-0.6.1":
"becf4913112c475b2713df01a8c0536b38dc2c48f04b1d603cd6f0a74f88caa2",
"s390x-unknown-linux-gnu-0.6.1":
"ee687d56ba1e359a7a2e20e301b992b83882df5ffb1409d301e1b0d21b3fa16a",
"x86_64-apple-darwin-0.6.1":
"d8609b53f280d5e784a7586bf7a3fd90c557656af109cee8572b24a0c1443191",
"x86_64-pc-windows-msvc-0.6.1":
"32de1730597db0a7c5f34e2257ab491b660374b22c016c3d9a59ae279d837697",
"x86_64-unknown-linux-gnu-0.6.1":
"0dcad9831d3f10f3bc4dcd7678948dfc74c0b3ab3f07aa684eb9e5135b971a58",
"x86_64-unknown-linux-musl-0.6.1":
"143dba84867f72107048e1f95be8f894d59f456e018a34276d9d2d6bacdf8f99",
"aarch64-apple-darwin-0.6.0":
"ff4f1ec24a3adb3dd251f9523e4b7a7cba379e9896ae6ed1efa163fcdcd6af8a",
"aarch64-pc-windows-msvc-0.6.0":
"c29a1bfcc3070a3a4834b9aa8e290f25e82e7b2a1d25cdbae3418fb8b72c2b0b",
"aarch64-unknown-linux-gnu-0.6.0":
"47fa7ada7352f69a5efd19628b86b83c0bbda34541de3a4254ba75a188414953",
"aarch64-unknown-linux-musl-0.6.0":
"92b105bb9253a6123a0f8a8412aec9d05b162bf529cbe60fcad75a71a9a43d3f",
"arm-unknown-linux-musleabihf-0.6.0":
"a36895e6bde3bb0a74f2d61230332bd8f2cb60984e86bbbc69e9b2e742e1b971",
"armv7-unknown-linux-gnueabihf-0.6.0":
"01cbd440e41eb9fff4e372a534706156fefefe34ac44d6eb9b8abc7d5739b0fd",
"armv7-unknown-linux-musleabihf-0.6.0":
"62424a2b18a7b4a7cd62912d7cd952a74f755e6b46e46c9bae6029f4b3f2f2cf",
"i686-pc-windows-msvc-0.6.0":
"40422491d697c2da3f30c2b00b5fbfbe5075e33dd64956137959a6536b851213",
"i686-unknown-linux-gnu-0.6.0":
"22ee5cacb0139b065e219e43db84f4f21ea2a316f7341b245786d2f3e748488d",
"i686-unknown-linux-musl-0.6.0":
"1ab5f3ea0e809c5390dbda97558d4176efcbe7e3eb5166eb2c61a41991d7c4f9",
"powerpc64-unknown-linux-gnu-0.6.0":
"b99ba184663eecbd1197d60c3120b5451879009b69e900eed83b8dd5f9b568ec",
"powerpc64le-unknown-linux-gnu-0.6.0":
"d782751a6ec8a0775aa57087275225b6562a115004c1f41935bec1609765508d",
"s390x-unknown-linux-gnu-0.6.0":
"664f4165767a0cd808d1784d1d70243da4789024ec5cd779a861201b54a479b7",
"x86_64-apple-darwin-0.6.0":
"530ef3b6f563448e8e017a8cd6693d6c72c146fb0a3c43440bb0e93fcf36264f",
"x86_64-pc-windows-msvc-0.6.0":
"65836dae55d3a63e5fc1d51ae52e6ea175aaab1c82c4a6660d46462b27d19c2a",
"x86_64-unknown-linux-gnu-0.6.0":
"1a26ce241f7ff1f52634d869f86db533fffba21e528597029ee9d1423bf3df18",
"x86_64-unknown-linux-musl-0.6.0":
"ac2331cda152aa71fed700c7b1ceec4a0662185e65f544b3c3a607be53f856f0",
"aarch64-apple-darwin-0.5.31":
"396c9bd6acd98466fdb585da2ed040eecea15228e580d4bd649c09215b490bf9",
"aarch64-pc-windows-msvc-0.5.31":
"e1c862e67f03f11ff5d359d4b1afa9f624bd52489d09ffb6efcc1c5c743674bc",
"aarch64-unknown-linux-gnu-0.5.31":
"e7f358efb0718bd8f98dc0c29fd0902323b590381ca765537063a2ca23ed34c7",
"aarch64-unknown-linux-musl-0.5.31":
"7a49b56be133a756b8ef589beef33f70176a7ce796e118de2911bdae0ffb9a56",
"arm-unknown-linux-musleabihf-0.5.31":
"2ad1f334295c3ce92c5fd7c3fa9121ffd4569b6db1846c1ecbb6a2007041d09f",
"armv7-unknown-linux-gnueabihf-0.5.31":
"78270187aebe5f37fdff184f65e8aa537fd9a06cb5d5119f59c6dd7badcf95ef",
"armv7-unknown-linux-musleabihf-0.5.31":
"329dba251b81dcc840f261148d6466442b23bad54d75f1a21d5005c9c4d04aa0",
"i686-pc-windows-msvc-0.5.31":
"3860cbf6115f7af85cdf9e83ba1a9ee2bc6cf4da750825014a999738ba6950dd",
"i686-unknown-linux-gnu-0.5.31":
"4347e44f076448a8b37140a762845d65831819c21f1b6b1da4706640b82d3e4a",
"i686-unknown-linux-musl-0.5.31":
"54365460d1dbed67a6106ece17ec50900f1209ec1543172364696e7694c7b64c",
"powerpc64-unknown-linux-gnu-0.5.31":
"1263a21ef5f72d48d03b7051b69102d7addcb647af2e5182b5e6c5313d8ffd48",
"powerpc64le-unknown-linux-gnu-0.5.31":
"e292dc0a7b23fab01bbf2b6fdddf8bb0c531805b1dbc3905637af70a88ff1f5f",
"s390x-unknown-linux-gnu-0.5.31":
"66232646bd15a38cf6877c6af6bf8668fadb2af910d7cf7a1159885487a15e70",
"x86_64-apple-darwin-0.5.31":
"5316b82da14fab9a76b3521c901e7c0a7d641fb9d28eb07874e26a00b0ac2725",
"x86_64-pc-windows-msvc-0.5.31":
"1ad54dace424c259b603ecd36262cb235af2bc8d6f280e24063d57919545f593",
"x86_64-unknown-linux-gnu-0.5.31":
"017ce7ed02c967f1b0489f09162e19ee3df4586a44e681211d16206e007fce62",
"x86_64-unknown-linux-musl-0.5.31":
"b0642eedb1704371f0cf533e2103ebcaebed59e043c71a70c8fa4a971d2032ab",
"aarch64-apple-darwin-0.5.30":
"654c3e010c9c53b024fa752d08b949e0f80f10ec4e3a1acea9437a1d127a1053",
"aarch64-pc-windows-msvc-0.5.30":
"aa5331546935864fe0c627fc22f4ffc60cd2d24ec17900780e95e11436d544a8",
"aarch64-unknown-linux-gnu-0.5.30":
"d1ea4a2299768b2c8263db0abd8ea0de3b8052a34a51f5cf73094051456d4de2",
"aarch64-unknown-linux-musl-0.5.30":
"e9b51e591a852a5bc432df3411acaf2c03efd5c8a1ea4280e356881a0c689d31",
"arm-unknown-linux-musleabihf-0.5.30":
"d143460c27df2b8bcafe8a548eb90fb8000a97921754f13a45cb675d04d366f8",
"armv7-unknown-linux-gnueabihf-0.5.30":
"3d1953151a534e0cbe3c2094e5165a419e75f1ae32444748c5cd69bcfb9906c0",
"armv7-unknown-linux-musleabihf-0.5.30":
"4ef3aee22dc8feb9665df4339d4689c1262a26d36d34c7c543e0caa31eb8f45b",
"i686-pc-windows-msvc-0.5.30":
"3389683ab13451b628cfd95ca5bf56fd7137300af5903180d60eed35c4cbfb82",
"i686-unknown-linux-gnu-0.5.30":
"3ebb74ae2326030c93972f4c1b5e77a17b29bd191349b6244e41e70bb98d8507",
"i686-unknown-linux-musl-0.5.30":
"bc590e89243cf7688709ba39822d0acaee394dc0b4781eef044af411e6ac26af",
"powerpc64-unknown-linux-gnu-0.5.30":
"e289eae011dec0fa5d00133c17efde5e427237e876bfb0e1e27146e45959fc26",
"powerpc64le-unknown-linux-gnu-0.5.30":
"b10ba261377f89e598322f3329beeada6b868119581e2a7294e7585351d3733f",
"s390x-unknown-linux-gnu-0.5.30":
"7341e6d62b0e02fbd33fe6ce0158e9f68617f43e5ec42fc6904d246bda5f6d34",
"x86_64-apple-darwin-0.5.30":
"42c4a5d3611928613342958652ab16943d05980b1ab5057bb47e4283ef7e890d",
"x86_64-pc-windows-msvc-0.5.30":
"43d6b97d2e283f6509a9199fd32411d67a64d5b5dca3e6e63e45ec2faec68f73",
"x86_64-unknown-linux-gnu-0.5.30":
"9d82816c14c44054f0c679f2bcaecfd910c75f207e08874085cb27b482f17776",
"x86_64-unknown-linux-musl-0.5.30":
"7cc79871e5fcd2678474d756bfc32c6c3d28e136963dda10902c516fab67fa2d",
"aarch64-apple-darwin-0.5.29":
"c89e96bde40402cc4db2f59bcb886882ab69e557235279283a2db9dea61135c3",
"aarch64-pc-windows-msvc-0.5.29":
"172509e9824b925082612f19ab0e030e08108033d7e5c10e67ede69b3bf290d8",
"aarch64-unknown-linux-gnu-0.5.29":
"d1f716e8362d7da654a154b8331054a987c1fc16562bd719190a42458e945785",
"aarch64-unknown-linux-musl-0.5.29":
"3f2d03e62b951a3e46e9c1cfae3091235c05ff274c7163162b8726fb56133219",
"arm-unknown-linux-musleabihf-0.5.29":
"5ee7d5e95f93434845c1e14740c5e957f8747b751af054996f45a9095426a496",
"armv7-unknown-linux-gnueabihf-0.5.29":
"98b88f2bc2905241ff460529a9d24cdaa70e8b31c573ba07240eb4a163e7fa3d",
"armv7-unknown-linux-musleabihf-0.5.29":
"95f148fb44c71f817d0f9c7e14591f1364c7da62a3cb9d353a0e45b4332031d3",
"i686-pc-windows-msvc-0.5.29":
"e35c4bba6af151e3a952629c7054b0f6d901c83aa7a3a21aedc3880424790294",
"i686-unknown-linux-gnu-0.5.29":
"9e81a4f621500d161ae810a7f68a25a8bfc141d172267a36c19cf491c5bf8fa7",
"i686-unknown-linux-musl-0.5.29":
"07b4f43a4c561120cd5951c5aa49ad0aa2a1c1ebce870f533f06fa0e0a8ece4f",
"powerpc64-unknown-linux-gnu-0.5.29":
"0eae3ece0811815cbed9619995486a2d4ba4df47abe3f7fcc27153eff9c5a655",
"powerpc64le-unknown-linux-gnu-0.5.29":
"0e38436e4068eec23498f88a5c1b721411986e6a983f243680a60b716b7c301c",
"s390x-unknown-linux-gnu-0.5.29":
"6a42886dd10c6437a1a56982cd0c116d063f05483aa7db1cc0343f705ef96f91",
"x86_64-apple-darwin-0.5.29":
"2f13ef5a82b91ba137fd6441f478c406a0a8b0df41e9573d1e61551a1de5a3a2",
"x86_64-pc-windows-msvc-0.5.29":
"2453b17df889822a5b8dcd3467dd6b75a410d61f5e6504362e3852fb3175c19c",
"x86_64-unknown-linux-gnu-0.5.29":
"46d3fcf04d64be42bded914d648657cd62d968172604e3aaf8386142c09d2317",
"x86_64-unknown-linux-musl-0.5.29":
"bb06a385a918b7b8d927ef08e283843b66005dfccf0a940bfd0882f22cbc1a7f",
"aarch64-apple-darwin-0.5.28":
"57cbf655a5bc5c1ffa7315c0b25ff342f44a919fa099311c0d994914011b421e",
"aarch64-pc-windows-msvc-0.5.28":
"76bb4fe97c78f5de294614cb36294a3204e57117d8ce2f826bf1b8fd28d770ef",
"aarch64-unknown-linux-gnu-0.5.28":
"fe3c481940c5542d034a863239f23d64ee45abcd636c480c1ea0f34469a66c86",
"aarch64-unknown-linux-musl-0.5.28":
"d2f622ffbb129c9368a147672e79f9b7c8e33c4ac0bbba6510c7e92d699d7fb3",
"arm-unknown-linux-musleabihf-0.5.28":
"0bf8b33107e58d15065bce5fd29d24de7b4401ddcaf6791840568876f1247f46",
"armv7-unknown-linux-gnueabihf-0.5.28":
"6a3ceb156b6ced721792ffa1d9d4fd35a28167960cd5b1847bfd39fd1d2d59bf",
"armv7-unknown-linux-musleabihf-0.5.28":
"29dec32b29a5f4736f0062ff47aade2c922e08922241783e7af4aba0639658cc",
"i686-pc-windows-msvc-0.5.28":
"7ff2b7bde705cdca7f6fe6aec9e7047b47e09bf97be9c5ff597ff6e19a369544",
"i686-unknown-linux-gnu-0.5.28":
"27ff0f4d1ce96b5abe5113e3033e48a16d588c2e855439f0d8fbc59b75c041de",
"i686-unknown-linux-musl-0.5.28":
"0f72a1c8321d05dbfc3382d28e7bb9f83079198fd5b16c25560b0f66b6a6a8c7",
"powerpc64-unknown-linux-gnu-0.5.28":
"caf37897a6a3734a706f2d5ffb2c7953f37e903b6a34d02300fbf96f77a44b82",
"powerpc64le-unknown-linux-gnu-0.5.28":
"74bc6aacea26c67305910bcbe4b6178b96fefe643b2002567cc094ad2c209ef1",
"s390x-unknown-linux-gnu-0.5.28":
"b3f49b0268ab971ff7f39ca924fb8291ce3d8ffe8f6c0d7ff16bc12055cd1e85",
"x86_64-apple-darwin-0.5.28":
"36484907ec1988f1553bdc7de659d8bc0b46b8eaca09b0f67359b116caac170d",
"x86_64-pc-windows-msvc-0.5.28":
"31053741c49624726d5ce8cb1ab8f5fc267ed0333ab8257450bd71a7c2a68d05",
"x86_64-unknown-linux-gnu-0.5.28":
"1f2a654627e02fed5f8b883592439b842e74d98091bbafe9e71c7101f4f97d74",
"x86_64-unknown-linux-musl-0.5.28":
"9ca7e51c8ea414aa1a275d12956676da1064e0a1cbf8d5b39b15c45d923a09c3",
"aarch64-apple-darwin-0.5.27":
"efe367393fc02b8e8609c38bce78d743261d7fc885e5eabfbd08ce881816aea3",
"aarch64-pc-windows-msvc-0.5.27":
"5b652867d6dc42946953d786aa1e466e9fbcd877a48d4c18f56c26801abb486b",
"aarch64-unknown-linux-gnu-0.5.27":
"7b8175e7370056efa6e8f4c8fec854f3a026c0ecda628694f5200fdf666167fa",
"aarch64-unknown-linux-musl-0.5.27":
"5df998660ed17555679c7a6b43b25f1c4d76d76b6062d31491663960804060d5",
"arm-unknown-linux-musleabihf-0.5.27":
"d80200d7c0c3ef32b2e938872726de29128a3b9bc080038fb3fc6f2eedbf1f34",
"armv7-unknown-linux-gnueabihf-0.5.27":
"3fa94262b12268c7b9b91ed0ea739752e0c63ef2105396122faa93cd5bbdae8c",
"armv7-unknown-linux-musleabihf-0.5.27":
"86e688ced31f6322d6b4dc544453ba02021685e553995c2c72eb41f82fd2662b",
"i686-pc-windows-msvc-0.5.27":
"0158534490ba4b4cf64716116d73220f019688a22a1eba78535d9d95e918ec71",
"i686-unknown-linux-gnu-0.5.27":
"66b6128cd9b745a312bc81d6d3fedf02850acdf96dfca53ab5a3d11ddb1fe083",
"i686-unknown-linux-musl-0.5.27":
"8e95b813f804e8670aed79608778582b3f64dcf468ec185e49f5188505c3edf6",
"powerpc64-unknown-linux-gnu-0.5.27":
"1a129dbc27566be04ce68f5bc10a626954abe7651b35ce73d8a24b2e7a89ffe1",
"powerpc64le-unknown-linux-gnu-0.5.27":
"b63051bdd5392fa6a3d8d98c661b395c62a2a05a0e96ae877047c4c7be1b92ff",
"s390x-unknown-linux-gnu-0.5.27":
"07377ed611dbf1548f06b65ad6d2bb84f3ff1ccce936ba972d7b7f5492e47d30",
"x86_64-apple-darwin-0.5.27":
"a75c9d77c90c4ac367690134cd471108c09b95226c62cd6422ca0db8bbea2197",
"x86_64-pc-windows-msvc-0.5.27":
"195d43f6578c33838523bf4f3c80d690914496592b2946bda8598b8500e744f6",
"x86_64-unknown-linux-gnu-0.5.27":
"27261ddf7654d4f34ed4600348415e0c30de2a307cc6eff6a671a849263b2dcf",
"x86_64-unknown-linux-musl-0.5.27":
"94cb0a392e5cfb82068476462e6c06e19745ea9e74fc828187f6809d97b529b4",
"aarch64-apple-darwin-0.5.26":
"3b503c630dc65b991502e1d9fe0ffc410ae50c503e8df6d4900f23b9ad436366",
"aarch64-pc-windows-msvc-0.5.26":
"3319e6f4506fdb2e3d8791bae05995f0aeda947ee87e373c17a699fb39165e3d",
"aarch64-unknown-linux-gnu-0.5.26":
"6ce061c2f14bf2f0b12c2b7a0f80c65408bf2dcee9743c4fc4ec1f30b85ecb98",
"aarch64-unknown-linux-musl-0.5.26":
"42ce9a728ecd054268ba5a621002385e79ea10ba4546a8a6a695f430902029f5",
"arm-unknown-linux-musleabihf-0.5.26":
"87b8a2af3b9784a6b7ab5ddb2fff0c505bbccaae0a457f6b228257ed23adfed0",
"armv7-unknown-linux-gnueabihf-0.5.26":
"c311f89e6d23a9bd7d2f62e225d6b54a8fc85889f3519219f3308ea7eb687871",
"armv7-unknown-linux-musleabihf-0.5.26":
"0e4d68538847637c376f51d962796e9336c9ccbcccdfad547e3458cd7cf1a70e",
"i686-pc-windows-msvc-0.5.26":
"ecf2858d13ba0cbe1b82cc10e9b0538309ee53a7c18f71e8afcc56b1e5e909e0",
"i686-unknown-linux-gnu-0.5.26":
"833199e00a8187468c49dd315e041dbaf30e6e6340e65dd3df0c5aec8605c3d8",
"i686-unknown-linux-musl-0.5.26":
"72d4ed889ceac3cf5f7233a7e38eb2dd70a95e36dab0ce9ebed1f6a9a68f19be",
"powerpc64-unknown-linux-gnu-0.5.26":
"7838adddce0d17aa933cbe843ca673e44eb89de508175cc707473540de6388cd",
"powerpc64le-unknown-linux-gnu-0.5.26":
"fe1d770840110b59554228b12382881abefc1ab2d2ca009adc1502179422bc0d",
"s390x-unknown-linux-gnu-0.5.26":
"086c8d03ee4aff702a32d58086accf971ce58a2f000323414935e0f50e816c04",
"x86_64-apple-darwin-0.5.26":
"7cf20dd534545a74290a244d3e8244d1010ba38d2d5950f504b6c93fab169f57",
"x86_64-pc-windows-msvc-0.5.26":
"a938eebb7433eb7097ae1cf3d53f9bb083edd4c746045f284a1c8904af1a1a11",
"x86_64-unknown-linux-gnu-0.5.26":
"555f17717e7663109104b62976e9da6cfda1ad84213407b437fd9c8f573cc0ef",
"x86_64-unknown-linux-musl-0.5.26":
"6858d7951b9ae20c3955b2b0addbf2f184ab68175d1c659d11e0a14f1472fb81",
"aarch64-apple-darwin-0.5.25":
"3c29e941d691614bc4eba95629c8f8dee106e5d44d70a03efed66a544588caa1",
"aarch64-pc-windows-msvc-0.5.25":
"e3c4d014dc8aa14a36fab9316d9f435a93900893d7164472452c39037112b829",
"aarch64-unknown-linux-gnu-0.5.25":
"402342f9a5ff1544b41af368794ab436965a1a03109b43bd0dd552ce6af8256d",
"aarch64-unknown-linux-musl-0.5.25":
"6648d924f01ce01e4968e377c1f32a53592b55485a859f97421619d3a7dd7d86",
"arm-unknown-linux-musleabihf-0.5.25":
"45ed53c20c5852d9dba97deeceaa1cb8fdccdaec69952c0940329e27b3830e83",
"armv7-unknown-linux-gnueabihf-0.5.25":
"54bd4af03e93acdc7ac6546f62923a782fc871a20850356fa8870dd256a6c2e8",
"armv7-unknown-linux-musleabihf-0.5.25":
"f2adbe37fbe57540c39396d6d47878c86027eae91b442d609c2e97da2398dff5",
"i686-pc-windows-msvc-0.5.25":
"7f55c0e6ab90218d2646c3915b111378fc0ffd61308893d495ddc8e49f16ed36",
"i686-unknown-linux-gnu-0.5.25":
"8d71e66e4efcc1097e2beedd3572867eb7ea9b5cdac286c115a5118fcf5d2219",
"i686-unknown-linux-musl-0.5.25":
"406630b6b20bcef76069e08c5eaaa5420e190ae0036f4a85e2a14f3d7c610be6",
"powerpc64-unknown-linux-gnu-0.5.25":
"202aa6bc9e541bc322ad743f6afe334ef31dcb5c568f24cd5c963fa535538f20",
"powerpc64le-unknown-linux-gnu-0.5.25":
"7956759f6543ca7ed4e51ab7d68a2dca6d9e73d12a19afbe40d275f2384b8535",
"s390x-unknown-linux-gnu-0.5.25":
"b17eed40b701252cf6e02c64533bc741dfa6e05340da64cd9feef36afcfed897",
"x86_64-apple-darwin-0.5.25":
"f76e3fb259ec74b2e003ed7e47d1f06a431686381665fc03e2f35e2ee72e6a57",
"x86_64-pc-windows-msvc-0.5.25":
"51ea202a472e552c04e6a13ac7eece0d56748750b9726e4b94f4f3dc96b5f77f",
"x86_64-unknown-linux-gnu-0.5.25":
"fe04914881e2e01fe62001b223344a7c43af734faba447d4764fe92d3baf794e",
"x86_64-unknown-linux-musl-0.5.25":
"aeade1b8fa1fa3c021d30e8f1932fd2c24dca62217c7d6d9da740dde75b7e52f",
"aarch64-apple-darwin-0.5.24":
"8016d47f4cce265b3d122ad8cbbf701713caf803fa7d3ef69d8a1fd6793d939a",
"aarch64-unknown-linux-gnu-0.5.24":
"3cf910468c37c709580d83d19b7b55352cfe05d6e1cc038718698410b6b8c6f0",
"aarch64-unknown-linux-musl-0.5.24":
"aaae0b6fb17b3cafa9869292f4e03104b26fd0de4a36182a6edec44c1665f6a5",
"arm-unknown-linux-musleabihf-0.5.24":
"a11698237ff36b72d119467805c8630d5bfdf6132fe98d01f7c44451c783d450",
"armv7-unknown-linux-gnueabihf-0.5.24":
"e44001c955b7a2c3e53006a262bf74189f75bc2e6d63ac2e71638fb8eee20501",
"armv7-unknown-linux-musleabihf-0.5.24":
"8ca5c602c5a31a6c497abf10dd96694fb2bb9df362fdc604d156fa5044786379",
"i686-pc-windows-msvc-0.5.24":
"d2550254b96753214f9098a03091fa398d948c971738d50ff36113a3b27e391e",
"i686-unknown-linux-gnu-0.5.24":
"7b335c5736fa50aa3092f4212201ea7a65a15c6f40282a315861ec36bf64a41e",
"i686-unknown-linux-musl-0.5.24":
"6b7a8df65d15ad782ca17d82f79b4d7a235e85bf50411e3f7549878909b2a0bb",
"powerpc64-unknown-linux-gnu-0.5.24":
"22c2fb1971cd4ea77d78fc2c7c5574f5e4646525473d08d1b16a4389cda560a8",
"powerpc64le-unknown-linux-gnu-0.5.24":
"1e3cfaa0890d42f448bed7d6c7b66240abfe43130c6923b1d5fb7b0ebc302b94",
"s390x-unknown-linux-gnu-0.5.24":
"a3c8e92deb720dcbf7414d8d0bb91934016d0ace23c3dd452f49a1b92490e0bf",
"x86_64-apple-darwin-0.5.24":
"dcee10ef84309cf0de4153cb7913b0b506eae0a2e6407faa0f1717f015c35f0c",
"x86_64-pc-windows-msvc-0.5.24":
"bd3fedeee0da543d7ac0a530328b3880bc83c1b332b3996f0da691f83423e813",
"x86_64-unknown-linux-gnu-0.5.24":
"a0eb614f7fc38a6e14ef1c4819f1f187591db8e0d3c4218dae38b1bd663a00e2",
"x86_64-unknown-linux-musl-0.5.24":
"5a5a1231a3ecb4f01aab9c839a49764d9ea1ae8e5e467a0aa2a2754c94f9f81c",
"aarch64-apple-darwin-0.5.23":
"bedfc709b281ab4c6ff1c84c0ad7e4525bf2669f56f009f6fb308657bebe165b",
"aarch64-unknown-linux-gnu-0.5.23":
"0f864a958e88693b8102dd7bc0e543a6b6f56e514ba8798235e54fb95c4856a4",
"aarch64-unknown-linux-musl-0.5.23":
"bbfafc3623267d25f63713c934eb57bf521b8b14b94d18412c697d69dbd68251",
"arm-unknown-linux-musleabihf-0.5.23":
"3031d44ae02a6189182956de345c0e22c40b6a8f19bbe67ed7016df228da5cd6",
"armv7-unknown-linux-gnueabihf-0.5.23":
"48429f7f01e9bd6bfb80c2e97db878c05d7d1be1d10de432a33650c65c9d6172",
"armv7-unknown-linux-musleabihf-0.5.23":
"baa22c4e66f80eb1a900437b58966f529af70c89739b690096fa665d6324f540",
"i686-pc-windows-msvc-0.5.23":
"c9d6f5806666921a31f0a3ac88f9848884c67cd7348b0c0dd420c92ae40371ff",
"i686-unknown-linux-gnu-0.5.23":
"91bf1765b77010318d9666601d6ec41108f561a8be5d8a3a0b41c4fbd38c4bb1",
"i686-unknown-linux-musl-0.5.23":
"79093074197e76be9c7699ad361cf6fccc95dd8cea2b10ac2875acc658be55b3",
"powerpc64-unknown-linux-gnu-0.5.23":
"acce824961d78934ec9735bd9dac2a8b7f16e9638c6d909671690c43283bd644",
"powerpc64le-unknown-linux-gnu-0.5.23":
"678773a17cccfa5d8c8e7043e4ebbbaf48b3e1aa482dd334c36e06ba8ebe993e",
"s390x-unknown-linux-gnu-0.5.23":
"34700493c47fcf668ac175ab66c8fb6bdc058dfc56a3f868d34b6e5a586957dd",
"x86_64-apple-darwin-0.5.23":
"40525eceff3a95051e0139839140ec3597a45221cca5000b8290d20d771294f5",
"x86_64-pc-windows-msvc-0.5.23":
"140be2cf57e37c7c86be4840d17b71fbc7daa21e2f46ed60830b4a39ef527663",
"x86_64-unknown-linux-gnu-0.5.23":
"6c45b9a95328b5c250bab14a17af574f7fa284fac0830d6a827e5f6f0b0e6732",
"x86_64-unknown-linux-musl-0.5.23":
"d656e3c274b43e8d9253d79ce3bd20d6bf1bd3fdb13dfd13e5e07d7aa528906d",
"aarch64-apple-darwin-0.5.22":
"95496f513653e7246589b2334a04e2a001f6436919af30d68180ce480fd3971a",
"aarch64-unknown-linux-gnu-0.5.22":
"0ff503ff9d473d25d0460a375ff6ec3ed186ee6be2ffedc67642b3c7d77b6299",
"aarch64-unknown-linux-musl-0.5.22":
"43593ffde18d83f9453a69db70f5dbc61726beefc3bbdb80d1db61612eb26a41",
"arm-unknown-linux-musleabihf-0.5.22":
"78829476fad51a9361aefbb8ee5ed7aa19b981a7d6384e6033115277b761fe94",
"armv7-unknown-linux-gnueabihf-0.5.22":
"2c6b4876c6aa6e642466fb389cc106f5f9cb4ebb9e389bf2c9e883012d3d127b",
"armv7-unknown-linux-musleabihf-0.5.22":
"fc62722c44cd4ccae7e713452bc5d81907852da6d50f3123c4878e510fba52f7",
"i686-pc-windows-msvc-0.5.22":
"4c4e029f05cd94b09cb3c3ac9d2dd4adeb2a1e54d13a09ba79c244d95d960ba7",
"i686-unknown-linux-gnu-0.5.22":
"d17ee5a2ea99875781c21ba2acc3785d86ebf27cc76011fa59ae52f21d349a49",
"i686-unknown-linux-musl-0.5.22":
"092387e1a32a40cee94165d96072e219b299b8d76a25a764659ccb178855c3d8",
"powerpc64-unknown-linux-gnu-0.5.22":
"bd8c2b70f461d6cc189abaaaa0d4e75f6b3044eddaef0f790920436f2d7cb772",
"powerpc64le-unknown-linux-gnu-0.5.22":
"ecd4c18c0a889b7ceaca906340f89ef815b5a7e37fbfb318ec6131f23627b794",
"s390x-unknown-linux-gnu-0.5.22":
"5c092fb46def4c7a45094905990acfab34cf4ad3af60e6accddbfa81b1409c03",
"x86_64-apple-darwin-0.5.22":
"5f636c75a976389ec0a4b03b4a7a78b5634daf1915703079cbc514a26c691e18",
"x86_64-pc-windows-msvc-0.5.22":
"bbe5dc1b2777f170d53d3d7856376eda9229a2c4f74332336e0ef0603325cbe5",
"x86_64-unknown-linux-gnu-0.5.22":
"d15f8595f080817f55f207bf9a67cbce6423e5b1fbfeba58c7e67e86bcc7be41",
"x86_64-unknown-linux-musl-0.5.22":
"fba667f90b0b89b4171127ebe7b29961250ddbcd9f86116eb195c46afe0857c8",
"aarch64-apple-darwin-0.5.21":
"74f501d91b4db0b767d5d621086d3e2e8acc3f5356cf5527de80e97bb312a626",
"aarch64-unknown-linux-gnu-0.5.21":
"c4cc2ec78a294378b867ebd08c5842d3ce71074c2818dc7f641422fb3bf4b2d2",
"aarch64-unknown-linux-musl-0.5.21":
"26152b092f6ace9bec1fe91b39fe11f55428ce5fba87f5de0ec6b16e2c65928f",
"arm-unknown-linux-musleabihf-0.5.21":
"2a90a8976a7efbe5eef613b84285f2f6b0cda7e9547a2e548bf6f253cc06dbb1",
"armv7-unknown-linux-gnueabihf-0.5.21":
"71b0e840af1e50368d60bdb6a4bb22483b0462e7238e7e08fb624466c4b22c65",
"armv7-unknown-linux-musleabihf-0.5.21":
"46a3be0330ebfbeb4c521a523545334ef3bd38ac0b4acab19734c0d50399ac6f",
"i686-pc-windows-msvc-0.5.21":
"a0583cd71a410ce8329cd0951a72966a1219c1a7c12c437c3072779ce7dfe893",
"i686-unknown-linux-gnu-0.5.21":
"5d46307d7883f5ec5416c589b65bfedd17544accbe54eabd13d27417bcdf435e",
"i686-unknown-linux-musl-0.5.21":
"27d220b8e8effd1dc566e6ae7f90e7a074af07f4e61a0406f2c8c9883ef82e33",
"powerpc64-unknown-linux-gnu-0.5.21":
"ca744fee2634dfe203683fa809e4b5998564ebf2b8e7f0c329c1229edbe1ea8a",
"powerpc64le-unknown-linux-gnu-0.5.21":
"1c08d342b4644158eee7723a75f59b3f388ceb4a91106d284d343acfb906bb77",
"s390x-unknown-linux-gnu-0.5.21":
"892c78a989164f1e6e97a8e07d995bf1ab6c5374ee85d4b47c47c6706bb2e8fe",
"x86_64-apple-darwin-0.5.21":
"66a0f5ea3aee2d497450138ae1e99f734eed7457af5e839a41ef219d51e90e17",
"x86_64-pc-windows-msvc-0.5.21":
"9968e8ef4b567d5690ccb9ac6e8338eb56cb964c57430a2843dd21f88ec5b81a",
"x86_64-unknown-linux-gnu-0.5.21":
"e108c300eafae22ad8e6d94519605530f18f8762eb58d2b98a617edfb5d088fc",
"x86_64-unknown-linux-musl-0.5.21":
"71347d2fdda9e3e7105ecd3a8566e3b607da9fddf23ac83adafcf6451ea9139d",
"aarch64-apple-darwin-0.5.20":
"d7f0c219808073f8ae8c6a991e85e5c7539b4e539b014a4ca5b3286911f06fd5",
"aarch64-unknown-linux-gnu-0.5.20":

View file

@ -1,12 +1,16 @@
import * as core from "@actions/core";
import * as tc from "@actions/tool-cache";
import * as path from "node:path";
import * as pep440 from "@renovatebot/pep440";
import { promises as fs } from "node:fs";
import { OWNER, REPO, TOOL_CACHE_NAME } from "../utils/constants";
import {
GITHUB_COM_API,
OWNER,
REPO,
TOOL_CACHE_NAME,
} from "../utils/constants";
import type { Architecture, Platform } from "../utils/platforms";
import { validateChecksum } from "./checksum/checksum";
import { Octokit } from "../utils/octokit";
import * as github from "@actions/github";
export function tryGetFromToolCache(
arch: Architecture,
@ -75,7 +79,6 @@ export async function resolveVersion(
versionInput: string,
githubToken: string,
): Promise<string> {
core.debug(`Resolving version: ${versionInput}`);
const version =
versionInput === "latest"
? await getLatestVersion(githubToken)
@ -85,35 +88,16 @@ export async function resolveVersion(
return version;
}
const availableVersions = await getAvailableVersions(githubToken);
core.debug(`Available versions: ${availableVersions}`);
const resolvedVersion = maxSatisfying(availableVersions, version);
if (resolvedVersion === undefined) {
const resolvedVersion = tc.evaluateVersions(availableVersions, version);
if (resolvedVersion === "") {
throw new Error(`No version found for ${version}`);
}
return resolvedVersion;
}
async function getAvailableVersions(githubToken: string): Promise<string[]> {
try {
const octokit = new Octokit({
auth: githubToken,
});
return await getReleaseTagNames(octokit);
} catch (err) {
if ((err as Error).message.includes("Bad credentials")) {
core.info(
"No (valid) GitHub token provided. Falling back to anonymous. Requests might be rate limited.",
);
const octokit = new Octokit();
return await getReleaseTagNames(octokit);
}
throw err;
}
}
const octokit = github.getOctokit(githubToken, { baseUrl: GITHUB_COM_API });
async function getReleaseTagNames(
octokit: InstanceType<typeof Octokit>,
): Promise<string[]> {
const response = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: OWNER,
repo: REPO,
@ -122,55 +106,15 @@ async function getReleaseTagNames(
}
async function getLatestVersion(githubToken: string) {
core.debug("Getting latest version...");
const octokit = new Octokit({
auth: githubToken,
});
const octokit = github.getOctokit(githubToken, { baseUrl: GITHUB_COM_API });
let latestRelease: { tag_name: string } | undefined;
try {
latestRelease = await getLatestRelease(octokit);
} catch (err) {
core.info(
"No (valid) GitHub token provided. Falling back to anonymous. Requests might be rate limited.",
);
if (err instanceof Error) {
core.debug(err.message);
}
const octokit = new Octokit();
latestRelease = await getLatestRelease(octokit);
}
if (!latestRelease) {
throw new Error("Could not determine latest release.");
}
core.debug(`Latest version: ${latestRelease.tag_name}`);
return latestRelease.tag_name;
}
async function getLatestRelease(octokit: InstanceType<typeof Octokit>) {
const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({
owner: OWNER,
repo: REPO,
});
return latestRelease;
}
function maxSatisfying(
versions: string[],
version: string,
): string | undefined {
const maxSemver = tc.evaluateVersions(versions, version);
if (maxSemver !== "") {
core.debug(`Found a version that satisfies the semver range: ${maxSemver}`);
return maxSemver;
if (!latestRelease) {
throw new Error("Could not determine latest release.");
}
const maxPep440 = pep440.maxSatisfying(versions, version);
if (maxPep440 !== null) {
core.debug(
`Found a version that satisfies the pep440 specifier: ${maxPep440}`,
);
return maxPep440;
}
return undefined;
return latestRelease.tag_name;
}

View file

@ -16,7 +16,6 @@ import {
import {
cacheLocalPath,
checkSum,
ignoreEmptyWorkdir,
enableCache,
githubToken,
pyProjectFile,
@ -31,8 +30,7 @@ import fs from "node:fs";
import { getUvVersionFromConfigFile } from "./utils/pyproject";
async function run(): Promise<void> {
detectEmptyWorkdir();
const platform = await getPlatform();
const platform = getPlatform();
const arch = getArch();
try {
@ -44,7 +42,7 @@ async function run(): Promise<void> {
}
const setupResult = await setupUv(platform, arch, checkSum, githubToken);
addUvToPathAndOutput(setupResult.uvDir);
addUvToPath(setupResult.uvDir);
addToolBinToPath();
setToolDir();
await setupPython();
@ -63,20 +61,6 @@ async function run(): Promise<void> {
}
}
function detectEmptyWorkdir(): void {
if (fs.readdirSync(".").length === 0) {
if (ignoreEmptyWorkdir) {
core.info(
"Empty workdir detected. Ignoring because ignore-empty-workdir is enabled",
);
} else {
core.warning(
"Empty workdir detected. This may cause unexpected behavior. You can enable ignore-empty-workdir to mute this warning.",
);
}
}
}
async function setupUv(
platform: Platform,
arch: Architecture,
@ -129,9 +113,7 @@ async function determineVersion(): Promise<string> {
return await resolveVersion(versionFromConfigFile || "latest", githubToken);
}
function addUvToPathAndOutput(cachedPath: string): void {
core.setOutput("uv-path", `${cachedPath}${path.sep}uv`);
core.setOutput("uvx-path", `${cachedPath}${path.sep}uvx`);
function addUvToPath(cachedPath: string): void {
core.addPath(cachedPath);
core.info(`Added ${cachedPath} to the path`);
}

View file

@ -1,8 +1,8 @@
import * as semver from "semver";
import * as github from "@actions/github";
import * as core from "@actions/core";
import { Octokit } from "./utils/octokit";
import { OWNER, REPO } from "./utils/constants";
import { GITHUB_COM_API, OWNER, REPO } from "./utils/constants";
import * as semver from "semver";
import { updateChecksums } from "./download/checksum/update-known-checksums";
@ -10,9 +10,7 @@ async function run(): Promise<void> {
const checksumFilePath = process.argv.slice(2)[0];
const github_token = process.argv.slice(2)[1];
const octokit = new Octokit({
auth: github_token,
});
const octokit = github.getOctokit(github_token, { baseUrl: GITHUB_COM_API });
const response = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: OWNER,

View file

@ -1,3 +1,4 @@
export const REPO = "uv";
export const OWNER = "astral-sh";
export const TOOL_CACHE_NAME = "uv";
export const GITHUB_COM_API = "https://api.github.com";

View file

@ -13,8 +13,6 @@ export const cacheDependencyGlob = core.getInput("cache-dependency-glob");
export const pruneCache = core.getInput("prune-cache") === "true";
export const ignoreNothingToCache =
core.getInput("ignore-nothing-to-cache") === "true";
export const ignoreEmptyWorkdir =
core.getInput("ignore-empty-workdir") === "true";
export const toolBinDir = getToolBinDir();
export const toolDir = getToolDir();
export const githubToken = core.getInput("github-token");

View file

@ -1,58 +0,0 @@
import { Octokit as Core } from "@octokit/core";
import type {
Constructor,
OctokitOptions,
} from "@octokit/core/dist-types/types";
import {
paginateRest,
type PaginateInterface,
} from "@octokit/plugin-paginate-rest";
import { legacyRestEndpointMethods } from "@octokit/plugin-rest-endpoint-methods";
import { fetch as undiciFetch, ProxyAgent, type RequestInit } from "undici";
export type { RestEndpointMethodTypes } from "@octokit/plugin-rest-endpoint-methods";
const DEFAULTS = {
baseUrl: "https://api.github.com",
userAgent: "setup-uv",
};
export function getProxyAgent() {
const httpProxy = process.env.HTTP_PROXY || process.env.http_prox;
if (httpProxy) {
return new ProxyAgent(httpProxy);
}
const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
if (httpsProxy) {
return new ProxyAgent(httpsProxy);
}
return undefined;
}
export const customFetch = async (url: string, opts: RequestInit) =>
await undiciFetch(url, {
dispatcher: getProxyAgent(),
...opts,
});
export const Octokit: typeof Core &
Constructor<
{
paginate: PaginateInterface;
} & ReturnType<typeof legacyRestEndpointMethods>
> = Core.plugin(paginateRest, legacyRestEndpointMethods).defaults(
function buildDefaults(options: OctokitOptions): OctokitOptions {
return {
...DEFAULTS,
...options,
request: {
fetch: customFetch,
...options.request,
},
};
},
);
export type Octokit = InstanceType<typeof Octokit>;

View file

@ -1,17 +1,10 @@
import * as exec from "@actions/exec";
import * as core from "@actions/core";
export type Platform =
| "unknown-linux-gnu"
| "unknown-linux-musl"
| "unknown-linux-musleabihf"
| "apple-darwin"
| "pc-windows-msvc";
export type Architecture =
| "i686"
| "x86_64"
| "aarch64"
| "s390x"
| "powerpc64le";
export type Architecture = "i686" | "x86_64" | "aarch64";
export function getArch(): Architecture | undefined {
const arch = process.arch;
@ -19,8 +12,6 @@ export function getArch(): Architecture | undefined {
ia32: "i686",
x64: "x86_64",
arm64: "aarch64",
s390x: "s390x",
ppc64: "powerpc64le",
};
if (arch in archMapping) {
@ -28,49 +19,15 @@ export function getArch(): Architecture | undefined {
}
}
export async function getPlatform(): Promise<Platform | undefined> {
const processPlatform = process.platform;
export function getPlatform(): Platform | undefined {
const platform = process.platform;
const platformMapping: { [key: string]: Platform } = {
linux: "unknown-linux-gnu",
darwin: "apple-darwin",
win32: "pc-windows-msvc",
};
if (processPlatform in platformMapping) {
const platform = platformMapping[processPlatform];
if (platform === "unknown-linux-gnu") {
const isMusl = await isMuslOs();
return isMusl ? "unknown-linux-musl" : platform;
}
return platform;
}
}
async function isMuslOs(): Promise<boolean> {
let stdOutput = "";
let errOutput = "";
const options: exec.ExecOptions = {
silent: !core.isDebug(),
listeners: {
stdout: (data: Buffer) => {
stdOutput += data.toString();
},
stderr: (data: Buffer) => {
errOutput += data.toString();
},
},
ignoreReturnCode: true,
};
try {
const execArgs = ["--version"];
await exec.exec("ldd", execArgs, options);
return stdOutput.includes("musl") || errOutput.includes("musl");
} catch (error) {
const err = error as Error;
core.warning(
`Failed to determine glibc or musl. Falling back to glibc. Error: ${err.message}`,
);
return false;
if (platform in platformMapping) {
return platformMapping[platform];
}
}

View file

@ -5,19 +5,11 @@ import * as toml from "smol-toml";
export function getUvVersionFromConfigFile(
filePath: string,
): string | undefined {
core.debug(`Trying to find required-version for uv in: ${filePath}`);
if (!fs.existsSync(filePath)) {
core.warning(`Could not find file: ${filePath}`);
return undefined;
}
let requiredVersion: string | undefined;
try {
requiredVersion = getRequiredVersion(filePath);
} catch (err) {
const message = (err as Error).message;
core.warning(`Error while parsing ${filePath}: ${message}`);
return undefined;
}
let requiredVersion = getRequiredVersion(filePath);
if (requiredVersion?.startsWith("==")) {
requiredVersion = requiredVersion.slice(2);