Skip to main content

Library for connected image filtering based on morphological trees

Project description

MorphologicalAttributeFilters

CI Release

Project status: transitional research library.

This repository exists to support experiments around dynamic morphological trees, including component trees, trees of shapes, mutable tree topologies, converters, and incremental attribute computation. It is not intended to be a long-term general-purpose replacement for Higra, and this package may change substantially or stop existing in the future.

For general-purpose hierarchical image analysis, production workflows, and stable APIs, prefer Higra. Use this library when you specifically need dynamic tree operations, topology/proper-part experiments, interoperability with Higra-style hierarchies, or the incremental attribute framework provided here.

The current codebase is organised around a dense NodeId API, direct proper-part ownership, incremental attribute computation, and Python bindings for interactive work.

Relationship with Higra

Higra should be preferred for stable, general-purpose component-tree and hierarchical image-analysis workflows. This repository is mainly useful as an experimental bridge for cases where the current Higra model is not the most convenient fit, especially dynamic tree topology changes and project-specific incremental attribute machinery.

Current scope

This library currently concentrates code for:

  • building max-trees, min-trees, and trees of shapes from images;
  • representing trees with dense internal NodeId values;
  • direct proper-part ownership and image-domain topology queries;
  • dynamic MorphologicalTree operations and staged structural edits;
  • incremental computation of geometric, statistical, topological, moment-based, bit-quads, and max-distance attributes;
  • attribute filters, extinction values, contours, and Ultimate Attribute Opening;
  • a C++ core that is effectively header-only, plus a pybind11 module for Python.

Interoperability and converters

Although this project is not intended to replace Higra, it provides converters that make it useful as an experimental interoperability layer.

The library can:

  • build max-trees, min-trees, and trees of shapes directly from images;
  • import static Higra-style hierarchies through (parent, altitude) arrays;
  • preserve imported Higra node ids while the topology remains unedited;
  • export the current live tree back to a compact Higra-style representation;
  • move between topology-only MorphologicalTree use cases and WeightedMorphologicalTree workflows when explicit node altitudes are required;
  • prototype dynamic tree edits and incremental attributes here, then export the resulting hierarchy for use elsewhere.

Imported Higra node ids are preserved only while the topology is not edited. After edits, exportHigraHierarchy() creates a new compact hierarchy.

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)

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,
)

# 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 topology-only max-tree for structural queries.
topology_tree = mmcfilters.MorphologicalTree.createMaxTree(
    img,
    radius=adjacency_radius,
)
root_node_id = topology_tree.getRoot()
root_children = topology_tree.getChildren(root_node_id)
root_direct_proper_parts = topology_tree.getProperParts(root_node_id)

# Case 2: inspect the component that owns one image pixel.
pixel_index = 10
pixel_component_id = topology_tree.getSmallestComponent(pixel_index)
pixel_component_pixels = list(topology_tree.connected_component_of(pixel_component_id))
pixel_component_mask = topology_tree.reconstructNode(pixel_component_id)

# Case 3: compute attributes that depend only on tree topology/support.
area_by_node = mmcfilters.Attribute.computeSingleAttribute(
    topology_tree,
    mmcfilters.Attribute.Type.AREA,
)

# Case 4: reuse the same topology as a weighted tree when node altitudes are required.
weighted_tree = mmcfilters.WeightedMorphologicalTree.createFromTopology(
    topology_tree,
    img,
)
max_dist_by_node = mmcfilters.Attribute.computeSingleAttribute(
    weighted_tree,
    mmcfilters.Attribute.Type.MAX_DIST,
)
reconstructed_image = weighted_tree.reconstructionImage()

# Case 5: 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.Type.MAX_DIST,
)
roundtrip_weighted_tree = mmcfilters.WeightedMorphologicalTree.createFromHigraParent(
    higra_parent,
    higra_altitude,
    img.shape[0],
    img.shape[1],
    mmcfilters.WeightedMorphologicalTree.MAX_TREE,
    radius=adjacency_radius,
)

Current MorphologicalTree boundary

MorphologicalTree currently provides:

  • a dynamic hierarchy over dense internal NodeId values;
  • direct ownership of proper parts;
  • structural traversal and safe local mutation operations;
  • optional adjacency metadata plus explicit image-domain dimensions.

Weighted quantities are intentionally outside the topology-only tree:

  • WeightedMorphologicalTree owns the dense node-altitude buffer;
  • WeightedMorphologicalTree encapsulates its topology and exposes it only as const MorphologicalTree&;
  • WeightedMorphologicalTree.createFromTopology(...) clones an existing topology and infers altitudes from an image, avoiding a second tree reconstruction;
  • image reconstruction, node residues, and Higra (parent, altitude) export live on WeightedMorphologicalTree;
  • attribute computation still runs first in the internal MorphologicalTree node-id space and is projected only at API boundaries when requested.

The editing API has three levels:

  • read-only topology queries such as getRoot, getAliveNodeIds, getChildren, and getProperParts;
  • safe public mutators, pruneNode and mergeNodeIntoParent, on both topology-only and weighted trees;
  • staged structural edits through MorphologicalTree::edit() / TreeEditor and WeightedMorphologicalTree::edit() / WeightedTreeEditor.

Low-level topology rewiring is not public API. Full connected-tree validation and weighted monotone-altitude validation run at editor commit() time. See docs/editing-api.md for the detailed contract.

NodeIdSpace::HIGRA, getNumHigraNodes(), and getHigraNodeId() refer only to the original Higra node-id domain preserved by createFromHigraParent. Image-built trees and trees edited after import do not expose that domain. exportHigraHierarchy() always creates a new compact Higra representation of the current live rooted tree. Use projectNodeValuesToExportedHigra() / project_node_values_to_exported_higra() to project node-indexed attribute buffers to that exported compact layout without reimporting the tree; each AttributeComputer supplies the unit-component values for the exported leaves.

The main public C++/Python surface is centred on:

  • getRoot
  • getAliveNodeIds
  • getChildren
  • getProperParts
  • getNodeParent
  • getPathBetweenNodes
  • getSmallestComponent
  • getConnectedComponent
  • getIteratorBreadthFirstTraversal
  • getNodeSubtree

Repository guide

Use this map to find the right entry point quickly:

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-1.0.1.tar.gz (302.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-1.0.1-cp314-cp314-win_amd64.whl (558.9 kB view details)

Uploaded CPython 3.14Windows x86-64

mmcfilters-1.0.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (687.9 kB view details)

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

mmcfilters-1.0.1-cp314-cp314-macosx_11_0_x86_64.whl (627.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ x86-64

mmcfilters-1.0.1-cp314-cp314-macosx_11_0_arm64.whl (589.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

mmcfilters-1.0.1-cp313-cp313-win_amd64.whl (547.0 kB view details)

Uploaded CPython 3.13Windows x86-64

mmcfilters-1.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (687.9 kB view details)

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

mmcfilters-1.0.1-cp313-cp313-macosx_11_0_x86_64.whl (626.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ x86-64

mmcfilters-1.0.1-cp313-cp313-macosx_11_0_arm64.whl (588.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

mmcfilters-1.0.1-cp312-cp312-win_amd64.whl (547.0 kB view details)

Uploaded CPython 3.12Windows x86-64

mmcfilters-1.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (687.6 kB view details)

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

mmcfilters-1.0.1-cp312-cp312-macosx_11_0_x86_64.whl (626.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ x86-64

mmcfilters-1.0.1-cp312-cp312-macosx_11_0_arm64.whl (588.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

mmcfilters-1.0.1-cp311-cp311-win_amd64.whl (544.2 kB view details)

Uploaded CPython 3.11Windows x86-64

mmcfilters-1.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (689.2 kB view details)

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

mmcfilters-1.0.1-cp311-cp311-macosx_11_0_x86_64.whl (621.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ x86-64

mmcfilters-1.0.1-cp311-cp311-macosx_11_0_arm64.whl (586.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

mmcfilters-1.0.1-cp310-cp310-win_amd64.whl (543.8 kB view details)

Uploaded CPython 3.10Windows x86-64

mmcfilters-1.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (687.6 kB view details)

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

mmcfilters-1.0.1-cp310-cp310-macosx_11_0_x86_64.whl (619.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ x86-64

mmcfilters-1.0.1-cp310-cp310-macosx_11_0_arm64.whl (584.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

mmcfilters-1.0.1-cp39-cp39-win_amd64.whl (569.1 kB view details)

Uploaded CPython 3.9Windows x86-64

mmcfilters-1.0.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (687.8 kB view details)

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

mmcfilters-1.0.1-cp39-cp39-macosx_11_0_x86_64.whl (620.0 kB view details)

Uploaded CPython 3.9macOS 11.0+ x86-64

mmcfilters-1.0.1-cp39-cp39-macosx_11_0_arm64.whl (585.0 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for mmcfilters-1.0.1.tar.gz
Algorithm Hash digest
SHA256 c5fc2cb20e9ef4bae211149f24ed6cdab47af564507dfb5f7f59619e883854b7
MD5 9ba80b61fc939c4171da504eddaf3d4f
BLAKE2b-256 78c7807e5d587d6d2d545334f29dd3950c6837d3e35d6704b3c0e2eec08e04cc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mmcfilters-1.0.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 558.9 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-1.0.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 2ecddad6b9e819e05bd7b11fa6ad7ac9dc36d21af4ae4761bd5bb38a37c42c74
MD5 a612e3d5822981ee1db32d690cc19f69
BLAKE2b-256 48b5a904a3fd837b20bff4b00485169b7cbd13a44a3f76b32becbc24d0d1343f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2ccfcbdc1b126a5287223604dd93588026292178bf04cc19cd048fc05070ff5d
MD5 6c1e83bd89d7e9c7e3ddc5c773bf7137
BLAKE2b-256 1beefdbff823459da35cc58ad40d4e16b35360cf85d2ab1407c8308ff4ad7de3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp314-cp314-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 08bd5d787db550af940f2c10ae915f59d78da9baadeffa4afaf89c0b535f6ced
MD5 5acfd8c336f6a7b5e4a2c767b5e51a23
BLAKE2b-256 a48046991c97a32c5c5cb202e64c5f06e442f95d5d0fc02b6640f577d0494334

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a58eaeb2bf3934196db755d2720ec7d273f068b9295e94995b5cfc1a9d90572c
MD5 290280b80081feecd84e4a176990bd2e
BLAKE2b-256 522f1aeb180edcd591bf75e32e3b2a6e3df784eb1f399e56d17954bf2b5fdc65

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mmcfilters-1.0.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 547.0 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-1.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ca78212ec6128d3c72161aa1991faba854a8c98ab7de378735be60c61e2228cb
MD5 61bcb9ff3e5d978cc10eea58d6faf539
BLAKE2b-256 5abca5bdafd57be6d708b70526774e2c9f1730d72f6440df909a9f1f618fd49c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3bd5ff027af1f3e671af807f7c36544ab69f4b1858f4329932438797dda393f4
MD5 28a740351229f728a4b5ed484701050c
BLAKE2b-256 0fbbebf0f1e9f8cbf25a20c64ade34aa9e6aec079fdf29676e5f07fb36b28c06

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp313-cp313-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 9c5a080d34b23e7077760949c25fcc9ff822526dcd53a205df3ca79b747749b9
MD5 84806a65d780ab598d5609efb1eab22f
BLAKE2b-256 e93c85a7bcb51dba6146bef4f00398c9f183f15e767d4af4355e7c4a4b16707d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68f6fe410aa453c3ee1bdde07d5bd4aaa7428be57a18bea67813bda6849406ee
MD5 7032e1fb127e7760aeccd984fb19171e
BLAKE2b-256 29c7d3b5ed25cd827eccc70b6ade50e7cc972a67e89da996abd2633f212a59f0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mmcfilters-1.0.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 547.0 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-1.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 dda5a9e44cc9045207564b77c023deb549e994f623bb5843591ef89e5f8e7be6
MD5 348ebf99c49487b7cecefa3b94e9e4cb
BLAKE2b-256 1982ee6bcf07090080109576cdd4ddd03b751654d5049ca493c73e1c7fcaf623

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a8ad89f0874882fa5641b022923be382e8833c2b5e1280cb4cc379d247f9dcc4
MD5 80cfcbdfb6ea250ebc1af2618a2a997f
BLAKE2b-256 e92bc4e2a9414f820fb1b69798bddf3489ce242b93c94d2a576ccdfa6ad0c3dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp312-cp312-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 737e486c79df0a0917e6cf930d6d25acaac5f88e03065e7e0ff23680beab8f84
MD5 bb556da92cc830d0188318fb5e92dde1
BLAKE2b-256 1e8649f4868f71f804795d90b913cc1d6dc81004898cefa42acab382786a83a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 508a4457bb1e416403eaa6f6ab227df99338afd13cdaa621455cdca05263f0bc
MD5 3b50fccdf4dd1716ba72e374056fc960
BLAKE2b-256 5ce7f02adfb74ce9f8a82edf79717d337082d8159f76c5b270f5699d5aa91a93

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mmcfilters-1.0.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 544.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-1.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 64b75da4e9b34d1f89e1622c2c40ae2c326bae5c06a25ff123719fb6050b8a5f
MD5 6d0d64155772783c780887a15468def6
BLAKE2b-256 4de51a260054c9b0933d88c550e500720b6a5a5797efb5c49b910e59533833ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a432c26a7ccd3148e642565a33a94a38687c58d2548604f0d837426a0fa29e40
MD5 78efc32fc6f2859c35345a52a77e00d3
BLAKE2b-256 f3a8db961badfe0958e79113757e1dd6e388e197f070bdfde3dbafb593b0313f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp311-cp311-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 abe167999291d7c79da6a51c59f41a95c2ddb2b27fe09ed57503a2fb137c5c8a
MD5 2260ae86c3de00e517fed6d8ed1cad37
BLAKE2b-256 9d4b7aa261eb316ce1fde4ff05f4da3c6db2b97e875f232102ee82d334987e23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9dc9373b8476d0007fae3913b5f2aa7f117e936b9031b4ec672c51a9cfe7a8c3
MD5 e09f7897def580d8acf645c91152bb37
BLAKE2b-256 7f1213280cf34e14a56cc38d329effcddff068d1084816c7a9e551be4cdfa2a8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mmcfilters-1.0.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 543.8 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-1.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 740e23206f31704085aeb1cac18a63a24c9b264ebab6e410b59cc6730d1f474b
MD5 c3ec51c34d5eba203d07aa9f5657cea3
BLAKE2b-256 71bbdad948f751e71c2e2fbbb34a7ed34dda8690ac172262b91b23c6eafbf26b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2ec3cd230d4ded5b0f8141c43c2c5e60c069852dd3994be943299b29a303332c
MD5 689778c185f80b0ba659dd97c1d4557e
BLAKE2b-256 19083149d3c8fc062bebd40fb765a5e3f2f0860a1cfd033f5da8395f28731a51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 5ca4c1a1e2e3ff55fa576bab54e0f7612fe8a9aedd31153ed86f0a09a82c3659
MD5 050339f8cb75d80e315ccc725ada1029
BLAKE2b-256 f697ea3e232d6799b7558a2926425d3e0a90f090ceb56cbcb732ea2a952de3ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e260855ecfbe683b508903af3545b28dc75c0e853d3013d93acd1acee76b958
MD5 2aed7ae49faa0e84f561b1d20afbd481
BLAKE2b-256 031d196a26d73130851f3e0893c8ca9178f64381be9e926b3046f81d0d85cf75

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mmcfilters-1.0.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 569.1 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-1.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 336522c057cd6fbffc384afabb44a1c9f96574bff49c3c53605cc90d8ad8b5d5
MD5 44cf0ad91cb8d665c6682416edffe133
BLAKE2b-256 0f402de68a2f591d10a5d937c3eda976dd8180818c1ed703cc40f8eeac693dd4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b1b03dfb6b2db49e64d04eb427903b826ad1f33af6f542739ec68bb7111986fa
MD5 66fd3f5a3595923e7dcd1b6770dd0c66
BLAKE2b-256 b029be22ce9772a5f34ca8343d074068233a9fddd18bbe6d22d7218f396cee8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 4c6ec9e1555816bcc512af6bdde2e48049a226e833b341b5513ea5965900c9f7
MD5 261d891b0d63d5ea0ed26188b5af6a40
BLAKE2b-256 7783436859d62c77bc0109ec669c3ecbb8cb045da5e766e99764d9158319d3de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mmcfilters-1.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 83342ca41a147c8e030ff547dcb1cf9deb933c06746af910305c605e097ed3f3
MD5 ae8c2ba46fc0a60a170c4392bad1a811
BLAKE2b-256 46c39190b609bc91775635d3a9463e4e2fe110a71c2a6bfbf830f7fc097dd10b

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