Skip to main content

Alkindi

In honor of Alkindi (الكِندي), the 9th-century pioneer of cryptography

Status: Alpha License: Apache-2.0

High-performance Python bindings for NIST-standardized post-quantum cryptography, powered by OpenSSL.


Table of Contents


About

The project is named after Alkindi (الكِنْدي), the 9th-century Arab Muslim polymath who pioneered cryptanalysis and frequency analysis, laying the foundations for modern cryptography.

Alkindi makes quantum-resistant cryptography straightforward and accessible in Python by providing clean, type-safe bindings to OpenSSL's implementations of NIST-standardized post-quantum algorithms. As quantum computers advance, traditional public-key systems like RSA and elliptic curves become vulnerable. Alkindi provides the cryptographic primitives needed to protect against both classical and quantum attacks.

Supported Algorithms

  • ML-KEM (formerly Kyber) — Key encapsulation mechanisms for secure key exchange
    Based on lattice cryptography, ML-KEM enables two parties to establish a shared secret over an insecure channel. Available in three security levels (ML-KEM-512, ML-KEM-768, ML-KEM-1024) corresponding to AES-128, AES-192, and AES-256 equivalent security.

  • ML-DSA (formerly Dilithium) — Digital signatures for authentication and integrity
    Lattice-based signatures that provide quantum-resistant authentication. Three parameter sets (ML-DSA-44, ML-DSA-65, ML-DSA-87) offer balanced trade-offs between signature size and security strength.

  • SLH-DSA (formerly SPHINCS+) — Hash-based signatures for conservative security guarantees
    Unlike lattice-based schemes, SLH-DSA relies only on hash function security, making it ideal for long-term signatures and applications requiring minimal cryptographic assumptions. Available in multiple variants optimized for either speed or size.

Alkindi uses CFFI to interface directly with OpenSSL's C implementations, achieving high performance with minimal overhead. The library provides a thread-safe API with full type annotations for enhanced developer experience.

Status: Alpha — Alkindi is under active development with the explicit goal of becoming a production-grade, thoroughly reviewed PQC library for Python. APIs may change before version 1.0.0.


Why Alkindi?

Alkindi bridges the gap between enterprise-grade cryptography and Python developer ergonomics, bringing NIST-standardized post-quantum algorithms to your applications with production readiness in mind:

Feature Description
Battle-tested backend Built on OpenSSL, leveraging decades of cryptographic engineering and security audits rather than implementing algorithms from scratch.
Standards-first Uses NIST-standardized post-quantum algorithms exclusively and avoids experimental or pre-standard variants.
High performance CFFI-based bindings call OpenSSL directly, achieving near-native C performance with minimal Python overhead.
Type-safe, simple API Full type hints and a thread-safe design for safer concurrent usage and superior developer experience.
Minimal attack surface A deliberately focused API that is easier to reason about, audit, and review than a sprawling cryptographic toolkit.

Installation

From PyPI (Coming Soon)

pip install alkindi

From Source

Requirements: Python 3.10+ and C compiler

# Clone the repository
git clone https://github.com/alraddady/alkindi.git
cd alkindi

# Build OpenSSL with PQC support
./scripts/build_openssl.sh

# Install Alkindi
pip install -e .

# Or install with development dependencies
pip install -e ".[dev]"

Quick Start

Key Encapsulation (ML-KEM)

from alkindi import KEM

# Generate a keypair for the receiver
keypair = KEM.generate_keypair("ML-KEM-768")

# Sender: encapsulate a shared secret
ciphertext, shared_secret_sender = KEM.encapsulate("ML-KEM-768", keypair.public_key)

# Receiver: decapsulate to recover the shared secret
shared_secret_receiver = KEM.decapsulate("ML-KEM-768", keypair.private_key, ciphertext)

# Both parties now share the same secret
assert shared_secret_sender == shared_secret_receiver

Deterministic Key Generation

Pass a 64-byte seed to produce the same keypair every time. The seed is the concatenation of the two FIPS 203 internal seeds d || z.

import os

seed = os.urandom(64)
keypair = KEM.generate_keypair("ML-KEM-768", seed=seed)
keypair2 = KEM.generate_keypair("ML-KEM-768", seed=seed)
assert keypair.public_key == keypair2.public_key

Digital Signatures (ML-DSA / SLH-DSA)

from alkindi import Signature

# Generate a keypair for the signer
keypair = Signature.generate_keypair("ML-DSA-65")

# Sign a message
message = b"Hello, quantum world!"
signature = Signature.sign("ML-DSA-65", keypair.private_key, message)

# Verify the signature
is_valid = Signature.verify("ML-DSA-65", keypair.public_key, message, signature)
print(f"Signature valid: {is_valid}")  # True

# Tampering detection
is_valid = Signature.verify("ML-DSA-65", keypair.public_key, b"Tampered message", signature)
print(f"Tampered signature valid: {is_valid}")  # False

