Algebraic effects for Python — deep and shallow, stateful, composable, multi-shot handlers
Project description
aleff
Algebraic effects for Python — deep and shallow, stateful, composable, multi-shot handlers.
Features
- Deep handlers — effects propagate through nested function calls without annotation
- Shallow handlers — handle an effect once, then delegate re-installation to the handler function; enables state machines, shift0/reset0, and strategy changes between invocations
- Stateful handlers — handlers can maintain and update state across multiple effect invocations, either via mutable variables (deep) or re-installation with new state (shallow); enables get/put state, transactions, and reverse-mode AD
- Multi-shot continuations —
resumecan be called multiple times in a single handler, enabling backtracking search, non-determinism, and other advanced patterns - Sync and async — both synchronous (
Handler) and asynchronous (AsyncHandler) handlers are supported, with transparent bridging between the two - Effect composition — handler functions can perform effects themselves, dispatched to enclosing handlers; enables layered architectures and modular effect stacking
- Dynamic wind —
windcontext manager establishes before/after guards that are re-invoked on multi-shot re-entry, with optional auto-management of context managers returned bybefore - Effect annotation —
@effect(step1, step2)collects effect sets transitively from decorated functions - Introspection —
effects(fn)andunhandled_effects(fn, h)for querying and validating effect coverage - Typed — effect parameters and return types are checked by type checkers (pyright, ty)
- No macros, no code generation — pure Python library built on greenlet and a small CPython C extension
Requirements
- CPython >=3.12
- Tested versions:
- 3.12.13
- 3.13.12
- 3.14.3
- 3.14.3t (free-threaded)
- Tested versions:
- greenlet >= 3.3.2
- Linux / macOS / Windows
Installation
# uv
uv add aleff
# pip
pip install aleff
Quick start
from aleff import effect, Effect, Resume, create_handler
# Define effects
read: Effect[[], str] = effect("read")
write: Effect[[str], int] = effect("write")
# Write business logic using effects
def run():
s = read()
return write(s)
# Provide handler implementations
h = create_handler(read, write)
@h.on(read)
def _read(k: Resume[str, int]):
return k("file contents")
@h.on(write)
def _write(k: Resume[int, int], contents: str):
print(f"writing: {contents}")
return k(len(contents))
result = h(run)
print(result) # 13
Multi-shot example
from aleff import effect, Effect, Handler, Resume, create_handler
choose: Effect[[int], int] = effect("choose")
h: Handler[list[int]] = create_handler(choose)
@h.on(choose)
def _choose(k: Resume[int, list[int]], n: int):
# Resume once for each choice and collect all results
results: list[int] = []
for i in range(n):
results += k(i)
return results
def computation():
x = choose(3) # 0, 1, or 2
y = choose(2) # 0 or 1
return [x * 10 + y]
result = h(computation)
print(result) # [0, 1, 10, 11, 20, 21]
Effect composition
Handler functions can perform effects that are handled by enclosing handlers:
from aleff import effect, Effect, Resume, create_handler
log: Effect[[str], None] = effect("log")
parse: Effect[[str], int] = effect("parse")
# Outer handler: logging
h_log = create_handler(log)
@h_log.on(log)
def _log(k: Resume[None, int], msg: str):
print(f"[LOG] {msg}")
return k(None)
# Inner handler: parsing with logging
h_parse = create_handler(parse)
@h_parse.on(parse)
def _parse(k: Resume[int, int], s: str):
log(f"parsing: {s}") # handled by the outer handler
return k(int(s))
result = h_log(lambda: h_parse(lambda: parse("42") + 1))
# prints: [LOG] parsing: 42
print(result) # 43
Dynamic wind
The wind context manager establishes before/after guards around a dynamic extent. When a multi-shot continuation captured inside the with block is resumed, the before thunk is called again; when it exits, the after thunk runs.
from aleff import effect, Effect, Resume, Handler, create_handler, wind
choose: Effect[[], int] = effect("choose")
h: Handler[list[int]] = create_handler(choose)
@h.on(choose)
def _choose(k: Resume[int, list[int]]):
return k(1) + k(2)
log: list[str] = []
def run() -> list[int]:
with wind(lambda: log.append("before"), lambda: log.append("after")):
return [choose() * 10]
result = h(run)
print(result) # [10, 20]
print(log) # ['before', 'after', 'before', 'after']
If before returns a context manager and auto_exit=True (the default), __enter__ and __exit__ are called automatically:
with wind(lambda: open("data.txt")) as ref:
ref.unwrap().read()
# file is closed on exit
wind_range is a multi-shot-safe replacement for range() in for loops. Python's range() iterator is shared across shots and exhausted after the first; wind_range saves and restores the iterator position automatically:
with wind_range(n) as r:
for i in r:
v = choose() # multi-shot safe
How it works
Effects are declared as typed values and invoked like regular function calls. A Handler intercepts these calls via greenlet-based context switching:
- Business logic runs in a greenlet
- When an effect is invoked, control switches to the handler
- The handler processes the effect and calls
resume(value)to return a value - If
resumeis called multiple times, each call restores a snapshot of the continuation's frames (multi-shot) - If the handler returns without calling
resume, the computation is aborted (early exit)
Because handlers use greenlets (not exceptions), the control flow is:
- Transparent — no
yield,await, or special syntax in business logic - Non-stack-cutting — code after
resumein the handler runs after the continuation completes, enabling reverse-order execution (useful for backpropagation, transactions, etc.)
Multi-shot continuations are implemented via a CPython C extension (aleff._multishot.v1._aleff) that snapshots and restores interpreter frame chains.
Package structure
| Package | Description |
|---|---|
aleff |
Default: re-exports aleff.multishot (multi-shot handlers) |
aleff.multishot |
Multi-shot handlers with frame snapshot/restore |
aleff.oneshot |
One-shot handlers (no C extension required) |
Examples
See examples/ for demonstrations:
- N-Queens — backtracking search via multi-shot continuations
- Amb / Logic puzzle — Scheme-style
amboperator and constraint solving (SICP Exercise 4.42) - Probability — exact discrete probability distributions via weighted multi-shot
- Dependency injection — swap DB/email/logging implementations
- Record/Replay — record effect results, replay without side effects
- Transactions — buffer writes, commit on success, rollback on failure
- Automatic differentiation — forward-mode (dual numbers) and reverse-mode (backpropagation) with the same math expressions
- Shallow state machine — mutable state (get/put) and traffic light controller via shallow handler re-installation
- shift/reset, shift0/reset0 — delimited continuations: deep = shift/reset, shallow = shift0/reset0, with generator example
API reference
| Function / Class | Description |
|---|---|
effect("name") |
Create a new Effect |
@effect(e1, e2, ...) |
Decorate a function to declare its effects |
create_handler(*effects, shallow=False) |
Create a synchronous handler |
create_async_handler(*effects, shallow=False) |
Create an asynchronous handler |
h.on(effect) |
Register a handler function (decorator) |
h(caller) |
Run caller with the handler active |
effects(fn) |
Get the declared effect set of a function |
unhandled_effects(fn, *handlers) |
Get effects not covered by the given handlers |
Effect[P, R] |
Effect protocol (parameters P, return type R) |
Handler[V] |
Sync handler protocol |
AsyncHandler[V] |
Async handler protocol |
Resume[R, V] |
Sync continuation (k(value) -> V) |
ResumeAsync[R, V] |
Async continuation (await k(value) -> V) |
wind(before, after, *, auto_exit=True) |
Dynamic wind context manager |
wind_range(stop) / wind_range(start, stop, step) |
Multi-shot-safe range() for for loops |
Ref[T] |
Reference wrapper returned by wind; call unwrap() to get the value |
Development
From source:
git clone https://github.com/hnmr293/aleff.git
cd aleff
uv sync
# Run tests
uv run pytest
# Run tests on all supported Python versions
./run_tests.sh
# Format
uv run ruff format
# Lint
uv run pyright
License
Apache-2.0
Project details
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 aleff-0.3.1.tar.gz.
File metadata
- Download URL: aleff-0.3.1.tar.gz
- Upload date:
- Size: 73.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f73d03ec773abf73a6167737eaf5396db3c4ac99219d983094d0a001ae0dde46
|
|
| MD5 |
afe5314a9f8181955ae325bf4d704570
|
|
| BLAKE2b-256 |
70a77d107ec0b93686dd9cb26aa01c1fe12b190ac9cc3a5dabfd56fe96e4d435
|
Provenance
The following attestation bundles were made for aleff-0.3.1.tar.gz:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1.tar.gz -
Subject digest:
f73d03ec773abf73a6167737eaf5396db3c4ac99219d983094d0a001ae0dde46 - Sigstore transparency entry: 1281037655
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp314-cp314t-win_amd64.whl.
File metadata
- Download URL: aleff-0.3.1-cp314-cp314t-win_amd64.whl
- Upload date:
- Size: 78.8 kB
- Tags: CPython 3.14t, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99c1bc180f751d5d0577cc77a101f801d2d7629c8fb2616627372c0f2491ba36
|
|
| MD5 |
8298072b00a8f6c179c3ea71b1ebff51
|
|
| BLAKE2b-256 |
158b6eeaf79446ef1df1919ea398e89797a27e79fab726d6f8d9a2654729b9ad
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp314-cp314t-win_amd64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp314-cp314t-win_amd64.whl -
Subject digest:
99c1bc180f751d5d0577cc77a101f801d2d7629c8fb2616627372c0f2491ba36 - Sigstore transparency entry: 1281037755
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: aleff-0.3.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 113.6 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78fae46a63aaab71814a57352809beda0ea97ad1c423369919312522b1996444
|
|
| MD5 |
f9a4127e105c731b421544e4edf68826
|
|
| BLAKE2b-256 |
8116b264a66d34961051e535ca6ce2d2b525fde28996b455002ff0025eab822c
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
78fae46a63aaab71814a57352809beda0ea97ad1c423369919312522b1996444 - Sigstore transparency entry: 1281037738
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp314-cp314t-macosx_11_0_arm64.whl.
File metadata
- Download URL: aleff-0.3.1-cp314-cp314t-macosx_11_0_arm64.whl
- Upload date:
- Size: 81.2 kB
- Tags: CPython 3.14t, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f74be4385cd85b7d4eebd68443ffafedf62b792c854ebcd1def626f07b773d3b
|
|
| MD5 |
65dc5701b10313af4f8ba5301bd2c4b5
|
|
| BLAKE2b-256 |
1c44d41e46c569156ab1c7a182d457e71f308e465c87fbf94c8ed7b5a70fc946
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp314-cp314t-macosx_11_0_arm64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp314-cp314t-macosx_11_0_arm64.whl -
Subject digest:
f74be4385cd85b7d4eebd68443ffafedf62b792c854ebcd1def626f07b773d3b - Sigstore transparency entry: 1281037686
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp314-cp314t-macosx_10_15_x86_64.whl.
File metadata
- Download URL: aleff-0.3.1-cp314-cp314t-macosx_10_15_x86_64.whl
- Upload date:
- Size: 80.8 kB
- Tags: CPython 3.14t, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
537cd7902def97362463485aef26154adf285a6c1dccadacd451854d38941732
|
|
| MD5 |
eafe3ff43cdf89466a002c5bf87d70d8
|
|
| BLAKE2b-256 |
86106cc60845ff67dfc5d59e15a236df97e91b2eed02bb789ead3c145260036e
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp314-cp314t-macosx_10_15_x86_64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp314-cp314t-macosx_10_15_x86_64.whl -
Subject digest:
537cd7902def97362463485aef26154adf285a6c1dccadacd451854d38941732 - Sigstore transparency entry: 1281037678
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: aleff-0.3.1-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 77.9 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0e72e0fc36868d3ec01c468bf87bce6cb8828b88e794922d70aaefd209b9968
|
|
| MD5 |
115fb00c0a4168b0d3a1c3ddeef8abc2
|
|
| BLAKE2b-256 |
c4460472189ff2343f9219b24f4f36273b62cbe920367c8649537fa4cd1a3f66
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp314-cp314-win_amd64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp314-cp314-win_amd64.whl -
Subject digest:
f0e72e0fc36868d3ec01c468bf87bce6cb8828b88e794922d70aaefd209b9968 - Sigstore transparency entry: 1281037703
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: aleff-0.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 104.6 kB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbfec447d65023f8b59072d686ddff5dda3542cdcf29325247c64334d9f1559f
|
|
| MD5 |
12758b74268874ad5862fa2815d6450a
|
|
| BLAKE2b-256 |
e20283a5dc0a2cd471459e58bd46ab36bf281a7a831c93685b00f6fd3def4f57
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
fbfec447d65023f8b59072d686ddff5dda3542cdcf29325247c64334d9f1559f - Sigstore transparency entry: 1281037769
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: aleff-0.3.1-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 80.5 kB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d111568c32292eb478910d6dae769a7fc6051208b24ad7e19efcfea69175384
|
|
| MD5 |
19387a7aeb15912da3366f45a7211254
|
|
| BLAKE2b-256 |
da33259c8b1a175f6c4833c07611ddc9a592078c98cb4963aa95a8c5de41deb9
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp314-cp314-macosx_11_0_arm64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp314-cp314-macosx_11_0_arm64.whl -
Subject digest:
8d111568c32292eb478910d6dae769a7fc6051208b24ad7e19efcfea69175384 - Sigstore transparency entry: 1281037748
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl.
File metadata
- Download URL: aleff-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl
- Upload date:
- Size: 80.2 kB
- Tags: CPython 3.14, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c9efe1b3ff4b9560b50a98f66302ab02fe49f04e2fb426bf23f943c0f6876f9
|
|
| MD5 |
f03516bd48fb72cc12c00c275f3a855f
|
|
| BLAKE2b-256 |
9e53f2cc7594a4409a61ffa1f3504d5fdc747fd717dd4086438eee3fefa7c228
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl -
Subject digest:
8c9efe1b3ff4b9560b50a98f66302ab02fe49f04e2fb426bf23f943c0f6876f9 - Sigstore transparency entry: 1281037793
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: aleff-0.3.1-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 77.3 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5796c2dba81c372d80b9e8d01cf86451357e1dbbb60fc7dace68ea87a784f339
|
|
| MD5 |
ca3c911376db96dfc66f116145c3acfd
|
|
| BLAKE2b-256 |
6b882c7f09c640187ba69003005dede48b9b3681eed078f85738c2601183b90e
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp313-cp313-win_amd64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp313-cp313-win_amd64.whl -
Subject digest:
5796c2dba81c372d80b9e8d01cf86451357e1dbbb60fc7dace68ea87a784f339 - Sigstore transparency entry: 1281037661
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: aleff-0.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 102.7 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30295ce376d2167a71d224c70b6d2e0a8e37ed62a01906992e7fd640f0953f6a
|
|
| MD5 |
bac62ab56d73c7d80a195847675dfb5d
|
|
| BLAKE2b-256 |
0d8f18d4f3b51c19a3c33ba13db778dd8f9a75f0b2f5543eb60806208c64777f
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
30295ce376d2167a71d224c70b6d2e0a8e37ed62a01906992e7fd640f0953f6a - Sigstore transparency entry: 1281037785
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: aleff-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 79.9 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b833fba3722a9415d51950fbbdb465f01b9461cb267fe4042c7dabdaf47e166
|
|
| MD5 |
50d2648fdf97b38182e17eadd34b87a5
|
|
| BLAKE2b-256 |
8da6856eb50b627f91b61b45ef2f294cfb4635f2a91a2619d2718afea39c2aad
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
2b833fba3722a9415d51950fbbdb465f01b9461cb267fe4042c7dabdaf47e166 - Sigstore transparency entry: 1281037670
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl.
File metadata
- Download URL: aleff-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl
- Upload date:
- Size: 79.6 kB
- Tags: CPython 3.13, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59cb7f3a9b5b031fdad6c1d91ba29d0bfcff7d432bf2a8ce486274d0c41f5a0b
|
|
| MD5 |
4437bb4b70ced92da07ad37b96937d68
|
|
| BLAKE2b-256 |
d34eb69cc78dce69541eb0cc9de00ce322f2016ac7b305ecee9edc8c455e5ee2
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl -
Subject digest:
59cb7f3a9b5b031fdad6c1d91ba29d0bfcff7d432bf2a8ce486274d0c41f5a0b - Sigstore transparency entry: 1281037665
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: aleff-0.3.1-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 77.3 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aeca0c3e74c46179dc72ef058b007a3e6af5188d638933396d048747ae3e0b82
|
|
| MD5 |
e52b5c80a2a5b4ebaf2b46491446c668
|
|
| BLAKE2b-256 |
030d0befa7f52c73e06c6ebd0d3ba72a960f31a5bd9394711ecb1713cd8cf159
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp312-cp312-win_amd64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp312-cp312-win_amd64.whl -
Subject digest:
aeca0c3e74c46179dc72ef058b007a3e6af5188d638933396d048747ae3e0b82 - Sigstore transparency entry: 1281037682
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: aleff-0.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 95.8 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a58e37bb4da259ec3361e2acdba54c13e5d2ba14f0977f6fd0e818bd3c32aad4
|
|
| MD5 |
96fb9c8b9818152286e3a0c90f635aeb
|
|
| BLAKE2b-256 |
1ce3782e2cfbe87a0a4866333e46fd53b9585648d239d45c19ada800b06f0580
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
a58e37bb4da259ec3361e2acdba54c13e5d2ba14f0977f6fd0e818bd3c32aad4 - Sigstore transparency entry: 1281037778
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: aleff-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 75.9 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6dfc6fbaa4e71aad1f6a045597b627219b93c50938eab8db90af85e7020e3e61
|
|
| MD5 |
7d233c7884e1fb1afe1c1dc91c35e0d5
|
|
| BLAKE2b-256 |
a1fb3d668f7c86e0a32c655abe01fc1977019f9f91a9cd20089ff1b2061724e4
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
6dfc6fbaa4e71aad1f6a045597b627219b93c50938eab8db90af85e7020e3e61 - Sigstore transparency entry: 1281037762
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aleff-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: aleff-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 75.7 kB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9543aa708ed39e785dea48d55d7b5bef045831cd8237dc7b1e6f5852bce85b24
|
|
| MD5 |
5307cc0ace51b550048c26da64148a57
|
|
| BLAKE2b-256 |
17104a5b62367d01b5476a64924be38f5780cd343015dc494a6372759d197ee3
|
Provenance
The following attestation bundles were made for aleff-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl:
Publisher:
publish.yml on hnmr293/aleff
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aleff-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl -
Subject digest:
9543aa708ed39e785dea48d55d7b5bef045831cd8237dc7b1e6f5852bce85b24 - Sigstore transparency entry: 1281037789
- Sigstore integration time:
-
Permalink:
hnmr293/aleff@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/hnmr293
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8032115b4b21dd2c91385d52f77d986584a6abc3 -
Trigger Event:
push
-
Statement type: