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.
Release files for automas-maafw-runtime-pool 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| automas_maafw_runtime_pool-0.2.0.tar.gz | 30.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| automas_maafw_runtime_pool-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.5 kB
Release files / automas_maafw_runtime_pool-0.2.0.tar.gz
| Download URL | automas_maafw_runtime_pool-0.2.0.tar.gz |
|---|---|
| Size | 30.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
61f7be1d1d356a6d5feaa2bd5728f119c881be84067766901a366c05ac7353ff
|
|
BLAKE2b-256 checksum How to use checksums |
f594b7f0cf12222730ab371face439ec950b8c382025115124621beb8469d7df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / automas_maafw_runtime_pool-0.2.0-py3-none-any.whl
| Download URL | automas_maafw_runtime_pool-0.2.0-py3-none-any.whl |
|---|---|
| Size | 32.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9e0e11e5e84f6d569640a1e4f81c8da9953d689235df188dd1f2191ad69d9fd9
|
|
BLAKE2b-256 checksum How to use checksums |
5927a66f59fae6e5cc033ba1e5402abffb3a6bd16108c647e4819b2b7c88d847
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency log