pykeleusma
Python bindings for Keleusma, a total functional stream processor whose programs have statically bounded worst-case execution time and memory use. The goal is to run Keleusma scripts inside a Python program, for example to drive a PyGame frame loop or to compute alongside NumPy.
The distribution is pykeleusma and the import package is keleusma, following
wrappers such as pyzmq, which imports as zmq, and pycairo, which imports as
cairo.
Status
Early development. Version 0.2.2.0 builds against the published Keleusma 0.2.2 from crates.io. Compiling, verified construction, calling, resuming, streaming, value conversion, Python natives and shared data work, as do the book's structs, enums and options, big numbers, opaque host values, recoverable native errors, bundled libraries, precompiled, signed and encrypted bytecode, hot swap and custom cost models. The ten example scripts that ship with Keleusma run in tests with their stated results, and so do three examples of this repository's own. Version 0.2.2.0, released on 2026-10-26, is the first release published to PyPI.
The design is
docs/architecture/BINDING_DESIGN.md,
the first milestone is
docs/roadmap/V0_1_0.md,
and changes are listed in
CHANGELOG.md.
Limitations
This is a best-effort binding for Keleusma 0.2.2. Most of its limitations come
from defects and gaps in that Keleusma release, which have been reported to the
Keleusma project. They are expected to clear when the public Keleusma 0.2.3 is
released. Some are already fixed on Keleusma's development branch. The rest have not
been confirmed fixed, so each will be checked when the binding moves to 0.2.3, and any
that remains will be listed then. The move is planned in
docs/architecture/MIGRATION_V0_2_3.md.
Limitations from Keleusma 0.2.2, expected to clear with 0.2.3.
- Arena sizing is measured, not proven. Keleusma 0.2.2 sizes the arena too small
after a stream's first
Reset, so the binding adds a margin found by measurement. Composite arguments, such as tuples carrying text, draw on a budget the host chooses,argument_bytes, rather than on a computed bound. - Yield types are checked only in part. Keleusma 0.2.2 accepts a yield whose value does not match the declared type, and reading such a value can crash the process. The binding refuses every mistyped yield it can detect and every text-bearing yield whose type Keleusma did not record, but it cannot check every expression.
- Private data starts as
(), not zero, although the book says zero. Assign a private field before reading it. - Assign a private array element by element. In 0.2.2,
pv.a = [x, y]fills only the first element's slot, so a laterpv.a[1]reads(), whilepv.a[0] = xandpv.a[1] = ywork. - Generic types cross in one direction only. A type-generic struct or a const-generic enum can be returned but not passed in, and a type-generic enum is not supported, because Keleusma 0.2.2 lays out their instances inconsistently.
- Hot swap cannot seed composite private fields. Only scalar fields and arrays of scalars can be carried into a new module.
Text + Textfails at run time, although the book says it works.- Library declarations are not checked by Keleusma. The binding refuses a script
whose
useline for a bundled library native differs from the library's signature.
Moving to 0.2.3 will also change one thing for the worse. Keleusma 0.2.3 changes the bytecode version from 1 to 2 and rejects version 1, so bytecode saved with this release will not load after the move. Keep the source of every script, and compile it again.
Limitations of the binding's own design, which 0.2.3 does not change.
- Python is outside every bound, as the next section explains.
- A VM belongs to the thread that creates it. A compiled
Modulemay be shared between threads. - Bytecode loaded from bytes has no declared types, so only scalars and text cross its boundary.
- Some shapes are refused as inputs. Nested options, whose
Nonewould be ambiguous, and refined newtypes, whose rule is script code the host cannot run. - Keys passed from Python cannot be wiped. A signing seed or decryption key lives
in a Python
bytesobject, which the binding cannot zero. - Shared data is copied. A NumPy array cannot yet serve as a VM's shared data block without a copy.
What is guaranteed, and what is not
Keleusma proves an upper bound on the time and memory of a script before it runs. That bound covers the script, and the bounds declared for each native. It never covers Python.
- Python code is outside every bound. That includes a Python callable registered as a native, the binding's conversion of values, Python objects carried as opaque values, and anything the host does between calls. A native can run for any time and allocate any memory.
- A native's declared bounds are promises, not limits. The
wcetandwcmu_bytesgiven for a native are attestations the host makes and Keleusma trusts. Keleusma uses them to size the arena and to computevm.wcet_per_iteration, but Python does not obey them. A script that calls a Python native has a worst case only for its own part. - The figures are in Keleusma's units.
vm.wcet_per_iterationis the worst case of one iteration of aloop mainin nominal cycles, the cycle costs of Keleusma's nominal cost model, which are not the cycles of any particular processor and not seconds.vm.arena_capacityis the arena's size in bytes. - Two limits are empirical in this release. The arena margin and the check of yield types, both described under Limitations. The design document records the evidence.
What the binding does guarantee is that failures surface as Python exceptions. A
verification failure raises VerifyError, a runtime fault raises VMError and marks
the VM failed, and a native's own exception reaches the caller unchanged.
Installing
pip install pykeleusma
Prebuilt wheels cover Linux with glibc and with musl, such as Alpine, macOS, and Windows, each on x86-64 and ARM64. On each, one wheel serves CPython 3.12 and later through the stable application binary interface, and free-threaded CPython 3.14t and 3.15t, which run without the global interpreter lock, get a wheel each. Elsewhere, pip builds from the source distribution, which needs a Rust toolchain of at least 1.88. Continuous integration tests that path on FreeBSD 15.1, for which PyPI accepts no wheels.
A VM belongs to the thread that creates it, and a compiled Module may be shared
between threads. That holds with and without the global interpreter lock.
The version is the Keleusma release the binding is built against, followed by a fourth
part that counts binding releases against it. Version 0.2.2.0 is the first binding
release for Keleusma 0.2.2, and keleusma.KELEUSMA_VERSION reports the linked release.
Bytecode saved by one Keleusma release may not load under another, as described under
Relationship to Keleusma.
Using it
import keleusma
module = keleusma.compile("fn main() -> Word { 40 + 2 }")
try:
keleusma.compile("fn main() -> Word { $ }")
except keleusma.SourceError as error: # LexError, ParseError or CompileError
print(error.msg, error.lineno, error.colno) # unexpected character '$' 1 21
vm = keleusma.VM(module) # raises keleusma.VerifyError if the verifier rejects it
assert vm.call() == keleusma.Finished(42)
doubler = keleusma.compile("loop main(e: Word) -> Word { let n = yield e * 2; n }")
stream = keleusma.VM(doubler)
match stream.call(1):
case keleusma.Yielded(value): # 2
print(value)
stream.resume(10) # keleusma.Reset(), the end of one iteration
stream.resume(20) # keleusma.Yielded(40), the start of the next
- Values convert by the types
maindeclares.WordandBytebecomeint,boolstaysbool,Floatbecomesfloat,Textbecomesstr, tuples becometuple, arrays becomelist, andFixed<N>becomeskeleusma.Fixed, an exactFractionthat remembers its width. A struct becomes adictof its fields, an enum value akeleusma.Variant, and anOptioneitherNoneor the value. AMultiword<N, F>big number becomes anint, or an exactFractionwhenFis not zero. A type the script names but does not define is an opaque host type, and any Python object passes through it unchanged. Out-of-range integers raiseOverflowErrorinstead of wrapping. - Streams.
vm.stream(*args, inputs=...)drives a VM as a generator. Aloop mainreportsResetafter each iteration, and the next input starts the next one.vm.step(value)advances one iteration in a single call, for a frame loop. - Natives are passed as
keleusma.VM(module, natives={"host::f": f}), or askeleusma.Native(f, wcet=..., wcmu_bytes=...)to declare bounds, which size the arena or are refused. A native the script imports withuse externalneedskeleusma.Native(f, max_invocations=n), the attested calls per iteration. - State. Private data fields start as
(), not zero, so assign one before reading it. A shareddatablock is owned by the VM, which keeps it across calls.vm.call(x, shared=buffer), with abytearrayofvm.shared_data_bytesbytes, syncs the block frombuffer, runs, and flushes the block back to it, andvm.shared_datareturns a copy of it.vm.read_shared()andvm.write_shared({"field": value})convert the block's fields by their declared types. - Arena budget. A VM reserves
argument_bytes, 4096 by default, of its arena for composite arguments such as tuples carrying text. A host that passes larger values gives a larger figure.vm.arena_peak_bytesshows the most the VM has used. - Native errors. A native that raises
keleusma.NativeError(code)handscodeto a script that handles it withhost::f(x) { ok(v) => v, error(code) => ... }. Any other exception fails the call and reaches the caller unchanged. - After a runtime error a VM reports
failedand refuses further use, because Keleusma leaves its state undefined, untilvm.reset()clears the error and keeps the data segment. - Libraries.
VM(module, libraries=["math"])offers Keleusma's bundledmath,audioorshellnatives, andkeleusma.library_signatures("math")gives the declarations a script includes. A script's declaration of a library native must match the library's. - Other cost models.
vm.wcet_per_iteration_with({"CheckedAdd": 3})computes the worst case under a cost table of the host's, keyed by the names inkeleusma.OP_NAMES, with every other opcode at its nominal cost.
Bytecode, signing and hot swap
import keleusma
seed = bytes(range(32)) # an Ed25519 signing seed, kept secret by whoever signs
trusted = keleusma.signing_public_key(seed)
source = "signed loop main(t: Word) -> Word { let n = yield t + 1; n }"
data = keleusma.compile(source).to_signed_bytes(seed) # bytes for a .kel.bin file
update = keleusma.load_module(data, verifying_keys=[trusted])
baseline = keleusma.compile("loop main(t: Word) -> Word { let n = yield t * 10; n }")
vm = keleusma.VM(baseline)
vm.register_verifying_key(trusted) # from now on, only signed code may be swapped in
vm.call(1)
vm.resume(0) # keleusma.Reset(), an iteration boundary
vm.replace_module(update)
assert vm.call(1) == keleusma.Yielded(2)
A module loaded from bytes has no declared types, so only scalars and text cross the
boundary. Bytecode is code. Its checksum catches corruption, not tampering, and
Keleusma's decoder is not known to be robust against crafted bytes, so load unsigned
bytecode only from a source as trusted as the script's own source. A signature tells
the host who produced the bytes. It protects only as far as the holders of the trusted
keys are trusted. to_signed_bytes(seed, recipient_key=...) also encrypts the module, and
load_module then needs the matching decryption_key. A swap happens only at an
iteration boundary, keeps shared data and starts private data afresh, unless
private={"field": value} seeds the new module's scalar private fields, and
vm.private_data reads the running module's private fields, so state can be carried. The VM is
built from the module with the larger footprint, because its arena does not grow.
import keleusma
keleusma.KELEUSMA_VERSION # "0.2.2"
keleusma.BYTECODE_VERSION # 1, read from the linked runtime
Examples
Three runnable examples live in the repository's examples/ directory, and
tests/test_examples.py runs each one.
uv run python examples/batched_update_loop.py # 100 session lines, one thread, a tick budget
uv run python examples/numpy_reduction.py # a NumPy mean and variance, 8 samples per step
uv run python examples/pygame_frame_loop.py # a bouncing ball in a window
The PyGame example opens a window, which is the documented manual check. The tests run
it headless with SDL_VIDEODRIVER=dummy. Each frame advances the script by one stream
iteration, as the example explains.
Interface at a glance
The shape of a host loop that drives a stream with events.
import keleusma
# Natives declared at construction size the arena with their memory bounds.
vm = keleusma.VM(module, natives={"host::draw": keleusma.Native(draw, wcet=50)})
for state in vm.stream(first_event, inputs=events):
match state:
case keleusma.Yielded(actions):
... # perform the actions
case keleusma.Reset():
... # one iteration done; the next event starts the next one
Building
The build needs a Rust toolchain of at least 1.88 and uv.
uv sync # builds the extension with maturin and installs the dev tools
uv run pytest
./scripts/check.sh # the whole local gate, as continuous integration checks it
Contributing
Contributions are welcome. The steps are in
CONTRIBUTING.md,
and participation in the project's spaces follows the
CODE_OF_CONDUCT.md.
Report a vulnerability privately, as
SECURITY.md describes.
Relationship to Keleusma
This repository depends only on the published crate, pinned exactly in Cargo.toml.
It never builds against a Keleusma checkout and never edits the Keleusma repository.
Moving to a later Keleusma release is a deliberate change, because 0.2.3 changes the
bytecode version from 1 to 2. The reasons for a separate repository are in
docs/decisions/STANDALONE_REPOSITORY.md.
License
0BSD, the same as Keleusma.
The wheels also contain Rust crates under their own licenses, whose notices are
reproduced in
THIRD_PARTY_LICENSES.txt.
Metadata
Release files for pykeleusma 0.2.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 | Provenance | |
|---|---|---|---|---|
| pykeleusma-0.2.2.0.tar.gz | 230.6 kB | With provenance | Details |
Built distributions (wheels)
Total release size: 40.5 MB
Release files / pykeleusma-0.2.2.0.tar.gz
| Download URL | pykeleusma-0.2.2.0.tar.gz |
|---|---|
| Size | 230.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
46ec22f6b922bcd06739e5d840985b7f1adf877ab52c6f2eadc166ad0d1f2e22
|
|
BLAKE2b-256 checksum How to use checksums |
5f90193c0d53ffee4dcab7b262949b89fafed5d460bdc7aeb34bf3ba2933a845
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp315-cp315t-win_arm64.whl
| Download URL | pykeleusma-0.2.2.0-cp315-cp315t-win_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Windows ARM64 |
|
SHA-256 checksum How to use checksums |
54136f42aec7d4a3d067867ade89c6456d39f9524e790ab1ce136e0e4f2d5354
|
|
BLAKE2b-256 checksum How to use checksums |
4991fb68f7fe51237d01bf3b8ad698ec3d7e1c8a5f8d12b9c30a706a7a93ba9a
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp315-cp315t-win_amd64.whl
| Download URL | pykeleusma-0.2.2.0-cp315-cp315t-win_amd64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
0353017321e1f4e838d0b3c62bc64e9e812a01356714743b9042d404d49d0f75
|
|
BLAKE2b-256 checksum How to use checksums |
dd142eea9b7129c78e277e407964a7c68d7482e6c47b27876c6543ac526872da
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp315-cp315t-musllinux_1_2_x86_64.whl
| Download URL | pykeleusma-0.2.2.0-cp315-cp315t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
dc74df24b12e1700bdf5d593838d9e6f1a846da839aaf7a9eeaf10f09a09b9b8
|
|
BLAKE2b-256 checksum How to use checksums |
08db4839045c1a7d6d19c6b19c9cebcc437a2162652c6a9ea4500199efff295c
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp315-cp315t-musllinux_1_2_aarch64.whl
| Download URL | pykeleusma-0.2.2.0-cp315-cp315t-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
c717258d43164579ba99fad3fa6a88d7405769f50a2b811c8b2329b609dfa9cc
|
|
BLAKE2b-256 checksum How to use checksums |
0e1b4260f643e591a7d18b7ee4f4e97320be79fad0c1a6ce1c4f35967587f9a0
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pykeleusma-0.2.2.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
19d31435ed120d637c165723bb4dcf76e406e6bca7394ae1534bbd170b2c52b0
|
|
BLAKE2b-256 checksum How to use checksums |
390b1570bae004dc1cd5b305fb23d7132b07447daf674e944ac316fee88b6711
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp315-cp315t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | pykeleusma-0.2.2.0-cp315-cp315t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
3b8b5ad987605ce5f4b32633c9dddb8af29bf058a9de67bb9ed206b393c4ecc5
|
|
BLAKE2b-256 checksum How to use checksums |
da9a6cab9bd6cd51d3c247f14375ba482d39bec6e7dcdd307e4c0e3a4f8c34dd
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp315-cp315t-macosx_11_0_arm64.whl
| Download URL | pykeleusma-0.2.2.0-cp315-cp315t-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8bb856df28dd698d15ffbfc7b86a7ab9bfbf088e13957c6dc908c53f56163ac9
|
|
BLAKE2b-256 checksum How to use checksums |
d74df7fea0769cdc3e40fa828a3b3d6563e12b216c746283c051ff927c39e8fb
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp315-cp315t-macosx_10_12_x86_64.whl
| Download URL | pykeleusma-0.2.2.0-cp315-cp315t-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.15 CPython 3.15 free-threading macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
d7cb55cfd34a7ac461f07493888683f3165f8f016c09b9a0c49fbb2da84d7bb3
|
|
BLAKE2b-256 checksum How to use checksums |
ef03f90e1d35823f1d39ed236b3265d511a6c1df7c90b77c17270c67a2b9c696
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp314-cp314t-win_arm64.whl
| Download URL | pykeleusma-0.2.2.0-cp314-cp314t-win_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows ARM64 |
|
SHA-256 checksum How to use checksums |
1ba898539f01c72d12ff95dfb6c8040ff50b88d6f51354633d275bb7dfe607c6
|
|
BLAKE2b-256 checksum How to use checksums |
aeb2e53729511d72c0fcbcdd25b9bdb105ccd9a63644c4123697037346398f13
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp314-cp314t-win_amd64.whl
| Download URL | pykeleusma-0.2.2.0-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ad76bb0248808c89339b03975b21207b73dc4a4de4857dae0fa707f364e4fe2b
|
|
BLAKE2b-256 checksum How to use checksums |
eefe80bf09c90a597f8dbad2d52c6a8c7afc06e7d78f1d4e8d9ce2055f552cb7
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl
| Download URL | pykeleusma-0.2.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
3cbedc362ab55934afe6b923d208ea1b971a038e5901d19fad46879397f104ca
|
|
BLAKE2b-256 checksum How to use checksums |
a4755bcd840473536ee0aceadd1213f395bae22924ea20213e6380eef2ccc456
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl
| Download URL | pykeleusma-0.2.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
83aebda3c9868eb8e8a76de445717c9acdd40d343a1eecdda09c7294f503d160
|
|
BLAKE2b-256 checksum How to use checksums |
d687849b756b48462df26152feeb12ea0d5b27b560b96853c65076bfb901266d
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pykeleusma-0.2.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
4e235f99506809db967549905b154f143af5efaed3ae5996969800e78bd9c24e
|
|
BLAKE2b-256 checksum How to use checksums |
33fb9a6482dea2107ccca2fbd7af9d9507e71610a0ca56e71ce8bc2a66c26977
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | pykeleusma-0.2.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
d816da1604bb042c8a259ebd875149cdd18a84c8b7d267cac535a556aff31f7a
|
|
BLAKE2b-256 checksum How to use checksums |
8d1273755612c30a64249cb133fefa00a9e2f3855091e49ac290c9fcafa31f85
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp314-cp314t-macosx_11_0_arm64.whl
| Download URL | pykeleusma-0.2.2.0-cp314-cp314t-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
dc6fb50191ed34a0f69e671d586ade8c11470e8e6dc230a4e02d9ce1b001fdd6
|
|
BLAKE2b-256 checksum How to use checksums |
8f09a61c9d8fa4ecd802592bdead335e0266a23eaa676b23b192af1392a167bf
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp314-cp314t-macosx_10_12_x86_64.whl
| Download URL | pykeleusma-0.2.2.0-cp314-cp314t-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
7bb398d3954bf923de2b5b04febe27a43b0ebe09036eff0ebe25a3f936b5d2b0
|
|
BLAKE2b-256 checksum How to use checksums |
88729f276bdfb824fbe27d8055a88c78f2a7e6e4d43ae54ad652449203b0880e
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp312-abi3-win_arm64.whl
| Download URL | pykeleusma-0.2.2.0-cp312-abi3-win_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.12 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
e30b08abedb9fa3e801de08a562dd4b3c907cb221612790148801aa46ecd490f
|
|
BLAKE2b-256 checksum How to use checksums |
50bc5741c88f3f346d4aa58333bf92ecaf17d4e70c55b3d70575b43891f18411
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp312-abi3-win_amd64.whl
| Download URL | pykeleusma-0.2.2.0-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ab6d428115f080914bf56c9372fe39ca59757466de3691f835ef46b1772ec038
|
|
BLAKE2b-256 checksum How to use checksums |
db3f0d060ca674437672b256a5b01846e97ead3cee9b21a8e17a68055efce408
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp312-abi3-musllinux_1_2_x86_64.whl
| Download URL | pykeleusma-0.2.2.0-cp312-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
b1bdf1383a4891de613023d2696f9f8f395af3ef08bd087d6644ce64a7e2dad3
|
|
BLAKE2b-256 checksum How to use checksums |
bdc9cb558d51df2196b41308bf4d59719f0b4e4d8c1bc1ec2550ec087078842a
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp312-abi3-musllinux_1_2_aarch64.whl
| Download URL | pykeleusma-0.2.2.0-cp312-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.12 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
24ea0d145a692c6737cd307dae5822dd41457b9991ba5996b3cdd9d80020ffdd
|
|
BLAKE2b-256 checksum How to use checksums |
82618579ee55b7c1998823574a5278df5b2100ccf36dccb5711de76b1782e1c5
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pykeleusma-0.2.2.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
43c4a6323172193a181dd6a7cb18461faae18fb72aca3424e74366a1622414b6
|
|
BLAKE2b-256 checksum How to use checksums |
8eca9cd2e40aacd97ad3c224fed624f5fe0f5ce39d088c2603b098ad88dfdc52
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | pykeleusma-0.2.2.0-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
759db1140676806d18431c88d1f1228c02e4038403e67b2bc6efb554965773ff
|
|
BLAKE2b-256 checksum How to use checksums |
4076024b7b1d17b207ee082eb8c28ab48faef589baf6be117045dc5c134cfc44
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp312-abi3-macosx_11_0_arm64.whl
| Download URL | pykeleusma-0.2.2.0-cp312-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.12 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
13e9dedb0f3e7a207005833acebb5251ddd9f26b999356bfb674924da6f0cdc7
|
|
BLAKE2b-256 checksum How to use checksums |
f20eb15d5ccd8c2112624d61d47b8d850dad369d235a96ff4362bc8ed6b8f12c
|
| 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 26, 2026.
Transparency logRelease files / pykeleusma-0.2.2.0-cp312-abi3-macosx_10_12_x86_64.whl
| Download URL | pykeleusma-0.2.2.0-cp312-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.12 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
3fecdd6494e6016f2bbadc15d2a6d35e8aff52bfb10dd86f5539e599f8385c1c
|
|
BLAKE2b-256 checksum How to use checksums |
9d635841beed2e52889ae65960ca0612244bc99309d464384980b9df04756d0e
|
| 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 26, 2026.
Transparency logSecurity for pykeleusma 0.2.2.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 25 files in this release have been uploaded with provenance metadata.
Attestation for pykeleusma-0.2.2.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 26, 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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.