fastmorph


Namefastmorph JSON
Version 1.3.0 PyPI version JSON
download
home_pagehttps://github.com/seung-lab/fastmorph/
SummaryMorphological image processing for 3D multi-label images.
upload_time2025-02-12 17:58:14
maintainerNone
docs_urlNone
authorWilliam Silversmith
requires_python>=3.8.0
licenseLicense :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
keywords morphological dialate erode dilation erosion close open fill image processing
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![Automated Tests](https://github.com/seung-lab/fastmorph/actions/workflows/run_tests.yml/badge.svg) [![PyPI version](https://badge.fury.io/py/fastmorph.svg)](https://badge.fury.io/py/fastmorph)

# fastmorph: multilabel 3D morphological image processing functions.

This is a collection of morphological 3D image operations that are tuned for working with dense 3D labeled images. 

We provide the following multithreaded (except where noted) operations:

- Multi-Label Stenciled Dilation, Erosion, Opening, Closing
- Grayscale Stenciled Dilation, Erosion, Opening, Closing
- Multi-Label Spherical Erosion
- Binary Spherical Dilation, Opening, and Closing
- Multi-Label Fill Voids (single threaded)

Highlights compared to other libraries:

- Handles multi-labeled images
- Multithreaded
- High performance single-threaded
- Low memory usage
- Dilate computes mode of surrounding labels

Disadvantages versus other libraries:

- Stencil (structuring element) is fixed size 3x3x3 and all on.


```python
import fastmorph

# may be binary or unsigned integer 2D or 3D image
labels = np.load("my_labels.npy")


# multi-label capable morphological operators
# they use a 3x3x3 all on structuring element
# dilate picks the mode of surrounding labels

# by default only background (0) labels are filled
morphed = fastmorph.dilate(labels, parallel=2)
# processes every voxel
morphed = fastmorph.dilate(labels, background_only=False, parallel=2)

morphed = fastmorph.erode(labels)
morphed = fastmorph.opening(labels, parallel=2)
morphed = fastmorph.closing(labels, parallel=2)

# You can select grayscale dilation, erosion, opening, and 
# closing by passing in a different Mode enum.
# The options are Mode.grey and Mode.multilabel
morphed = fastmorph.dilate(labels, mode=fastmorph.Mode.grey)
morphed = fastmorph.erode(labels, mode=fastmorph.Mode.grey)

# Dilate only supports binary images at this time.
# Radius is specified in physical units, but
# by default anisotropy = (1,1,1) so it is the 
# same as voxels.
morphed = fastmorph.spherical_dilate(labels, radius=1, parallel=2, anisotropy=(1,1,1))

# open and close require dialate to work and so are binary only for now
morphed = fastmorph.spherical_open(labels, radius=1, parallel=2, anisotropy=(1,1,1))
morphed = fastmorph.spherical_close(labels, radius=1, parallel=2, anisotropy=(1,1,1))

# The rest support multilabel images.
morphed = fastmorph.spherical_erode(labels, radius=1, parallel=2, anisotropy=(1,1,1))

# Note: for boolean images, this function will directly call fill_voids
# and return a scalar for ct 
# For integer images, more processing will be done to deal with multiple labels.
# A dict of { label: num_voxels_filled } for integer images will be returned.
# Note that for multilabel images, by default, if a label is totally enclosed by another,
# a FillError will be raised. If remove_enclosed is True, the label will be overwritten.
filled_labels, ct = fastmorph.fill_holes(labels, return_fill_count=True, remove_enclosed=False)
```

## Performance

A test run on an M1 Macbook Pro on `connectomics.npy.ckl`, a 512<sup>3</sup> volume with over 2000 dense labels had the following results for multilabel processing.

```
erode / 1 thread: 1.553 sec
erode / 2 threads: 0.885 sec
erode / 4 threads: 0.651 sec
dilate / background_only=True / 1 thread: 1.100 sec
dilate / background_only=True / 2 threads: 0.632 sec
dilate / background_only=True / 4 threads: 0.441 sec
dilate / background_only=False / 1 thread: 11.783 sec
dilate / background_only=False / 2 threads: 5.944 sec
dilate / background_only=False / 4 threads: 4.291 sec
dilate / background_only=False / 8 threads: 3.298 sec
scipy grey_dilation / 1 thread 14.648 sec
scipy grey_erode / 1 thread: 14.412 sec
skimage expand_labels / 1 thread: 62.248 sec
```

Test run on an M1 Macbook Pro with `ws.npy.ckl` a 512<sup>3</sup> volume with tens of thousands of components for multilabel processing.

```
erode / 1 thread: 2.380 sec
erode / 2 threads: 1.479 sec
erode / 4 threads: 1.164 sec
dilate / background_only=True / 1 thread: 1.598 sec
dilate / background_only=True / 2 threads: 1.011 sec
dilate / background_only=True / 4 threads: 0.805 sec
dilate / background_only=False / 1 thread: 25.182 sec
dilate / background_only=False / 2 threads: 13.513 sec
dilate / background_only=False / 4 threads: 8.749 sec
dilate / background_only=False / 8 threads: 6.640 sec
scipy grey_dilation / 1 thread 21.109 sec
scipy grey_erode / 1 thread: 20.305 sec
skimage expand_labels / 1 thread: 63.247 sec
```

Here is the performance on a completely zeroed 512<sup>3</sup> volume for multilabel processing.

```
erode / 1 thread: 0.462 sec
erode / 2 threads: 0.289 sec
erode / 4 threads: 0.229 sec
dilate / background_only=True / 1 thread: 2.337 sec
dilate / background_only=True / 2 threads: 1.344 sec
dilate / background_only=True / 4 threads: 1.021 sec
dilate / background_only=False / 1 thread: 2.267 sec
dilate / background_only=False / 2 threads: 1.251 sec
dilate / background_only=False / 4 threads: 0.944 sec
dilate / background_only=False / 8 threads: 0.718 sec
scipy grey_dilation / 1 thread 13.516 sec
scipy grey_erode / 1 thread: 13.326 sec
skimage expand_labels / 1 thread: 35.243 sec
```

### Memory Profiles

<center>
<img src="https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-dilate-bg-only-false.jpg" />
</center>

<center>
<img src="https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-dilate-bg-only-true.jpg" />
</center>

<center>
<img src="https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-skimage-expand_labels.jpg" />
</center>

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/seung-lab/fastmorph/",
    "name": "fastmorph",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8.0",
    "maintainer_email": null,
    "keywords": "morphological dialate erode dilation erosion close open fill image processing",
    "author": "William Silversmith",
    "author_email": "ws9@princeton.edu",
    "download_url": "https://files.pythonhosted.org/packages/bc/7f/cccfe2d802c44edc18bc710f3c75c7d8fec7ceaa96a941976302bcf8c3e7/fastmorph-1.3.0.tar.gz",
    "platform": null,
    "description": "![Automated Tests](https://github.com/seung-lab/fastmorph/actions/workflows/run_tests.yml/badge.svg) [![PyPI version](https://badge.fury.io/py/fastmorph.svg)](https://badge.fury.io/py/fastmorph)\n\n# fastmorph: multilabel 3D morphological image processing functions.\n\nThis is a collection of morphological 3D image operations that are tuned for working with dense 3D labeled images. \n\nWe provide the following multithreaded (except where noted) operations:\n\n- Multi-Label Stenciled Dilation, Erosion, Opening, Closing\n- Grayscale Stenciled Dilation, Erosion, Opening, Closing\n- Multi-Label Spherical Erosion\n- Binary Spherical Dilation, Opening, and Closing\n- Multi-Label Fill Voids (single threaded)\n\nHighlights compared to other libraries:\n\n- Handles multi-labeled images\n- Multithreaded\n- High performance single-threaded\n- Low memory usage\n- Dilate computes mode of surrounding labels\n\nDisadvantages versus other libraries:\n\n- Stencil (structuring element) is fixed size 3x3x3 and all on.\n\n\n```python\nimport fastmorph\n\n# may be binary or unsigned integer 2D or 3D image\nlabels = np.load(\"my_labels.npy\")\n\n\n# multi-label capable morphological operators\n# they use a 3x3x3 all on structuring element\n# dilate picks the mode of surrounding labels\n\n# by default only background (0) labels are filled\nmorphed = fastmorph.dilate(labels, parallel=2)\n# processes every voxel\nmorphed = fastmorph.dilate(labels, background_only=False, parallel=2)\n\nmorphed = fastmorph.erode(labels)\nmorphed = fastmorph.opening(labels, parallel=2)\nmorphed = fastmorph.closing(labels, parallel=2)\n\n# You can select grayscale dilation, erosion, opening, and \n# closing by passing in a different Mode enum.\n# The options are Mode.grey and Mode.multilabel\nmorphed = fastmorph.dilate(labels, mode=fastmorph.Mode.grey)\nmorphed = fastmorph.erode(labels, mode=fastmorph.Mode.grey)\n\n# Dilate only supports binary images at this time.\n# Radius is specified in physical units, but\n# by default anisotropy = (1,1,1) so it is the \n# same as voxels.\nmorphed = fastmorph.spherical_dilate(labels, radius=1, parallel=2, anisotropy=(1,1,1))\n\n# open and close require dialate to work and so are binary only for now\nmorphed = fastmorph.spherical_open(labels, radius=1, parallel=2, anisotropy=(1,1,1))\nmorphed = fastmorph.spherical_close(labels, radius=1, parallel=2, anisotropy=(1,1,1))\n\n# The rest support multilabel images.\nmorphed = fastmorph.spherical_erode(labels, radius=1, parallel=2, anisotropy=(1,1,1))\n\n# Note: for boolean images, this function will directly call fill_voids\n# and return a scalar for ct \n# For integer images, more processing will be done to deal with multiple labels.\n# A dict of { label: num_voxels_filled } for integer images will be returned.\n# Note that for multilabel images, by default, if a label is totally enclosed by another,\n# a FillError will be raised. If remove_enclosed is True, the label will be overwritten.\nfilled_labels, ct = fastmorph.fill_holes(labels, return_fill_count=True, remove_enclosed=False)\n```\n\n## Performance\n\nA test run on an M1 Macbook Pro on `connectomics.npy.ckl`, a 512<sup>3</sup> volume with over 2000 dense labels had the following results for multilabel processing.\n\n```\nerode / 1 thread: 1.553 sec\nerode / 2 threads: 0.885 sec\nerode / 4 threads: 0.651 sec\ndilate / background_only=True / 1 thread: 1.100 sec\ndilate / background_only=True / 2 threads: 0.632 sec\ndilate / background_only=True / 4 threads: 0.441 sec\ndilate / background_only=False / 1 thread: 11.783 sec\ndilate / background_only=False / 2 threads: 5.944 sec\ndilate / background_only=False / 4 threads: 4.291 sec\ndilate / background_only=False / 8 threads: 3.298 sec\nscipy grey_dilation / 1 thread 14.648 sec\nscipy grey_erode / 1 thread: 14.412 sec\nskimage expand_labels / 1 thread: 62.248 sec\n```\n\nTest run on an M1 Macbook Pro with `ws.npy.ckl` a 512<sup>3</sup> volume with tens of thousands of components for multilabel processing.\n\n```\nerode / 1 thread: 2.380 sec\nerode / 2 threads: 1.479 sec\nerode / 4 threads: 1.164 sec\ndilate / background_only=True / 1 thread: 1.598 sec\ndilate / background_only=True / 2 threads: 1.011 sec\ndilate / background_only=True / 4 threads: 0.805 sec\ndilate / background_only=False / 1 thread: 25.182 sec\ndilate / background_only=False / 2 threads: 13.513 sec\ndilate / background_only=False / 4 threads: 8.749 sec\ndilate / background_only=False / 8 threads: 6.640 sec\nscipy grey_dilation / 1 thread 21.109 sec\nscipy grey_erode / 1 thread: 20.305 sec\nskimage expand_labels / 1 thread: 63.247 sec\n```\n\nHere is the performance on a completely zeroed 512<sup>3</sup> volume for multilabel processing.\n\n```\nerode / 1 thread: 0.462 sec\nerode / 2 threads: 0.289 sec\nerode / 4 threads: 0.229 sec\ndilate / background_only=True / 1 thread: 2.337 sec\ndilate / background_only=True / 2 threads: 1.344 sec\ndilate / background_only=True / 4 threads: 1.021 sec\ndilate / background_only=False / 1 thread: 2.267 sec\ndilate / background_only=False / 2 threads: 1.251 sec\ndilate / background_only=False / 4 threads: 0.944 sec\ndilate / background_only=False / 8 threads: 0.718 sec\nscipy grey_dilation / 1 thread 13.516 sec\nscipy grey_erode / 1 thread: 13.326 sec\nskimage expand_labels / 1 thread: 35.243 sec\n```\n\n### Memory Profiles\n\n<center>\n<img src=\"https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-dilate-bg-only-false.jpg\" />\n</center>\n\n<center>\n<img src=\"https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-dilate-bg-only-true.jpg\" />\n</center>\n\n<center>\n<img src=\"https://github.com/seung-lab/fastmorph/blob/15c4c27ad3255c8ef959ceb67facd65e18eff2e4/memory-profile-skimage-expand_labels.jpg\" />\n</center>\n",
    "bugtrack_url": null,
    "license": "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
    "summary": "Morphological image processing for 3D multi-label images.",
    "version": "1.3.0",
    "project_urls": {
        "Homepage": "https://github.com/seung-lab/fastmorph/"
    },
    "split_keywords": [
        "morphological",
        "dialate",
        "erode",
        "dilation",
        "erosion",
        "close",
        "open",
        "fill",
        "image",
        "processing"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "817ee69095a0e15ef06584dd13b0ac5df4e5ae0a08876c276e4fcbff663bae9f",
                "md5": "f77d0c446bb8032f588cd3048b0d09a0",
                "sha256": "014bcd3a92beb022c30e9a7c3ca405a3ca67fdc05dadc5a79ad883e31be77486"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f77d0c446bb8032f588cd3048b0d09a0",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8.0",
            "size": 194629,
            "upload_time": "2025-02-12T17:57:12",
            "upload_time_iso_8601": "2025-02-12T17:57:12.035985Z",
            "url": "https://files.pythonhosted.org/packages/81/7e/e69095a0e15ef06584dd13b0ac5df4e5ae0a08876c276e4fcbff663bae9f/fastmorph-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a685eb4921854c0c5a362310045c2bd517b34153df934c97e982430f3dcbfbef",
                "md5": "ec6f7ffd9e2795486819139488de8b81",
                "sha256": "40dfb95bfdb5824f9f4e44e96a54863e4aa75b7be45efcc4630bcce100e6a0f5"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ec6f7ffd9e2795486819139488de8b81",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8.0",
            "size": 161360,
            "upload_time": "2025-02-12T17:57:13",
            "upload_time_iso_8601": "2025-02-12T17:57:13.400718Z",
            "url": "https://files.pythonhosted.org/packages/a6/85/eb4921854c0c5a362310045c2bd517b34153df934c97e982430f3dcbfbef/fastmorph-1.3.0-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9a1c14534cf80ba3f8c9e424e65922b4e2129921a8707c2056e223ecb607b0b9",
                "md5": "cbde0897ce22e805a0d1d24d43806656",
                "sha256": "7d15a1b9ce858e26c59d646acda2ca1216344e2c5e03922af55e70cbf9ea683c"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "cbde0897ce22e805a0d1d24d43806656",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8.0",
            "size": 202331,
            "upload_time": "2025-02-12T17:57:14",
            "upload_time_iso_8601": "2025-02-12T17:57:14.614931Z",
            "url": "https://files.pythonhosted.org/packages/9a/1c/14534cf80ba3f8c9e424e65922b4e2129921a8707c2056e223ecb607b0b9/fastmorph-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5f03268f5b6407c02a8d7c87e61efba28902fd7f5681881d4a84a32f4c92e792",
                "md5": "df1921491c4dacb798790f6ff21a8203",
                "sha256": "a237d56b7a4831b039b781a0a03e393e55d3e1ca102c1cc224163a82c44d5bf7"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "df1921491c4dacb798790f6ff21a8203",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8.0",
            "size": 254585,
            "upload_time": "2025-02-12T17:57:15",
            "upload_time_iso_8601": "2025-02-12T17:57:15.752907Z",
            "url": "https://files.pythonhosted.org/packages/5f/03/268f5b6407c02a8d7c87e61efba28902fd7f5681881d4a84a32f4c92e792/fastmorph-1.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "be589f6fda7d6a03d23891543614918eab6e719841ab4f74d1aab52d55e3edf0",
                "md5": "f7cdb99f158c767a81b42c476656c101",
                "sha256": "1971b5070144e98eacf12df73f99a4d674e7a5256092784b3c552854b0dc1904"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f7cdb99f158c767a81b42c476656c101",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8.0",
            "size": 212502,
            "upload_time": "2025-02-12T17:57:17",
            "upload_time_iso_8601": "2025-02-12T17:57:17.777773Z",
            "url": "https://files.pythonhosted.org/packages/be/58/9f6fda7d6a03d23891543614918eab6e719841ab4f74d1aab52d55e3edf0/fastmorph-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d73dd070b73fede70002f561c1594a8999be23e3b61540fbdf10d3e6b8811779",
                "md5": "b436d7ce7f63e10a57744ac7bf6d305b",
                "sha256": "d5b043da4681edbfeee8a05f217a9a7f9f6dab77580582e6d4c42edc9bf611d1"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "b436d7ce7f63e10a57744ac7bf6d305b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8.0",
            "size": 161550,
            "upload_time": "2025-02-12T17:57:19",
            "upload_time_iso_8601": "2025-02-12T17:57:19.091568Z",
            "url": "https://files.pythonhosted.org/packages/d7/3d/d070b73fede70002f561c1594a8999be23e3b61540fbdf10d3e6b8811779/fastmorph-1.3.0-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "624556ea4e8473488bea91b96f3a42ec3c9f1d4ee674552b4f0a0a81147789c5",
                "md5": "ee55f6f00a16abeb1706f66dd2e30fb0",
                "sha256": "9907ed9243356d2a6e20ffe58ef51fe1b80f6e69f09f4b93078fb66c46ece5e6"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "ee55f6f00a16abeb1706f66dd2e30fb0",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8.0",
            "size": 137199,
            "upload_time": "2025-02-12T17:57:20",
            "upload_time_iso_8601": "2025-02-12T17:57:20.166125Z",
            "url": "https://files.pythonhosted.org/packages/62/45/56ea4e8473488bea91b96f3a42ec3c9f1d4ee674552b4f0a0a81147789c5/fastmorph-1.3.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b3b02fa213bafb0fdbf6b06adf33ac6f24013fa0cceef19e16286b5d040c67ca",
                "md5": "a356cab33a800adc12a4477c4d033c14",
                "sha256": "d6505595be7d22c0b1c67c0d5ef7694f86df82bfbc410fd78278b9d13c31c28e"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a356cab33a800adc12a4477c4d033c14",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8.0",
            "size": 196381,
            "upload_time": "2025-02-12T17:57:21",
            "upload_time_iso_8601": "2025-02-12T17:57:21.965009Z",
            "url": "https://files.pythonhosted.org/packages/b3/b0/2fa213bafb0fdbf6b06adf33ac6f24013fa0cceef19e16286b5d040c67ca/fastmorph-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b953fcf9b7bc427328f956cf456dcd7e4bef9fbd17e797951081cb2e245f57ab",
                "md5": "24711372545d248d4c5868b8b8399fbd",
                "sha256": "b24821b66e8d8fcc7dd70df6846de2abbc9107d071932b79fa29be39ce1b9e07"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "24711372545d248d4c5868b8b8399fbd",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8.0",
            "size": 162608,
            "upload_time": "2025-02-12T17:57:23",
            "upload_time_iso_8601": "2025-02-12T17:57:23.132447Z",
            "url": "https://files.pythonhosted.org/packages/b9/53/fcf9b7bc427328f956cf456dcd7e4bef9fbd17e797951081cb2e245f57ab/fastmorph-1.3.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3fb67bb8990f1b85255f050cbbb5cb9efca45c3213fb882f634fd436d29ef093",
                "md5": "3daa5e25531434c5b8126c1e61b47f48",
                "sha256": "a6f8ade38f8b1bf194247028112c5e5a47e48c9dd887b415cf5240663dfa1ccc"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "3daa5e25531434c5b8126c1e61b47f48",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8.0",
            "size": 204072,
            "upload_time": "2025-02-12T17:57:24",
            "upload_time_iso_8601": "2025-02-12T17:57:24.166912Z",
            "url": "https://files.pythonhosted.org/packages/3f/b6/7bb8990f1b85255f050cbbb5cb9efca45c3213fb882f634fd436d29ef093/fastmorph-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "18bcb6112bce927ee1f2ff7841904bc619e3bbab2220a61b1f65e35d4c0db5ba",
                "md5": "4f5129843a9612ba3a88d1319ece68f5",
                "sha256": "7fc49f0f1dd36e93409ab2d9775e36e00ce936b07ca332c7e5ea9c9efbfd9328"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "4f5129843a9612ba3a88d1319ece68f5",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8.0",
            "size": 256699,
            "upload_time": "2025-02-12T17:57:25",
            "upload_time_iso_8601": "2025-02-12T17:57:25.182961Z",
            "url": "https://files.pythonhosted.org/packages/18/bc/b6112bce927ee1f2ff7841904bc619e3bbab2220a61b1f65e35d4c0db5ba/fastmorph-1.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c449bb6179bf2743fef6827038440f5c44568f788f1ec91f8277b64f15e376ff",
                "md5": "a1f8cfba9f962cf394009a137c4f1f89",
                "sha256": "be6f0a7ada20eb2ba829034b006f84b836b6f0b49c3c5db875e4468466726ab5"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a1f8cfba9f962cf394009a137c4f1f89",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8.0",
            "size": 213231,
            "upload_time": "2025-02-12T17:57:26",
            "upload_time_iso_8601": "2025-02-12T17:57:26.266383Z",
            "url": "https://files.pythonhosted.org/packages/c4/49/bb6179bf2743fef6827038440f5c44568f788f1ec91f8277b64f15e376ff/fastmorph-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e9f126fd171957c97fb189a27de2ba96829e51faf3661feeb4dc109aef79e1a2",
                "md5": "f006d76f8e2a34692659c47f56df5ed1",
                "sha256": "cc5b830299c27317ce1de49c8fb98f78c8e6fc1a64022a2435fbb979b9ee1611"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "f006d76f8e2a34692659c47f56df5ed1",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8.0",
            "size": 162495,
            "upload_time": "2025-02-12T17:57:28",
            "upload_time_iso_8601": "2025-02-12T17:57:28.227072Z",
            "url": "https://files.pythonhosted.org/packages/e9/f1/26fd171957c97fb189a27de2ba96829e51faf3661feeb4dc109aef79e1a2/fastmorph-1.3.0-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e4de0c29dceb3aac20dd3075ae26b686384ecb3552e2df4c9799c7c99db9f7bf",
                "md5": "5fac819857d2999bc345d5d468cd7b86",
                "sha256": "c8f5619eaa0a83ec03977eb6dbaaa6af435d0763e0b1f2e90d660907a1d0d9b7"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5fac819857d2999bc345d5d468cd7b86",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8.0",
            "size": 137847,
            "upload_time": "2025-02-12T17:57:29",
            "upload_time_iso_8601": "2025-02-12T17:57:29.997896Z",
            "url": "https://files.pythonhosted.org/packages/e4/de/0c29dceb3aac20dd3075ae26b686384ecb3552e2df4c9799c7c99db9f7bf/fastmorph-1.3.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4e1be5e102654fc14392f54df3c2418a9baae6f0746679c9dc300c252b9be156",
                "md5": "378cd4a9d8daebf39f8750e4f82a6a3c",
                "sha256": "9b779a37f99371809d882965adc3c7a6d9834af7c3c83772ece4e14327aa896d"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp312-cp312-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "378cd4a9d8daebf39f8750e4f82a6a3c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8.0",
            "size": 195236,
            "upload_time": "2025-02-12T17:57:31",
            "upload_time_iso_8601": "2025-02-12T17:57:31.979124Z",
            "url": "https://files.pythonhosted.org/packages/4e/1b/e5e102654fc14392f54df3c2418a9baae6f0746679c9dc300c252b9be156/fastmorph-1.3.0-cp312-cp312-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7fae4bd5497a8375168bfece9cf8420efeb8904ae623c21b43a6a2b188525306",
                "md5": "f84fee0a71e11457ed2600d4fe339f4a",
                "sha256": "ab098a5695bda616576a6da6e007203b436d8d8a8ecc50270c84e35c74d8255d"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "f84fee0a71e11457ed2600d4fe339f4a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8.0",
            "size": 161866,
            "upload_time": "2025-02-12T17:57:33",
            "upload_time_iso_8601": "2025-02-12T17:57:33.782339Z",
            "url": "https://files.pythonhosted.org/packages/7f/ae/4bd5497a8375168bfece9cf8420efeb8904ae623c21b43a6a2b188525306/fastmorph-1.3.0-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9d24953ee79deb9b073dc0b8ac255967b8138e8ba9ae4bf386b415b15c8574ae",
                "md5": "decc28705e613b8c12e08b7ec1e06224",
                "sha256": "03a9c0bb7fe6be8f0b5be18b4c2d3f34967723741aa6913dd534a16b320c5cca"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "decc28705e613b8c12e08b7ec1e06224",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8.0",
            "size": 203608,
            "upload_time": "2025-02-12T17:57:36",
            "upload_time_iso_8601": "2025-02-12T17:57:36.311806Z",
            "url": "https://files.pythonhosted.org/packages/9d/24/953ee79deb9b073dc0b8ac255967b8138e8ba9ae4bf386b415b15c8574ae/fastmorph-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ccda40a7830e1b91f0a450ecac58df615a88c47231c2c87de8fc3be714f69ea4",
                "md5": "3efa891704165b9229dea63318d49c45",
                "sha256": "e50991f03babcb102b6fb5ebf9fe8ea5410a8728380ab148a7fc4f42b1db1df0"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3efa891704165b9229dea63318d49c45",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8.0",
            "size": 212770,
            "upload_time": "2025-02-12T17:57:38",
            "upload_time_iso_8601": "2025-02-12T17:57:38.581590Z",
            "url": "https://files.pythonhosted.org/packages/cc/da/40a7830e1b91f0a450ecac58df615a88c47231c2c87de8fc3be714f69ea4/fastmorph-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8643b4885b3e6b700c14121a14021b3a3082388154e09519e880cdb89f3d027e",
                "md5": "f670d805c019e03884bf8d09f1d8814a",
                "sha256": "fbe0e52053a7727bf00d7087b83560f8ded95d448da16a1570ac969a78bb222e"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "f670d805c019e03884bf8d09f1d8814a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8.0",
            "size": 163239,
            "upload_time": "2025-02-12T17:57:39",
            "upload_time_iso_8601": "2025-02-12T17:57:39.615430Z",
            "url": "https://files.pythonhosted.org/packages/86/43/b4885b3e6b700c14121a14021b3a3082388154e09519e880cdb89f3d027e/fastmorph-1.3.0-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3a47015148d523c658641d3d14300a2019aa451e1d77f6f9911d5e7eb13ce938",
                "md5": "25827cb543dafaaa20077968a221b875",
                "sha256": "a8d7844d82132503afb0e32e480a822236d76113f1d3d933532c346b686005d0"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "25827cb543dafaaa20077968a221b875",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8.0",
            "size": 138356,
            "upload_time": "2025-02-12T17:57:40",
            "upload_time_iso_8601": "2025-02-12T17:57:40.798481Z",
            "url": "https://files.pythonhosted.org/packages/3a/47/015148d523c658641d3d14300a2019aa451e1d77f6f9911d5e7eb13ce938/fastmorph-1.3.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bba340d547603b875542a1c23a5a98a7d023e7c64b02a2b3451fee5d3a910e3f",
                "md5": "84a7a543c13440b886bb180849b33bda",
                "sha256": "bd877f7826e309d593674156f8464197dda81bf7b225edceabb7ddbc75302829"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "84a7a543c13440b886bb180849b33bda",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.0",
            "size": 195271,
            "upload_time": "2025-02-12T17:57:41",
            "upload_time_iso_8601": "2025-02-12T17:57:41.894540Z",
            "url": "https://files.pythonhosted.org/packages/bb/a3/40d547603b875542a1c23a5a98a7d023e7c64b02a2b3451fee5d3a910e3f/fastmorph-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eb2fcf3401f4c875282dd4d2108739e3f89f38ccba39759110976edb8a2f4c3c",
                "md5": "65a4bcd6e501aec7bb828d18b8d52fe7",
                "sha256": "fe2e5dcb29ab96fc5c61ff0cca333def6629d2461e57f145cba899507eb56533"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "65a4bcd6e501aec7bb828d18b8d52fe7",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.0",
            "size": 161910,
            "upload_time": "2025-02-12T17:57:44",
            "upload_time_iso_8601": "2025-02-12T17:57:44.477640Z",
            "url": "https://files.pythonhosted.org/packages/eb/2f/cf3401f4c875282dd4d2108739e3f89f38ccba39759110976edb8a2f4c3c/fastmorph-1.3.0-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "54a7d3b9cb6941e0b1c3ab8b3425f3d3ce032ceb8e05b3728923131646e338e3",
                "md5": "1011bc0e18d4989be7a08db733f0217e",
                "sha256": "2665fd629132cefbea4dd686f9d6952254f22627b0c10e1f16f658649dcd6d39"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "1011bc0e18d4989be7a08db733f0217e",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.0",
            "size": 203583,
            "upload_time": "2025-02-12T17:57:45",
            "upload_time_iso_8601": "2025-02-12T17:57:45.961686Z",
            "url": "https://files.pythonhosted.org/packages/54/a7/d3b9cb6941e0b1c3ab8b3425f3d3ce032ceb8e05b3728923131646e338e3/fastmorph-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fb50c3318298b15f30f75148587ce8ed8fc743dd2c0bb6c766b2bb6962f96977",
                "md5": "d49333fa9dce06c88c0562b63ff35381",
                "sha256": "2189992293a417102f430e5cdf5f7a5a06d5c26f4f63fdea529c23f06884207f"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "d49333fa9dce06c88c0562b63ff35381",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.0",
            "size": 256105,
            "upload_time": "2025-02-12T17:57:47",
            "upload_time_iso_8601": "2025-02-12T17:57:47.194399Z",
            "url": "https://files.pythonhosted.org/packages/fb/50/c3318298b15f30f75148587ce8ed8fc743dd2c0bb6c766b2bb6962f96977/fastmorph-1.3.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "83ca192ad3e2ce407d6fc25c5b08d2ba0bd3986885e8e2051092fc9247459c75",
                "md5": "ce8b30849c098585b09760fdba0d5605",
                "sha256": "328fa003b83ace02b9b9338114fef35bf5ec207b8e074307611c2d137dd40397"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ce8b30849c098585b09760fdba0d5605",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.0",
            "size": 212646,
            "upload_time": "2025-02-12T17:57:49",
            "upload_time_iso_8601": "2025-02-12T17:57:49.138399Z",
            "url": "https://files.pythonhosted.org/packages/83/ca/192ad3e2ce407d6fc25c5b08d2ba0bd3986885e8e2051092fc9247459c75/fastmorph-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4e899503cf5524820daa94ac9566bb14b01ae48faab66789462a5dc64d09994e",
                "md5": "6b538dbbc49f35dfac14b463d00350c4",
                "sha256": "de9797bae60662399131a25c0c264dd37439ce0d83a961e45f61cc070b222737"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp313-cp313-win32.whl",
            "has_sig": false,
            "md5_digest": "6b538dbbc49f35dfac14b463d00350c4",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.0",
            "size": 163330,
            "upload_time": "2025-02-12T17:57:51",
            "upload_time_iso_8601": "2025-02-12T17:57:51.263954Z",
            "url": "https://files.pythonhosted.org/packages/4e/89/9503cf5524820daa94ac9566bb14b01ae48faab66789462a5dc64d09994e/fastmorph-1.3.0-cp313-cp313-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6763470611fc630994ee1e197db3ce1f693db98e33dc815cb65cae9045bcd202",
                "md5": "cfaebae146654eb92a5afa5521de91ab",
                "sha256": "de384fdf5d088d736cd833fa5271e30651768457e2bfd511c31fad68bc14490a"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "cfaebae146654eb92a5afa5521de91ab",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8.0",
            "size": 138371,
            "upload_time": "2025-02-12T17:57:53",
            "upload_time_iso_8601": "2025-02-12T17:57:53.149750Z",
            "url": "https://files.pythonhosted.org/packages/67/63/470611fc630994ee1e197db3ce1f693db98e33dc815cb65cae9045bcd202/fastmorph-1.3.0-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "49f2e61d45526d16841039574e23fa1f9e1eeb3083aa07f0106e70068c8967c4",
                "md5": "2774d9a017724fe9440aa30041f770a9",
                "sha256": "0e4f35da37ac50337737b80afef9ce7784456a211cea6b78cc80e17f3ab01f3c"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2774d9a017724fe9440aa30041f770a9",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.0",
            "size": 194431,
            "upload_time": "2025-02-12T17:57:54",
            "upload_time_iso_8601": "2025-02-12T17:57:54.335136Z",
            "url": "https://files.pythonhosted.org/packages/49/f2/e61d45526d16841039574e23fa1f9e1eeb3083aa07f0106e70068c8967c4/fastmorph-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "73e54f99524aad167f59f1090d7becedc48d4445a5e35e84c99eb3e12b936a6d",
                "md5": "e7fd2af1c92c3afffc1d90ad189f2905",
                "sha256": "6c0a27419de0bf431f40d70e6bcc7027ece93369e711ae56087ffe1a046a3c9c"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e7fd2af1c92c3afffc1d90ad189f2905",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.0",
            "size": 161204,
            "upload_time": "2025-02-12T17:57:55",
            "upload_time_iso_8601": "2025-02-12T17:57:55.551356Z",
            "url": "https://files.pythonhosted.org/packages/73/e5/4f99524aad167f59f1090d7becedc48d4445a5e35e84c99eb3e12b936a6d/fastmorph-1.3.0-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bc6988ee611344cae085702cb805be8c0e3aa4b72476201f3d3ad73fda160267",
                "md5": "7304d59025988307d8983704d41a060f",
                "sha256": "46e61add243c8ece4b15b015a103dc5766a1ad2a76ff9cedaf238b1650002550"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "7304d59025988307d8983704d41a060f",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.0",
            "size": 201997,
            "upload_time": "2025-02-12T17:57:56",
            "upload_time_iso_8601": "2025-02-12T17:57:56.640844Z",
            "url": "https://files.pythonhosted.org/packages/bc/69/88ee611344cae085702cb805be8c0e3aa4b72476201f3d3ad73fda160267/fastmorph-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a463b03d9c6f55b151fe05fcd33ba22d17f5894624ddad07b0a3c9a76f2b4360",
                "md5": "9050785299a7096c76467cfa277bb7d4",
                "sha256": "6784430d52a8e25ad9ccafa1f464e0e37cfe96711a36542079600e0109368955"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "9050785299a7096c76467cfa277bb7d4",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.0",
            "size": 254345,
            "upload_time": "2025-02-12T17:57:58",
            "upload_time_iso_8601": "2025-02-12T17:57:58.513899Z",
            "url": "https://files.pythonhosted.org/packages/a4/63/b03d9c6f55b151fe05fcd33ba22d17f5894624ddad07b0a3c9a76f2b4360/fastmorph-1.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a8d4cc8687c01f3500286d79759c68d0116c00eea8b3e0b2440156504145a74e",
                "md5": "93cfdeb1c05e2842c0171347974ae47d",
                "sha256": "9184e37d7d4422d09a1de071a8178cbb30b8dd77e4d9a9111153173c1823d509"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "93cfdeb1c05e2842c0171347974ae47d",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.0",
            "size": 212381,
            "upload_time": "2025-02-12T17:57:59",
            "upload_time_iso_8601": "2025-02-12T17:57:59.684226Z",
            "url": "https://files.pythonhosted.org/packages/a8/d4/cc8687c01f3500286d79759c68d0116c00eea8b3e0b2440156504145a74e/fastmorph-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5add7f4bf39e0ab33695fd0c8857d1588b877b449e1d48043e91de25a08ecc70",
                "md5": "083f2eb49e53cd56455bd494ad46d310",
                "sha256": "fc0fb44772d0de90129ecd48afffebd5fb6c6e516c25de2dbdf3f642c7e733af"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp38-cp38-win32.whl",
            "has_sig": false,
            "md5_digest": "083f2eb49e53cd56455bd494ad46d310",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.0",
            "size": 161535,
            "upload_time": "2025-02-12T17:58:01",
            "upload_time_iso_8601": "2025-02-12T17:58:01.081347Z",
            "url": "https://files.pythonhosted.org/packages/5a/dd/7f4bf39e0ab33695fd0c8857d1588b877b449e1d48043e91de25a08ecc70/fastmorph-1.3.0-cp38-cp38-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4290af12fe148cd8198d98182be76aae699856a021463fb046a2e62b47000be2",
                "md5": "53a7e07c688f8e909ce4a1f86bb17992",
                "sha256": "12694d2bd3d1f3a3336c2b8e1802c32cb23d5d161944d6a6008ddd1e9bebf7ef"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "53a7e07c688f8e909ce4a1f86bb17992",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8.0",
            "size": 137223,
            "upload_time": "2025-02-12T17:58:03",
            "upload_time_iso_8601": "2025-02-12T17:58:03.026097Z",
            "url": "https://files.pythonhosted.org/packages/42/90/af12fe148cd8198d98182be76aae699856a021463fb046a2e62b47000be2/fastmorph-1.3.0-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c3a8f8ec60501b58803e8bdb6df601153da636e341c9904ceaf5e2259aafbcf0",
                "md5": "04ce15e5a317e3e3fbe17f99dca1fd10",
                "sha256": "7ec7f5b4572c1bbf9def1d825f0a08375a9eee48065ad8e7f3d0168e3b2a3fad"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "04ce15e5a317e3e3fbe17f99dca1fd10",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8.0",
            "size": 194773,
            "upload_time": "2025-02-12T17:58:04",
            "upload_time_iso_8601": "2025-02-12T17:58:04.912432Z",
            "url": "https://files.pythonhosted.org/packages/c3/a8/f8ec60501b58803e8bdb6df601153da636e341c9904ceaf5e2259aafbcf0/fastmorph-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5468b5e630c21d2c0c6fc90d264554883bdb027bb41f7a710cd350ac47b1f047",
                "md5": "bff8c5b0f450a1f62d3b1dfa21fd9242",
                "sha256": "93c70a799f15c485bd160a2566dbbc8a573c58b4bc2c6165997e1d6bb655e5b8"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "bff8c5b0f450a1f62d3b1dfa21fd9242",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8.0",
            "size": 161488,
            "upload_time": "2025-02-12T17:58:06",
            "upload_time_iso_8601": "2025-02-12T17:58:06.213467Z",
            "url": "https://files.pythonhosted.org/packages/54/68/b5e630c21d2c0c6fc90d264554883bdb027bb41f7a710cd350ac47b1f047/fastmorph-1.3.0-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "728aae3b0b85bfa92d1d049906c499833f31f1c39a63b7131c90e3553d1c80cf",
                "md5": "342bef13a70fa48a5aa9fcfc37ce4fc7",
                "sha256": "2baad43fa445d4bdfd128642d954746ee145301b0eefee3fee5d30feb8aa7500"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "342bef13a70fa48a5aa9fcfc37ce4fc7",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8.0",
            "size": 202241,
            "upload_time": "2025-02-12T17:58:08",
            "upload_time_iso_8601": "2025-02-12T17:58:08.079555Z",
            "url": "https://files.pythonhosted.org/packages/72/8a/ae3b0b85bfa92d1d049906c499833f31f1c39a63b7131c90e3553d1c80cf/fastmorph-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1cde6573efd6721378c1e68a7e417e4fff90ba4315fa3581c9a9175caab7a08d",
                "md5": "b6c0ba74cc332223a5d3143bda46b89d",
                "sha256": "0b18148b38e73ee3aea4398d60ae59bee378d1de326413bcf8a81e1f715d90bc"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "b6c0ba74cc332223a5d3143bda46b89d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8.0",
            "size": 256405,
            "upload_time": "2025-02-12T17:58:09",
            "upload_time_iso_8601": "2025-02-12T17:58:09.311185Z",
            "url": "https://files.pythonhosted.org/packages/1c/de/6573efd6721378c1e68a7e417e4fff90ba4315fa3581c9a9175caab7a08d/fastmorph-1.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a8ad07b2af0480775616265d6c0523603a18720a5d09b979a5f91c1dcca656fc",
                "md5": "2ab025c1b8955b46e851886e0b589970",
                "sha256": "63232767c3d181e13b3da2ec66669cf31212b7ec3d40817994481bcef6019431"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2ab025c1b8955b46e851886e0b589970",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8.0",
            "size": 212863,
            "upload_time": "2025-02-12T17:58:10",
            "upload_time_iso_8601": "2025-02-12T17:58:10.414754Z",
            "url": "https://files.pythonhosted.org/packages/a8/ad/07b2af0480775616265d6c0523603a18720a5d09b979a5f91c1dcca656fc/fastmorph-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b354f4fba2745fe28e5edeedf9606db2e911039bcdcc347f2c00486f167ed4e6",
                "md5": "b9aa5101ee4d1c94d9407f73e1067134",
                "sha256": "878da9894b13d79c294bd33299b48ab7201822f24de05584ce08a5ac245301f7"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "b9aa5101ee4d1c94d9407f73e1067134",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8.0",
            "size": 161748,
            "upload_time": "2025-02-12T17:58:11",
            "upload_time_iso_8601": "2025-02-12T17:58:11.647423Z",
            "url": "https://files.pythonhosted.org/packages/b3/54/f4fba2745fe28e5edeedf9606db2e911039bcdcc347f2c00486f167ed4e6/fastmorph-1.3.0-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "92939d83550b09a40909240805cafb1e0bfa90e0c4a4193d1310a25f7089e434",
                "md5": "0b642bb44daf4a7ee9ab7ca57ae6c0ef",
                "sha256": "cbdff9bfc8384917a6c876e4eb8090fd274eaa62ba5d9b5186e374fa25b1eb0a"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0b642bb44daf4a7ee9ab7ca57ae6c0ef",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8.0",
            "size": 137071,
            "upload_time": "2025-02-12T17:58:13",
            "upload_time_iso_8601": "2025-02-12T17:58:13.483971Z",
            "url": "https://files.pythonhosted.org/packages/92/93/9d83550b09a40909240805cafb1e0bfa90e0c4a4193d1310a25f7089e434/fastmorph-1.3.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bc7fcccfe2d802c44edc18bc710f3c75c7d8fec7ceaa96a941976302bcf8c3e7",
                "md5": "1d89067991caa9f991c279a811958b21",
                "sha256": "727cc1062358eb26a0836637fa2e763d3fd98d2d675df0e3e1c98589f7c7751b"
            },
            "downloads": -1,
            "filename": "fastmorph-1.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "1d89067991caa9f991c279a811958b21",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8.0",
            "size": 26630,
            "upload_time": "2025-02-12T17:58:14",
            "upload_time_iso_8601": "2025-02-12T17:58:14.481936Z",
            "url": "https://files.pythonhosted.org/packages/bc/7f/cccfe2d802c44edc18bc710f3c75c7d8fec7ceaa96a941976302bcf8c3e7/fastmorph-1.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-12 17:58:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "seung-lab",
    "github_project": "fastmorph",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "fastmorph"
}
        
Elapsed time: 0.54193s