Skip to main content

Library for connected image filtering based on morphological trees

Project description

MorphologicalAttributeFilters

CI Release

Project status: research library for dynamic morphological-tree experiments.

This package focuses on a proper-part tree model for image-domain partial partitions, tree editing, typed altitude contracts, incremental attributes, contours, and project-specific morphology research. It is not intended to be a general-purpose replacement for Higra.

Scope

This repository is a research implementation for morphological-tree workflows that need direct topology ownership, staged edits, typed altitude buffers, and project-specific attribute machinery. Its central model is a tree over image-domain partial partitions: image pixels are explicit proper parts, and internal morphological nodes own those proper parts directly. The implemented models share the MorphologicalTree topology abstraction: rooted inclusion topology, dense internal NodeId values, and explicit proper-part ownership.

Current functionality includes:

  • max-tree, min-tree, tree-of-shapes, and self-dual residual tree construction;
  • import/export of Higra-style (parent, altitude) hierarchies;
  • dynamic topology edits through safe mutators and staged editors;
  • gray-level, shape, boundary, topology, and max-distance attributes;
  • attribute filters, extinction values, and Ultimate Attribute Opening;
  • a C++20 header-oriented core plus a pybind11 Python package.

Higra remains the better fit for stable, general-purpose hierarchical image-analysis workflows. Use this project when the experiment needs mutable tree topology, direct owner-state access, or the local attribute/filter machinery exposed here. See docs/higra-interoperability.md for import, export, and attribute-projection contracts.

Python currently follows the canonical 8-bit contract: factory inputs must be C-contiguous np.uint8 arrays and external altitude inputs must stay in [0, 255]. C++ supports typed max/min and SDRT construction through Image<T>, typed Higra imports through createFromHigraParent<T>, and read-only WeightedTreeView<T> altitude spans. Tree of Shapes construction is currently uint8_t.

Installation

From PyPI:

pip install mmcfilters

From source:

cmake -S . -B build -DMMCFILTERS_BUILD_PYTHON=ON
cmake --build build

Installed C++ package:

find_package(mmcfilters CONFIG REQUIRED)
target_link_libraries(my_target PRIVATE mmcfilters::core)

For attribute computation in C++, prefer the aggregate public header:

#include <mmcfilters/attributes/Attributes.hpp>

That header exposes the stable attribute-facing contracts: Attribute, AttributeGroup, AttributeNames, AttributeComputation, and owning result types. Use AttributeComputation with WeightedMorphologicalTree<T> or WeightedTreeView<T> for altitude-aware requests, and use computeTopologyAttributes(...) for topology/support-only requests. Concrete attribute computers are advanced implementation components; ordinary consumers should not include mmcfilters/*/detail/ headers directly.

Canonical C++ attribute usage:

#include <cstdint>
#include <array>
#include <vector>

#include <mmcfilters/attributes/Attributes.hpp>
#include <mmcfilters/trees/MorphologicalTreeFactory.hpp>
#include <mmcfilters/utils/Image.hpp>

using namespace mmcfilters;

std::array<std::uint8_t, 16> pixels{
    3, 3, 2, 2,
    3, 4, 4, 2,
    1, 4, 5, 2,
    1, 1, 5, 0};
auto image = ImageUInt8::fromExternal(pixels.data(), 4, 4);
auto weighted = MorphologicalTreeFactory::createMaxTree(image, 1.5);

auto [names, values] = AttributeComputation::computeAttributes(
    weighted,
    std::vector<AttributeOrGroup>{AREA, LEVEL, MAX_DIST});

auto [topologyNames, topologyValues] =
    AttributeComputation::computeTopologyAttributes(
        weighted.topology(),
        std::vector<AttributeOrGroup>{AREA, BOX_WIDTH, BALANCE_NODE});

auto [deltaNames, deltaValues] =
    AttributeComputation::computeSingleAttributeWithDelta(
        weighted,
        LEVEL,
        AltitudeDiff<std::uint8_t>{1},
        2);

To enable the regression suite or examples:

cmake -S . -B build \
  -DMMCFILTERS_BUILD_PYTHON=ON \
  -DMMCFILTERS_BUILD_TESTS=ON \
  -DMMCFILTERS_BUILD_EXAMPLES=ON
cmake --build build
ctest --test-dir build --output-on-failure

Quick Python example

import numpy as np
import mmcfilters

img = np.array(
    [
        [3, 3, 2, 2],
        [3, 4, 4, 2],
        [1, 4, 5, 2],
        [1, 1, 5, 0],
    ],
    dtype=np.uint8,
)

# Python factories require C-contiguous np.uint8 images. Use C++ for typed
# int32/float altitude trees.
img = np.ascontiguousarray(img, dtype=np.uint8)

# radius=1.5 selects the 8-neighbourhood on a 2D square grid.
# Use radius=1.0 for 4-connectivity.
adjacency_radius = 1.5

# Case 1: build a weighted max-tree. Topology queries are available on it.
weighted_tree = mmcfilters.MorphologicalTreeFactory.createMaxTree(
    img,
    radius=adjacency_radius,
)
root_node_id = weighted_tree.getRoot()
root_children = weighted_tree.getChildren(root_node_id)
root_direct_proper_parts = weighted_tree.getProperParts(root_node_id)

# Case 2: inspect the component that owns one image pixel.
pixel_index = 10
pixel_component_id = weighted_tree.getProperPartOwner(pixel_index)
pixel_component_pixels = list(weighted_tree.getConnectedComponent(pixel_component_id))
pixel_component_mask = weighted_tree.reconstructNode(pixel_component_id)

# Case 3: compute attributes that depend only on tree topology/support.
topology_names, topology_by_node = mmcfilters.Attribute.computeTopologyAttributes(
    weighted_tree,
    [mmcfilters.Attribute.AREA, mmcfilters.Attribute.BOX_HEIGHT],
)
area_by_node = topology_by_node[:, topology_names["AREA"]]
box_height_by_node = topology_by_node[:, topology_names["BOX_HEIGHT"]]

# Case 4: compute altitude-dependent attributes and reconstruct the image.
max_dist_by_node = mmcfilters.Attribute.computeSingleAttribute(
    weighted_tree,
    mmcfilters.Attribute.MAX_DIST,
)
reconstructed_image = weighted_tree.reconstructionImage()

# Case 5: run Ultimate Attribute Opening, the public UAO API.
uao = mmcfilters.UltimateAttributeOpening(weighted_tree, box_height_by_node)
uao.execute(img.shape[0])
max_contrast_image = uao.getMaxContrastImage()
associated_image = uao.getAssociatedImage()

# Case 6: export/import a Higra-style hierarchy for interoperability.
higra_parent, higra_altitude = weighted_tree.exportHigraHierarchy()
max_dist_by_higra = weighted_tree.project_node_values_to_exported_higra(
    max_dist_by_node,
    mmcfilters.Attribute.MAX_DIST,
)
roundtrip_weighted_tree = mmcfilters.MorphologicalTreeFactory.createFromHigraParent(
    higra_parent,
    higra_altitude,
    img.shape[0],
    img.shape[1],
    mmcfilters.MorphologicalTreeKind.MAX_TREE,
    radius=adjacency_radius,
)

For detailed API contracts, use:

Repository guide

Use this map to find the right entry point quickly:

The Documentation workflow validates the public and internal Doxygen targets. On pushes to main, it publishes only the public HTML output to GitHub Pages: wonderalexandre.github.io/MorphologicalAttributeFilters. The internal HTML output remains available as a workflow artifact.

Release process

Releases are automated by GitHub Actions. For a production release:

  1. Make sure the CI and Package workflows are green on main.
  2. Create and push a semantic version tag, for example v1.0.1.
  3. The Release workflow validates that the tag matches the resolved package version, builds the source distribution and platform wheels, validates the package metadata, and attaches the artifacts to a GitHub Release.

The release wheel matrix targets Python 3.9 through 3.14 on:

  • Linux manylinux x86_64;
  • Windows x86_64;
  • macOS arm64;
  • macOS Intel x86_64.

PyPI publication is intentionally manual. Download the release artifacts from the GitHub Release or from the Release workflow run, then upload them with:

python -m pip install --upgrade twine
python -m twine upload dist/*

Manual runs of the Release workflow also build downloadable artifacts without creating a GitHub Release.

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

mmcfilters-2.0.0.tar.gz (431.8 kB view details)

Uploaded Source

Built Distributions

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

mmcfilters-2.0.0-cp314-cp314-win_amd64.whl (640.3 kB view details)

Uploaded CPython 3.14Windows x86-64

mmcfilters-2.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (765.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

mmcfilters-2.0.0-cp314-cp314-macosx_11_0_x86_64.whl (692.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ x86-64

mmcfilters-2.0.0-cp314-cp314-macosx_11_0_arm64.whl (655.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

mmcfilters-2.0.0-cp313-cp313-win_amd64.whl (630.6 kB view details)

Uploaded CPython 3.13Windows x86-64

mmcfilters-2.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (765.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

mmcfilters-2.0.0-cp313-cp313-macosx_11_0_x86_64.whl (691.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

mmcfilters-2.0.0-cp313-cp313-macosx_11_0_arm64.whl (655.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

mmcfilters-2.0.0-cp312-cp312-win_amd64.whl (630.5 kB view details)

Uploaded CPython 3.12Windows x86-64

mmcfilters-2.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (765.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

mmcfilters-2.0.0-cp312-cp312-macosx_11_0_x86_64.whl (691.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

mmcfilters-2.0.0-cp312-cp312-macosx_11_0_arm64.whl (654.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

mmcfilters-2.0.0-cp311-cp311-win_amd64.whl (628.2 kB view details)

Uploaded CPython 3.11Windows x86-64

mmcfilters-2.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (764.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

mmcfilters-2.0.0-cp311-cp311-macosx_11_0_x86_64.whl (686.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

mmcfilters-2.0.0-cp311-cp311-macosx_11_0_arm64.whl (653.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

mmcfilters-2.0.0-cp310-cp310-win_amd64.whl (627.3 kB view details)

Uploaded CPython 3.10Windows x86-64

mmcfilters-2.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (763.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

mmcfilters-2.0.0-cp310-cp310-macosx_11_0_x86_64.whl (684.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

mmcfilters-2.0.0-cp310-cp310-macosx_11_0_arm64.whl (652.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

mmcfilters-2.0.0-cp39-cp39-win_amd64.whl (649.7 kB view details)

Uploaded CPython 3.9Windows x86-64

mmcfilters-2.0.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (765.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

mmcfilters-2.0.0-cp39-cp39-macosx_11_0_x86_64.whl (685.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ x86-64

mmcfilters-2.0.0-cp39-cp39-macosx_11_0_arm64.whl (652.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file mmcfilters-2.0.0.tar.gz.

File metadata

  • Download URL: mmcfilters-2.0.0.tar.gz
  • Upload date:
  • Size: 431.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mmcfilters-2.0.0.tar.gz
Algorithm Hash digest
SHA256 dbc28eab03c3bc055d6fe265cc7fb32f81de5f921f29528b838fcccc5b184f01
MD5 5325195036cc3fe46cd678824ff78bcb
BLAKE2b-256 a3943db6c144cdbaabcf0078cd9c6d0ce4a9febe1a2424a27172e6c307cf70b6

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: mmcfilters-2.0.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 640.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mmcfilters-2.0.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f04f95003d39cfe1232d603e1e634da7cfc81c7e238e436f14041df258652308
MD5 cb4ab584292efca77a7ade2d6e8febb7
BLAKE2b-256 60d7fea843da73061ab14bd395aa27b63011edb0c4d2c72dbc1f49a9a0159444

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4525b808ac3d4ad03afdd6ee68ae46f00dd55bd11e2aa369a76519a38412816f
MD5 3c229fb165a124349d17e27535104112
BLAKE2b-256 3ec56eca5991374a95716534b12d62d6b02d4c15fdf018f741e9165c6be7aa58

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp314-cp314-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 2bb8c73f664e388b6a2a22750beeb045972b047e879fd5cdaba0342fc72e125c
MD5 2aeed337f9cd7da63585d7c8c953b163
BLAKE2b-256 11be08b32e4edc751fbcc02e136bfdd87c13ad96ac87f0440b4dd1538b297e12

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f3d1a2fea3e6edbd3f94fdfaded6db893f1b7233a0c546a8d54e279aa390ed2e
MD5 02670fd3649280b03a658feb73480260
BLAKE2b-256 d333feeb7d5c3236158c1d623f02756a035fbea5ed37d468360c6c9e2966910b

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: mmcfilters-2.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 630.6 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mmcfilters-2.0.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4723dde83b4e9cd7174e32c70da5a4ef6d458fe674845dbfd11d0472e990cb48
MD5 613fd5a78e339110402f3c0fee75d9c9
BLAKE2b-256 5f6fa3d2ac223d8470b9d98a2a681f06fc21535a9988d9a57e1630287dda0fe0

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d4529526be67d31b526fa467eb1896a02f707a769b06b2d9f72e1cde259cbf02
MD5 4bc5d35d11f4855bf0211643d41e6b8d
BLAKE2b-256 9ea96fd555d7b14126cce7502ca1c96e8febc005541652d524118b4355cf1be2

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp313-cp313-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8032076d790bb51e1c111d4967ed0bd9314e7c51231c0802b90391f907ae043e
MD5 e7867529c9ada019ec6622ff382169f6
BLAKE2b-256 61ef4fd9532edcf6dceb80fe4789470f076f66c73b0f0244ff5e9091a3b32141

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e83c3fc11ca6eb51dca0427168e60c108b53c027dbbf76e553c4298f1dfecea6
MD5 3f258241d2d5339c9aa9577e46e4e00b
BLAKE2b-256 441dc7f08031a1c6acfcc4b76a377f65ac907e51e6c5a12199ca3864160c8197

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: mmcfilters-2.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 630.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mmcfilters-2.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4aa7f0fe2b072bd5899b5eb75fbefe0b5785332ce3dbaee70871e96e818e837b
MD5 0306431aa2084b84072d4a51ee662412
BLAKE2b-256 82a86f29739eb7f535ee4b9b093eba6c7b9aa67e8ed191cc1ec6540fa6877d31

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f0c17233c2327d53d0526a17d44c2c982c9c1d3059f2f68e3906a0c90d08a049
MD5 2bcee129efd8ded00063305c9f0591e4
BLAKE2b-256 e46a8770b52283d883ec2fa24e712ba2c412f362d6c167fca34ee3571c19f1a8

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp312-cp312-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8c2da298a2e70c8dd69bd5b72962edc410f43f6608f40b2c8de9bc89802d4e78
MD5 084bc418d9929b0c53099e7c5cbff9fa
BLAKE2b-256 e4eb5b3b36a811bc764baa98f55d3944cbb104b19314071fc6fad8d9cf8ec9e1

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9aee38b279b4a23cc712035d3fb4d5d04efc6570879a0d23fcad47b44ae8c8ed
MD5 21193108d05180bd9af4f00fd2ef1936
BLAKE2b-256 66639118040a5f3f58b30730efa763d7b75304b59b867db2f4777f404009bd7b

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: mmcfilters-2.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 628.2 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mmcfilters-2.0.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7cbd5c8ece6c58aab5b6353303ad40a9aedb7d4e57cdc4bec25226171ed3a5ce
MD5 e7332ff36456cb372000165466af4885
BLAKE2b-256 c1b08b3f7f9838c1b51e31bff77e46671d2299e0c6c404c7bf397bef8edfb25e

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d6a2d773248b60b4b36daa0481273eb8b25eff04fc9fa087dcba3e5430ff686f
MD5 442b30c6ae080eb0a92ac77c3eb61605
BLAKE2b-256 5226341e5dd71e64dbd3b2ff13102fc7b27189536ba5250489de7c6b33cf28f0

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp311-cp311-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 fd9eff13e050bba32ad40756516a097e7e8738742743227748fe2668570611db
MD5 ba24a39b6f57156d54481650f3027977
BLAKE2b-256 af0b872b1630c35c2611135affe746581990b8122832d83fe54c6fc8cc99f401

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f9dca133496a12e92f60b7ef5ac843ae823d6386366e2e8de16c8c576ff7c541
MD5 074a42698f55849b6fddc4d2104d7380
BLAKE2b-256 3f4bd88534181c9e8524eda0c1213c369b2d989721bcb6a7c56a05b4ca52a4af

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: mmcfilters-2.0.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 627.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mmcfilters-2.0.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8cec53c854a936a4e1853b4e6a643b49d585591520734db8ca84a448378f42a8
MD5 489fabe458f4e931e08925e92dcecc1d
BLAKE2b-256 5bf71a1750e7d5834f792e1da982587e14bda54f108555f27524335710671d44

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ebdc851cba1de65c9a14b5a86f1f245fae4a8f183487123a93c08c9644499661
MD5 3aa3b9cba3b6f547533f6e32f565f714
BLAKE2b-256 1e7efb5446c6011e68d23799c3b0b3d08e0c7051eb98e667d408dbb1427bef16

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 c114d268d81c022266a2efe17afc4c3c127b0ad277cb8173f718fbdb1d32d089
MD5 db32de97a01727493350815ab95f98ca
BLAKE2b-256 8a14fa127b090ea73d57e6eabb0ce8bd632d264dcec53935a1f11a341b756c48

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae82a573e73a657bdb15b6a364e9794203c2a55999f8abaac00ffc71095a1494
MD5 afe7cba1f926f569a3c88e13a76b99dc
BLAKE2b-256 7e157d71972708745481ebaf52f33a47af027e86351aae79d7e5575fb8c5d939

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: mmcfilters-2.0.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 649.7 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mmcfilters-2.0.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 9590d95b6895065652255ccd3006299d5ae3137124ce409523910c30bd68f264
MD5 d2c6477c16a8fe0aa8e70b73abe7404d
BLAKE2b-256 e5cda86e4061418ee859f97ab3ca0399c38e4b82f9bced9148dadcf3b12c82cc

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 25d0d201e88d419c31be9f9058b3ccc743798766e9bb549ac9b7a000f9df6178
MD5 1e7c1d03ed7c8fc3c2651b953cf9a6a6
BLAKE2b-256 b82f2abf1ccb06b04a448b2c40430fd89ed842a40a4b6104dabd9b794d081c37

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp39-cp39-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 8e31bf0626c818375ae1e47f68d1739f7d3d04d291e49f6ebdcc4e5dd2050104
MD5 ce773cf29656f964e5f2c40ea55b2b9a
BLAKE2b-256 96ff95a533d637dc68ed93d804d07682c22fa3a4189451aa0c3f4984e333a04d

See more details on using hashes here.

File details

Details for the file mmcfilters-2.0.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mmcfilters-2.0.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88c80b412f35f3b0463ad0056ba3e389a34599208ddcf1f3335936c0a664265b
MD5 6a591401bccfff928ae26b85e1d11585
BLAKE2b-256 59fbf9d2bc9637a3a0405094316536e0f16d5ad89b68877e754945bd82b250b2

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