Context Strings

ML-DSA and SLH-DSA support an optional context string (up to 255 bytes) that is cryptographically bound to the signature. The same context must be supplied at both signing and verification time.

ctx = b"the quick brown fox jumps over the lazy dog"
signature = Signature.sign("ML-DSA-65", keypair.private_key, message, context=ctx)

# Verification succeeds only with the correct context
Signature.verify("ML-DSA-65", keypair.public_key, message, signature, context=ctx)   # True
Signature.verify("ML-DSA-65", keypair.public_key, message, signature)                 # False

Key Serialization (DER/PEM)

Keys converts raw key bytes to and from standard wire formats for storage and interoperability:

  • Public keys → SubjectPublicKeyInfo (SPKI / X.509)
  • Private keys → PKCS#8 PrivateKeyInfo (unencrypted)
from alkindi import KEM, Keys

keypair = KEM.generate_keypair("ML-KEM-768")
keys = Keys("ML-KEM-768")

# Export to DER or PEM
public_pem  = keys.public_key_to_pem(keypair.public_key)
private_der = keys.private_key_to_der(keypair.private_key)

# Import back to raw bytes
public_key  = keys.public_key_from_pem(public_pem)
private_key = keys.private_key_from_der(private_der)

Keys works with all ML-KEM, ML-DSA, and SLH-DSA algorithms. Bind it once to an algorithm, then call encode/decode methods without repeating the algorithm name.


Documentation

Algorithm Selection Guide

Choosing the right algorithm and parameter set depends on your security requirements, performance constraints, and use case. For detailed guidance on selecting appropriate algorithms, see the Algorithm Selection Guide.

NIST Standards

Additional Resources


Contributing

Contributions are welcome! Please review our Contributing Guidelines before submitting pull requests or opening issues.


License

Licensed under the Apache License 2.0. See LICENSE for complete terms.


Acknowledgments

Alkindi stands on the shoulders of giants. I would like to thank the following organizations and teams for their foundational work:

  • National Institute of Standards and Technology (NIST): for standardizing post-quantum cryptography
  • OpenSSL Project: for providing the cryptographic foundation
  • Algorithm Development Teams:
    • Kyber developers
    • Dilithium developers
    • SPHINCS+ developers
  • Open Quantum Safe (OQS): for their pioneering work in making post-quantum cryptography practical and for fostering a welcoming community

My sincere gratitude also extends to the broader open-source community, whose collaborative spirit and tireless contributions make projects like this possible.

Release files for alkindi 0.0.3

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

Built distributions (wheels)

Table of built distributions (wheels) for alkindi 0.0.3
File
alkindi-0.0.3-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
alkindi-0.0.3-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 Details
alkindi-0.0.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
alkindi-0.0.3-cp313-cp313-macosx_14_0_arm64.whl CPython 3.13 CPython 3.13 macOS 14.0+ ARM64 Details
alkindi-0.0.3-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
alkindi-0.0.3-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.26+ x86-64 Details
alkindi-0.0.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
alkindi-0.0.3-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details
alkindi-0.0.3-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
alkindi-0.0.3-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.26+ x86-64 Details
alkindi-0.0.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
alkindi-0.0.3-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details
alkindi-0.0.3-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
alkindi-0.0.3-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 Details
alkindi-0.0.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
alkindi-0.0.3-cp310-cp310-macosx_14_0_arm64.whl CPython 3.10 CPython 3.10 macOS 14.0+ ARM64 Details

Total release size: 18.6 MB

Release files / alkindi-0.0.3-cp313-cp313-win_amd64.whl

Download URL alkindi-0.0.3-cp313-cp313-win_amd64.whl
Size 886.0 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
05925e3274786018a863c2914317c4cbebbc11a3dcad5c4de5012698494897d9
BLAKE2b-256 checksum
How to use checksums
65c8b3de526f0da20099bd2e12aa361f015fba362c09cb56387b7bdc24b70c96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL alkindi-0.0.3-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 1.5 MB
Tags CPython 3.13 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3aa518495f0ff8400c496dd59bb9def14e52aaf15d314c9d5ef8baabc0cad244
BLAKE2b-256 checksum
How to use checksums
edef33625c2f6751cd7b94b543840a93923c53ba7c950dc1c0375692c44c7936
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL alkindi-0.0.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.3 MB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
bb116cf1a2fb7ceaf2fe843c31487ce552daaef878edcf6c0bea2e123def671d
BLAKE2b-256 checksum
How to use checksums
702e94b3abebc6982a6889c2b9e32f45a0765594c202cf00f97ad84e01addb22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp313-cp313-macosx_14_0_arm64.whl

Download URL alkindi-0.0.3-cp313-cp313-macosx_14_0_arm64.whl
Size 944.7 kB
Tags CPython 3.13 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
c25b34d72fd6adddf3e5ee0f199df8e9ebe51462f1165a62dc0ef0f55c488e67
BLAKE2b-256 checksum
How to use checksums
f17d52ca9714e88ec28fc99419555dacaa21fe101a535d7b2ba52528e3438b86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp312-cp312-win_amd64.whl

