mirror of
https://github.com/astral-sh/setup-uv.git
synced 2026-09-20 12:18:48 +00:00
Expose a Python "identity" output (#1036)
https://github.com/pyca/cryptography/pull/15572#discussion_r3913508686 has the context for this: TL;DR our current `python-version` output mirrors the "request" version exactly, which means that it's insufficient for any downstream that needs to manage its own cache keys (since caches shouldn't be shared across release candidates, but the `uv python` request version doesn't include RC numbers). The first commit here was my attempt to fix this by exposing the runtime Python version, but this too is imprecise: the runtime version doesn't indicate the interpreter variant (e.g. freethreading), which is also important to capture in the cache identity. My solution here is to expose `python-runtime-id`, which is just the `key` of the active Python version from `uv python list --output-format=json`. --------- Signed-off-by: William Woodruff <william@yossarian.net>
This commit is contained in:
@@ -17,6 +17,18 @@ This allows directly using it in later steps:
|
||||
|
||||
By default, the venv is created at `.venv` inside the `working-directory`.
|
||||
|
||||
With `activate-environment: true`, the `python-runtime-id` output identifies the
|
||||
venv's Python runtime as reported by uv. This is an opaque identifier that users of the action
|
||||
can use as a cache key if necessary; users should not assume anything about
|
||||
the stability or structure of the identifier itself.
|
||||
|
||||
For example, you can combine it with the platform and dependency information relevant to
|
||||
your cache with `id: setup-uv` on the setup step:
|
||||
|
||||
```yaml
|
||||
key: build-${{ runner.os }}-${{ runner.arch }}-${{ steps.setup-uv.outputs.python-runtime-id }}-${{ hashFiles('uv.lock') }}
|
||||
```
|
||||
|
||||
You can customize the venv location with `venv-path`, for example to place it in the runner temp directory:
|
||||
|
||||
```yaml
|
||||
|
||||
Reference in New Issue
Block a user