Skip to main content

ahe

PyPI

A minimalist Python library for (Contrast Limited) (Adaptive) Histogram Equalization, combining the expressiveness of a user-friendly Python interface with the raw power of a low-level implementation.

Development status

ahe is currently in alpha. Fundational features are available, and expected to be stable, but the software as a whole may not be feature complete yet.

Installation

$ python -m pip install ahe

Usage

Simple Histogram Equalization

We'll start by defining an image composed of noise.

import ahe
import numpy as np

image_shape = (128, 128)
prng = np.random.default_rng(0)
image = np.clip(
    prng.normal(
        loc=0.5,
        scale=0.25,
        size=np.prod(image_shape),
    ).reshape(image_shape),
    a_min=0.0,
    a_max=1.0,
)

Non-adaptive histogram equalization is performed as follow

image_eq = ahe.equalize_histogram(image)

This method is least expensive in terms of strain put on hardware resources. However, as a single histogram is computed and adjusted over the entire image, this technique is known to amplify noise in near-uniform regions.

Adaptive Histogram equalization (AHE)

Adaptive Histogram Equalization (AHE) was designed to overcome this limitation by instead computing more localized (and numerous) histograms, improving the local contrast in all regions, at the cost of a reduced efficiency. As illustrated in the following, there are two main variants of AHE, sliding-tile and tile-interpolation. As the names suggest, both methods rely on the use of of tiles, also known as contextual regions, that define sub-domains in which different histograms are computed and applied.

Prioritizing accuracy: sliding-tile

True AHE is intrinsically an expensive operation to perform, as it requires computing a different histogram per pixel. One efficient (although still costly) way to accomplish this, originally proposed by Pizer et al. (1987), reduces the redundancy in intermediate computations and is known as the sliding-tile variant of AHE. Here's how to use it in ahe

image_eq = ahe.equalize_histogram(
    image,
    adaptive_strategy={
        "kind": "sliding-tile",
        "tile-size": 15,
    },
)

While an exact implementation of AHE, this option remains resource-demanding and is not recommended for production.

Prioritizing performance: tile-interpolation

Alternatively, very similar results can be obtained at a fraction of the cost using an approximative method known as the tile-interpolation variant of AHE, also introduced by Pizer et al. (1987). In this method, an image is split into equal-sized sub domains (tiles), which may be specified either from a tile size

image_eq = ahe.equalize_histogram(
    image,
    adaptive_strategy={
        "kind": "tile-interpolation",
        "tile-size": 16,
    },
)

or as a number of tiles to split the domain into (in each direction)

image_eq = equalize_histogram(
    image,
    adaptive_strategy={
        "kind": "tile-interpolation",
        "tile-into": 8,
    },
)

General rules for tiling schemes

In all AHE strategies, all tiles created will be the exact same size, regardless of the pixel's relative position in the image. The whole domain is generally padded internally in order to respect this rule. The exact method used for padding is controlled by the boundaries keyword argument.

Both 'tile-size' and 'tile-into' will accept either a shape as a pair of integers (n, m), or a single integer n, which is a shorthand for (n, n), as illustrated above.

Migrating from scikit-image

TL;DR

Put simply, if all your project needs from scikit-image is skimage.exposure.equalize_(adapt)hist, ahe provides a faster, more lightweight and portable replacement. The following contains a much more detailed explanation of the differences. You can also jump to the final Migration Guide.

Disclaimer: missing features

The following features from skimage.exposure.equalize_(adapt)hist are currently missing from ahe:

  • masking
  • multi-channel images objects (from PIL) or arrays. The expectation is that this should be easy to re-implement on the user side.
  • higher dimensionality: ahe currently only supports 2D input and outputs. The algorithms can be generalized to work in any dimensionality. Please open an issue

Some, though not all of the above are already planned. Don't hesitate to request the others (or anything else that could be in scope) by opening an issue.

Dependency Minimalism

ahe has no runtime dependencies beyond numpy. Additionally, its binaries are orders of magnitude lighter than scikit-image's, as well as future-compatible with yet-unreleased versions of Python.

Shows a bar chart comparing wheel sizes

(*: numpy itself, as the common dependency to ahe and scikit-image, is excluded from this graph)

Better performance

Shows a bar chart comparing wheel sizes

Interface Consistency

scikit-image's implementation of histogram equalization methods are exposed as two different functions: skimage.exposure.equalize_hist and skimage.exposure.equalize_adapthist. Only the former supports masking, and only the latter supports clipping. ahe.equalize_histogram provides a consistent feature set, independent of the adaptive strategy selected, or lack thereof.

Furthermore, implicit, default behavior can be hard to reproduce explicitly. For instance, equalize_adapthist will, by default, create tiles by dividing the image in 8 along each direction, but only exposes a kernel_size argument to override this; as a result, one needs to re-implement division logic if they need something very similar to the default, but with any other value than 8.

In stark contrast, ahe.equalize_histogram's adaptive_strategy argument supports all these applications:

  • adaptive_strategy=None (default) corresponds to skimage.exposure.equalize_hist
  • adaptive_strategy={'kind': 'tile-interpolation', 'tile-into': 8} corresponds to skimage.exposure.equalize_adapthist's default, but the exact divisor(s) used can easily be adjusted
  • adaptive_strategy={'kind': 'tile-interpolation', 'tile-size': 64} is akin to using skimage.exposure.equalize_adapthist's kernel_size argument.

Last but not least, equalize_hist does not support contrast limitation, while equalize_adapthist enables it by default (clip_limit defaults to 0.01), and things get messy when you actually want to disable it:

  • clip_limit's name is not descriptive and only makes sense if you already know what it does under the hood. ahe's equivalent parameter is named max_normalized_bincount, which is more verbose, but also more explicit about what the number represents.
  • clip_limit (a.k.a max_normalized_bincount) is effectively a fraction; only values within the open interval ]0.0, 1.0] are meaningful, but clip_limit=0.0 is allowed, and effectively disable all clipping, which means it's equivalent to 1.0, further mystifying the underlying behavior and meaning of the parameter. Another way to phrase this is that the results change discontinuously at 0.0, which is very close to the default value and should be easy to reason about.
  • results for clip_limit=1.0 (or 0.0, as we just saw), are actually incorrect at a level that is visible to the naked eye (aliasing may be prominent). In comparison, ahe does not enable contrast limitation by default: such flagrant defects would be immediately visible in tests.

Conservation of transformation invariants

ahe.equalize_histogram also provides stricter guarantees regarding the transformation's geometric invariants. Outputs are guaranteed to be invariant (to machine precision) to left/right and top/ bottom symmetries. In contrast, skimage.exposure.equalize_adapthist's outputs are subject to biases on, because it does not enforce symmetry in its internal tiling scheme (as of scikit-image v0.26.0). This improved tiling scheme comes at the cost of stricter requirements in ahe.equalize_histogram: the tile-interpolation strategy only supports tiles and images with even sizes in both directions.

Additional features

ahe.equalize_histogram supports more tiling scheme than skimage.exposure.equalize_hist and skimage.exposure.equalize_adapthist combined, within a consistent interface and a unified feature set. In particular, it offers an exact implementation of Adaptive Histogram Equalization implemented as a sliding-tile, while skimage.exposure.equalize_adapthist only supports tile-interpolation (also available in ahe), which is generally faster, but also a less accurate approximation of a true AHE.

ahe.equalize_histogram also supports periodic boundary conditions, which can be specified as boundaries='periodic'.

Migration Guide

This section provides some practical examples of scikit-image applications and their equivalent in ahe.

Notes

  • in ahe, the default nbins is generally aligned with scikit-image's (256), except for kernels (or tiles) spanning less than 256 pixels. For maximum compatibility, specifying an explicit value is recommended.
  • ahe.equalize_histogram's max_normalized_bincount represents the same parameter as skimage.exposure.equalize_adapthist's clip_limit, but their default values differ: max_normalized_bincount defaults to 1.0 (no contrast limitation), while scikit-image's clip_limit default to 0.01
  • "kernel", "tile" and "contextual region" are different names for the same concept.

HE

from skimage.exposure import equalize_hist

result = equalize_hist(array)

# becomes
import ahe

result = ahe.equalize_histogram(array, nbins=256)

AHE with implicit kernel size

from skimage.exposure import equalize_adapthist

result = equalize_adapthist(array, clip_limit=1.0)

# becomes
import ahe

result = ahe.equalize_histogram(
    array,
    nbins=256,
    adaptive_strategy={
        "kind": "tile-interpolation",
        "tile-into": 8,  # or (8, 8)
    },
)

CLAHE with explicit kernel size

from skimage.exposure import equalize_adapthist

result = equalize_adapthist(array, kernel_size=64)

# becomes
import ahe

result = ahe.equalize_histogram(
    array,
    nbins=256,
    adaptive_strategy={
        "kind": "tile-interpolation",
        "tile-size": 64,  # or (64, 64)
    },
    max_normalized_bincount=0.01,
)

References

  1. Pizer, Stephen M. et al. (1987). Adaptive Histogram Equalization and Its Variations. Compute Vizion, Graphics, and Image Processing, 39, 355-368

Metadata

Release files for ahe 0.1.2

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

Source distribution (sdist)

Source distribution for ahe 0.1.2
File Size Uploaded
ahe-0.1.2.tar.gz 48.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for ahe 0.1.2
File
ahe-0.1.2-cp315-abi3.abi3t-win_arm64.whl CPython 3.15 abi3, abi3t Windows ARM64 Details
ahe-0.1.2-cp315-abi3.abi3t-win_amd64.whl CPython 3.15 abi3, abi3t Windows x86-64 Details
ahe-0.1.2-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl CPython 3.15 abi3, abi3t Linux musl 1.2+ x86-64 Details
ahe-0.1.2-cp315-abi3.abi3t-musllinux_1_2_aarch64.whl CPython 3.15 abi3, abi3t Linux musl 1.2+ ARM64 Details
ahe-0.1.2-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl CPython 3.15 abi3, abi3t Linux glibc 2.28+ x86-64 Details
ahe-0.1.2-cp315-abi3.abi3t-manylinux_2_28_aarch64.whl CPython 3.15 abi3, abi3t Linux glibc 2.28+ ARM64 Details
ahe-0.1.2-cp315-abi3.abi3t-macosx_11_0_arm64.whl CPython 3.15 abi3t, abi3 macOS 11.0+ ARM64 Details
ahe-0.1.2-cp315-abi3.abi3t-macosx_10_12_x86_64.whl CPython 3.15 abi3t, abi3 macOS 10.12+ x86-64 Details
ahe-0.1.2-cp311-abi3-win_arm64.whl CPython 3.11 abi3 Windows ARM64 Details
ahe-0.1.2-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
ahe-0.1.2-cp311-abi3-musllinux_1_2_x86_64.whl CPython 3.11 abi3 Linux musl 1.2+ x86-64 Details
ahe-0.1.2-cp311-abi3-musllinux_1_2_aarch64.whl CPython 3.11 abi3 Linux musl 1.2+ ARM64 Details
ahe-0.1.2-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details
ahe-0.1.2-cp311-abi3-manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64 Details
ahe-0.1.2-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
ahe-0.1.2-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details

Total release size: 4.4 MB

Release files / ahe-0.1.2.tar.gz

Download URL ahe-0.1.2.tar.gz
Size 48.4 kB
Tags Source
SHA-256 checksum
How to use checksums
67951d9f0455f54f2471f832b96231853e45e5a2baf7c6577bcef5d2e8b611f6
BLAKE2b-256 checksum
How to use checksums
21c68d6ac3c0c176fa182bfcc4da05d967bddbb0824ce04040c914154ac2a162
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp315-abi3.abi3t-win_arm64.whl

Download URL ahe-0.1.2-cp315-abi3.abi3t-win_arm64.whl
Size 152.8 kB
Tags CPython 3.15 Windows ARM64 abi3 abi3t
SHA-256 checksum
How to use checksums
876eb055aaf362062cf4edf389143c14b40590b108c38bd6b3f275548280a452
BLAKE2b-256 checksum
How to use checksums
6adf4e233d3d8710248aa7e4c85bb6068febba6aa950f1bc54ccbcf05ee114dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp315-abi3.abi3t-win_amd64.whl

Download URL ahe-0.1.2-cp315-abi3.abi3t-win_amd64.whl
Size 161.0 kB
Tags CPython 3.15 Windows x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
1c663b12de8e1cc15b7ce0cd8b55f172ad5f9dc77546f31e29e3589bbd529edd
BLAKE2b-256 checksum
How to use checksums
9558e2b4765b3eb70f5f4e0a1ddbb7ac687f09b27d287578f84328026b733693
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl

Download URL ahe-0.1.2-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl
Size 474.1 kB
Tags CPython 3.15 Linux musl 1.2+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
85826d6510d3d241f7194e24ce20de489588f023e49d73075b8648543f9814c3
BLAKE2b-256 checksum
How to use checksums
f3738391c9d72792fdd2e5ebc1f8a2d4b63b47d07150ee17e7899d170d2c2e01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp315-abi3.abi3t-musllinux_1_2_aarch64.whl

Download URL ahe-0.1.2-cp315-abi3.abi3t-musllinux_1_2_aarch64.whl
Size 428.5 kB
Tags CPython 3.15 Linux musl 1.2+ ARM64 abi3 abi3t
SHA-256 checksum
How to use checksums
a56e9bd5169b65fb22307f2c8ddd37e13c4a7e3c8fb472d07ed5ce86f83ae13b
BLAKE2b-256 checksum
How to use checksums
4c0b177dff06514b2648e335305a32f14d5943d63a166f57bc77cf495d5465b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl

Download URL ahe-0.1.2-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl
Size 262.1 kB
Tags CPython 3.15 Linux glibc 2.28+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
a1487c8e474daf09e1b951eee3b316dbf654778eb14198b937a6437fb5fc1168
BLAKE2b-256 checksum
How to use checksums
001b9a87a776a1fe268e9bd328969334f7b17579b872b30d219fdf1b169a3882
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp315-abi3.abi3t-manylinux_2_28_aarch64.whl

Download URL ahe-0.1.2-cp315-abi3.abi3t-manylinux_2_28_aarch64.whl
Size 251.0 kB
Tags CPython 3.15 Linux glibc 2.28+ ARM64 abi3 abi3t
SHA-256 checksum
How to use checksums
0743aa2e3029d4b1cd3099ba4543fe31d477dd4e72ec76896643c66c82995f50
BLAKE2b-256 checksum
How to use checksums
b4d3a4fad5362d57981ea83ebec9763a40e4e36e98824859e67ca894a2d8253b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp315-abi3.abi3t-macosx_11_0_arm64.whl

Download URL ahe-0.1.2-cp315-abi3.abi3t-macosx_11_0_arm64.whl
Size 230.1 kB
Tags CPython 3.15 abi3 abi3t macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d2be828d44cfce45774f9495df879a6fee6e254ce1bfd8d82e30d412d233531e
BLAKE2b-256 checksum
How to use checksums
048bc40e52bc6a7a8abe4056a786a894f19d5fa18b8eb858e96c8a1e0d496d52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp315-abi3.abi3t-macosx_10_12_x86_64.whl

Download URL ahe-0.1.2-cp315-abi3.abi3t-macosx_10_12_x86_64.whl
Size 240.6 kB
Tags CPython 3.15 abi3 abi3t macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
2229349c42c3a3ca2b01fc3266f67d7817503e1c5a7b11103c59f882a6cd7346
BLAKE2b-256 checksum
How to use checksums
180da24d9d75aa77bbb992f932cdacbddd703f75f3c20205bf4e1e594482f107
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp311-abi3-win_arm64.whl

Download URL ahe-0.1.2-cp311-abi3-win_arm64.whl
Size 153.0 kB
Tags CPython 3.11 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
e05b1abae3ad264dc99ad863289f4905afe67c2f4efbd772b75656bcc8ff8b9d
BLAKE2b-256 checksum
How to use checksums
cc1b6af134a275eb3eeb3f5dd318c242c9f26ff56b63964eaee94e081d5e68d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp311-abi3-win_amd64.whl

Download URL ahe-0.1.2-cp311-abi3-win_amd64.whl
Size 160.6 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
5b7e3f33cf777c02e6b8d3e0f06864b28bee5cbd19fec96271b1408c71466350
BLAKE2b-256 checksum
How to use checksums
b182301a61f3b07b44f000c5ccbeb552099bf13e6ad834c8c8b3898792e65d5f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp311-abi3-musllinux_1_2_x86_64.whl

Download URL ahe-0.1.2-cp311-abi3-musllinux_1_2_x86_64.whl
Size 473.8 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
90ec993e69457bab5d2b7e7cb95f484ca32608e610a17523ef4c9e0afb216b32
BLAKE2b-256 checksum
How to use checksums
612a58feb28edcc02ba847c9505fa283913088c4301bd5ff0e359fbbcee718d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp311-abi3-musllinux_1_2_aarch64.whl

Download URL ahe-0.1.2-cp311-abi3-musllinux_1_2_aarch64.whl
Size 428.7 kB
Tags CPython 3.11 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
a8bf10068d6e66d108c2460f8764eb7b45aa34170aa269d46f1d8a1057cb3aaa
BLAKE2b-256 checksum
How to use checksums
d3ed294a63c74bbd62ffa30a6e21d381bb7b9256358dbb5c1cc8412734bc917e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp311-abi3-manylinux_2_28_x86_64.whl

Download URL ahe-0.1.2-cp311-abi3-manylinux_2_28_x86_64.whl
Size 261.6 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
822ffc095883e065aef31e4779bc83f4202c2f1037552f78b1451299a1d23c61
BLAKE2b-256 checksum
How to use checksums
b34ba1af474c018cd5776119aca539446a41d09f9b3d3d8bf6e55f943e272f69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp311-abi3-manylinux_2_28_aarch64.whl

Download URL ahe-0.1.2-cp311-abi3-manylinux_2_28_aarch64.whl
Size 251.0 kB
Tags CPython 3.11 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
2010c4a79bdba39a03fe3441f7febcd8c06a3e85857c03e055853486faca9566
BLAKE2b-256 checksum
How to use checksums
fd6d4a6af7150aba2a11e7e8b3868d7f9a9b3463a186dbecf17443bc8bae3e0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp311-abi3-macosx_11_0_arm64.whl

Download URL ahe-0.1.2-cp311-abi3-macosx_11_0_arm64.whl
Size 230.9 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ae1b8de03cc622a7b31fb3878e5e2ed03c3345e4ebe6b91a8a950b6b3099195b
BLAKE2b-256 checksum
How to use checksums
a99ab9fd968a06a54576efb4a0e36160fe82a78fc71692844a112d848e533909
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release files / ahe-0.1.2-cp311-abi3-macosx_10_12_x86_64.whl

Download URL ahe-0.1.2-cp311-abi3-macosx_10_12_x86_64.whl
Size 241.4 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
aaee678aabc1046b3e5db24d3c0cb3c53bd3025e200066b68fa48352d9cc76f5
BLAKE2b-256 checksum
How to use checksums
23603fccc7e993145b83b4c2330e73f0f07ed3046287bf26b06b347f3724c47a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 This release

17 release files

0.1.1

9 release files

0.1.0

10 release files

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

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