Download URL alkindi-0.0.3-cp312-cp312-win_amd64.whl
Size 886.0 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
56e77b78517ba258f7d26a1bbe4088225267be688df8fb859f39b434f05f20d0
BLAKE2b-256 checksum
How to use checksums
a692f9f50bf2d99be8fd1af78e6fa9726f973c5805a03bb481a884c100c0c1e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL alkindi-0.0.3-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 1.5 MB
Tags CPython 3.12 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4244d8353b918b85c001cfa1f381429f8b3d7ff75988e3f381c23127f154cd41
BLAKE2b-256 checksum
How to use checksums
ad68e80e327b00f1963fbbe92f32555962b8cabb016adf48ac06d020b314cc19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL alkindi-0.0.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.3 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
8efd8a09215f7058595db418514528e23effb4cb6691fdc7bdf62345717219bf
BLAKE2b-256 checksum
How to use checksums
79a06fb8346e172475305f6d31a358215fac0d4b3f17210957ff81ec45489cf1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp312-cp312-macosx_14_0_arm64.whl

Download URL alkindi-0.0.3-cp312-cp312-macosx_14_0_arm64.whl
Size 944.7 kB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
2686e5c4e358b523b02fb9e14cd84f239bcfd4ea21660ce3c8194729804f8240
BLAKE2b-256 checksum
How to use checksums
b15ab5c7652b068aa4c4932540768e121c1a38a6c21e20dff9a08cb808cc49f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp311-cp311-win_amd64.whl

Download URL alkindi-0.0.3-cp311-cp311-win_amd64.whl
Size 885.9 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
9d91452b22f145f8892f1a8fd455ba0737d0813de7bb4dcbb224ccf80de37ad3
BLAKE2b-256 checksum
How to use checksums
1ae0c5fb0d28f9142b97cc5252d7c48f68b2a4c8190da244c1c24ebe5be4be2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL alkindi-0.0.3-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 1.5 MB
Tags CPython 3.11 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9af819b02716d934e148d08aacc1bcaea0cd07d2bb3ee1e6ccb5690211c76770
BLAKE2b-256 checksum
How to use checksums
839b23bcacd3b77a75a3b51d761d5f361d465fac6a59f54fffc7b28229760cb6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL alkindi-0.0.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.3 MB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
6bb2bfa660523f9ac484e3e283585beabd91f9b20493b716f47f559465b2d45b
BLAKE2b-256 checksum
How to use checksums
33987894c8d5d11e7b2e153da624132c3d2eed9e86373852a05ab792e8d6d253
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp311-cp311-macosx_14_0_arm64.whl

Download URL alkindi-0.0.3-cp311-cp311-macosx_14_0_arm64.whl
Size 944.6 kB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
f9e4e856e4a0f1d8ca687857b4604c164198a997b7e54aac697be8e4cad0ae52
BLAKE2b-256 checksum
How to use checksums
34c3a1dac8544d7b2e0870d72f1f8aa0c885087e5e629d7857eb224e56145760
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp310-cp310-win_amd64.whl

Download URL alkindi-0.0.3-cp310-cp310-win_amd64.whl
Size 885.9 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
e0f12028fe0debcf072ab92b10ddf923ff77b2fc0a3623a07de1cac9850f883c
BLAKE2b-256 checksum
How to use checksums
2ba9ec78c4710f2afa7ea595d10063f0761a85c74ff0164b874630cccfd30d4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL alkindi-0.0.3-cp310-cp310-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 1.5 MB
Tags CPython 3.10 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f12f0baa372ed7c116ed1255492c2f44a1a4b12793b0923691a44b6f58206c13
BLAKE2b-256 checksum
How to use checksums
bbb083bdb020f98c514cff3cc825c8444713af3723d50d569daf8b8e47d3c946
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL alkindi-0.0.3-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 1.3 MB
Tags CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
76d4c15b990552365c024513e28b4fd664f636c333f3d27280bc5f196fba58bc
BLAKE2b-256 checksum
How to use checksums
4ee3fdf140147ad4df8542328eee568d4083f5539ffd9b95cd707b7d15fa6533
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release files / alkindi-0.0.3-cp310-cp310-macosx_14_0_arm64.whl

Download URL alkindi-0.0.3-cp310-cp310-macosx_14_0_arm64.whl
Size 944.6 kB
Tags CPython 3.10 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
9ee514797af5163e1d27ad8664aea9ecc7d25d656a41eb83504add44f219e880
BLAKE2b-256 checksum
How to use checksums
859ff346e588134253f9dcd1eb8e3ca6ffdd928adbe76c922314828fe98d1181
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 Apr 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.3 This release

16 release files

0.0.2

16 release files

0.0.1

12 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