automas-maafw-runtime-pool
Shared, selector-addressed Python environments for MaaFW runner workers.
The plugin instance exposes a Root setting. Leaving it empty preserves the
legacy config/maafw_runtime_pool location under the AUTO-MAS working
directory. The path is fixed for the service lifetime and configuration changes
take effect after restart. Every pool has a persistent UUID in
.auto_mas_maafw_runtime_pool.json; legacy version-1 markers are upgraded in
place without moving runtimes. Empty roots and the known markerless default
layout can be initialized, while unknown non-empty directories, invalid marker
kinds, symlinks and Windows reparse-point chains are rejected. storage_info()
returns the resolved root, poolId, default-root flag and JSON-friendly
rootIdentity.
The plugin provides the JSON-friendly maafw.runtime_pool.v1 service. Runtime
Pool 0.2.0 accepts an optional python request with a CPython constraint and
supports the CP312 and CP313 minor families. It resolves a configured, host, or
pool-local uv-managed interpreter for that ABI; resolve_runtime() never
downloads one, while ensure_runtime() may prepare the missing pool-local
interpreter. One interpreter family can seed multiple environments, but it is
not itself a shared site-packages directory.
Runtime identity is derived from the complete canonical requirement set plus
the selected Python ABI, probed patch version, platform and architecture for
explicit multi-ABI requests. Projects with the same full identity reuse one
environment, while a different dependency selector or Python interpreter
identity receives a different venv. Exact constraints such as ==3.13.14 are
looked up and installed as that exact uv-managed patch. Host Python uses the
same full probed patch identity, so it can reuse an explicit route only when the
physical interpreter and complete requirement selector are actually identical.
Each complete canonical requirement set still receives its own isolated venv.
When uv is available, Runtime Pool creates a pool-local cache/uv and uses
uv pip install --link-mode hardlink for every environment. Different runtime
selectors can therefore reuse downloaded wheels and unpacked package files
without sharing site-packages or composing PYTHONPATH across environments.
The runtime manifest exposes the selected installer, cache scope/path and link
mode under installerMetadata.
If uv is unavailable, a full Python distribution that provides both venv
and ensurepip retains the legacy stdlib-venv + pip path. Embeddable Python
without those modules requires uv; Runtime Pool does not create a mixed
PYTHONPATH environment as a fallback.
The selector is not a resolved dependency lock: version ranges remain ranges
in the identity. Production installation records pip freeze --all as
resolvedRequirements in the runtime manifest for audit. uv-backed installs
use uv pip freeze; the legacy pip path uses pip freeze --all. Recreating a
deleted runtime can resolve newer packages still allowed by the same selector.
Project agents and project resources are intentionally outside this pool.
The service exposes list_runtimes, resolve_runtime, ensure_runtime,
touch, pin, delete, and collect_garbage. Durable project ownership is
reconciled with set_references(runtime_id, references); active runner
processes use expiring leases instead. GC is dry-run by default and refuses to
delete pinned, referenced, or leased runtimes.
Every GC response also contains cachePrune. A dry run records the pool-local
uv cache size, file count, uv version, and the exact uv cache prune command
without invoking it. A real collection first removes eligible runtime
environments and then delegates dangling-entry cleanup to uv itself. The
result records before/after statistics, reclaimed bytes/files, exit status,
and uv output. Runtime Pool never substitutes a recursive directory delete for
uv cache maintenance; a missing uv executable, a symlinked cache path, or a
failed command is returned as an explicit unavailable, unsafe, or error
status.
Local paths, editable installs, requirement includes, and local archives are rejected because they cannot safely form a cross-project identity. Callers can inject an installer for offline mirrors and deterministic tests.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file automas_maafw_runtime_pool-0.2.0.tar.gz.
File metadata
- Download URL: automas_maafw_runtime_pool-0.2.0.tar.gz
- Upload date:
- Size: 30.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61f7be1d1d356a6d5feaa2bd5728f119c881be84067766901a366c05ac7353ff
|
|
| MD5 |
552aa5578218b004b1797b724a4ca085
|
|
| BLAKE2b-256 |
f594b7f0cf12222730ab371face439ec950b8c382025115124621beb8469d7df
|
Provenance
The following attestation bundles were made for automas_maafw_runtime_pool-0.2.0.tar.gz:
Publisher:
publish.yml on AUTO-MAS-Project/automas-maafw
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
automas_maafw_runtime_pool-0.2.0.tar.gz -
Subject digest:
61f7be1d1d356a6d5feaa2bd5728f119c881be84067766901a366c05ac7353ff - Sigstore transparency entry: 2389429938
- Sigstore integration time:
-
Permalink:
AUTO-MAS-Project/automas-maafw@fa5c682a26e4817a5eb05637609e9f43a0db934d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AUTO-MAS-Project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fa5c682a26e4817a5eb05637609e9f43a0db934d -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file automas_maafw_runtime_pool-0.2.0-py3-none-any.whl.
File metadata
- Download URL: automas_maafw_runtime_pool-0.2.0-py3-none-any.whl
- Upload date:
- Size: 32.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e0e11e5e84f6d569640a1e4f81c8da9953d689235df188dd1f2191ad69d9fd9
|
|
| MD5 |
4e1d7979319ed180389b446528f12366
|
|
| BLAKE2b-256 |
5927a66f59fae6e5cc033ba1e5402abffb3a6bd16108c647e4819b2b7c88d847
|
Provenance
The following attestation bundles were made for automas_maafw_runtime_pool-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on AUTO-MAS-Project/automas-maafw
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
automas_maafw_runtime_pool-0.2.0-py3-none-any.whl -
Subject digest:
9e0e11e5e84f6d569640a1e4f81c8da9953d689235df188dd1f2191ad69d9fd9 - Sigstore transparency entry: 2389430011
- Sigstore integration time:
-
Permalink:
AUTO-MAS-Project/automas-maafw@fa5c682a26e4817a5eb05637609e9f43a0db934d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AUTO-MAS-Project
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fa5c682a26e4817a5eb05637609e9f43a0db934d -
Trigger Event:
workflow_dispatch
-
Statement type: