Lightweight, performant task scheduler for Python, with a Rust core (PyO3 + maturin). Interval and cron jobs, background execution, retries, and FastAPI/Django/Celery integrations.
Project description
rust-py-scheduler
Lightweight, performant task scheduler for Python applications, with a Rust core.
Register interval-based jobs ("10s", "5m", "1h") or cron jobs ("0 9 * * 1-5") with a plain function call or a decorator, run them in-process or on a background thread, and inspect their state (run/error counts, last error, next run time) at any point — without a database or an external broker. First-class FastAPI, Django, and Celery integrations are included.
Features
Scheduler— simple API:every(),cron(),list_jobs(),remove_job(),run(),start_background(),shutdown()- Two ways to register a job — a direct call (
scheduler.every("5s", fn)) or a decorator (@scheduler.every("5s")); both return the same registration - Interval scheduling —
"10s","5m","1h"(seconds/minutes/hours) - Cron scheduling — standard 5-field Unix expressions, e.g.
scheduler.cron("0 9 * * 1-5", fn)for weekdays at 9am - Framework integrations — start/stop with the app lifecycle on FastAPI and Django, and trigger Celery tasks on a schedule
- Run in-process or in the background — block the calling thread with
run(), or callstart_background()to schedule on a dedicated OS thread and keep going - Per-job retries —
max_retries=Nretries a failing job up toNextra times, immediately, before counting it as an error - Jobs never crash the loop — an exception in one job is caught, printed, and tracked (
error_count,last_error); every other job keeps running on schedule - Rust core — scheduling, timing, retries, and thread management run in Rust via PyO3; the Python API stays small and easy to read
Requirements
- Python 3.10+
- No required runtime dependencies (the extension is a self-contained native module, built for the stable ABI — one wheel works across 3.10–3.13+)
Installation
pip install rust-py-scheduler
With framework integrations:
pip install "rust-py-scheduler[fastapi]" # FastAPI + uvicorn
pip install "rust-py-scheduler[django]" # Django 4.2+
pip install "rust-py-scheduler[celery]" # Celery
For running the test suite:
pip install "rust-py-scheduler[tests]"
Quick Start
import time
from rust_py_scheduler import Scheduler
scheduler = Scheduler()
# Direct call: registers immediately and returns the job id.
job_id = scheduler.every("2s", lambda: print("tick (direct call)"))
# Decorator form: same registration, but `report` stays a normal,
# directly-callable function afterwards.
@scheduler.every("3s", max_retries=2)
def report():
print("tick (decorator, with retry budget)")
scheduler.start_background() # returns immediately, runs on its own OS thread
time.sleep(7)
for job in scheduler.list_jobs():
print(job)
scheduler.remove_job(job_id)
scheduler.shutdown()
See examples/basic_usage.py for the full, runnable version of this script.
Registering Jobs
scheduler.every("5s", my_function) # direct call
scheduler.every("5s", my_function, max_retries=3) # with a retry budget
@scheduler.every("5s") # decorator
def my_function():
...
@scheduler.every("5s", max_retries=3) # decorator, with retries
def my_function():
...
intervalaccepts an integer amount followed bys(seconds),m(minutes), orh(hours) — e.g."30s","5m","2h". Anything else (empty, missing unit, zero, negative, non-numeric) raisesValueErrorimmediately, whenevery()is called — not later, when the job would have run.- The decorator form always returns the original function unchanged (
__name__, behavior, everything) — it's safe to keep calling it directly elsewhere in your code. max_retries(default0) works identically in both forms — see Error Handling & Retries.
Cron Scheduling
For calendar-based schedules ("every weekday at 9am", "top of every hour"), use cron() with a standard 5-field Unix expression. It has the exact same dual call/decorator API as every(), including max_retries.
scheduler.cron("0 * * * *", my_function) # every hour, on the hour
scheduler.cron("*/15 * * * *", my_function) # every 15 minutes
@scheduler.cron("0 9 * * 1-5") # weekdays at 9am
def morning_report():
...
@scheduler.cron("30 2 * * *", max_retries=2) # daily at 02:30, with retries
def nightly_cleanup():
...
The five fields are minute hour day-of-month month day-of-week:
| Field | Range | Notes |
|---|---|---|
| minute | 0–59 |
|
| hour | 0–23 |
|
| day of month | 1–31 |
|
| month | 1–12 |
|
| day of week | 0–7 |
0 and 7 both mean Sunday |
Each field supports *, a single number (5), a range (9-17), a step (*/15, 9-17/2), and comma-separated lists of those (0,30, 9-11,17). When both day-of-month and day-of-week are restricted (neither is *), a time matches if either field matches — the same rule as Vixie cron.
- Timezone: expressions are evaluated in the system's local timezone.
- Resolution: cron has minute resolution; the smallest meaningful interval is one minute. For sub-minute schedules, use
every("30s", ...). - An invalid expression (wrong field count, out-of-range value, bad syntax) raises
ValueErrorimmediately at registration, just likeevery().
Framework Integrations
FastAPI
Start the scheduler with the app and stop it on shutdown, via the modern lifespan API:
from fastapi import FastAPI
from rust_py_scheduler import Scheduler
from rust_py_scheduler.fastapi import scheduler_lifespan
scheduler = Scheduler()
@scheduler.every("30s")
def heartbeat():
...
app = FastAPI(lifespan=scheduler_lifespan(scheduler))
Already have a lifespan? Compose with it: scheduler_lifespan(scheduler, your_lifespan) — your startup runs after the scheduler is up, your shutdown before it stops. See examples/fastapi_example.py.
Django
Start the scheduler from your app's AppConfig.ready():
# apps.py
from django.apps import AppConfig
from rust_py_scheduler import Scheduler
from rust_py_scheduler.django import start_in_background
scheduler = Scheduler()
@scheduler.every("5m")
def refresh_cache():
...
class MyAppConfig(AppConfig):
name = "myapp"
def ready(self):
start_in_background(scheduler)
start_in_background() is idempotent per process (calling ready() twice won't start a second thread) and registers a best-effort atexit shutdown for normal process exit.
Multi-worker note: under gunicorn/uwsgi with
workers > 1, every worker process runsready()and therefore its own scheduler — jobs run once per worker, with no cross-process coordination. For exactly-once cluster-wide scheduling, run the scheduler in a single dedicated process (e.g. a management command callingscheduler.run()). Seeexamples/django_apps.py.
Celery
There's no rust_py_scheduler.celery module — and that's deliberate. A Celery task's .delay / .apply_async is just a callable, so the existing API schedules it with nothing new to learn:
@app.task
def send_report(name):
...
scheduler.every("5m", lambda: send_report.delay("daily-metrics"))
scheduler.cron("0 8 * * 1-5", lambda: send_report.delay("weekday-digest"))
# countdown/eta/routing? use apply_async:
scheduler.every("1h", lambda: send_report.apply_async(args=["hourly"], countdown=10))
The scheduler runs in your process and only enqueues messages; the Celery worker (a separate process) does the work — so Celery keeps owning retries, routing, and concurrency. See examples/celery_example.py.
Background Execution
scheduler.run() # blocks the calling thread until shutdown() is called
scheduler.start_background() # returns immediately; scheduling continues on a new OS thread
...
scheduler.shutdown() # stops the loop and waits for the background thread to finish
run()releases the GIL while idle, so other Python threads (e.g. one callingshutdown()) keep running normally.start_background()raisesRuntimeErrorif called again while already running.shutdown()is safe to call even if the scheduler was never started, and safe to call from inside a job callback. It is one-way: once stopped, aSchedulercan't be resumed — start a new one instead. This matches typical usage (start once at application startup, shut down once at teardown).
Inspecting and Removing Jobs
for job in scheduler.list_jobs():
print(job)
# {'id': '...', 'name': 'report', 'schedule': 'every 3s', 'enabled': True,
# 'run_count': 4, 'error_count': 0, 'last_run_at': '1718721000',
# 'next_run_at': '1718721003', 'max_retries': 2, 'last_error': None}
scheduler.remove_job(job_id) # raises KeyError if job_id doesn't exist
last_run_at/next_run_at are Unix timestamps (seconds since the epoch) as strings, or None if the job hasn't run yet.
Error Handling & Retries
A job that raises an exception never stops the scheduler or any other job — the traceback is printed to stderr, and the job's own error_count is incremented.
@scheduler.every("10s", max_retries=2)
def flaky():
...
max_retries=2 means up to 3 total attempts (the initial one + 2 retries) happen back-to-back, with no delay, before that scheduling tick is counted as a failure. run_count/error_count reflect ticks, not individual attempts: if any attempt within a tick succeeds, the whole tick counts as a success and last_error is cleared. Every failed attempt is still printed to stderr, even if a later attempt in the same tick succeeds.
| Situation | Exception |
|---|---|
Invalid interval passed to every(), or invalid cron expression passed to cron() |
ValueError |
start_background() called while already running |
RuntimeError |
remove_job() called with an unknown id |
KeyError |
| Exception raised inside a job callback | Caught internally — never raised to your code |
API Reference
Scheduler()
Creates a new, empty scheduler.
scheduler.every(interval, callback=None, max_retries=0)
Registers an interval job. Called with callback, registers immediately and returns the job id (str); called without it (as @scheduler.every(interval)), returns a decorator that registers the function it's applied to and hands it back unchanged. Raises ValueError on an invalid interval.
scheduler.cron(expression, callback=None, max_retries=0)
Registers a cron job from a 5-field Unix expression (minute hour day-of-month month day-of-week), evaluated in local time. Same dual call/decorator API and return values as every(). Raises ValueError on an invalid expression. See Cron Scheduling.
scheduler.list_jobs() -> list[dict]
Snapshot of every registered job.
| Key | Type | Description |
|---|---|---|
id |
str |
UUID v4 |
name |
str |
The callback's __name__ (or "job" if it has none) |
schedule |
str |
Human-readable, e.g. "every 300s" or "cron 0 9 * * 1-5" |
enabled |
bool |
Always True for now (toggling is planned) |
run_count |
int |
Successful ticks |
error_count |
int |
Failed ticks (after exhausting retries) |
last_run_at |
str | None |
Unix timestamp of the last execution |
next_run_at |
str | None |
Unix timestamp of the next scheduled execution |
max_retries |
int |
Configured retry budget |
last_error |
str | None |
Message from the most recent failed attempt; cleared on success |
scheduler.remove_job(job_id)
Unregisters a job. Raises KeyError if job_id doesn't exist.
scheduler.run()
Blocks the calling thread, executing due jobs until shutdown() is called.
scheduler.start_background()
Runs the same loop as run() on a dedicated OS thread and returns immediately. Raises RuntimeError if already running.
scheduler.shutdown()
Stops the loop (background or not) and waits for the background thread to finish, if any. Safe to call multiple times, or when nothing was ever started.
Building from Source
Requires Rust and maturin.
python3 -m venv .venv
source .venv/bin/activate
pip install maturin
# Development build (installs into the current Python environment)
maturin develop
# Release wheel
maturin build --release
Running tests
# Rust unit tests
PYO3_PYTHON="$(pwd)/.venv/bin/python3" cargo test --no-default-features --lib
# Python integration tests
pip install -e ".[tests]"
pytest
Architecture
Python API (rust_py_scheduler)
├── Scheduler(...) ──► src/scheduler.rs (PyO3 #[pyclass])
│ ├── every() ──► src/job.rs (Job, Schedule model)
│ │ ──► src/interval.rs (parses "10s"/"5m"/"1h")
│ ├── cron() ──► src/cron.rs (parses "0 9 * * 1-5", next run)
│ ├── list_jobs() ──► src/registry.rs (JobRegistry snapshot)
│ ├── remove_job() ──► src/registry.rs (JobRegistry.remove)
│ ├── run() ──► src/executor.rs (run_loop, StopSignal)
│ ├── start_background() ──► run_loop() spawned on its own OS thread
│ └── shutdown() ──► StopSignal.stop() + thread join
├── rust_py_scheduler.fastapi ──► scheduler_lifespan() (pure Python)
└── rust_py_scheduler.django ──► start_in_background() (pure Python)
src/registry.rs ──► thread-safe job storage (Arc<Mutex<HashMap<...>>>); calls each
callback under the GIL, applies the retry loop, tracks counts
src/cron.rs ──► 5-field cron parser; computes the next wall-clock occurrence and
converts the gap into a monotonic Instant deadline
src/time_utils.rs ──► wall-clock timestamps for last_run_at/next_run_at (display only;
scheduling itself uses a monotonic std::time::Instant)
src/errors.rs ──► SchedulerError -> PyErr (ValueError / RuntimeError / KeyError)
The core is compiled into a native extension (.so/.pyd) by maturin and PyO3, built against Python's stable ABI (abi3-py310) so a single wheel covers Python 3.10 through 3.13+. The Python layer (python/rust_py_scheduler/__init__.py) just re-exports the compiled module.
Roadmap
Done: cron expressions, FastAPI / Django / Celery integrations, and a CI suite that runs the Rust + Python tests on every push. Still planned:
- Per-job
enabledtoggling (pause/resume without removing) - Configurable cron timezone (today: system local time)
- Publish to TestPyPI, then PyPI
License
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
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 rust_py_scheduler-0.1.5.tar.gz.
File metadata
- Download URL: rust_py_scheduler-0.1.5.tar.gz
- Upload date:
- Size: 35.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b913a287a4ec749a3526002e52b2c8125ab0959cd091f94f33dd86bb58f0119d
|
|
| MD5 |
37b42eb9a588b45271f83957ee64a9ff
|
|
| BLAKE2b-256 |
aff1e0f36416f1f85c4682c9f9dd96a37db945b0540a87abceadf7f7d36c3576
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-win_arm64.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-win_arm64.whl
- Upload date:
- Size: 180.9 kB
- Tags: CPython 3.10+, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d237970fd896116a11201724384777ec173429de8d87d4368086a9f6ecd602d9
|
|
| MD5 |
7f12524f130b397ec8ffc2a9263ae8b5
|
|
| BLAKE2b-256 |
f7e83fb6f0ac1d05a6c76818d0eb5f2470ed95209a68e5cda6a5e87c54f0e345
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 190.5 kB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94d845473fafdc698b7279a5c4954836077398d89f90de1f755af15840665499
|
|
| MD5 |
6556249e0cd84bde74b41a499d26c87c
|
|
| BLAKE2b-256 |
f3ff2f92d8aa2c7b791c28b04f76b6de45f962d0967eeb12f2ec9248c81dc6c7
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-win32.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-win32.whl
- Upload date:
- Size: 180.1 kB
- Tags: CPython 3.10+, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cc683d19d904446bcc9a10cbf7e2d93663297e63a23e858ac97503a76aa56cd
|
|
| MD5 |
86c940744f9fc5bbf91e6c6a5c02b502
|
|
| BLAKE2b-256 |
ca607ef8a3c2fdb5c6e051b1092a9ad8f890a1a2ed2339454ce2bad5b5f02875
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 509.0 kB
- Tags: CPython 3.10+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91195e154caab8095b7ee0ffd574927a1076dc7df53354057b1cac4ddeb93bed
|
|
| MD5 |
d5b36e75f22242c2bddb752d7a2d9dcd
|
|
| BLAKE2b-256 |
83304c49ca432505ad488aa97aae1a991ab3c3f284597a9c6045765b07138cbd
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-musllinux_1_2_i686.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-musllinux_1_2_i686.whl
- Upload date:
- Size: 538.5 kB
- Tags: CPython 3.10+, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6d56f514a32249750ee1889daf40e160d748c46878fe479449510bf7c7c06b2
|
|
| MD5 |
a1b245207b9f9159fc90a00be6652e55
|
|
| BLAKE2b-256 |
ad4bf25fdc25151b71b45fb70e6681ee08cea8fc865bbc716235e847e0a33b23
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-musllinux_1_2_armv7l.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-musllinux_1_2_armv7l.whl
- Upload date:
- Size: 573.4 kB
- Tags: CPython 3.10+, musllinux: musl 1.2+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b89e8385885cff98cd533855fd86ab8252452cddb4903df9217da7813f5ca7da
|
|
| MD5 |
351f9279b2ef02fc6d7db825f138f7ed
|
|
| BLAKE2b-256 |
803d23c6fc14a52792d0c34dabfe27f60cb336d7c4ddf29f2e4529cf6d0fa809
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 462.0 kB
- Tags: CPython 3.10+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef4c8f20f9ef511ab2b3740671f3cebfaa940d45e01a0659f23d7324467f2e29
|
|
| MD5 |
962773d80eec5f21f7b2aa508170021a
|
|
| BLAKE2b-256 |
816a0ecc156efc18be6940fd87d0ffda6223dbca58d61bed6e8dd23a8a8ea475
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 297.7 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c763d0b36ebce9795ec34b76c47f580c3ba6efba197335410c2250c5eccd624a
|
|
| MD5 |
7560651cf00577434352993922dad0ef
|
|
| BLAKE2b-256 |
682010f9856f01a926c6f3dc11ccebb9f939f05a5c5333c475a502a2d218dd80
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 331.7 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9d0fe899a8a9e43a0b18d3fdfa5ce7473ae50402ada223af09c58dc24434551
|
|
| MD5 |
7cc29b0f83bb7ee2090214c1e3d55bcd
|
|
| BLAKE2b-256 |
f8191185243f58a240a3a8355926af7433d46e38030e0c28da7beffc01daee05
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 328.8 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56a0f7d67b5ac6983565104f758ee20858307d7203129859edc43feef1a082dc
|
|
| MD5 |
6133be3929a8797e5f5dd52c3677c84f
|
|
| BLAKE2b-256 |
c938a8024aeb78a240ac3749d25e4c9c04430cd8c51714bf78b2dc5fe7a05fef
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 297.5 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01fd4f8f850990b90d69908e738c096a7ebed5d839759f593be19f1df577e148
|
|
| MD5 |
ba0ae80bd14e2579b88821e085e4a737
|
|
| BLAKE2b-256 |
7812d558dfd040fa74fa73314d4edb02161060327b021f638fd51650d3b0edef
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 285.4 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d167478d33c62408a00694af18d331830d31909c430204466504a92a8edc0c0
|
|
| MD5 |
01eb4e425982fee43d97f1a33db9650c
|
|
| BLAKE2b-256 |
ab9010479931f0e8a72fcd52975658d7d5aa343c4f1792abf828786beda79f4f
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
- Upload date:
- Size: 322.4 kB
- Tags: CPython 3.10+, manylinux: glibc 2.12+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
318c8d8ac3fbeb40b617128e6b341131d686bde44685bcf99aa774b8396bf023
|
|
| MD5 |
e0b3d6032983e139ec8692f19ad39332
|
|
| BLAKE2b-256 |
727f4e730eb8714bd58e369d52b26a549ed488ae925090096b4ef9b011c60841
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 267.9 kB
- Tags: CPython 3.10+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60b7ec930f429f3e755fd487593e6ac16f8c938ae62388bcd0872b95c8888c82
|
|
| MD5 |
f3c17abd2447e70f7e338eb2b09d6952
|
|
| BLAKE2b-256 |
3383e0bba6521fd07c5b14ef5b00257b7bf118651a14b8873eb47aacf86db2a1
|
File details
Details for the file rust_py_scheduler-0.1.5-cp310-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rust_py_scheduler-0.1.5-cp310-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 276.9 kB
- Tags: CPython 3.10+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.22 {"installer":{"name":"uv","version":"0.11.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea0780bb0d0156fa08c9792f128390e9da8a9ba64e28ee37e45f4681364d2eec
|
|
| MD5 |
2f9c6c97bfd2f1365316b10f54d02489
|
|
| BLAKE2b-256 |
a7ae2693c2336fe57eaefc6416aded5c0d74a92b532823d96a34b1d73c3250b5
|