Skip to main content

tethered

tethered — Runtime network egress control for Python

One function call. Zero dependencies. No infrastructure changes.

PyPI Python PyPI Downloads License: MIT
coverage CI CodeQL security: bandit
Ruff uv ty

tethered is a lightweight, in-process policy check that hooks into Python's own socket layer to enforce your allow list before any packet leaves the machine. Use activate() to set a process-wide ceiling, and scope() to tighten individual code paths — request handlers, background jobs, library calls, AI-generated code. Everything runs locally within your process — works with requests, httpx, aiohttp, Django, Flask, FastAPI, and any library built on Python sockets.

import tethered

tethered.activate(allow=["*.stripe.com:443", "db.internal:5432"])

import urllib.request
urllib.request.urlopen("https://api.stripe.com/v1/charges")  # works — matches *.stripe.com:443
urllib.request.urlopen("https://evil.test/exfil")            # raises tethered.EgressBlocked

Why tethered?

Your code, your dependencies, and AI coding agents all share the same Python process — and any of them can make network calls you didn't intend. A compromised dependency phones home. An AI coding agent writes tests that accidentally call live APIs. An AI-generated function calls an unauthorized endpoint. A misconfigured library hits production instead of staging.

Python has no built-in way to prevent this at runtime. Infrastructure-level controls (firewalls, network policies, proxies) require platform teams, separate services, or admin privileges. None of them give you a single line of Python that says "this process may only talk to these hosts."

tethered fills this gap at the application layer. One function call controls what any code in the process — yours, your dependencies', or AI-generated — can reach over the network. No proxies, no sidecars, no admin privileges. It's complementary to infrastructure controls, not a replacement.

Use cases

Use case How tethered helps
🔒 Supply chain defense activate() locks the process to your known services — a compromised dependency can't phone home.
🔬 Scoped isolation scope() restricts a specific code path — a request handler, a background job, a library call — to only the destinations it needs.
🤖 AI agent guardrails Code generated by AI coding agents can't reach unauthorized endpoints — activate() enforces your allow list on any code running in the process.
🧪 Test isolation activate() in your test setup ensures the suite never accidentally hits production services.
📋 Least-privilege networking Combine activate() for the process boundary with scope() for per-function restrictions — declare your network surface like you declare your dependencies.

Install

uv add tethered

Or with pip:

pip install tethered

Requires Python 3.10+. Zero runtime dependencies. Pre-built wheels are available for Linux, macOS, and Windows. Source installs require a C compiler (the package includes a C extension for tamper-resistant locked mode).

Quick start

tethered has two complementary APIs. Both use the same allow list syntax (see below).

Enforce process-wide — activate()

Call activate() as early as possible — before any library makes network connections:

# manage.py, wsgi.py, main.py, or your entrypoint
import tethered
tethered.activate(allow=["*.stripe.com:443", "db.internal:5432"])

# Then import and run your app
from myapp import create_app
app = create_app()

This pattern works the same for Django, Flask, FastAPI, scripts, and AI-assisted workflows — activate tethered before your application and its dependencies start making connections. Existing connections (e.g., connection pools) established before activate() continue to work — tethered intercepts at connect time, not at read/write time.

Use locked=True in production to prevent any code from replacing or disabling your policy. Full parameter list and locked-mode details: docs/API.md.

Restrict a code path — scope()

Use scope() to restrict egress for a specific code path — a request handler, a background job, a library call:

import tethered
import httpx

@tethered.scope(allow=["*.stripe.com:443"])
def charge(amount: int, token: str) -> dict:
    # ... validate input, call helper libraries, log analytics —
    # none of them can reach anything except *.stripe.com:443
    resp = httpx.post("https://api.stripe.com/v1/charges", ...)
    return resp.json()

Also usable as a context manager (with tethered.scope(allow=[...]):). No deactivate() needed — cleanup is automatic. Works with sync and async functions.

scope() works on its own — no activate() required. When the app also called activate(), the effective policy is the intersection — a connection must be allowed by both. Scopes can only narrow, never widen. Full details: docs/API.md.

Package maintainers: Use scope(), never activate(). Your library doesn't own the process — the app does. Pass hint= to attach a one-line egress contract (what hosts your library needs + docs link) to your scope; if a block ever fires — yours or the host's — the hint is readable as exc.scope_hint and appended to the exception message. See docs/COOKBOOK.md.

Subprocess control

Python child processes (multiprocessing.Pool, ProcessPoolExecutor, gunicorn workers, plain subprocess.run([sys.executable, ...])) automatically inherit the parent's tethered policy — including any active scope. Non-Python launches (curl, ffmpeg, different Python interpreters, or sys.executable with -S which disables site.py) are governed by external_subprocess_policy ("warn" default, or "block").

import tethered, subprocess, sys

tethered.activate(allow=["*.stripe.com:443"])
subprocess.run([sys.executable, "-c", "..."])  # child auto-inherits policy

with tethered.scope(allow=["api.stripe.com:443"]):
    subprocess.run([sys.executable, "-c", "..."])  # child also inherits the active scope

Full mechanics, locked-mode hardening, and the auto-vs-external rules: docs/SUBPROCESS.md.

Allow list syntax

Pattern Example Matches
Exact hostname "api.stripe.com" api.stripe.com only
Wildcard subdomain "*.stripe.com" api.stripe.com, dashboard.stripe.com (not stripe.com)
Hostname + port "api.stripe.com:443" api.stripe.com on port 443 only
IPv4 address "198.51.100.1" That IP only
IPv4 CIDR range "10.0.0.0/8" Any IP in 10.x.x.x
CIDR + port "10.0.0.0/8:5432" Any IP in 10.x.x.x on port 5432
IPv6 address "2001:db8::1" or "[2001:db8::1]" That IPv6 address
IPv6 + port "[2001:db8::1]:443" That IPv6 address on port 443 only
IPv6 CIDR "[2001:db8::]/32" Any IP in that IPv6 prefix

Wildcard matching: Uses Python's fnmatch syntax. * matches any characters including dots, so *.stripe.com matches both api.stripe.com and a.b.stripe.com. This differs from TLS certificate wildcards. The characters ? (single character) and [seq] (character set) are also supported.

Localhost (127.0.0.0/8, ::1) is always allowed by default. The addresses 0.0.0.0 and :: (INADDR_ANY) are also treated as localhost. Malformed hostnames containing whitespace, control characters, or invisible Unicode are rejected and never matched by wildcard rules.

Examples

Example Description
01_basic_activate.py Process-wide allow list with activate()
02_scope_context_manager.py scope() as a context manager
03_scope_decorator.py scope() as a function decorator
04_global_with_scope.py Global policy + scope — intersection semantics
05_global_with_nested_scopes.py Global policy + nested scopes — progressive restriction
06_locked_mode.py locked=True — prevent policy tampering
07_log_only.py Monitor-only mode with on_blocked callback
08_scope_in_threads.py Scoping inside thread pool workers
09_async_scope.py Async decorator and context manager
10_package_maintainer.py Library self-restricting with scope()
11_subprocess_control.py Auto-propagation to Python child processes + parent-side external_subprocess_policy
12_scope_subprocess.py Scope propagating to spawn-mode child processes

Hardened configuration

For threat models that include compromised dependencies — a maintainer's PyPI account hijacked, a malicious release pushed, the malware exfils local secrets to an attacker C&C — combine tethered's strictest settings:

import tethered

_LOCK = object()
tethered.activate(
    allow=["api.stripe.com:443", "db.internal:5432"],   # only what you actually need
    locked=True,                                          # tamper-resistant policy (C-guardian-protected)
    lock_token=_LOCK,                                     # required when locked=True
    external_subprocess_policy="block",                   # if your app doesn't shell out
)

# Only NOW import third-party code — including potentially compromised deps
import stripe

This combination:

  • Auto-propagates the policy to every Python child (multiprocessing workers, subprocess.run, asyncio.create_subprocess_exec) — a multi-stage exfil chain (Layer 0 → spawn → Layer 1 → ...) cannot escape by launching a fresh interpreter.
  • Refuses non-Python launches (curl, wget, bash) — closes the "shell out to a binary that does the egress" bypass.
  • Refuses tampering with the propagation channel — in-process code cannot strip _TETHERED_CHILD_POLICY, delete tethered.pth, or replace the policy with a permissive one without raising SubprocessBlocked.

Activate before importing any third-party code — anything that runs in the unprotected window (e.g., during a malicious package's __init__.py) is unprotected. tethered does not protect against ctypes / cffi raw syscalls; pair with OS-level controls (seccomp, containers, network namespaces) for hard isolation.

Defense-in-depth

tethered is a guardrail at the Python audit-event layer, not a sandbox. Code that uses ctypes, cffi, subprocesses, or C extensions with direct syscalls can bypass it. For hardened environments combine with OS-level controls (containers, seccomp, network namespaces). See SECURITY.md for the full threat model.

Performance

The audit hook runs on every relevant socket event, but per-event cost is small — TCP handshake, TLS, and application logic dominate real-world connect time. The hook fires whenever tethered is engaged, whether you entered via activate() or scope(), so the per-call overheads below apply to both. Measured on CPython 3.13 / localhost / default benchmark settings (3,000 TCP-connect iterations × median-of-3, 5,000 per-event iterations):

Operation Overhead added
socket.connect ~25 µs
socket.getaddrinfo ~120 µs (~2×) — tethered re-resolves to populate the IP→hostname cache
Any non-network audit event ~150 ns (ambient tax)
with tethered.scope(...) enter + exit ~0.5 µs (context-manager cost, independent of activate())

Numbers vary by hardware, OS, and Python version. Reproduce with python benchmarks/overhead.py.

Documentation

  • docs/API.md — full API reference (activate, scope, deactivate, exceptions, locked mode, log-only)
  • docs/SUBPROCESS.md — subprocess auto-propagation, scope propagation, external_subprocess_policy
  • docs/ARCHITECTURE.md — how the audit hook works, scope mechanics, C guardian
  • docs/COOKBOOK.md — handling blocked connections in Django, Celery, retry decorators
  • SECURITY.md — threat model, what tethered does and does not protect against
  • examples/ — runnable scripts for every feature

Badge

Using tethered in your project? Add the badge to your README:

[![egress: tethered](https://img.shields.io/badge/egress-tethered-orange?labelColor=4B8BBE)](https://github.com/shcherbak-ai/tethered)

egress: tethered

Contributing

See CONTRIBUTING.md for development setup and guidelines.

Security

See SECURITY.md for reporting vulnerabilities and the full threat model.

License

MIT

Metadata

Release files for tethered 0.5.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tethered 0.5.3
File Size Uploaded
tethered-0.5.3.tar.gz 106.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for tethered 0.5.3
File
tethered-0.5.3-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
tethered-0.5.3-cp314-cp314-win32.whl CPython 3.14 CPython 3.14 Windows x86-32 Details
tethered-0.5.3-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
tethered-0.5.3-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
tethered-0.5.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
tethered-0.5.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
tethered-0.5.3-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
tethered-0.5.3-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
tethered-0.5.3-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details
tethered-0.5.3-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
tethered-0.5.3-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
tethered-0.5.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
tethered-0.5.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
tethered-0.5.3-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
tethered-0.5.3-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
tethered-0.5.3-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
tethered-0.5.3-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
tethered-0.5.3-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
tethered-0.5.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
tethered-0.5.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
tethered-0.5.3-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
tethered-0.5.3-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
tethered-0.5.3-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
tethered-0.5.3-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
tethered-0.5.3-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
tethered-0.5.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
tethered-0.5.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 Details
tethered-0.5.3-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
tethered-0.5.3-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
tethered-0.5.3-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details
tethered-0.5.3-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
tethered-0.5.3-cp310-cp310-musllinux_1_2_aarch64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ ARM64 Details
tethered-0.5.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
tethered-0.5.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.5+ x86-64, Linux glibc 2.28+ x86-64 Details
tethered-0.5.3-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 2.4 MB

Release files / tethered-0.5.3.tar.gz

Download URL tethered-0.5.3.tar.gz
Size 106.3 kB
Tags Source
SHA-256 checksum
How to use checksums
336d94074a5c1ec3dd2ddd7b42baee50c24a58fd803116e8d33efadf062364b4
BLAKE2b-256 checksum
How to use checksums
bf6b167ee2b1f0774b0ce62bf4f2e5446266b8fdf145b385de3287013f17fc37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp314-cp314-win_amd64.whl

Download URL tethered-0.5.3-cp314-cp314-win_amd64.whl
Size 56.8 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
9beb55030ec95456c3961f36184e1197e39cb34127cbe1183c245c2017c112da
BLAKE2b-256 checksum
How to use checksums
e2da6a588e2feb065d55f6b6212c6aa11ddae5d1202ac37749f0218983fd8561
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp314-cp314-win32.whl

Download URL tethered-0.5.3-cp314-cp314-win32.whl
Size 55.8 kB
Tags CPython 3.14 Windows x86-32
SHA-256 checksum
How to use checksums
901c742d7d7937f3019db018c663cb09087eb2bd0e27a77bfb94ce77d9610ec3
BLAKE2b-256 checksum
How to use checksums
302fd6ca78756ab490ba7c73f5205bfa432d9f4653e0414e6343541273342396
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL tethered-0.5.3-cp314-cp314-musllinux_1_2_x86_64.whl
Size 73.5 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a4fc4aa064ab0c82411a82f975cb36e19d185cc0625975d2a5f2f16ee662bfbc
BLAKE2b-256 checksum
How to use checksums
77d9174eb3e909dc089409b008cd8aa84ae34f96f078c38ecd5deaed8178bf53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL tethered-0.5.3-cp314-cp314-musllinux_1_2_aarch64.whl
Size 74.3 kB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
c44c164c16f50d34436a68d35e37e0bb9253e9cbea0bb002803740ae277ac3e7
BLAKE2b-256 checksum
How to use checksums
126f93db036d2c9f65b832922ee1893bfb1e1accdfb7419c05c6b4c53ad7cc79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL tethered-0.5.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 74.9 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
fd415f2acff2a90694644e468f15f511a5dbbb8581350a957636c81db907bd64
BLAKE2b-256 checksum
How to use checksums
e0fb4a3c9b50e9bd4c2c1b1de2454c4c3253d7da62ebdf7c3e63e7a4903ff21d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL tethered-0.5.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 73.9 kB
Tags CPython 3.14 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
41416a93dda428f7954f6c2316eb2c007cf6abe2a35e05d73f5bc879fc37b9d4
BLAKE2b-256 checksum
How to use checksums
6effef7852852bf396ffffcf688fd3696b52ec7e2abece513915e2a7c3929cf7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp314-cp314-macosx_11_0_arm64.whl

Download URL tethered-0.5.3-cp314-cp314-macosx_11_0_arm64.whl
Size 54.2 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b01f8765855ee904edb585adcebb994d7862d8bea5afaf7b97fd1860c0037a80
BLAKE2b-256 checksum
How to use checksums
32486cb162c5c4be3df37ea4b87724de2d6c72e54121870cac6476a526d48cbe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp313-cp313-win_amd64.whl

Download URL tethered-0.5.3-cp313-cp313-win_amd64.whl
Size 56.5 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
3be6515d3be71b4a4d55e06e79c20d7393e2aa9c086fb07637b114b79e125187
BLAKE2b-256 checksum
How to use checksums
d0ce75442457bec5c175a718d4a1362e5f0dd5b281cdc7eb64fd15658d46e228
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp313-cp313-win32.whl

Download URL tethered-0.5.3-cp313-cp313-win32.whl
Size 55.5 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
fa1ef656e2c1343a456811d25ebf180f7f0a71aa70e74f5814cafd900f736c83
BLAKE2b-256 checksum
How to use checksums
ae9a8cf43293f6c9821a99012a08894a0b0e2cc449166a828446873f34eac6fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL tethered-0.5.3-cp313-cp313-musllinux_1_2_x86_64.whl
Size 73.8 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
1e3507b87dcb33739bb23b820287a0746037be5790ff9fe9979bcfe629e25851
BLAKE2b-256 checksum
How to use checksums
992b97224f0aaf73ad82b5862e99598a92641faa5b2d1f0790310c76a181a07d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL tethered-0.5.3-cp313-cp313-musllinux_1_2_aarch64.whl
Size 74.5 kB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
60dab600d0e1ebf966bf4401d91594bdefb6253357732b5095036aba5fc333b3
BLAKE2b-256 checksum
How to use checksums
a693ef0c4b3a435082250242d3c5de8976bb2065724dcc1af3421565e5437cd7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL tethered-0.5.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 75.0 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
65e932ad350295b2e2cf92bd70e305251377ba8537cd542d22ec87e916d21722
BLAKE2b-256 checksum
How to use checksums
c73d213d56e644bab0ae90c386bb317c51ae99520e4a7884c6f1b8589b1828b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL tethered-0.5.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 74.1 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
f01e753dc64401603b8e0cb708713bd2a48bdb301c091c018e8bb4f7b0fa7c99
BLAKE2b-256 checksum
How to use checksums
14c2741adf1f7ecdeeeb53b706c264a46180b4b5565181c08e23129ed4c7f78e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp313-cp313-macosx_11_0_arm64.whl

Download URL tethered-0.5.3-cp313-cp313-macosx_11_0_arm64.whl
Size 54.2 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
25753aa77662fad11329d7b2955b21f7a7fc145898df947dcaf1c76cd19706e1
BLAKE2b-256 checksum
How to use checksums
52869afb6f6eb04b9cdfd6921bf7ae9cd0a9cefa765faf9a5c3b8618285e7df5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp312-cp312-win_amd64.whl

Download URL tethered-0.5.3-cp312-cp312-win_amd64.whl
Size 56.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c9c9ea2f4d2baf95759085789aa561f6e2c3892a57e5fb8827d18a953dbfa885
BLAKE2b-256 checksum
How to use checksums
4490a4c272ca5b7faedd6756dd7683bf00da5eeaf6d9d1c19c45d299265ff5b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp312-cp312-win32.whl

Download URL tethered-0.5.3-cp312-cp312-win32.whl
Size 55.6 kB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
c0836c5700f9f2b7ea8f8057bea91b613daa9821622bf70ea81ae6006fdc25f6
BLAKE2b-256 checksum
How to use checksums
62d8db4ce20e834d8a323e2e24fdd824fedb8820cf90b1859a80bf97a1aefdde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL tethered-0.5.3-cp312-cp312-musllinux_1_2_x86_64.whl
Size 73.7 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
ba3d5d2eafacf82cdcdb12d4abff04bb4850de3c16de382ad55fd04e4b39b36d
BLAKE2b-256 checksum
How to use checksums
4c1b369c5aabcb3b08c8f20b2ae01034938354f39775a8cd782c591818638191
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL tethered-0.5.3-cp312-cp312-musllinux_1_2_aarch64.whl
Size 74.4 kB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
cd7d62446a7655f3a45674a2be418cfcdefdb7067d94d3d2efdadb95c96aaeec
BLAKE2b-256 checksum
How to use checksums
88c18bfc18604ce0017d8d7869da1c86f45e4a54392fc58430d8bfdc2c9d51d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL tethered-0.5.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 75.0 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
4f44b4f9d5010bf982349cc776c4815aac7c94b8f51884154d507939df339a01
BLAKE2b-256 checksum
How to use checksums
b981dfbcc9b58dfdb024e73057466c5bd8a6103ef67ce2e76c4db9caf5e0406e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL tethered-0.5.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 74.1 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
13e048be819aee87354d4af2f9d7e7a46a914f20be3a5cabe9d0b3103d4e56de
BLAKE2b-256 checksum
How to use checksums
1e1f9cfb64e8f8f7dabda95eeb874eb7e16200d7cb777fc86cd7f2abe68a74fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp312-cp312-macosx_11_0_arm64.whl

Download URL tethered-0.5.3-cp312-cp312-macosx_11_0_arm64.whl
Size 54.2 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
07a1ed41f9e7d7b195b5bcb181e8e2ba944e340102e2211a4e3543cd5a437226
BLAKE2b-256 checksum
How to use checksums
35aceb5fd8454d437dbbf9ff40f76d9e551823aae1d76c58c2984d2fdbb6f96d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp311-cp311-win_amd64.whl

Download URL tethered-0.5.3-cp311-cp311-win_amd64.whl
Size 56.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
fcbb138a01c6ea254811d6479bbe06e0d3bbf304954994689c4d0de0e31c356d
BLAKE2b-256 checksum
How to use checksums
72ac9798b954684051c1dfb0e623af0b32e0628b86ecef70c9a0f0a2aced5e04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp311-cp311-win32.whl

Download URL tethered-0.5.3-cp311-cp311-win32.whl
Size 55.5 kB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
0826ebe78f97b1683fb77ec3e64f9d5b4442e1053cd063c52664fbd9179305e8
BLAKE2b-256 checksum
How to use checksums
6315f1ec3d334fd2e4b4fd1932a6ce8e38fdb577d97721515f4823b3e82771ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL tethered-0.5.3-cp311-cp311-musllinux_1_2_x86_64.whl
Size 72.3 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
759cc363a7ccceab4ca5b4b0020edce8155da5332070f72ab20a2fbb4910b8f5
BLAKE2b-256 checksum
How to use checksums
f7083e2e784b7a27bdee2794a2f998423634fdbaee6a09b52702d60b431f4a91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL tethered-0.5.3-cp311-cp311-musllinux_1_2_aarch64.whl
Size 73.0 kB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
84e0e553e8ac53ab75ed424d6b256f4e9bf4786edbe0ab30fc0a2ddc0e1b77ba
BLAKE2b-256 checksum
How to use checksums
07982c1ce0e48baa030f59811bb0d20355c27edd5c47de38f145b979d2cb9c35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL tethered-0.5.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 73.5 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
0ebf6debd20299e6843d50678e10e7b688ded2bf329811fb38040ea84bd61526
BLAKE2b-256 checksum
How to use checksums
9b89f3d3c540331b51a538f4d1b84f09a616505b7d3377ebcd74f2f6d33f5d20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL tethered-0.5.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 72.7 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
e1f5963f6fc76741f19d23f8777b9c1bded1b172fe208aa8c4f0b95c23a6845e
BLAKE2b-256 checksum
How to use checksums
0a0ca55840f7eb3663f53d5dccc8f8b1bd350b365e18d483c0b751a898542195
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp311-cp311-macosx_11_0_arm64.whl

Download URL tethered-0.5.3-cp311-cp311-macosx_11_0_arm64.whl
Size 54.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a3fef5f9ccbc521c58daf2d62be34295147a6afa004efd03277630e663357c4d
BLAKE2b-256 checksum
How to use checksums
963befece9dd5aa73c17a80cddf5e01036f6ce236f704b626062f43d78907179
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp310-cp310-win_amd64.whl

Download URL tethered-0.5.3-cp310-cp310-win_amd64.whl
Size 56.4 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
29c5744e61a7d03f469e798ae90a1367c0cd318b0fadc52ea883802bf977b567
BLAKE2b-256 checksum
How to use checksums
a1b845e8bf9fc342dee7f1929b887baf1a1bd81fa7f909af7bea43a260b7da04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp310-cp310-win32.whl

Download URL tethered-0.5.3-cp310-cp310-win32.whl
Size 55.5 kB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
1bd81eb3fd586673a036c959cd39bc9cdd48ae08e85165d79ed64642c17a0c3f
BLAKE2b-256 checksum
How to use checksums
4abfad013f0a4965e3f150c50131e69c5c15bef77c767c941aa9ffeb823e74a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL tethered-0.5.3-cp310-cp310-musllinux_1_2_x86_64.whl
Size 71.7 kB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
3d72ad9a6c0fdaef02ab00e7b71632afb5638c102cdb521cbf5974872e56ed01
BLAKE2b-256 checksum
How to use checksums
6ccd2cd42da0bbcc15c094bcd7d9cec278f460ab405c6d63b4ecdc8d6593d2cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp310-cp310-musllinux_1_2_aarch64.whl

Download URL tethered-0.5.3-cp310-cp310-musllinux_1_2_aarch64.whl
Size 72.2 kB
Tags CPython 3.10 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
80eba500aa8be484ba0236776f4a5887a7688e01b96630c39743d1cd66107101
BLAKE2b-256 checksum
How to use checksums
ee420cd62db2708ed7637299de449bb9a57f703011944bb51583d93d7335aade
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL tethered-0.5.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 72.9 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
569d4090a85b0ad40ac80c43ceb64a0e799d1b723f2632b0935c6bf2a5e3fe3c
BLAKE2b-256 checksum
How to use checksums
a7cf6ad1f169c415fdcb74ce324e57c4f7c2fd295139f2ef569d05aa4d9979c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl

Download URL tethered-0.5.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Size 72.0 kB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
bc1041fd1a58dc765de58ccc7f8d1f6f13bb9e209f53a8d328516e46ecd28d64
BLAKE2b-256 checksum
How to use checksums
bebccf249300b84d7f4691f5954a676e051f1f5b04f3d3c9adec97f9a2a40173
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release files / tethered-0.5.3-cp310-cp310-macosx_11_0_arm64.whl

Download URL tethered-0.5.3-cp310-cp310-macosx_11_0_arm64.whl
Size 54.2 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b98b3b3f55257ca922122e767faa9c37913748bfd7eeb12f0c7fc97337c1e717
BLAKE2b-256 checksum
How to use checksums
6a2fc06002ada7ed31a5b8f3af77c0e2d4bddc91524919bb00eb5bdf865c4edf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Aug 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.3 This release

36 release files

0.5.2

36 release files

0.5.1

36 release files

0.5.0

33 release files

0.4.0

33 release files

0.3.3

2 release files

0.3.2

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page