Skip to main content

SLIM Rust bindings for Python

Project description

SLIM Python Bindings

High-level asynchronous Python bindings for the SLIM data‑plane service (Rust core). They let you embed SLIM directly into your Python application to:

  • Instantiate a local SLIM service
  • Run a server listener (start / stop a SLIM endpoint)
  • Establish outbound client connections (connect / disconnect)
  • Create, accept, configure, and delete sessions (Point2Point / Group)
  • Publish / receive messages (point‑to‑point or group (channel) based)
  • Manage routing and subscriptions (add / remove routes, subscribe / unsubscribe)
  • Configure identity & trust (shared secret, static JWT, dynamic signing JWT, JWKS auto‑resolve, Spire)
  • Integrate tracing / OpenTelemetry

Supported Session Types

Type Description Sticky Peer Metadata MLS (group security)
Point2Point Point-to-point with a fixed destination Yes Yes Yes
Group Many-to-many via channel/topic name (channel moderator can invite/remove participants) N/A Yes Yes

Identity & Authentication

SLIM supports pluggable identity strategies for both the provider (how a local identity token/credential is produced) and the verifier (how inbound peer credentials are validated).

Provider Variants

Variant Use Case / Scenario Notes
IdentityProvider.SharedSecret HMAC-based token (shared symmetric key) Full HMAC (nonce+timestamp, optional replay cache); validity window & clock skew; rotate by replacing secret
IdentityProvider.StaticJwt Pre-issued token from file (ops managed) Simple; no signing key in process; rotate by replacing file
IdentityProvider.Jwt Dynamically signed JWT Supports exp, optional iss, aud[], sub; controllable duration
IdentityProvider.Spire SPIRE / SPIFFE based workload identity Obtains SVID/JWT via SPIRE Workload API; offloads trust & rotation

Verifier Variants

Variant Use Case / Scenario Notes
IdentityVerifier.SharedSecret HMAC verification of shared-secret tokens Verifies MAC, nonce, timestamp; optional replay cache; supports custom claims (no iss/aud/sub)
IdentityVerifier.Jwt Standard JWT / OIDC verification Public key OR JWKS auto-resolve; optional strict claim requirements
IdentityVerifier.Spire Verify SPIRE-issued identities / tokens Uses SPIRE Workload API; matches SPIFFE IDs and audiences

JWT Algorithms

Supported signing / verification algorithms:

Symmetric RSA PS (RSA-PSS) EC Other
HS256 RS256 PS256 ES256 EdDSA
HS384 RS384 PS384 ES384
HS512 RS512 PS512

(Select via Algorithm.<Variant> when constructing a Key.)

Key Formats

Format Description
KeyFormat.Pem PEM encoded key material (file or string)
KeyFormat.Jwk Single JSON Web Key
KeyFormat.Jwks JWKS (set of keys)

Key data can be provided either by file path (KeyData.File(path="path.pem")) or in-memory content (KeyData.Content(content=pem_string)).

Provider Examples

Dynamic signing JWT:

import datetime
from slim_bindings import IdentityProvider, Key, Algorithm, KeyFormat, KeyData

private_key = Key(Algorithm.RS256, KeyFormat.Pem, KeyData.File(path="private_key.pem"))
provider = IdentityProvider.Jwt(
    private_key=private_key,
    duration=datetime.timedelta(minutes=30),
    issuer="my-issuer",
    audience=["peer-service"],
    subject="local-service",
)

Static pre-issued token (already on disk):

from slim_bindings import IdentityProvider
provider = IdentityProvider.StaticJwt(path="issued.jwt")

SPIRE provider (automatic SVID / JWT retrieval):

from slim_bindings import IdentityProvider
provider = IdentityProvider.Spire(
    socket_path="/tmp/spire-agent/public/api.sock",     # optional; default search paths if None
    target_spiffe_id="spiffe://example.org/my-service", # optional filter
    jwt_audiences=["peer-service"]                      # optional requested audiences
)

Verifier Examples

Strict JWT verification (public key):

from slim_bindings import IdentityVerifier, Key, Algorithm, KeyFormat, KeyData

pub_key = Key(Algorithm.RS256, KeyFormat.Pem, KeyData.File(path="public_key.pem"))
verifier = IdentityVerifier.Jwt(
    public_key=pub_key,
    autoresolve=False,
    issuer="my-issuer",
    audience=["peer-service"],
    subject="local-service",
    require_iss=True,
    require_aud=True,
    require_sub=True,
)

JWKS auto‑resolve (no static key needed — discovery used):

verifier = IdentityVerifier.Jwt(
    public_key=None,          # trigger auto-resolution
    autoresolve=True,
    issuer="https://issuer.example.com",
    audience=["peer-service"],
    require_iss=True,
    require_aud=True,
)

