Skip to main content

AEGIS encryption easy to use Python binding. Wheels for major platforms.

Project description

AEGIS Cipher Python Binding

PyPI version

Safe Python bindings for the AEGIS family of very fast authenticated encryption algorithms via libaegis. The module runs without compilation required on Windows, Mac and Linux (has precompiled wheels). For other platforms compilation is performed at install time.

AEGIS enables extremely fast Encryption, MAC and CSPRNG - many times faster than AES, ChaCha20 or traditional random number generators. Authenticated Encryption with Additional Data is supported with the MAC derived from the cipher state at the end, making it different from other AEADs like AES-GCM and ChaCha20-Poly1305. The whole internal state thus depends on the prior data, and it is neither Encrypt-Then-Mac nor Mac-The-Encrypt scheme when both features are used together.

Install

pip install aeg

Or add to your project using UV:

uv add aeg

Variants

All submodules expose the same API; pick one for your needs. The 256 bit variants offer maximal security and use larger key and nonce, while the 128 bit variants run slightly faster and use smaller key and nonce while still providing strong security. The MAC length does not depend on the variant. Note that the x2 and x4 variants are typically the fastest (depending on CPU) by utilizing SIMD multi-lane processing for the highest throughput.

Variant Key/Nonce Bytes Notes
aegis128l 16
aegis128x2 16 Fastest on Intel Core
aegis128x4 16 Fastest on AMD and Xeon
aegis256 32
aegis256x2 32 Fast on Intel Core
aegis256x4 32 Fast on AMD and Xeon

Quick start

Normal authenticated encryption using the AEGIS-128X4 algorithm:

from aeg import aegis128x4 as ciph

key = ciph.random_key()      # Secret key (stored securely)
nonce = ciph.random_nonce()  # Public nonce (recreated for each message)
msg = b"hello"

ct = ciph.encrypt(key, nonce, msg)
pt = ciph.decrypt(key, nonce, ct)   # Raises ValueError if anything was tampered with
assert pt == msg

API overview

Common parameters and returns (applies to all items below):

  • key: bytes of length ciph.KEYBYTES
  • nonce: bytes of length ciph.NONCEBYTES (must be unique per message)
  • message/ct: plain text or ciphertext
  • ad: optional associated data (authenticated, not encrypted)
  • into: optional output buffer (see below)
  • maclen: MAC tag length 16 or 32 bytes (default 16)

Only the first few can be positional arguments that are always provided in this order. All arguments can be passed as kwargs. The inputs can be any Buffer (e.g. bytes, bytearray, memoryview).

Most functions return a buffer of bytes. By default a bytearray of the correct size is returned. An existing buffer can be provided by into argument, in which case the bytes of it that were written to are returned as a memoryview.

One-shot AEAD

Encrypt and decrypt messages with built-in authentication:

  • encrypt(key, nonce, message, ad=None, maclen=16, into=None) -> ct_with_mac
  • decrypt(key, nonce, ct_with_mac, ad=None, maclen=16, into=None) -> plaintext

The MAC tag is handled separately of ciphertext:

  • encrypt_detached(key, nonce, message, ad=None, maclen=16, ct_into=None, mac_into=None) -> (ct, mac)
  • decrypt_detached(key, nonce, ct, mac, ad=None, into=None) -> plaintext

No MAC tag, vulnerable to alterations:

  • encrypt_unauthenticated(key, nonce, message, into=None) -> ciphertext (testing only)
  • decrypt_unauthenticated(key, nonce, ct, into=None) -> plaintext (testing only)

Incremental AEAD

Stateful classes that can be used for processing the data in separate chunks:

  • Encryptor(key, nonce, ad=None, maclen=16)
    • update(message[, into]) -> ciphertext_chunk
    • final([into]) -> mac_tag
  • Decryptor(key, nonce, ad=None, maclen=16)
    • update(ct_chunk[, into]) -> plaintext_chunk
    • final(mac) -> raises ValueError on failure

The object releases its state and becomes unusable after final has been called.

Message Authentication Code

No encryption, but prevents changes to the data without the correct key.

  • mac(key, nonce, data, maclen=16, into=None) -> mac bytes
  • Mac(key, nonce, maclen=16)
    • update(data)
    • final([into]) -> mac bytes
    • verify(mac) -> raises ValueError on failure
    • digest() -> mac bytes
    • hexdigest() -> mac str
    • reset()
    • clone() -> Mac

The Mac class follows the Python hashlib API for compatibility with code expecting hash objects. After calling final(), digest(), or hexdigest(), the Mac object becomes unusable for further update() operations. However, digest() and hexdigest() cache their results and can be called multiple times. Use reset() to clear the state and start over, or clone() to create a copy before finalizing.

Keystream generation

Useful for creating pseudo random bytes as rapidly as possible. Reuse of the same (key, nonce) creates identical output.

  • stream(key, nonce=None, length=None, into=None) -> randombytes

Miscellaneous

Constants (per module): NAME, KEYBYTES, NONCEBYTES, MACBYTES, MACBYTES_LONG, RATE, ALIGNMENT

  • random_key() -> bytearray (length KEYBYTES)
  • random_nonce() -> bytearray (length NONCEBYTES)
  • nonce_increment(nonce)
  • wipe(buffer)

Exceptions

  • Authentication failures raise ValueError.
  • Invalid sizes/types raise TypeError.
  • Unexpected errors from libaegis raise RuntimeError.

Examples

Authentication only

A cryptographically secure keyed hash is produced. The example uses all zeroes for the nonce to always produce the same hash for the same key:

from aeg import aegis256x4 as ciph
key, nonce = ciph.random_key(), bytes(ciph.NONCEBYTES)

mac = ciph.mac(key, nonce, b"message", maclen=32)
print(mac.hex())

# Alternative class-based API
a = ciph.Mac(key, nonce, maclen=32)
a.update(b"message")
print(a.hexdigest())

# Verification
b = ciph.Mac(key, nonce, maclen=32)
b.update(b"message")
b.update(b"Mallory Says Hello!")
b.verify(mac)  # Raises ValueError

Detached mode encryption and decryption

Keeping the ciphertext, mac and ad separate. The ad represents a file header that needs to be tamper proofed.

from aeg import aegis256x4 as ciph
key, nonce = ciph.random_key(), ciph.random_nonce()

ct, mac = ciph.encrypt_detached(key, nonce, b"secret", ad=b"header")
pt = ciph.decrypt_detached(key, nonce, ct, mac, ad=b"header")
print(ct, mac, pt)

ciph.wipe(key)  # Zero out sensitive buffers after use (recommended)
ciph.wipe(pt)

Incremental updates

Class-based interface for incremental updates is an alternative to the one-shot functions. Not to be confused with separately verified ciphertext frames (see the next example).

from aeg import aegis256x4 as ciph
key, nonce = ciph.random_key(), ciph.random_nonce()

enc = ciph.Encryptor(key, nonce, ad=b"header", maclen=16)
c1 = enc.update(b"chunk1")
c2 = enc.update(b"chunk2")
mac = enc.final()

dec = ciph.Decryptor(key, nonce, ad=b"header", maclen=16)
p1 = dec.update(c1)
p2 = dec.update(c2)
dec.final(mac)               # raises ValueError on failure

Large data AEAD encryption/decryption

It is often practical to split larger messages into frames that can be individually decrypted and verified. Because every frame needs a different key, we employ the nonce_increment utility function to produce sequential nonces for each frame. As for the AEGIS algorithm, each frame is a completely independent invocation. The program will each time produce a completely different random-looking encrypted.bin file.

# Encryption settings
from aeg import aegis128x4 as ciph
key = b"sixteenbyte key!"  # 16 bytes secret key for aegis128* algorithms
framebytes = 80  # In real applications 1 MiB or more is practical
maclen = ciph.MACBYTES  # 16

message = bytearray(30 * b"Attack at dawn! ")
with open("encrypted.bin", "wb") as f:
    # Public initial nonce sent with the ciphertext
    nonce = ciph.random_nonce()
    f.write(nonce)
    while message:
        chunk = message[:framebytes - maclen]
        del message[:len(chunk)]
        ct = ciph.encrypt(key, nonce, chunk, maclen=maclen)
        ciph.nonce_increment(nonce)
        f.write(ct)
# Decryption needs same values as encryption
from aeg import aegis128x4 as ciph
key = b"sixteenbyte key!"
framebytes = 80
maclen = ciph.MACBYTES

with open("encrypted.bin", "rb") as f:
    nonce = bytearray(f.read(ciph.NONCEBYTES))
    while True:
        frame = f.read(framebytes)
        if not frame:
            break
        pt = ciph.decrypt(key, nonce, frame, maclen=maclen)
        ciph.nonce_increment(nonce)
        print(pt)

Random generator

The stream generator is much faster than any traditional random number generator, cryptographically secure and seekable. Use random_key() for unpredictable output.

from aeg import aegis128x4 as ciph

key = b"SeedForReplay001"  # A non-random deterministic seed (16 bytes)
nonce = bytearray(ciph.NONCEBYTES)  # All-zeroes nonce

# Generate multiple blocks of pseudorandom data
for i in range(5):
    rand = ciph.stream(key, nonce, 10)
    print(f"Block {int.from_bytes(nonce, "little")}: {rand.hex()}")
    ciph.nonce_increment(nonce)

Note: this is seekable by converting the block number to nonce with idx.to_bytes(ciph.NONCEBYTES, "little"), given some fixed block size (e.g. 1 MiB).

Preallocated output buffers (into=)

For advanced use cases, the output buffer can be supplied with into kwarg. Any type of writable buffer with a sufficient number of bytes can be used. This includes bytearrays, memoryviews, mmap files, numpy arrays etc.

A TypeError is raised if the buffer is too small. For convenience, the functions return a memoryview showing only the bytes actually written.

Foreign arrays can be used. This example fills a Numpy array with random integers.

import numpy as np
from aeg import aegis128x4 as ciph
key, nonce = ciph.random_key(), ciph.random_nonce()

arr = np.empty(10, dtype=np.uint64)  # Uninitialised integer array
ciph.stream(key, nonce, into=arr)    # Fill with random bytes
print(arr)

In-place operations are supported when the input and the output point to the same location in memory. When using attached MAC tag, the input buffer needs to be sliced to correct length:

from aeg import aegis256x4 as ciph
key, nonce = ciph.random_key(), ciph.random_nonce()
buf = memoryview(bytearray(1000))  # memoryview[:len] is still in the same buffer (no copy)
buf[:7] = b"message"

# Each function returns a memoryview capped to correct length
ct = ciph.encrypt(key, nonce, buf[:7], into=buf)
pt = ciph.decrypt(key, nonce, ct, into=buf)

print(bytes(pt))

Detached and unauthenticated modes can use same size input and output (no MAC added to ciphertext). Detached encryption instead of into takes ct_into and mac_into separately and returns memoryviews to both.

Performance

Runtime CPU feature detection selects optimized code paths (AES-NI, ARM Crypto, AVX2/AVX-512). Multi-lane variants (x2/x4) offer higher throughput on suitable CPUs.

Benchmarks using the included benchmark module, run on Intel i7-14700, linux, single core (the software is not multithreaded). Note that the results are in megabits per second, not bytes. The CPU lacks AVX-512 that makes the X4 variants faster on processors supporting it (most AMD, Xeon).

uv run -m aeg.benchmark
AEGIS-256        103166.24 Mb/s
AEGIS-256X2      184225.50 Mb/s
AEGIS-256X4      194018.26 Mb/s
AEGIS-128L       161551.73 Mb/s
AEGIS-128X2      281987.80 Mb/s
AEGIS-128X4      217997.37 Mb/s
AEGIS-128L MAC   188886.40 Mb/s
AEGIS-128X2 MAC  306457.97 Mb/s
AEGIS-128X4 MAC  299576.59 Mb/s
AEGIS-256 MAC    100914.04 Mb/s
AEGIS-256X2 MAC  190208.20 Mb/s
AEGIS-256X4 MAC  315919.87 Mb/s

The Python library performance is similar to that of the C library:

./libaegis/zig-out/bin/benchmark
AEGIS-256        107820.86 Mb/s
AEGIS-256X2      205025.57 Mb/s
AEGIS-256X4      223361.81 Mb/s
AEGIS-128L       187530.77 Mb/s
AEGIS-128X2      354003.14 Mb/s
AEGIS-128X4      218596.59 Mb/s
AEGIS-128L MAC   224276.49 Mb/s
AEGIS-128X2 MAC  417741.65 Mb/s
AEGIS-128X4 MAC  410454.05 Mb/s
AEGIS-256 MAC    116776.62 Mb/s
AEGIS-256X2 MAC  224150.04 Mb/s
AEGIS-256X4 MAC  392088.05 Mb/s

