mayu
mayu is a fast, Redis-backed Python task queue with a Rust core, built for free-threaded (no-GIL) Python. Its workers run tasks on real parallel OS threads under CPython 3.14t, so a few processes can do the work that Celery needs dozens of forked processes for.
Status: alpha. Delivery is at-least-once: tasks must be idempotent.
- Fast: about 18× Celery's no-op throughput and 5× on a realistic task, with a fraction of the memory (benchmarks).
- Free-threaded first: thread mode on Python 3.14t, with automatic fallback to process mode on GIL builds (3.13, 3.14).
- Reliable: acks after the task finishes, crash recovery, poison-task detection, dead letters and replay, and it survives Redis restarts.
- Familiar API:
@app.task,.delay(),.send(), retries, countdown/ETA, rate limits, time limits, queue priority,link=callbacks, sync andasync deftasks. - Operable: Prometheus metrics, JSON logs, OpenTelemetry tracing, and an
inspectCLI.
Install
pip install mayu # or: uv add mayu
pip install "mayu[otel]" # with OpenTelemetry tracing
Requires Python 3.13+ and Redis. Use a free-threaded build (python3.14t, e.g.
uv venv --python 3.14t) to get thread mode.
Quickstart
# tasks.py
from mayu import App, Retry
app = App(broker="redis://localhost:6379/0", result_ttl=3600)
@app.task(max_retries=5, retry_on=(TimeoutError,))
def add(a: int, b: int) -> int:
return a + b
@app.task
async def fetch(url: str) -> str:
...
mayu worker tasks:app --threads 32
from tasks import add
add.delay(2, 3)
h = add.send(2, 3, countdown=10)
h.result(timeout=30) # 5
Configuration comes from constructor arguments, overridden by MAYU_BROKER,
MAYU_RESULT_TTL (0 disables results), MAYU_DEFAULT_QUEUE, MAYU_SERIALIZER.
countdown, eta, queue and link are reserved option names and cannot be task parameters.
Reliability
mayu delivers at least once: a task is acknowledged only after it finishes, so a crash means the task runs again, never that it is lost. Write idempotent tasks.
- Each worker heartbeats to
mayu:workers:{worker_id}(TTL = 3 ×--heartbeat-interval). - A worker keeps ownership of tasks it is running by re-claiming them every half
--visibility-timeout(default 30 s). - When a worker dies (
kill -9, OOM, segfault), the other workers reclaim its tasks once they have been silent for--visibility-timeout. - A task whose worker dies
--max-deliveriestimes in a row (default 5) is treated as poison and dead-lettered instead of being retried forever. - Redis restarts are survived: connections reconnect, and outcomes produced while Redis is down are recorded when it returns. Use Redis persistence (AOF) if queued tasks must survive a Redis restart.
- Python threads cannot be killed: set timeouts on network clients inside tasks.
Chaos test (needs Docker): .venv/bin/pytest tests/chaos -v
(MAYU_CHAOS_N / MAYU_CHAOS_SECONDS scale it).
Time limits
@app.task(soft_time_limit=30, hard_time_limit=60)
def crunch(): ...
- Soft limit:
mayu.SoftTimeLimitExceededis raised inside the task at its next Python bytecode, so it can be caught to clean up. It cannot interrupt blocking C calls or socket reads: set timeouts on network clients. - On Python 3.13 a soft limit that lands in a
whileloop with an empty body can escape the task'stry/except(a CPython 3.13 bug, fixed in 3.14). The task then fails withSoftTimeLimitExceededwithout running its cleanup. - Hard limit: Python threads cannot be killed. The task is recorded as failed with
mayu.TimeLimitExceeded(retried if it is inretry_on), its thread is abandoned as a zombie, and a replacement thread takes over. Whatever the zombie produces later is discarded. - Async tasks are cancelled at their limit instead.
@app.task(threadsafe=False)runs a task on one dedicated thread, one call at a time, for legacy code that is not thread-safe.
The worker recycles itself (graceful stop, then a fresh interpreter in the same process) when
zombies exceed --max-zombie-threads (default 4), after --max-tasks-per-process tasks, or
above --max-memory-per-process MB of RSS.
Rate limits
@app.task(rate_limit="100/s") # also "10/m", "5/h"; a bare number means per second
def call_api(): ...
Starts are spaced evenly (no bursts). The limit is per worker process: with
--processes 4, a 10/s task can start 40 times a second across them. Tasks that would wait
more than a second for their turn go back to Redis until then, so a rate-limited backlog never
fills a worker's prefetch buffer or delays other tasks. A deferred task returns to Redis as a
fresh entry, so its crash-redelivery count (--max-deliveries) starts over. Deferred tasks are
spaced for the worker that deferred them, so adding workers doesn't speed up a backlog that is
already deferred.
Queue priority
mayu worker tasks:app --queues high,default,low
The order of --queues is a strict priority: whenever a worker picks the next task to start,
it prefers high tasks over default ones. Tasks already claimed into its prefetch buffer, or
already running, are not preempted, and a constantly busy high queue still starves the ones
after it. Without --queues, a worker consumes every queue your app uses, at equal priority.
Callbacks
add.send(2, 3, link=notify.s("sum")) # after add succeeds: notify(5, "sum")
add.send(2, 3, link=[audit, notify.s("sum")])
A link= callback runs only after its parent succeeds, with the parent's result as its first
argument (even when results are disabled). The callback is enqueued in the same atomic step
that acks the parent, so it is enqueued exactly once per successful parent. Like every task, it
can still run more than once if a worker crashes. Callbacks run on the callback task's queue
and do not chain further (no canvas).
Modes
mayu worker tasks:app --threads 32 --processes 2 # thread mode: 2 processes × 32 threads
mayu worker tasks:app --mode process --processes 8 # process mode: 8 processes × 1 task each
--mode auto (default) uses thread mode when the GIL is off after importing your app, and
process mode otherwise, naming the module that re-enabled the GIL. With more than one process,
a supervising parent keeps the workers running, restarts any that crash (with backoff), and
shuts them all down gracefully on SIGTERM. In process mode, a task that exceeds its hard time
limit takes its process down with it, and the process is replaced.
Prefer a few processes × many threads: a segfault in a C extension takes down every task in its process.
Metrics
mayu worker tasks:app --metrics-port 9100 # GET http://host:9100/metrics (Prometheus)
Each worker process serves its own metrics: with --processes 4 --metrics-port 9100, the
processes listen on 9100–9103, so scrape all four. MAYU_METRICS_PORT sets the default;
--metrics-host picks the interface (default 0.0.0.0).
| Metric | Type | Labels |
|---|---|---|
mayu_tasks_received_total |
counter | queue, task |
mayu_tasks_settled_total |
counter | queue, task, outcome (success, retry, dead) |
mayu_task_duration_seconds |
histogram | queue, task |
mayu_tasks_deferred_total |
counter | queue, task (rate-limited tasks sent back to Redis) |
mayu_tasks_reclaimed_total |
counter | queue (taken over from a dead worker) |
mayu_broker_errors_total |
counter | op |
mayu_worker_concurrency, mayu_tasks_inflight, mayu_tasks_running |
gauge | |
mayu_queue_ready, mayu_queue_pending, mayu_queue_delayed, mayu_queue_dead |
gauge | queue |
Queue gauges are read from Redis on each scrape, so every worker reports the same values: use
max by (queue) (mayu_queue_ready). If Redis cannot be read, the scrape still answers without them.
Logging
mayu worker tasks:app --log-format json --log-level INFO
text (default) writes readable lines; json writes one object per line on stderr, from both the
Rust core and Python, with timestamp, level, message, target and event fields such as
task_id, task, queue and error. MAYU_LOG_FORMAT and MAYU_LOG_LEVEL set the defaults. Failed
tasks are logged at WARN, retries at INFO, successes at DEBUG. When you run WorkerRunner
from your own code, call mayu.configure_logging("json") first.
Inspecting and dead letters
mayu inspect tasks:app # queue depths (ready, claimed, delayed, dead) and live workers
mayu inspect tasks:app --json
mayu dead list tasks:app --queue emails # oldest first: when, task id, task, attempt, error
mayu dead replay tasks:app --queue emails # run them again
mayu dead replay tasks:app --queue emails --id 01J... --limit 10
A replayed task keeps its id, starts again at attempt 0, and its stored failure is cleared, so
handle.result() waits for the new outcome. Each dead letter is moved back atomically, so
concurrent replays never enqueue a task twice. A replay only takes the dead letters that exist
when it starts: tasks that fail again during the replay stay dead. Entries whose envelope could
not be decoded are listed but never replayed.
Tracing
pip install "mayu[otel]"
With OpenTelemetry installed and a tracer provider configured, send() creates a send <task>
producer span and stores its W3C traceparent in the task envelope. The worker runs the task inside a
process <task> consumer span that is its child, so spans your task creates (HTTP calls, database
queries) join the caller's trace. Retries, rate-limit deferrals and link= callbacks keep the original
trace context. A failed attempt marks its span as an error. Without OpenTelemetry installed, nothing
changes.
Benchmarks
mayu vs Celery, RQ, Dramatiq and streaQ at 64 concurrent tasks: no-op throughput, a realistic task
(JSON decode + 5 ms I/O + 1 ms CPU), and memory at equal concurrency. Results and method:
bench/RESULTS.md. Reproduce with bench/setup.sh && bench/all.sh (needs Docker and uv).
Development
See CONTRIBUTING.md for setup, the test matrix and the pull request checklist.
Coding agents should also read AGENTS.md. The design is in
docs/specs/2026-10-11-mayu-architecture-design.md.
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option. Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in mayu by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Metadata
Release files for mayu 0.1.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 | Provenance | |
|---|---|---|---|---|
| mayu-0.1.0.tar.gz | 90.4 kB | With provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| mayu-0.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.28+ x86-64 | Details |
| mayu-0.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.28+ ARM64 | Details |
| mayu-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 free-threading | macOS 11.0+ ARM64 | Details |
| mayu-0.1.0-cp314-cp314t-macosx_10_12_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | macOS 10.12+ x86-64 | Details |
| mayu-0.1.0-cp314-cp314-manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.28+ x86-64 | Details |
| mayu-0.1.0-cp314-cp314-manylinux_2_28_aarch64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.28+ ARM64 | Details |
| mayu-0.1.0-cp314-cp314-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 | macOS 11.0+ ARM64 | Details |
| mayu-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl | CPython 3.14 | CPython 3.14 | macOS 10.12+ x86-64 | Details |
| mayu-0.1.0-cp313-cp313-manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ x86-64 | Details |
| mayu-0.1.0-cp313-cp313-manylinux_2_28_aarch64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ ARM64 | Details |
| mayu-0.1.0-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
| mayu-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl | CPython 3.13 | CPython 3.13 | macOS 10.12+ x86-64 | Details |
Total release size: 18.4 MB
Release files / mayu-0.1.0.tar.gz
| Download URL | mayu-0.1.0.tar.gz |
|---|---|
| Size | 90.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
363d0b90adb8d7dbbd8262c9b8867a5ede243b016bdb7a4acbd0f084cb044316
|
|
BLAKE2b-256 checksum How to use checksums |
0a752322778c0596cc083cd30b8fb1429cefb59f8fb3a292f674d43bba0bb1a3
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl
| Download URL | mayu-0.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
81b658c0cce46502b95648819d61bdcc752c45a3ef120bb3b14eea3229f2f0d3
|
|
BLAKE2b-256 checksum How to use checksums |
e7057ca5fd0b4982da37d5f06547f911f269cb2591a14d08fc491d385794db02
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl
| Download URL | mayu-0.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
fa0161a20c6f95aa5948348f57838ecdc143d1db0a660ea680f00b46cd797182
|
|
BLAKE2b-256 checksum How to use checksums |
b41f9483d2e2a1d1e3786a3ed655c57386460e14e2555a760860d0561e179202
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl
| Download URL | mayu-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
fe8900a2108b213b42dabf6ebc48754f5bc57130c7058d184db8f180271d018a
|
|
BLAKE2b-256 checksum How to use checksums |
18a995005089cf1bfb8620f0991f544930317af616be5801272d1041e2e68566
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp314-cp314t-macosx_10_12_x86_64.whl
| Download URL | mayu-0.1.0-cp314-cp314t-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
3939b08cd1f562d108361a7c22f885d30156c2177d54f3c3b9cfd8eb5d65d346
|
|
BLAKE2b-256 checksum How to use checksums |
ae1f8a7459c3b445fe36c6012f6d3f8d6311a3366d9c7979bca996a60ca17a43
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | mayu-0.1.0-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
0d1aa20f5d441d7b074f8517f90d3ebce4e929c102938c27a544a1af9d21c3ad
|
|
BLAKE2b-256 checksum How to use checksums |
9e5662557f7f1d31120df3c802e003ba272e2a55c1a88a457e6c7a2f7877ef72
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp314-cp314-manylinux_2_28_aarch64.whl
| Download URL | mayu-0.1.0-cp314-cp314-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
9dd435fc16b248f9f43da4a311650bf432440bfe4b1ca20737a200572003ed44
|
|
BLAKE2b-256 checksum How to use checksums |
16436477955d96a0d7703c400aa02796398b7ac6eab667487b5d0f5294930fa6
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | mayu-0.1.0-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c2dec3da747c7c8ecb4ca90424777f119d056ff5a151531fd221d6fd438f86a6
|
|
BLAKE2b-256 checksum How to use checksums |
cda53e7336698070a5b52936653fa09d6bcdb808d3ad99f82d6048ccf7625db7
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl
| Download URL | mayu-0.1.0-cp314-cp314-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
1c0f2c3337fb48cd5e56b716f03b2831c1499f43a9aef5f9cc91da6c431e22f7
|
|
BLAKE2b-256 checksum How to use checksums |
5471ee515b2fce3c8ee804e19c64f91bc53b229b576ee5a767979759000ea691
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | mayu-0.1.0-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
67e01ba5d44408e92f469d9bf8b57f8139d068f3343c139a4467bc6645be2794
|
|
BLAKE2b-256 checksum How to use checksums |
6522012bbd9cafd37c527c3c924c1373aec310e981f568a78959db52b6057632
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp313-cp313-manylinux_2_28_aarch64.whl
| Download URL | mayu-0.1.0-cp313-cp313-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
399a8852a12127f9f52f6a69594130b3afc5e2a0d92fc1c6bee54ed868fa7bee
|
|
BLAKE2b-256 checksum How to use checksums |
b03e2ecbbef6f200f3f57857d5f1585e39ca146ca286eaf0d0a0032e60909b85
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | mayu-0.1.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
a40f4f52fcd2bab0f97a89a65d035d7c2bd54c52d600f7c1e08bd9ba82b5e3fa
|
|
BLAKE2b-256 checksum How to use checksums |
33a71b89f838b379a0ff679fea668246e005423e161338d567c6782b921a3fd2
|
| 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 Oct 11, 2026.
Transparency logRelease files / mayu-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl
| Download URL | mayu-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
2351d639bee03dc95a5964c6b8199646d77e225249ea05c36c091f7abcbec559
|
|
BLAKE2b-256 checksum How to use checksums |
d7e3f00463a5aa92913f516f1b4e313b857a954bf7d8ea2e1f934b990f0315c4
|
| 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 Oct 11, 2026.
Transparency logSecurity for mayu 0.1.0
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.
Full provenance
All 13 files in this release have been uploaded with provenance metadata.
Attestation for mayu-0.1.0.tar.gz
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 Oct 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.