SPIRE verifier:

verifier = IdentityVerifier.Spire(
    socket_path="/tmp/spire-agent/public/api.sock",
    target_spiffe_id="spiffe://example.org/peer-service",
    jwt_audiences=["peer-service"]
)

JWKS Auto‑Resolution Workflow

When IdentityVerifier.Jwt is created with autoresolve=True and no explicit public_key:

  1. Perform OpenID Provider Discovery (/.well-known/openid-configuration) to find jwks_uri.
  2. If discovery fails, attempt /.well-known/jwks.json directly.
  3. Fetch & cache key set (with TTL); prefer matching kid, else fall back to compatible algorithm.
  4. Periodically refresh before expiry (background).

Choosing a Strategy

Environment Recommended Provider / Verifier Pair
Local Dev / Tests SharedSecret / SharedSecret
Simple Staging StaticJwt / Jwt (public key)
Production Jwt (dynamic signing) / Jwt (public key or JWKS)
Zero-Trust / SPIFFE Spire / Spire

Use strict claim requirements (require_*) in production to avoid accepting tokens missing critical identity attributes.


Quick Start

1. Install

pip install slim-bindings

2. Minimal Receiver Example

import asyncio
import slim_bindings

async def main():
    # 1. Create identity
    provider = slim_bindings.IdentityProvider.SharedSecret(identity="demo", shared_secret="secret")
    verifier = slim_bindings.IdentityVerifier.SharedSecret(identity="demo", shared_secret="secret")

    local_name = slim_bindings.Name("org", "namespace", "demo")
    slim = slim_bindings.Slim(local_name, provider, verifier)

    # 2. (Optionally) connect as a client to a remote endpoint
    # await slim.connect({"endpoint": "http://127.0.0.1:50000", "tls": {"insecure": True}})

    # 4. Wait for inbound session
    print("Waiting for an inbound session...")
    session = await slim.listen_for_session()

    # Wait for messages and reply
    try:
        while True:
            msg_ctx, payload = await session.get_message()
            print("Received:", payload)
            handle = await session.publish(b"echo:" + payload)
            
            # Wait for message to be delivered end-to-end
            await handle
    except Exception as e:
        print("Error:", e)
        pass

asyncio.run(main())

3. Outbound Session (PointToPoint)

remote = slim_bindings.Name("org", "namespace", "peer")
await slim.set_route(remote)
session = await slim.create_session(
    dest_name=remote,
    session_config=slim_bindings.SessionConfiguration.PointToPoint(
        max_retries=5,
        timeout=datetime.timedelta(seconds=5),
        mls_enabled=True,
        metadata={"trace_id": "abc123"},
    )
)

handle = await session.publish(b"hello")
await handle

ctx, reply = await session.get_message()
print("Reply:", reply)

# Delete session when done. This will also end the session at the remote peer.
handle = await slim.delete_session(session)
await handle

Tracing / Observability

Initialize tracing (optionally enabling OpenTelemetry export):

await slim_bindings.init_tracing({
    "log_level": "info",
    "opentelemetry": {
        "enabled": True,
        "grpc": {"endpoint": "http://localhost:4317"}
    }
})

Installation

pip install slim-bindings

Include as Dependency

With pyproject.toml

[project]
name = "slim-example"
version = "0.1.0"
description = "Python program using SLIM"
requires-python = ">=3.10"
dependencies = [
    "slim-bindings>=0.7.0"
]

With Poetry

[tool.poetry]
name = "slim-example"
version = "0.1.0"
description = "Python program using SLIM"

[tool.poetry.dependencies]
python = ">=3.10,<3.13"
slim-bindings = ">=0.5.0"

Feature Highlights

Area Capability
Server run_server, stop_server
Client connect, disconnect, automatic subscribe to local name
Routing set_route, remove_route
Subscriptions subscribe, unsubscribe
Sessions create_session, listen_for_session, delete_session, set_session_config
Messaging publish, publish_to, get_message
Identity Shared secret, static JWT, dynamic JWT signing, JWT verification (public key / JWKS)
Tracing Structured logs & optional OpenTelemetry export

Example Programs

Complete runnable examples (point2point, group, server) live in the repository:

https://github.com/agntcy/slim/tree/slim-v0.7.0/data-plane/python/bindings/examples

You can install and invoke them (after building) via:

slim-bindings-examples point2point ...
slim-bindings-examples group ...
slim-bindings-examples slim ...

When to Use Each Session Type

Use Case Recommended Type
Stable peer workflow / stateful Point2Point
Group chat / fan-out Group

Security Notes

  • Prefer asymmetric JWT-based identity in production.
  • Rotate keys periodically and enable require_iss, require_aud, require_sub.
  • Shared secret is only suitable for local tests and prototypes.

License

Apache-2.0 (see repository for full license text).

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

slim_bindings-0.7.1.tar.gz (532.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

slim_bindings-0.7.1-cp313-cp313-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.13Windows x86-64

slim_bindings-0.7.1-cp313-cp313-manylinux_2_38_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.38+ x86-64

slim_bindings-0.7.1-cp313-cp313-manylinux_2_38_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.38+ ARM64

slim_bindings-0.7.1-cp313-cp313-macosx_11_0_arm64.whl (9.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

slim_bindings-0.7.1-cp313-cp313-macosx_10_12_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

slim_bindings-0.7.1-cp312-cp312-win_amd64.whl (8.0 MB view details)

Uploaded CPython 3.12Windows x86-64

slim_bindings-0.7.1-cp312-cp312-manylinux_2_38_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.38+ x86-64

slim_bindings-0.7.1-cp312-cp312-manylinux_2_38_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.38+ ARM64

slim_bindings-0.7.1-cp312-cp312-macosx_11_0_arm64.whl (9.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

slim_bindings-0.7.1-cp312-cp312-macosx_10_12_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

slim_bindings-0.7.1-cp311-cp311-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.11Windows x86-64

slim_bindings-0.7.1-cp311-cp311-manylinux_2_38_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.38+ x86-64

slim_bindings-0.7.1-cp311-cp311-manylinux_2_38_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.38+ ARM64

slim_bindings-0.7.1-cp311-cp311-macosx_11_0_arm64.whl (9.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

slim_bindings-0.7.1-cp311-cp311-macosx_10_12_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

slim_bindings-0.7.1-cp310-cp310-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.10Windows x86-64

slim_bindings-0.7.1-cp310-cp310-manylinux_2_38_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.38+ x86-64

slim_bindings-0.7.1-cp310-cp310-manylinux_2_38_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.38+ ARM64

slim_bindings-0.7.1-cp310-cp310-macosx_11_0_arm64.whl (9.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

slim_bindings-0.7.1-cp310-cp310-macosx_10_12_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file slim_bindings-0.7.1.tar.gz.

File metadata

  • Download URL: slim_bindings-0.7.1.tar.gz
  • Upload date:
  • Size: 532.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for slim_bindings-0.7.1.tar.gz
Algorithm Hash digest
SHA256 12a82c89240a778fe1f34c3cb4804a1af66b9dc42a242f85eab2a07aa5a44fdb
MD5 e897e3156cb663ed635d68ae63e7650a
BLAKE2b-256 5ed845f206b5bd4e1594b8637d960d3278369cce30aed9e02d9b4a26b95f407a

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bde60c561b33b0bba828fc0c7bfaf531b037b0a00b1a144dc49e6aeb8abc6219
MD5 e736e10786dab18f3c0bb6dfea73a562
BLAKE2b-256 d9b99fa40e316542d93e71db3add5dc96944975e9e7bd3f058dc457e23cee443

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp313-cp313-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp313-cp313-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 7244e22ae431e473dbcc47f7efde52f31f4c1ea790de7c9cb959d864f36e5a5b
MD5 fa320ebe7ec664c1f5822b2650fca2b8
BLAKE2b-256 88685b6ab87c5d04eed6749736d58c6845f8281a760991b2380651578535743b

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp313-cp313-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp313-cp313-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 fd4b6264d587fd75597b4269f13eb2482f5dd4413fe0d7d5e40d690b15c409e1
MD5 6dfcd67a051673e9a72fbacfa1ec6d0b
BLAKE2b-256 760a2483fa9b674f57a0e68d1fb4eeed504cb26d0a18a533dfe522e9dd93ef40

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9198a9f3e9fb37b2b571588144f2381779aed34b155953d5686bf0ffb0057c0c
MD5 e9b6497b8c766892ff2237c842012006
BLAKE2b-256 ad96cf5f382af4ec9e6352b5a677876e5ea378a69a39a19ed60fa1b9b43e84e7

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4b4a3bf86e81d11489d4fbb999609b8888364ed67d54f3f6fac551905dc2f197
MD5 61c6fe0437e69c4dbceb25da81c6a14c
BLAKE2b-256 baf444626478f4d4a66f7dc9617d9bcdb825e4ebb04f64cad2c079b4ae07026c

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 296f77d4754ff7746fa25c04463df1fb5d4fff24d86918cf20166d5e56eb4157
MD5 d93cd5c59a019112897b1abb2432763a
BLAKE2b-256 937f1131535afb4e3f3bd5770d737cdbe241f435a56a9da0d5b8c509f233738b

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp312-cp312-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp312-cp312-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 1623f5b9e30064643407cc98feee0868190de342941b1adcc5940b9e38cb53fe
MD5 f5024bef78b9588e6cb554645917595f
BLAKE2b-256 54b8e75c523b5f1aeb082cfde73e24edda20ace73773e1347fa3c6fbd23cc3bf

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp312-cp312-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp312-cp312-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 bf0da60763d398fcb221ec59a39fcb24ccb9ac15b16915e20a309422af51f941
MD5 8b9bb7bde5de370f2a77a9c0beb3ab51
BLAKE2b-256 1c313090290f0216aeca7152214c0c4cd5788b0262e9cac22f200f66c22458ee

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e80797086a928c71584ddcfc7319739a8f8a137c24a643cad9f606103e34f07f
MD5 8d610aae45736f76549ce42f68ff308a
BLAKE2b-256 7a3569b88ab0f32339216d5185e5d4a672279b2740106c8ca43e2d8278d0c906

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 31e474283f6b0ede8d9dd7cae71bbebb9c32dca34be904b287d54661e02604ec
MD5 acab846672e042f6f94377e7bac21b3e
BLAKE2b-256 6692a3e84ec1ef25d1fe65d88cc55d1b958c2e3c8bbe36f3df4eb222822a32a1

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 06893b42c6272a40a1fdeb90bb098178f8991fee598849c02f89f9e291026d35
MD5 17ab73a8f2780a474605edf2dfd222b8
BLAKE2b-256 37e2b0d223124a9e4774356af8e62457ec0728406fe87ce350dbcfa62877523a

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp311-cp311-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp311-cp311-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 3359f79db05039896b2e3f586c90bb1bad4c5b8fa18cb2c9698dc91e230b175a
MD5 c2e6ee4b7c1a430f2e5ed439c12be05e
BLAKE2b-256 367044b0afe5047b359e7007649bcc1aa69d79d76ebf2d119094893bd72cd4a4

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp311-cp311-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp311-cp311-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 e0d26b5e1aba8b8b3372044225a07b642a11a9b2dbe7f5743d9677c6b54923b1
MD5 a560b1290f850dfb8990780ce260c8e4
BLAKE2b-256 33c44495d23edde870d3f3fdfd22a8e7e1cae403e296cf6b78e4895b080a725c

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d9d02008b4fb554799793c8fb178536f0360479487cc094eeb068a0f1644a16
MD5 f02b6680742970d78c79d0d6648b055c
BLAKE2b-256 618753e235b4c6dcde5e27860da89a20a204fa2dab28f99cb201cb4f0ad84a2d

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8ab7ce34b9909bcd38f4fca02ce7a0a0dd9e6af145e65fe3ad54903aa52bd0dd
MD5 6ea77b7417d9f82dcf600beddeb00e1e
BLAKE2b-256 daef6f165b2981abbdaa98d42ef28048fee0d10e93c9aeff596731c9127dade6

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1c6c51fa20617379ad2d46eba504b0881fd6a8d631a6229c5285adbcc9f5ebb4
MD5 a7181710a45c3c5c55fc3b358bdf4504
BLAKE2b-256 2b680ff3641db7fdaeb634da151158b7f4f7d725af45c0dac7a948e3eeeb52f2

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp310-cp310-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp310-cp310-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 11710e090ecd77636b92a847906777f37a6335c67ff372386219e2506224cc0a
MD5 bd7de14b8fbac7d81171ce8559a74a8f
BLAKE2b-256 71392a05f2e985a0f220d6b2d8f4539839ae293ed2faf984470cb291010e2997

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp310-cp310-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp310-cp310-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 eee562ef3f79e9e58b1084f2af3836a418648c5f07475598e5ae42af068349d8
MD5 a8c78200092de89d3cb84bebc33465db
BLAKE2b-256 a66211b47e6a5139dea6e438ba7d83b9153bdd57e9c61c69590202f4c08f2cf5

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c3232d922c12fa5ef4a6384773ec5061ec00f61cf34bb79b060ac7e5dd9ae33
MD5 001c3fb12debc6f2b4e27fee123c7b8f
BLAKE2b-256 c2d39e323feb24664c4cbecb0979e445ef890dbc2bb3ae4f3e20dc84c7c32ef6

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.1-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 41a81f5654ff427ef2e64d9c62e44abdcab7213205c77a08cda8e714cfe8b790
MD5 4a3264e77fb7388e25c81577c219f5e7
BLAKE2b-256 eea86510a46afdd1b461b39911da45284c50f3315fce3dd8412322fdf591e17c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page