![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/16/5d/aeb14920da3bb5e5bfc38a43c136d7c60a70d6c42c77a35a51f6e6623f7e/fastmorph-1.2.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.2.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": "78dce69190b091eb47c1102a4ce8919a1c1457b88c2a2487275abf5051222862",
"md5": "2368fcb7cf020f5f5146f01df81613c5",
"sha256": "5c230ea71776daf2c16fae70bbc47660883b37ab3464e310019ec09fa488d49b"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "2368fcb7cf020f5f5146f01df81613c5",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 203370,
"upload_time": "2024-06-22T21:29:39",
"upload_time_iso_8601": "2024-06-22T21:29:39.097708Z",
"url": "https://files.pythonhosted.org/packages/78/dc/e69190b091eb47c1102a4ce8919a1c1457b88c2a2487275abf5051222862/fastmorph-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "62f0f68ee4c97b8ae1c6e5d3afe17387bbbe72d295ff3d76124185495708d177",
"md5": "dc37eccb28a80886085cacc24c89efe0",
"sha256": "595eaab5b162700a98078bca837133c12f8d90002f76015c83b94863eb37eee3"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "dc37eccb28a80886085cacc24c89efe0",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 167192,
"upload_time": "2024-06-22T21:29:41",
"upload_time_iso_8601": "2024-06-22T21:29:41.107664Z",
"url": "https://files.pythonhosted.org/packages/62/f0/f68ee4c97b8ae1c6e5d3afe17387bbbe72d295ff3d76124185495708d177/fastmorph-1.2.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "11e274dbcfad4896946b1efc2d36402ba304f2cf15e065c79cd607e4a2bb9a4a",
"md5": "3d9a1f2e78f3a040da427e32351c1bd2",
"sha256": "e4b5da55a2f9f76a1e87e31c38d2f9638f70c019e8e3efc0c8dfcdbaa6fa9332"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "3d9a1f2e78f3a040da427e32351c1bd2",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 202853,
"upload_time": "2024-06-22T21:29:42",
"upload_time_iso_8601": "2024-06-22T21:29:42.284495Z",
"url": "https://files.pythonhosted.org/packages/11/e2/74dbcfad4896946b1efc2d36402ba304f2cf15e065c79cd607e4a2bb9a4a/fastmorph-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "63d0e65bac7bfe58bb48c77401833a2095e03c9460cbc8387fd631c6733fc7ca",
"md5": "e70b2f4d7bf6836a31a82d85a4f4f010",
"sha256": "9b7ea5afeb104a6a7bb933a0d9eedec4b3a5d4f6e7beaa729377029af35b6a11"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "e70b2f4d7bf6836a31a82d85a4f4f010",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 253858,
"upload_time": "2024-06-22T21:29:44",
"upload_time_iso_8601": "2024-06-22T21:29:44.094022Z",
"url": "https://files.pythonhosted.org/packages/63/d0/e65bac7bfe58bb48c77401833a2095e03c9460cbc8387fd631c6733fc7ca/fastmorph-1.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2c9ecf5484cc0289289196301b6bfd62d2987738d4f6d9e10d01efe3be25cf27",
"md5": "d1ebc5ebd38d9aff8e72723c2d120839",
"sha256": "c615bad017cfd1675a71b0763c189adec599574842fbe500360c9ce16243853f"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d1ebc5ebd38d9aff8e72723c2d120839",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 211590,
"upload_time": "2024-06-22T21:29:45",
"upload_time_iso_8601": "2024-06-22T21:29:45.800599Z",
"url": "https://files.pythonhosted.org/packages/2c/9e/cf5484cc0289289196301b6bfd62d2987738d4f6d9e10d01efe3be25cf27/fastmorph-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b7bfc3b7e4a16980c46d4f7f0c9e776e7e021b47b5aa8decdd154d6e19163d8b",
"md5": "ed678016039946865a4912dea8beb3c2",
"sha256": "0ec83be35bae829215868e7296a9d0f3da8e37e2944c3b5ccc514e39aaa1d612"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "ed678016039946865a4912dea8beb3c2",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 160945,
"upload_time": "2024-06-22T21:29:47",
"upload_time_iso_8601": "2024-06-22T21:29:47.495738Z",
"url": "https://files.pythonhosted.org/packages/b7/bf/c3b7e4a16980c46d4f7f0c9e776e7e021b47b5aa8decdd154d6e19163d8b/fastmorph-1.2.0-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "35cd7fdb099f90bf08643081842718f639db89122b60c4824b9ac579357569e6",
"md5": "aeec0a919c31ff970d39ab7fc7713f67",
"sha256": "c784b2b67721e6d9a3085abc302a4ad407f56b5c8e3aa46920013965324dd1d1"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "aeec0a919c31ff970d39ab7fc7713f67",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8.0",
"size": 136639,
"upload_time": "2024-06-22T21:29:48",
"upload_time_iso_8601": "2024-06-22T21:29:48.998366Z",
"url": "https://files.pythonhosted.org/packages/35/cd/7fdb099f90bf08643081842718f639db89122b60c4824b9ac579357569e6/fastmorph-1.2.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "181b514f855f9475dc79a2b170effeee318a98c95f47121abe4489cef636acbb",
"md5": "9098ced9c2b5bc9029c75ba81484660a",
"sha256": "816d157f8b753831ceccc5b7bced0f7c03d0732c1d7496270c0080b1bcaa92ab"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "9098ced9c2b5bc9029c75ba81484660a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 204613,
"upload_time": "2024-06-22T21:29:49",
"upload_time_iso_8601": "2024-06-22T21:29:49.995717Z",
"url": "https://files.pythonhosted.org/packages/18/1b/514f855f9475dc79a2b170effeee318a98c95f47121abe4489cef636acbb/fastmorph-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "49d5a5153f0b504dd7978158b4e2a144b0f60b6ed7654040471fc071dac9e653",
"md5": "88b531efc9e46b299a8919b69b5aee83",
"sha256": "24d995036222ab9c96d6f3b14505ee6e6b53a0d5cfd91e00f2c9b5b76a7608b9"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "88b531efc9e46b299a8919b69b5aee83",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 168594,
"upload_time": "2024-06-22T21:29:51",
"upload_time_iso_8601": "2024-06-22T21:29:51.663150Z",
"url": "https://files.pythonhosted.org/packages/49/d5/a5153f0b504dd7978158b4e2a144b0f60b6ed7654040471fc071dac9e653/fastmorph-1.2.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e259dd6a8f3e1181bd249e412c8da4aeaa12c442403f98867369164c1b9b81e3",
"md5": "a9a0ca3ae06f8e75ae4173f3f1b9bbea",
"sha256": "7020a1570044df6e7f4a6704be7d83375af11576d447b2b56d6e5ed95b8ecaec"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "a9a0ca3ae06f8e75ae4173f3f1b9bbea",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 202900,
"upload_time": "2024-06-22T21:29:52",
"upload_time_iso_8601": "2024-06-22T21:29:52.765179Z",
"url": "https://files.pythonhosted.org/packages/e2/59/dd6a8f3e1181bd249e412c8da4aeaa12c442403f98867369164c1b9b81e3/fastmorph-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7d07d2db53480e7cd6ee3c277e39828317a86b144b17064e83e68baeebbe03ef",
"md5": "27dcb0768e71f12362b2503efa12d82c",
"sha256": "be30c89ebafe0a3a2997d6e544eb4718e109851cec1dc688098d1b6b02365f82"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "27dcb0768e71f12362b2503efa12d82c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 256609,
"upload_time": "2024-06-22T21:29:54",
"upload_time_iso_8601": "2024-06-22T21:29:54.524174Z",
"url": "https://files.pythonhosted.org/packages/7d/07/d2db53480e7cd6ee3c277e39828317a86b144b17064e83e68baeebbe03ef/fastmorph-1.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "237c7c1ba311ca779405b42c4b9fc8069e47367f87740135f6a52bea8c98ddf1",
"md5": "d14ef4c0b4e94ecd77e4cb96f4038ada",
"sha256": "74c30430338ed4701d9a1074d5200cc35efb18b29da10318a2e5a82aef5d9e3e"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d14ef4c0b4e94ecd77e4cb96f4038ada",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 211864,
"upload_time": "2024-06-22T21:29:56",
"upload_time_iso_8601": "2024-06-22T21:29:56.249174Z",
"url": "https://files.pythonhosted.org/packages/23/7c/7c1ba311ca779405b42c4b9fc8069e47367f87740135f6a52bea8c98ddf1/fastmorph-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3cd9a70dafcdf5834bba819c2260824f106dd06d9c2b048e0c996218b148bfc6",
"md5": "cb5a39924da717fdde5503fe889bd857",
"sha256": "06b630c0c3923decacec8139396da3c95caf5d8b0d52e1d2c35f36d0b1997368"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "cb5a39924da717fdde5503fe889bd857",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 161859,
"upload_time": "2024-06-22T21:29:57",
"upload_time_iso_8601": "2024-06-22T21:29:57.774874Z",
"url": "https://files.pythonhosted.org/packages/3c/d9/a70dafcdf5834bba819c2260824f106dd06d9c2b048e0c996218b148bfc6/fastmorph-1.2.0-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "75c34b186bfabcddd2380e5557679c5c7cf6693a7d5ff47820613e567a61f090",
"md5": "1a6519ed35d1228947221c54d414e1ec",
"sha256": "705006f225409849ff99620689de641049622e265d963551ce3ce2b3dd37eaa5"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "1a6519ed35d1228947221c54d414e1ec",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8.0",
"size": 137306,
"upload_time": "2024-06-22T21:29:59",
"upload_time_iso_8601": "2024-06-22T21:29:59.407013Z",
"url": "https://files.pythonhosted.org/packages/75/c3/4b186bfabcddd2380e5557679c5c7cf6693a7d5ff47820613e567a61f090/fastmorph-1.2.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "973c292f0617e862c1a48376dc1395d7e6cf8d289a19930f45d50efe9177d09c",
"md5": "2abf00a478a84cb4268abf23fd2aedf4",
"sha256": "f2c572a7982b577f53b30871aa04107f9f77036903da8ed8cbfb782eab661c4c"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "2abf00a478a84cb4268abf23fd2aedf4",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 203338,
"upload_time": "2024-06-22T21:30:00",
"upload_time_iso_8601": "2024-06-22T21:30:00.721206Z",
"url": "https://files.pythonhosted.org/packages/97/3c/292f0617e862c1a48376dc1395d7e6cf8d289a19930f45d50efe9177d09c/fastmorph-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "62f552f0ee7ee349acd4de88db6b77b677cc56123b06761318714e2ea6a581ce",
"md5": "c8d942079b11af914f0d36fdaa24db44",
"sha256": "5219a1162c19738457130bba99299715d2bb4dc05200964b1586515af78314e0"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c8d942079b11af914f0d36fdaa24db44",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 167032,
"upload_time": "2024-06-22T21:30:02",
"upload_time_iso_8601": "2024-06-22T21:30:02.796489Z",
"url": "https://files.pythonhosted.org/packages/62/f5/52f0ee7ee349acd4de88db6b77b677cc56123b06761318714e2ea6a581ce/fastmorph-1.2.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "12cdb483590d836d28e91c2fd1faa47e39044f6efeee0b9f72d552243ca0104f",
"md5": "d17d44a951d451bb699eb6ae348ab353",
"sha256": "f7527517a2ae22f70d8a3ef8f6593338d6b879e4b7d4a898b6bc0e95dbf66972"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "d17d44a951d451bb699eb6ae348ab353",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 202485,
"upload_time": "2024-06-22T21:30:04",
"upload_time_iso_8601": "2024-06-22T21:30:04.026466Z",
"url": "https://files.pythonhosted.org/packages/12/cd/b483590d836d28e91c2fd1faa47e39044f6efeee0b9f72d552243ca0104f/fastmorph-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4e451c502108bbeb7616521df86de57b004b3774a0921433ce0ba1f2945827bc",
"md5": "c39c0a8bd45a33fd63ea019a4cd90c87",
"sha256": "5df749c186dddc0e76dd8456d471bfafa1b3f81caaba33292e78a26601230e45"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "c39c0a8bd45a33fd63ea019a4cd90c87",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 211282,
"upload_time": "2024-06-22T21:30:05",
"upload_time_iso_8601": "2024-06-22T21:30:05.872288Z",
"url": "https://files.pythonhosted.org/packages/4e/45/1c502108bbeb7616521df86de57b004b3774a0921433ce0ba1f2945827bc/fastmorph-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6ee2e76e50c2baf39a599ef6e931dbbff6d9502c71b4f5e27b2652d64b3cdef5",
"md5": "5adf042256f62352b99cc576068cf8a9",
"sha256": "8b8f98d3e8e10d86485b948da9aa3c7d963582ab059fc7009c7ffb73edceb223"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "5adf042256f62352b99cc576068cf8a9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 162758,
"upload_time": "2024-06-22T21:30:07",
"upload_time_iso_8601": "2024-06-22T21:30:07.573086Z",
"url": "https://files.pythonhosted.org/packages/6e/e2/e76e50c2baf39a599ef6e931dbbff6d9502c71b4f5e27b2652d64b3cdef5/fastmorph-1.2.0-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0902b40c3f84e225c506ec064be4f4549c5899fc23292ff3c29fb1712cf8e515",
"md5": "f604e47e6d04af34b1c8e77051d7013f",
"sha256": "978d4388c9685721bc3e95c012d81f9376506a61b7810958d2a592e38122b838"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "f604e47e6d04af34b1c8e77051d7013f",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8.0",
"size": 137821,
"upload_time": "2024-06-22T21:30:08",
"upload_time_iso_8601": "2024-06-22T21:30:08.722337Z",
"url": "https://files.pythonhosted.org/packages/09/02/b40c3f84e225c506ec064be4f4549c5899fc23292ff3c29fb1712cf8e515/fastmorph-1.2.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e595fe6928c3dc47aa5aecd393f2d266739e0bf944f0c3b5d27ebfbcf188bef0",
"md5": "6b29cceb185af0c2faf8347f961e92e8",
"sha256": "b942ab3c12ce062e643245ec4b52121892ff6af6cd53f20d53ea9bbaf08bc36d"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "6b29cceb185af0c2faf8347f961e92e8",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 203252,
"upload_time": "2024-06-22T21:30:10",
"upload_time_iso_8601": "2024-06-22T21:30:10.478579Z",
"url": "https://files.pythonhosted.org/packages/e5/95/fe6928c3dc47aa5aecd393f2d266739e0bf944f0c3b5d27ebfbcf188bef0/fastmorph-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "333703574bb6dcd11c8f0549b27303b90e6ad780825741909495f303ebd6ad29",
"md5": "e8e248dcdcc126f6cb6bb07ac1d1203c",
"sha256": "a84f52d9947929cabc0a89951f0282676dce8e9138a4d9d90aff3d5a04f8065f"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp38-cp38-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "e8e248dcdcc126f6cb6bb07ac1d1203c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 167038,
"upload_time": "2024-06-22T21:30:11",
"upload_time_iso_8601": "2024-06-22T21:30:11.650741Z",
"url": "https://files.pythonhosted.org/packages/33/37/03574bb6dcd11c8f0549b27303b90e6ad780825741909495f303ebd6ad29/fastmorph-1.2.0-cp38-cp38-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c2a9c8d4ff31bf6fe91b28b82fc2ffeac5bf0004734e7925114435f4a38e72fe",
"md5": "da859099e680e30a5ffd775ca01c6d3c",
"sha256": "e29f273e246eaeff7d8f884d68e553a3c02072c6b5627643c1d2ebf602fba490"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "da859099e680e30a5ffd775ca01c6d3c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 202212,
"upload_time": "2024-06-22T21:30:12",
"upload_time_iso_8601": "2024-06-22T21:30:12.828237Z",
"url": "https://files.pythonhosted.org/packages/c2/a9/c8d4ff31bf6fe91b28b82fc2ffeac5bf0004734e7925114435f4a38e72fe/fastmorph-1.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "127b2d75d428e2020ce39139abad984cb47016f1fb232dd591e905ec33efd3a6",
"md5": "e8fdad10bd9213a0760e21516ab152b7",
"sha256": "31d32b1efc56859d54af74935ff5ef3cea953c4f1bd8608359532c0743c84a75"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "e8fdad10bd9213a0760e21516ab152b7",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 253600,
"upload_time": "2024-06-22T21:30:14",
"upload_time_iso_8601": "2024-06-22T21:30:14.205105Z",
"url": "https://files.pythonhosted.org/packages/12/7b/2d75d428e2020ce39139abad984cb47016f1fb232dd591e905ec33efd3a6/fastmorph-1.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c31aa6b1d3e7cbba2e5c90f839db00287bde6bc3f2c4d0bbd42f8ff3f7da4287",
"md5": "b64b3559f48ecaad26d39d7fee784863",
"sha256": "8b0940b915b21d4ae7d4de368d0b2571cf1b09b3b54bed10a887a1e567fa6bea"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "b64b3559f48ecaad26d39d7fee784863",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 211658,
"upload_time": "2024-06-22T21:30:15",
"upload_time_iso_8601": "2024-06-22T21:30:15.556267Z",
"url": "https://files.pythonhosted.org/packages/c3/1a/a6b1d3e7cbba2e5c90f839db00287bde6bc3f2c4d0bbd42f8ff3f7da4287/fastmorph-1.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "79d753be6dfa290b5315a58a54f3914639867c8249ed124feaf62e6c602b511b",
"md5": "369f0cc1a88564d3e031afed888c3e6d",
"sha256": "dd4b25f61c103a51138d63dc199c27396b9b829c383a8552c41434e302475d73"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "369f0cc1a88564d3e031afed888c3e6d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 161022,
"upload_time": "2024-06-22T21:30:17",
"upload_time_iso_8601": "2024-06-22T21:30:17.401320Z",
"url": "https://files.pythonhosted.org/packages/79/d7/53be6dfa290b5315a58a54f3914639867c8249ed124feaf62e6c602b511b/fastmorph-1.2.0-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "356e744f8f86a5e0f6cd2620c8e208f9dd713a8db41c32e30087909779b4d56d",
"md5": "55c8c207af4f30cf1867104a7a8083ec",
"sha256": "85ddda5bc30bdc28f567768c7a5282d5e9a8e41d1a096239e9afbb3a0731495d"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "55c8c207af4f30cf1867104a7a8083ec",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8.0",
"size": 136702,
"upload_time": "2024-06-22T21:30:18",
"upload_time_iso_8601": "2024-06-22T21:30:18.459669Z",
"url": "https://files.pythonhosted.org/packages/35/6e/744f8f86a5e0f6cd2620c8e208f9dd713a8db41c32e30087909779b4d56d/fastmorph-1.2.0-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "57a098d91bb5760f1719fabc2876eda90a06779e4ffcca63c4ca0aa9ef4773fd",
"md5": "03a11981b0e078b4da1d26b40e597b1f",
"sha256": "8c6697fcd52bda71555de20c7aece3caad07d36a81fb740317cc839369d650d7"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "03a11981b0e078b4da1d26b40e597b1f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 203514,
"upload_time": "2024-06-22T21:30:19",
"upload_time_iso_8601": "2024-06-22T21:30:19.518572Z",
"url": "https://files.pythonhosted.org/packages/57/a0/98d91bb5760f1719fabc2876eda90a06779e4ffcca63c4ca0aa9ef4773fd/fastmorph-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3c6c0fe674843ab580c95298c74215e3216158a8245e9bca96e7b04d952503ab",
"md5": "0ba78ba685ab09e49d16f14ba7e22dbc",
"sha256": "48067b89c5ccc6647697edf90f0616e697255fbc20c46a8f2068afddc724aae2"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "0ba78ba685ab09e49d16f14ba7e22dbc",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 167338,
"upload_time": "2024-06-22T21:30:20",
"upload_time_iso_8601": "2024-06-22T21:30:20.658897Z",
"url": "https://files.pythonhosted.org/packages/3c/6c/0fe674843ab580c95298c74215e3216158a8245e9bca96e7b04d952503ab/fastmorph-1.2.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b0597498a8fc95018793eab8d2dc3bb64d100316d32edf3dd44c832b5da329f1",
"md5": "fad6a01d48d348da26b877c64a560aca",
"sha256": "302a31da9f9d6a8623c001f0ab354c7a33c5f2d1281206aa3de85e003e75fa6a"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "fad6a01d48d348da26b877c64a560aca",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 202005,
"upload_time": "2024-06-22T21:30:21",
"upload_time_iso_8601": "2024-06-22T21:30:21.739431Z",
"url": "https://files.pythonhosted.org/packages/b0/59/7498a8fc95018793eab8d2dc3bb64d100316d32edf3dd44c832b5da329f1/fastmorph-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c9b0aaf4c7752bf6cc6220d7e91f4fa556d1ac1f8c7d39a1913912c72d7466a5",
"md5": "f72d1aa348661818bdf7854a0ea4e8ea",
"sha256": "71027c4dd4f8e7063b678bda1b4fe6e31c1fba5b722de70987c5aee2080c2882"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "f72d1aa348661818bdf7854a0ea4e8ea",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 254313,
"upload_time": "2024-06-22T21:30:22",
"upload_time_iso_8601": "2024-06-22T21:30:22.912454Z",
"url": "https://files.pythonhosted.org/packages/c9/b0/aaf4c7752bf6cc6220d7e91f4fa556d1ac1f8c7d39a1913912c72d7466a5/fastmorph-1.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c8438b17eb7e2fdce2ed4605f190a092905c3756a30da6c5eac385ff0dd1b703",
"md5": "a373837a9f5a690397811f550e494750",
"sha256": "5ebf693a8afd4f557d1370fe20eefe6c19adfce101b4298f10eceba4977bb545"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "a373837a9f5a690397811f550e494750",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 212082,
"upload_time": "2024-06-22T21:30:24",
"upload_time_iso_8601": "2024-06-22T21:30:24.832813Z",
"url": "https://files.pythonhosted.org/packages/c8/43/8b17eb7e2fdce2ed4605f190a092905c3756a30da6c5eac385ff0dd1b703/fastmorph-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2911d33e8b9b6af1dd66349e438c5954823211c3efe464747814bd2079cf9afd",
"md5": "04947a5f939ef8dff9d35292c1ed7348",
"sha256": "96701a503897fbd42eb4ece0a71ce62e65a63282679409855ddaddf1cc21b4ec"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "04947a5f939ef8dff9d35292c1ed7348",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 161131,
"upload_time": "2024-06-22T21:30:27",
"upload_time_iso_8601": "2024-06-22T21:30:27.088553Z",
"url": "https://files.pythonhosted.org/packages/29/11/d33e8b9b6af1dd66349e438c5954823211c3efe464747814bd2079cf9afd/fastmorph-1.2.0-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "62c1346820c525f860e669629236d7553740f4164b52db49468e9b779ec17f04",
"md5": "2ef369a53f2d6f2d71f9becc5447bf30",
"sha256": "7b19539ee2b4976d71c74cfbb66b92b7d2f1c41819d0760e777506c730824d06"
},
"downloads": -1,
"filename": "fastmorph-1.2.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "2ef369a53f2d6f2d71f9becc5447bf30",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8.0",
"size": 136515,
"upload_time": "2024-06-22T21:30:28",
"upload_time_iso_8601": "2024-06-22T21:30:28.183885Z",
"url": "https://files.pythonhosted.org/packages/62/c1/346820c525f860e669629236d7553740f4164b52db49468e9b779ec17f04/fastmorph-1.2.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "165daeb14920da3bb5e5bfc38a43c136d7c60a70d6c42c77a35a51f6e6623f7e",
"md5": "7d235dc7bb64bc63ddb2d47d15c6636f",
"sha256": "09e1bd3a8cd49bb5853c9d0e8bd3bf68301bf9dadab7f488f9efc1cf63d8e783"
},
"downloads": -1,
"filename": "fastmorph-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "7d235dc7bb64bc63ddb2d47d15c6636f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8.0",
"size": 26427,
"upload_time": "2024-06-22T21:30:29",
"upload_time_iso_8601": "2024-06-22T21:30:29.372541Z",
"url": "https://files.pythonhosted.org/packages/16/5d/aeb14920da3bb5e5bfc38a43c136d7c60a70d6c42c77a35a51f6e6623f7e/fastmorph-1.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-22 21:30:29",
"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"
}