automesh


Nameautomesh JSON
Version 0.1.2 PyPI version JSON
download
home_pagehttps://github.com/autotwin/automesh
Summaryautomesh
upload_time2024-07-03 22:14:39
maintainerNone
docs_urlNone
authorChad Brian Hovey, Michael R. Buche
requires_python<3.13,>=3.8
licenseMIT
keywords mesh
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # automesh

[![crates](https://img.shields.io/crates/v/automesh?logo=rust&logoColor=000000&label=Crates&color=32592f)](https://crates.io/crates/automesh)
[![pypi](https://img.shields.io/pypi/v/automesh?logo=pypi&logoColor=FBE072&label=PyPI&color=4B8BBE)](https://pypi.org/project/automesh)

Automatic mesh generation

## Introduction

The current Autotwin workflow has the following broad steps:

1. Medical imaging
2. Segmentation
3. Mesh generation
4. Simulation
5. Injury risk assessment

As of 2024-06-24, the workflow has demonstrated *automation*, the ability to complete part of the workflow without human interaction, on over 100 patient medical image data sets for both the **segmentation** and **mesh generation** steps. The **simulation** and **injury risk** assessment steps, however, remain as future work.

Since inception of this project, the production of an open-source software work product has been a cornerstone philosophy and aspiration. One part of the mesh generation step currently uses a closed-source, proprietary software service, which presents three limitations: (1) the software is not open-source, so at-large collaboration is unavailable, (2) void must be included as part of the mesh,[^void-inclusion] and (3) research-specific mesh experiments (e.g., Taubin smoothing, dual-space adaptivity) cannot be easily performed.

[^void-inclusion]: Void inclusion can unnecessarily bloat the model. For example, one recent proof-of-concept [exercise](https://github.com/autotwin/mesh/blob/main/doc/npy_to_mesh_part_3.md) using the IXI012-HH-1211-T1 data set showed that for a high-fidelity mesh created from segmented data, the void accounted for 2,389,783 elements (55%) of the total mesh 4,329,925 elements, with skull, cerebral spinal fluid, and brain, accounting for the remaining portions, 240,895 elements (6%), 448,654 elements (10%), and 1,250,593 elements (29%), respectively.

Elimination of the unnecessary void mesh is a top priority toward enhancement of mesh quality.  Additional mesh enchancement topics include smoothing and adaptivity.

Enhanced mesh quality can improve solver convergence rates, decrease overhead (memory footprint), and provide better overall geometric fidelity to the underlying human anatomy.

## Project Tasks

### Task 1: Solver Automation

*  **Mesh output decks**. Mesh outputs are solver inputs.  Mesh outputs must be automated to provide solver integration and automation for Sierra Solid Mechanics (SSM) in the Genesis/Exodus format, ABAQUS (.inp format), and Generic ASCII (e.g., .vtk), specific format to be determined.
*  **Solver input decks**.  Current solver runs have hard-coded and manual hand-tailored input decks.  This process must be rewritten and fully automated.

### Task 2: Injury-Risk Automation

* **Globalized measures**.  Current workflows (e.g., MPS, MPSR, 95th percentile cloud maps) will be rewritten to become standardized and flexible, enabling automation.
* **Localized measures**.  Current whole-brain visualization workflows will be formalized into repeatable and flexible software recipes, making manual “point-and-click” GUI steps unnecessary.

### Task 3: Open-Source Mesh Generation

* **Open-source**.  Reproduce Sculpt mesh generation functionality as an open-source software component.

### Task 4: Mesh Enhancements

* **Filtering**.  Process the mesh with high-frequency filtering (e.g., Taubin smoothing).
* **Adaptivity**.  Process the mesh to be adaptivity, refining in regions of interest and coarsening in regions where abundance of mesh resolution is unnecessary.

Reference: 2024-06-21-1218-EST-ONR-Statement-of-Work.pdf

## Specific next steps

A minimum working example (MWE) of the `letter F` model (see [https://github.com/autotwin/mesh/blob/main/doc/npy_to_mesh.md](https://github.com/autotwin/mesh/blob/main/doc/npy_to_mesh.md)) will be used as a unit test through the following specific next steps:

* Given:
  * Semantic segmentation (as a [`.spn`](https://github.com/autotwin/mesh/blob/main/tests/files/letter_f.spn) file)
  * Configuration recipe (as a [`.yml`](https://github.com/autotwin/mesh/blob/main/tests/files/letter_f_autotwin.yml) file)
* Create:
  * Rust command line application that outputs equivalent Sculpt outputs, without void as a mesh constituent, as
    * ABAQUS ascii mesh file (as a `.inp` file)
    * SSM-ready mesh file (as a `.e` file, Genesis/Exodus [NetCDF](https://www.unidata.ucar.edu/software/netcdf/) binary format)
    * ascii neutral mesh file (as a file type that is currently to be determined)
* Next steps:
  * Taubin smoothing (see [Taubin 1995](https://dl.acm.org/doi/pdf/10.1145/218380.218473) and [Chen 2010](https://link.springer.com/content/pdf/10.1007/s00707-009-0274-0.pdf))
  * Dualization


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/autotwin/automesh",
    "name": "automesh",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.13,>=3.8",
    "maintainer_email": null,
    "keywords": "mesh",
    "author": "Chad Brian Hovey, Michael R. Buche",
    "author_email": "chovey@sandia.gov, mrbuche@sandia.gov",
    "download_url": null,
    "platform": null,
    "description": "# automesh\n\n[![crates](https://img.shields.io/crates/v/automesh?logo=rust&logoColor=000000&label=Crates&color=32592f)](https://crates.io/crates/automesh)\n[![pypi](https://img.shields.io/pypi/v/automesh?logo=pypi&logoColor=FBE072&label=PyPI&color=4B8BBE)](https://pypi.org/project/automesh)\n\nAutomatic mesh generation\n\n## Introduction\n\nThe current Autotwin workflow has the following broad steps:\n\n1. Medical imaging\n2. Segmentation\n3. Mesh generation\n4. Simulation\n5. Injury risk assessment\n\nAs of 2024-06-24, the workflow has demonstrated *automation*, the ability to complete part of the workflow without human interaction, on over 100 patient medical image data sets for both the **segmentation** and **mesh generation** steps. The **simulation** and **injury risk** assessment steps, however, remain as future work.\n\nSince inception of this project, the production of an open-source software work product has been a cornerstone philosophy and aspiration. One part of the mesh generation step currently uses a closed-source, proprietary software service, which presents three limitations: (1) the software is not open-source, so at-large collaboration is unavailable, (2) void must be included as part of the mesh,[^void-inclusion] and (3) research-specific mesh experiments (e.g., Taubin smoothing, dual-space adaptivity) cannot be easily performed.\n\n[^void-inclusion]: Void inclusion can unnecessarily bloat the model. For example, one recent proof-of-concept [exercise](https://github.com/autotwin/mesh/blob/main/doc/npy_to_mesh_part_3.md) using the IXI012-HH-1211-T1 data set showed that for a high-fidelity mesh created from segmented data, the void accounted for 2,389,783 elements (55%) of the total mesh 4,329,925 elements, with skull, cerebral spinal fluid, and brain, accounting for the remaining portions, 240,895 elements (6%), 448,654 elements (10%), and 1,250,593 elements (29%), respectively.\n\nElimination of the unnecessary void mesh is a top priority toward enhancement of mesh quality.  Additional mesh enchancement topics include smoothing and adaptivity.\n\nEnhanced mesh quality can improve solver convergence rates, decrease overhead (memory footprint), and provide better overall geometric fidelity to the underlying human anatomy.\n\n## Project Tasks\n\n### Task 1: Solver Automation\n\n*  **Mesh output decks**. Mesh outputs are solver inputs.  Mesh outputs must be automated to provide solver integration and automation for Sierra Solid Mechanics (SSM) in the Genesis/Exodus format, ABAQUS (.inp format), and Generic ASCII (e.g., .vtk), specific format to be determined.\n*  **Solver input decks**.  Current solver runs have hard-coded and manual hand-tailored input decks.  This process must be rewritten and fully automated.\n\n### Task 2: Injury-Risk Automation\n\n* **Globalized measures**.  Current workflows (e.g., MPS, MPSR, 95th percentile cloud maps) will be rewritten to become standardized and flexible, enabling automation.\n* **Localized measures**.  Current whole-brain visualization workflows will be formalized into repeatable and flexible software recipes, making manual \u201cpoint-and-click\u201d GUI steps unnecessary.\n\n### Task 3: Open-Source Mesh Generation\n\n* **Open-source**.  Reproduce Sculpt mesh generation functionality as an open-source software component.\n\n### Task 4: Mesh Enhancements\n\n* **Filtering**.  Process the mesh with high-frequency filtering (e.g., Taubin smoothing).\n* **Adaptivity**.  Process the mesh to be adaptivity, refining in regions of interest and coarsening in regions where abundance of mesh resolution is unnecessary.\n\nReference: 2024-06-21-1218-EST-ONR-Statement-of-Work.pdf\n\n## Specific next steps\n\nA minimum working example (MWE) of the `letter F` model (see [https://github.com/autotwin/mesh/blob/main/doc/npy_to_mesh.md](https://github.com/autotwin/mesh/blob/main/doc/npy_to_mesh.md)) will be used as a unit test through the following specific next steps:\n\n* Given:\n  * Semantic segmentation (as a [`.spn`](https://github.com/autotwin/mesh/blob/main/tests/files/letter_f.spn) file)\n  * Configuration recipe (as a [`.yml`](https://github.com/autotwin/mesh/blob/main/tests/files/letter_f_autotwin.yml) file)\n* Create:\n  * Rust command line application that outputs equivalent Sculpt outputs, without void as a mesh constituent, as\n    * ABAQUS ascii mesh file (as a `.inp` file)\n    * SSM-ready mesh file (as a `.e` file, Genesis/Exodus [NetCDF](https://www.unidata.ucar.edu/software/netcdf/) binary format)\n    * ascii neutral mesh file (as a file type that is currently to be determined)\n* Next steps:\n  * Taubin smoothing (see [Taubin 1995](https://dl.acm.org/doi/pdf/10.1145/218380.218473) and [Chen 2010](https://link.springer.com/content/pdf/10.1007/s00707-009-0274-0.pdf))\n  * Dualization\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "automesh",
    "version": "0.1.2",
    "project_urls": {
        "Documentation": "https://github.com/autotwin/automesh",
        "Homepage": "https://github.com/autotwin/automesh",
        "Repository": "https://github.com/autotwin/automesh"
    },
    "split_keywords": [
        "mesh"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ae61af7713aa15f3c5489dbafda5deabd7b7bc6fa3749840a4c57114c382b585",
                "md5": "829941893f2bb8a174d47bb5d8d8d037",
                "sha256": "492fba9c812d88ffbcf4c5b1d2d7ef3c7015f0d22ced6229537b530e58b13c48"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "829941893f2bb8a174d47bb5d8d8d037",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<3.13,>=3.8",
            "size": 224286,
            "upload_time": "2024-07-03T22:14:39",
            "upload_time_iso_8601": "2024-07-03T22:14:39.432342Z",
            "url": "https://files.pythonhosted.org/packages/ae/61/af7713aa15f3c5489dbafda5deabd7b7bc6fa3749840a4c57114c382b585/automesh-0.1.2-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b5ac6d0102a9713aa762f4711ac9ca727666eeadf82e95c2cb6ba9ae548268f5",
                "md5": "d3426b23ddcc84067cb2b578e05aa9ff",
                "sha256": "09178a0eb6710be94d80feeb0c753efd1f1f5d53a8c8097528664cbc64012259"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp310-cp310-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d3426b23ddcc84067cb2b578e05aa9ff",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<3.13,>=3.8",
            "size": 256445,
            "upload_time": "2024-07-03T22:14:41",
            "upload_time_iso_8601": "2024-07-03T22:14:41.415933Z",
            "url": "https://files.pythonhosted.org/packages/b5/ac/6d0102a9713aa762f4711ac9ca727666eeadf82e95c2cb6ba9ae548268f5/automesh-0.1.2-cp310-cp310-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "acfcb2d041469596a26d934991f5b542b78fab16a4ab9cb5c7be3bdbdd164f61",
                "md5": "3fe0e1cdf8434adb7f8ebf0fa09fa29d",
                "sha256": "0720b19d994759c18522b30a18037706550dbf0556cff26fca32ac16f04d070b"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp310-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "3fe0e1cdf8434adb7f8ebf0fa09fa29d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<3.13,>=3.8",
            "size": 136025,
            "upload_time": "2024-07-03T22:14:42",
            "upload_time_iso_8601": "2024-07-03T22:14:42.981025Z",
            "url": "https://files.pythonhosted.org/packages/ac/fc/b2d041469596a26d934991f5b542b78fab16a4ab9cb5c7be3bdbdd164f61/automesh-0.1.2-cp310-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "013546a6baba5a74e6aa8ce189263ae3ccbbaaaf2199f37a7366c881e6112ce1",
                "md5": "c87ddbdeeea2cc4b06bab2db159b98ed",
                "sha256": "f1ac145f4d824aa25bb8897366fa481d6949463fb9639eeb988420e611b6934f"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "c87ddbdeeea2cc4b06bab2db159b98ed",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<3.13,>=3.8",
            "size": 224223,
            "upload_time": "2024-07-03T22:14:44",
            "upload_time_iso_8601": "2024-07-03T22:14:44.735786Z",
            "url": "https://files.pythonhosted.org/packages/01/35/46a6baba5a74e6aa8ce189263ae3ccbbaaaf2199f37a7366c881e6112ce1/automesh-0.1.2-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa36e60c076742991d6d532d82c6ee08cf83e828af5f77be69f7636e420f0356",
                "md5": "e6a56f8b1a165ee027247f36b61a00a4",
                "sha256": "f7f180873d6897e528cb65e075d55c9f6b12617552c2b6e07057d650ced998f7"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp311-cp311-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e6a56f8b1a165ee027247f36b61a00a4",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<3.13,>=3.8",
            "size": 256460,
            "upload_time": "2024-07-03T22:14:46",
            "upload_time_iso_8601": "2024-07-03T22:14:46.398141Z",
            "url": "https://files.pythonhosted.org/packages/aa/36/e60c076742991d6d532d82c6ee08cf83e828af5f77be69f7636e420f0356/automesh-0.1.2-cp311-cp311-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9d96050a27bcf46610f49fb20a9678ab978130797b57533af32fd506552c3df7",
                "md5": "e09529d2d8eb3b99e78529c68fb1ad20",
                "sha256": "7d198be5f87e14eb983771dabbb0a0117ffb871871035f98b00c7745f432a98e"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp311-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "e09529d2d8eb3b99e78529c68fb1ad20",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<3.13,>=3.8",
            "size": 135965,
            "upload_time": "2024-07-03T22:14:48",
            "upload_time_iso_8601": "2024-07-03T22:14:48.213347Z",
            "url": "https://files.pythonhosted.org/packages/9d/96/050a27bcf46610f49fb20a9678ab978130797b57533af32fd506552c3df7/automesh-0.1.2-cp311-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1d5c9b7af33d4ff54e95bc70b622b339b7350f255a4470e4b8bd8079b5e345a9",
                "md5": "e8da4076c026c89f78a35202a3b7417d",
                "sha256": "bc3f154d3db2a9e6ebaa296626a6b54efd6562a5f3b4b8f91107a1268fb47de7"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e8da4076c026c89f78a35202a3b7417d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<3.13,>=3.8",
            "size": 224213,
            "upload_time": "2024-07-03T22:14:49",
            "upload_time_iso_8601": "2024-07-03T22:14:49.785484Z",
            "url": "https://files.pythonhosted.org/packages/1d/5c/9b7af33d4ff54e95bc70b622b339b7350f255a4470e4b8bd8079b5e345a9/automesh-0.1.2-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4cb99bfcaee98fe50d9f354cc60c1fbf6a9f36b89ac99b314254737a18a46171",
                "md5": "32d0debfde1eff151c349325af695842",
                "sha256": "18d4a122964e37b8a2be7d69262d43e7c4c9858b80569d7a50445395e8d838ff"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp312-cp312-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "32d0debfde1eff151c349325af695842",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<3.13,>=3.8",
            "size": 256243,
            "upload_time": "2024-07-03T22:14:51",
            "upload_time_iso_8601": "2024-07-03T22:14:51.650757Z",
            "url": "https://files.pythonhosted.org/packages/4c/b9/9bfcaee98fe50d9f354cc60c1fbf6a9f36b89ac99b314254737a18a46171/automesh-0.1.2-cp312-cp312-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2b1a623da73dfa41e7b1f521650a4845deb91a4ca523f45823da4aad7557f9f3",
                "md5": "03976e9b96f82d1d045038b8a250c602",
                "sha256": "dfdd6610f1d96f9135794b648e5e90595af85191197963ab7e3b25104dfbff95"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp312-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "03976e9b96f82d1d045038b8a250c602",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<3.13,>=3.8",
            "size": 135758,
            "upload_time": "2024-07-03T22:14:53",
            "upload_time_iso_8601": "2024-07-03T22:14:53.149787Z",
            "url": "https://files.pythonhosted.org/packages/2b/1a/623da73dfa41e7b1f521650a4845deb91a4ca523f45823da4aad7557f9f3/automesh-0.1.2-cp312-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f45e839da83ebf40c0635f8c4ec7a305fa6d609d80b9230bc68decf697183a82",
                "md5": "1e76482303f0e9dd7b5c719592b77c6f",
                "sha256": "726c799a9a059bff404ef3e247e0f96eb762a4c1dde8cc8dfc94f4dde111cb44"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "1e76482303f0e9dd7b5c719592b77c6f",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": "<3.13,>=3.8",
            "size": 224411,
            "upload_time": "2024-07-03T22:14:54",
            "upload_time_iso_8601": "2024-07-03T22:14:54.294928Z",
            "url": "https://files.pythonhosted.org/packages/f4/5e/839da83ebf40c0635f8c4ec7a305fa6d609d80b9230bc68decf697183a82/automesh-0.1.2-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "de5dc95d0793b16cd64346e44eb18389766d01312acbbfca6d66f2ee2a534f9c",
                "md5": "6ae44ae4dc0aec57ede133e0363c6972",
                "sha256": "71e526a7bd6cad94a5fa07ae44ebc5e41f299eb092f1b9c9a81cd819a10929d7"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp38-cp38-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6ae44ae4dc0aec57ede133e0363c6972",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": "<3.13,>=3.8",
            "size": 256698,
            "upload_time": "2024-07-03T22:14:55",
            "upload_time_iso_8601": "2024-07-03T22:14:55.644489Z",
            "url": "https://files.pythonhosted.org/packages/de/5d/c95d0793b16cd64346e44eb18389766d01312acbbfca6d66f2ee2a534f9c/automesh-0.1.2-cp38-cp38-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4f7e1b6809cc4d47d51817fd8eb7dfead908a093253f2f3cf76c688e520588a5",
                "md5": "0e4004fd0013594f08ca7e6804db27f6",
                "sha256": "a4ef0a0c1b28617321783750721ddd61bbbc3baeb090a3e55f549f410f051e79"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp38-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0e4004fd0013594f08ca7e6804db27f6",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": "<3.13,>=3.8",
            "size": 135855,
            "upload_time": "2024-07-03T22:14:57",
            "upload_time_iso_8601": "2024-07-03T22:14:57.336401Z",
            "url": "https://files.pythonhosted.org/packages/4f/7e/1b6809cc4d47d51817fd8eb7dfead908a093253f2f3cf76c688e520588a5/automesh-0.1.2-cp38-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e464688cdc49ab1d75a2bf2a24cd67f83648809fb3e492d45df9acb098ddfdd7",
                "md5": "0151d17de097ea9bb12f0e2e70ad77b3",
                "sha256": "2982c22797204cc95df48cdb267acde05c0ab83a9c4ec7b6607b7f5ab0bc5f8b"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "0151d17de097ea9bb12f0e2e70ad77b3",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": "<3.13,>=3.8",
            "size": 224518,
            "upload_time": "2024-07-03T22:14:59",
            "upload_time_iso_8601": "2024-07-03T22:14:59.000154Z",
            "url": "https://files.pythonhosted.org/packages/e4/64/688cdc49ab1d75a2bf2a24cd67f83648809fb3e492d45df9acb098ddfdd7/automesh-0.1.2-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "15fd54aebc76fef040848a87b466b2073a775e959fd315d3c7664feeec49fc06",
                "md5": "ef5c0617f2fb8f7d03338b571f5b896f",
                "sha256": "fb9dee2086100137492021c507a95076a7ead3311163d435c8318645fea33be4"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp39-cp39-manylinux_2_34_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ef5c0617f2fb8f7d03338b571f5b896f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": "<3.13,>=3.8",
            "size": 256807,
            "upload_time": "2024-07-03T22:15:00",
            "upload_time_iso_8601": "2024-07-03T22:15:00.730199Z",
            "url": "https://files.pythonhosted.org/packages/15/fd/54aebc76fef040848a87b466b2073a775e959fd315d3c7664feeec49fc06/automesh-0.1.2-cp39-cp39-manylinux_2_34_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "394999b03a04543af9acf8a31cf20167eb2c4672c607c036200f336476382c43",
                "md5": "98134b0d5173b7f8a48a757d13fd9390",
                "sha256": "b3de097a8e762b0d482fc4934103348d15f651f0cd2543323693757c2e348368"
            },
            "downloads": -1,
            "filename": "automesh-0.1.2-cp39-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "98134b0d5173b7f8a48a757d13fd9390",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": "<3.13,>=3.8",
            "size": 136171,
            "upload_time": "2024-07-03T22:15:02",
            "upload_time_iso_8601": "2024-07-03T22:15:02.614917Z",
            "url": "https://files.pythonhosted.org/packages/39/49/99b03a04543af9acf8a31cf20167eb2c4672c607c036200f336476382c43/automesh-0.1.2-cp39-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-07-03 22:14:39",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "autotwin",
    "github_project": "automesh",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "automesh"
}
        
Elapsed time: 0.23638s