Alternatives

There is also a package named pyaegis on PyPI that is unrelated to this module, but that also binds to the libaegis C library. There are also a number of modules named aegis from different packages not at all related to the encryption algorithm.

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

aeg-0.4.3.tar.gz (1.5 MB view details)

Uploaded Source

Built Distributions

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

aeg-0.4.3-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

aeg-0.4.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl (477.6 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

aeg-0.4.3-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

aeg-0.4.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl (477.7 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

aeg-0.4.3-cp315-cp315t-macosx_11_0_arm64.whl (477.6 kB view details)

Uploaded CPython 3.15tmacOS 11.0+ ARM64

aeg-0.4.3-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

aeg-0.4.3-cp315-cp315-macosx_11_0_arm64.whl (477.6 kB view details)

Uploaded CPython 3.15macOS 11.0+ ARM64

aeg-0.4.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

aeg-0.4.3-cp314-cp314t-macosx_11_0_arm64.whl (477.6 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

aeg-0.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

aeg-0.4.3-cp313-cp313-macosx_15_0_arm64.whl (610.0 kB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

aeg-0.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

aeg-0.4.3-cp312-cp312-macosx_11_0_arm64.whl (477.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

aeg-0.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

aeg-0.4.3-cp311-cp311-macosx_11_0_arm64.whl (610.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

aeg-0.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

aeg-0.4.3-cp310-cp310-macosx_15_0_arm64.whl (610.1 kB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

Details for the file aeg-0.4.3.tar.gz.

File metadata

  • Download URL: aeg-0.4.3.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3.tar.gz
Algorithm Hash digest
SHA256 f0aee49969c51298c3162580b5f73acb2b8a9a5323564ae02b7a888e673fc720
MD5 87568b4b346baa82a1e30263c3d33f43
BLAKE2b-256 9f4943e6021336181668fdb9c0f114d96ee01ef296dd381a12dc28dd0ed1d21e

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: aeg-0.4.3-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: PyPy, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 339341072a34d29e0184f9aabab03ae0864dfd51746685b028d242f813e59522
MD5 db72699ba7ad92db9ab1ae4f56f51a94
BLAKE2b-256 dca6aa02e004b54410defaeafff00924f59a4c0def07ef15317398f934e639fd

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl.

File metadata

  • Download URL: aeg-0.4.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 477.6 kB
  • Tags: PyPy, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d563a05ca6e4fa524d33e2fde75f9e9203d63d3784baccac25d4e6bb0e355b68
MD5 66d2d4a53a4570a3dedc751086bf07d4
BLAKE2b-256 13cc21d0d253e62b12507a48f8a263d0a27d178b2dca1c4d8efdb13fe4275d8c

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: aeg-0.4.3-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: PyPy, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 b76799d6357a2e78a2ef0fe1caa9fcbde61a473133135d4294f27e6abafe8de1
MD5 caf3a41b21250363972a0f529dc4186c
BLAKE2b-256 61990a10fe00c9acd8abb28ce93d0285e99550ec211081e5a49991286209c007

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

  • Download URL: aeg-0.4.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 477.7 kB
  • Tags: PyPy, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1a5e5bbd6c7c6968e9a3c908b5d980482baaa5e3b807660151c3c3dbf0537c47
MD5 316fe8a500a82b2ef72f4c23525f27d8
BLAKE2b-256 2d1f11e2a4aca0bf28a90e2699aa39eaa31e87cc9e90381254a92550728673f9

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp315-cp315t-macosx_11_0_arm64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp315-cp315t-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 477.6 kB
  • Tags: CPython 3.15t, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp315-cp315t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f9e9c71494d4a4975daebd35dd6aa1c3e64dac052d58ec03e0d00dab7a2e244b
MD5 69e4ad5b01a5b0697c35bafa1be1fb28
BLAKE2b-256 c80c0c4497df90ab0ac84ed525be22667eea3cf60722ebde6ae953bc65170fb3

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.15, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 074bde8e71ca51a021e9add6d3f9abc7e9eb5652cd10cb88f6acd61e4dabd759
MD5 11a9d286bd33941787a15f934babe564
BLAKE2b-256 caacc3b9dd6f12695cecd6a09d7ee0fbf3a534155b297028727f071ef5d1fd04

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp315-cp315-macosx_11_0_arm64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp315-cp315-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 477.6 kB
  • Tags: CPython 3.15, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp315-cp315-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79a5b83d8774212db8d0525af2175f12280e1ded5cd489e7d524e13e216a64b4
MD5 4b7a5057a5adfdb6fc2896992ff9e602
BLAKE2b-256 ffe156b6fd660b3113ad0e789cb72e1a8b0596765ac6dd30afcf4a2ff86f116e

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6412eedd122686a6a612dfe151229f3d362111af735faa432d71f2d2d653f543
MD5 a3163760a2208b25f776992c66caa3f1
BLAKE2b-256 c4455c11791677b9f9abe79a16dd854b8a42e67320dbe0d4ad066e93bab798ff

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp314-cp314t-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 477.6 kB
  • Tags: CPython 3.14t, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aa1d20eb2d06437d2d38c8997103135b0c72440a2567f970a36de94838195ea8
MD5 6e07ac240f29b2dcb2b8ee7f1391b4b5
BLAKE2b-256 cdc8186ce8a1abd8a591e7151fe9010190366d3127093f9504b7187f06628964

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 9101c2cbb913cfb615bc8ef942444b41591e8ad8e1efce05ee2e16cc88ac51e2
MD5 cc2b2a12bda8baa1ce82be9bf64a5b54
BLAKE2b-256 1199dc0835a12db4fcdad3eab7ca30d697b63ee446d82ef816cbbe193e428293

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp313-cp313-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 610.0 kB
  • Tags: CPython 3.13, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 a8fa05880488f28e25808921f81d09163c7e2df454d8d9743136aded8446d8e9
MD5 5931517fa33183206b903aaa9759f166
BLAKE2b-256 f5e00262da04ca8c4cb35d1a1d3efe3c85d86264f839cdc31ef432cd31cc48f6

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 cd63394a3a07e5db183ec5f2ba4f04f7deb4c96c08c5ce71082fdba740e93dd6
MD5 8e15db0b719cdf22e09a312d79dfdf33
BLAKE2b-256 7dde7b034758b6f8b42a881c0463720d91651e56af852807cfb10e07f27f5076

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 477.6 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6cfc3798ec6a3dafdbf5bbb807af495ce37246dfb1aca63142d3b9a8182caead
MD5 579de91de5916c434d26ccd5f1374d27
BLAKE2b-256 97c09ee6bee6273836f0a4af4be5af646a011f3a9f60cb3ddbb9dd9a84516352

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 1cc895fda539a295fca14fd3d48efb9e61f9affd3347a9b21477734e951f9d1f
MD5 19635c9c1aa7ea351ba40084fc31401a
BLAKE2b-256 01181af75e9a75f3db40219ff0647252d2305dbb7a6944146bdb2d5590f364f7

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 610.1 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bde4989b70144931af94f283aaed44a6b3da222400db1a283159f66cd2f170f9
MD5 0f210ccb950b3f8197b02c643864add2
BLAKE2b-256 6cb367fee05d01434f3711416ae1f507a38ab41fe61ff66a37f0d913aa83ffb5

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 f0de4fce96eebf27c426601ddc1be6fc4c73ee9880a0743c8ecf37bdbe936391
MD5 aa94e7fafc56209709169edadf1fbd0b
BLAKE2b-256 ef9882a822994dfc9f34ce65358a0e5859c63d446f2fd2ece6bb158ca711e21b

See more details on using hashes here.

File details

Details for the file aeg-0.4.3-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

  • Download URL: aeg-0.4.3-cp310-cp310-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 610.1 kB
  • Tags: CPython 3.10, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for aeg-0.4.3-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 41aac15e2b0bebe2ce6970af47b6cdfe26c1cbd987e25a0060f65028ca44f49f
MD5 d20f751c36dcbd840a65ef31dce8fecb
BLAKE2b-256 ce5a8aaa2f71b4eb328e209e2460f4c69919e0e63aeda8fafda591ff06628694

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