Python bindings for Joule Profiler
Python bindings for Joule Profiler, written in Rust with PyO3. Measure the energy and resources a program uses, phase by phase, with the sources implemented by Joule Profiler: RAPL, perf events, procfs, cgroups, NVML and AMD SMI.
There are two ways to profile:
JouleProfiler.profileruns a command, and starts a new phase each time the command prints a token.JouleProfiler.sessionmeasures the running Python program itself. A new phase starts at eachsession.phase(...)orjoule_profiler.phase(...).session.phaseswaits for each phase to end,session.poll()returns a phase that already ended, orNonewithout waiting.
Links
- Joule Profiler: github.com/joule-profiler/joule-profiler
- Documentation: joule-profiler.github.io
Build, test, run
Build
uv venv .venv && source .venv/bin/activate
uv pip install maturin pytest mypy
maturin develop --release
Test
pytest
mypy --strict joule_profiler tests
cargo test
Run
python3 examples/command.py
python3 examples/session.py
Examples
The examples/ directory has one script for each way to profile.
Profiling a command: examples/command.py
"""Profiles a command whose phases start at the tokens it prints."""
import sys
from joule_profiler import JouleProfiler
PROGRAM = """
import time
print("__LOAD__", flush=True)
numbers = [i * i for i in range(1_000_000)]
print("__SOLVE__", flush=True)
total = sum(n % 7 for n in numbers)
print("__REST__", flush=True)
time.sleep(0.2)
"""
if __name__ == "__main__":
profiler = JouleProfiler(["rapl", "perf", "procfs"])
run = profiler.profile([sys.executable, "-c", PROGRAM])
for phase in run:
print(f"\n{phase.name} ({phase.duration_ms} ms)")
for source in phase.sources:
for metric in source.metrics:
print(f" {source.name:<7} {metric.name:<22} {metric.value} {metric.unit}")
print(f"\nexit code {run.summary.exit_code}, {run.summary.duration_ms} ms")
Profiling an already running program itself: examples/session.py
import time
import joule_profiler
from joule_profiler import JouleProfiler
@joule_profiler.phase("load")
def load() -> list[int]:
return [i * i for i in range(1_000_000)]
def solve(numbers: list[int]) -> int:
joule_profiler.phase("solve")
return sum(n % 7 for n in numbers)
if __name__ == "__main__":
profiler = JouleProfiler(
["rapl", "perf", "procfs", "nvml"], define={"sources.procfs.poll_interval": "100ms", "sources.nvml.ignore_on_failure": True}
)
with profiler.session() as session:
session.poll() # return None
numbers = load()
# session.poll() # would return the first phase
solve(numbers)
session.phase("rest")
time.sleep(0.2)
for phase in session.phases:
metrics = {
f"{metric.name}": f"{metric.value} {metric.unit}"
for source in phase.sources
for metric in source.metrics
}
print(f"{phase.name:<16} {phase.duration_ms:6} ms")
print("{")
for name, value in metrics.items():
print(f" {name!r}: {value!r},")
print("}\n")
print(session.summary)
Metadata
Release files for joule-profiler 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 41.1 MB
Release files / joule_profiler-0.0.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
| Download URL | joule_profiler-0.0.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | Linux musl 1.2+ x86-64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
9790298c7f4b1706689189fc476657be0f13058cdc25acfd3d638345f5710fa9
|
|
BLAKE2b-256 checksum How to use checksums |
2846e589732a1d85c10ce677e5c8f5895e1dcab70d81b45f7db30ca5f9c4be40
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | joule_profiler-0.0.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
0ce8abb31c76541db65fc9f3dfe2da2dcf3b1071ce9de4c2532b05a7604b816b
|
|
BLAKE2b-256 checksum How to use checksums |
c81794c4053c627141e91d2c7d7f9244176e9f06ced46ea45b2267c87f9a8648
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
7170fb928dcdef20d410505eeac3b1b965dfc9c3104ab20aa8f4af7ea9b65ccc
|
|
BLAKE2b-256 checksum How to use checksums |
a695dcfce1b595d4080829e03031e2422dfd2b7b69d86b1b512241c60e5cbb7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.15 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
b5e1d7d54683f68f3895ee796e0354387f7e5e6b10c0f404758a9104cd1b9f27
|
|
BLAKE2b-256 checksum How to use checksums |
e43b0e33a77d37937d0a2553f522b099a2b2abd0575029d1d6f9e27568f08283
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
09902d903fe599b5f868b1be0eb4122f853b2ecce011e8cc411947c4640f6618
|
|
BLAKE2b-256 checksum How to use checksums |
555d56687007c607944622c53ee3e56653bfa26f7ca7a90382c11655ea0f5e54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
3082ff9f6d35d64e895c06a56792d7dfe055110d6fb03820e2bc96aafd198876
|
|
BLAKE2b-256 checksum How to use checksums |
3b9080ab73d6e1387d984fa474625de17214a05053db8ebba4772701dc235f3d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp314-cp314-musllinux_1_2_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp314-cp314-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.14 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
b48ab99615511c5e1809b0349ab130dbca6267d848060600771c1686aec6fb7f
|
|
BLAKE2b-256 checksum How to use checksums |
3808b691a47c9a20b748038d90aca4664bc220253a4300016bcb94e866397907
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
84eee11de9403d2aa19112fb9b2fda207ce02265bcaa613046fc1cab4199f5a3
|
|
BLAKE2b-256 checksum How to use checksums |
28a9534eda0e8c75ce00c71b58a326d64783f4b4a64cebfb6f25d2986e2a42c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
4ebf8a82db1d4e3e906792188681196a70afdaefde628b31c1929663eeae3c5a
|
|
BLAKE2b-256 checksum How to use checksums |
8c60e6d24e06a4b9d98248054a2e6d562bf63995c3c17e85963c52d8e21c3980
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
1732d7069c166fe4615c9c355d3271125fc464606ffa27517871d7144b2e6afa
|
|
BLAKE2b-256 checksum How to use checksums |
451d61590996235a407b59d912d1df94e394f15c2afd37762364217b12e2dfb2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
b37644804133c1bfbffa34ed8eba9441badd7a6b2e16e2129beb5e0095e811a9
|
|
BLAKE2b-256 checksum How to use checksums |
862ae49fd3a79a7791218122ae68383ad66407ce2f65ec11ff8428e0d5679192
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
6332a31ed12a672780114388cc367bc59bec93a6f44971cf698b3b44c2b93b81
|
|
BLAKE2b-256 checksum How to use checksums |
f1f575d52d17e65f8aaf949250837987ec10d7e8ec1e8c1dbc8ce530f6964415
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
cde9e26a93756c2469c5e6e843d72658aadfbd1648f7e9437927908a5e5a3dbd
|
|
BLAKE2b-256 checksum How to use checksums |
a63fbdddfe7dc239d8466f9b60abef76eefc85bcd2d4e46c0d52f28d24ac69c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
7a6a0892dc27f1bb25c7e0e51d2b8869cc3cf4da204d3eeb018db4125d68e4af
|
|
BLAKE2b-256 checksum How to use checksums |
b9301cea525c12cc060106ccc3296b9f9833dd6ed053ebfb8c71ed39927e5901
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp310-cp310-musllinux_1_2_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp310-cp310-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
1c0c83543fff2a0c1dc8bc64d23a8f32fca1a83f7f9f7ca0d2b9ffded0585479
|
|
BLAKE2b-256 checksum How to use checksums |
cb67faf626b8133c4f8f9b97122898ab5211b09d1206c841cc32e5e7aefffb91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
c4bb312180bf282bdd706116efb9127b13946aacb5f6b31b3717bac35718de0d
|
|
BLAKE2b-256 checksum How to use checksums |
9a3829dab8fbcdf72a4d8ecce192f7f621e6a2baf783b41ad0dfb0cb9a9456f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp39-cp39-musllinux_1_2_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp39-cp39-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
5ff245ad076553e870ee8b959e7ca1ccb745b6880854eb24f838b066fb9f235b
|
|
BLAKE2b-256 checksum How to use checksums |
a2c1896b2bc7f673c452ccc51821f1bbfa2a3362983972b36055639b3ba9e89d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
5fbf5e95a79214fe726d6d4f352f7108e81b7af3c237061e24dcbc3a440c7345
|
|
BLAKE2b-256 checksum How to use checksums |
9ed999cf27cd403de4b6ec8ed1f0cdf7fecd2d4f6c4ca07c75f3b35b02dd53a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|
Release files / joule_profiler-0.0.1-cp38-cp38-musllinux_1_2_x86_64.whl
| Download URL | joule_profiler-0.0.1-cp38-cp38-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.8 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
59f2ec23cf8053bdf4d51908bf5652226d32e63456e533b7ea59669b7fa21057
|
|
BLAKE2b-256 checksum How to use checksums |
520de75f43d000b3e6c3f767180db983de06262442e817083719aaca97ba2f65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","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}
|