pymeshfix


Namepymeshfix JSON
Version 0.17.0 PyPI version JSON
download
home_pagehttps://github.com/pyvista/pymeshfix
SummaryRepair triangular meshes using MeshFix
upload_time2024-06-21 18:10:22
maintainerNone
docs_urlNone
authorPyVista Developers
requires_python>=3.9
licenseGPLv3
keywords meshfix
VCS
bugtrack_url
requirements pyvista Sphinx sphinx-autobuild sphinx-rtd-theme sphinxcontrib-napoleon sphinxcontrib-websupport doctr sphinx-copybutton sphinx-gallery sphinx-notfound-page
Travis-CI No Travis.
coveralls test coverage No coveralls.
            PyMeshFix
=========

.. |azure| image:: https://dev.azure.com/pyvista/PyVista/_apis/build/status/pyvista.pymeshfix?branchName=master
   :target: https://dev.azure.com/pyvista/PyVista/_build?definitionId=5

.. |pypi| image:: https://img.shields.io/pypi/v/pymeshfix.svg?logo=python&logoColor=white
   :target: https://pypi.org/project/pymeshfix/

Python/Cython wrapper of Marco Attene's wonderful, award-winning
`MeshFix <https://github.com/MarcoAttene/MeshFix-V2.1>`__ software.
This module brings the speed of C++ with the portability and ease of
installation of Python.

This software takes as input a polygon mesh and produces a copy of the input
where all the occurrences of a specific set of "defects" are corrected.
MeshFix has been designed to correct typical flaws present in raw digitized
mesh models, thus it might fail or produce coarse results
if run on other sorts of input meshes (e.g. tessellated CAD models).

The input is assumed to represent a single closed solid object, thus the output
will be a single watertight triangle mesh bounding a polyhedron.
All the singularities, self-intersections and degenerate elements are removed
from the input, while regions of the surface without defects are left
unmodified.

C++ source last updated 1 Jul 2020

Installation
------------

From `PyPI <https://pypi.python.org/pypi/pymeshfix>`__

.. code:: bash

    pip install pymeshfix

From source at `GitHub <https://github.com/pyvista/pymeshfix>`__

.. code:: bash

    git clone https://github.com/pyvista/pymeshfix
    cd pymeshfix
    pip install .


Dependencies
------------
Requires ``numpy`` and ``pyvista``

If you can't or don't want to install vtk, you can install it without
``pyvista`` with:

.. code:: bash

    pip install pymeshfix --no-dependencies

You'll miss out on some of the cool features from ``pyvista``, but it will still function.


Examples
--------
Test installation with the following from Python:

.. code:: python

    from pymeshfix import examples

    # Test of pymeshfix without VTK module
    examples.native()

    # Performs same mesh repair while leveraging VTK's plotting/mesh loading
    examples.with_vtk()


Easy Example
------------
This example uses the Cython wrapper directly. No bells or whistles here:

.. code:: python

    import pymeshfix

    # Read mesh from infile and output cleaned mesh to outfile
    pymeshfix.clean_from_file(infile, outfile)


This example assumes the user has vertex and faces arrays in Python.

.. code:: python

    import pymeshfix

    # Generate vertex and face arrays of cleaned mesh
    # where v and f are numpy arrays
    vclean, fclean = pymeshfix.clean_from_arrays(v, f)


Complete Examples with and without VTK
--------------------------------------
One of the main reasons to bring MeshFix to Python is to allow the
library to communicate to other python programs without having to use
the hard drive.  Therefore, this example assumes that you have a mesh
within memory and wish to repair it using MeshFix.

.. code:: python

    import pymeshfix

    # Create object from vertex and face arrays
    meshfix = pymeshfix.MeshFix(v, f)

    # Plot input
    meshfix.plot()

    # Repair input mesh
    meshfix.repair()

    # Access the repaired mesh with vtk
    mesh = meshfix.mesh

    # Or, access the resulting arrays directly from the object
    meshfix.v # numpy np.float64 array
    meshfix.f # numpy np.int32 array

    # View the repaired mesh (requires vtkInterface)
    meshfix.plot()

    # Save the mesh
    meshfix.write('out.ply')

Alternatively, the user could use the Cython wrapper of MeshFix directly if
vtk is unavailable or they wish to have more control over the cleaning
algorithm.

.. code:: python

    import pymeshfix

    # Create TMesh object
    tin = pymeshfix.PyTMesh()

    tin.LoadFile(infile)
    # tin.load_array(v, f) # or read arrays from memory

    # Attempt to join nearby components
    # tin.join_closest_components()

    # Fill holes
    tin.fill_small_boundaries()
    print('There are {:d} boundaries'.format(tin.boundaries()))

    # Clean (removes self intersections)
    tin.clean(max_iters=10, inner_loops=3)

    # Check mesh for holes again
    print('There are {:d} boundaries'.format(tin.boundaries()))

    # Clean again if necessary...

    # Output mesh
    tin.save_file(outfile)

     # or return numpy arrays
    vclean, fclean = tin.return_arrays()


Algorithm and Citation Policy
-----------------------------

To better understand how the algorithm works, please refer to the following
paper:

    M. Attene. A lightweight approach to repairing digitized polygon meshes.
    The Visual Computer, 2010. (c) Springer. DOI: 10.1007/s00371-010-0416-3

This software is based on ideas published therein. If you use MeshFix for
research purposes you should cite the above paper in your published results.
MeshFix cannot be used for commercial purposes without a proper licensing
contract.


Copyright
---------

MeshFix is Copyright(C) 2010: IMATI-GE / CNR

All rights reserved.

This program is dual-licensed as follows:

(1) You may use MeshFix as free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option) any
later version.

In this case the program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
(http://www.gnu.org/licenses/gpl.txt) for more details.

(2) You may use MeshFix as part of a commercial software. In this case a proper
agreement must be reached with the Authors and with IMATI-GE/CNR based on a
proper licensing contract.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pyvista/pymeshfix",
    "name": "pymeshfix",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "meshfix",
    "author": "PyVista Developers",
    "author_email": "info@pyvista.org",
    "download_url": "https://files.pythonhosted.org/packages/f5/13/85fd4145af2e1e9c03194512309e0a631afc826396b11860c831171a37e0/pymeshfix-0.17.0.tar.gz",
    "platform": null,
    "description": "PyMeshFix\n=========\n\n.. |azure| image:: https://dev.azure.com/pyvista/PyVista/_apis/build/status/pyvista.pymeshfix?branchName=master\n   :target: https://dev.azure.com/pyvista/PyVista/_build?definitionId=5\n\n.. |pypi| image:: https://img.shields.io/pypi/v/pymeshfix.svg?logo=python&logoColor=white\n   :target: https://pypi.org/project/pymeshfix/\n\nPython/Cython wrapper of Marco Attene's wonderful, award-winning\n`MeshFix <https://github.com/MarcoAttene/MeshFix-V2.1>`__ software.\nThis module brings the speed of C++ with the portability and ease of\ninstallation of Python.\n\nThis software takes as input a polygon mesh and produces a copy of the input\nwhere all the occurrences of a specific set of \"defects\" are corrected.\nMeshFix has been designed to correct typical flaws present in raw digitized\nmesh models, thus it might fail or produce coarse results\nif run on other sorts of input meshes (e.g. tessellated CAD models).\n\nThe input is assumed to represent a single closed solid object, thus the output\nwill be a single watertight triangle mesh bounding a polyhedron.\nAll the singularities, self-intersections and degenerate elements are removed\nfrom the input, while regions of the surface without defects are left\nunmodified.\n\nC++ source last updated 1 Jul 2020\n\nInstallation\n------------\n\nFrom `PyPI <https://pypi.python.org/pypi/pymeshfix>`__\n\n.. code:: bash\n\n    pip install pymeshfix\n\nFrom source at `GitHub <https://github.com/pyvista/pymeshfix>`__\n\n.. code:: bash\n\n    git clone https://github.com/pyvista/pymeshfix\n    cd pymeshfix\n    pip install .\n\n\nDependencies\n------------\nRequires ``numpy`` and ``pyvista``\n\nIf you can't or don't want to install vtk, you can install it without\n``pyvista`` with:\n\n.. code:: bash\n\n    pip install pymeshfix --no-dependencies\n\nYou'll miss out on some of the cool features from ``pyvista``, but it will still function.\n\n\nExamples\n--------\nTest installation with the following from Python:\n\n.. code:: python\n\n    from pymeshfix import examples\n\n    # Test of pymeshfix without VTK module\n    examples.native()\n\n    # Performs same mesh repair while leveraging VTK's plotting/mesh loading\n    examples.with_vtk()\n\n\nEasy Example\n------------\nThis example uses the Cython wrapper directly. No bells or whistles here:\n\n.. code:: python\n\n    import pymeshfix\n\n    # Read mesh from infile and output cleaned mesh to outfile\n    pymeshfix.clean_from_file(infile, outfile)\n\n\nThis example assumes the user has vertex and faces arrays in Python.\n\n.. code:: python\n\n    import pymeshfix\n\n    # Generate vertex and face arrays of cleaned mesh\n    # where v and f are numpy arrays\n    vclean, fclean = pymeshfix.clean_from_arrays(v, f)\n\n\nComplete Examples with and without VTK\n--------------------------------------\nOne of the main reasons to bring MeshFix to Python is to allow the\nlibrary to communicate to other python programs without having to use\nthe hard drive.  Therefore, this example assumes that you have a mesh\nwithin memory and wish to repair it using MeshFix.\n\n.. code:: python\n\n    import pymeshfix\n\n    # Create object from vertex and face arrays\n    meshfix = pymeshfix.MeshFix(v, f)\n\n    # Plot input\n    meshfix.plot()\n\n    # Repair input mesh\n    meshfix.repair()\n\n    # Access the repaired mesh with vtk\n    mesh = meshfix.mesh\n\n    # Or, access the resulting arrays directly from the object\n    meshfix.v # numpy np.float64 array\n    meshfix.f # numpy np.int32 array\n\n    # View the repaired mesh (requires vtkInterface)\n    meshfix.plot()\n\n    # Save the mesh\n    meshfix.write('out.ply')\n\nAlternatively, the user could use the Cython wrapper of MeshFix directly if\nvtk is unavailable or they wish to have more control over the cleaning\nalgorithm.\n\n.. code:: python\n\n    import pymeshfix\n\n    # Create TMesh object\n    tin = pymeshfix.PyTMesh()\n\n    tin.LoadFile(infile)\n    # tin.load_array(v, f) # or read arrays from memory\n\n    # Attempt to join nearby components\n    # tin.join_closest_components()\n\n    # Fill holes\n    tin.fill_small_boundaries()\n    print('There are {:d} boundaries'.format(tin.boundaries()))\n\n    # Clean (removes self intersections)\n    tin.clean(max_iters=10, inner_loops=3)\n\n    # Check mesh for holes again\n    print('There are {:d} boundaries'.format(tin.boundaries()))\n\n    # Clean again if necessary...\n\n    # Output mesh\n    tin.save_file(outfile)\n\n     # or return numpy arrays\n    vclean, fclean = tin.return_arrays()\n\n\nAlgorithm and Citation Policy\n-----------------------------\n\nTo better understand how the algorithm works, please refer to the following\npaper:\n\n    M. Attene. A lightweight approach to repairing digitized polygon meshes.\n    The Visual Computer, 2010. (c) Springer. DOI: 10.1007/s00371-010-0416-3\n\nThis software is based on ideas published therein. If you use MeshFix for\nresearch purposes you should cite the above paper in your published results.\nMeshFix cannot be used for commercial purposes without a proper licensing\ncontract.\n\n\nCopyright\n---------\n\nMeshFix is Copyright(C) 2010: IMATI-GE / CNR\n\nAll rights reserved.\n\nThis program is dual-licensed as follows:\n\n(1) You may use MeshFix as free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by the Free\nSoftware Foundation; either version 3 of the License, or (at your option) any\nlater version.\n\nIn this case the program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\nFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\n(http://www.gnu.org/licenses/gpl.txt) for more details.\n\n(2) You may use MeshFix as part of a commercial software. In this case a proper\nagreement must be reached with the Authors and with IMATI-GE/CNR based on a\nproper licensing contract.\n",
    "bugtrack_url": null,
    "license": "GPLv3",
    "summary": "Repair triangular meshes using MeshFix",
    "version": "0.17.0",
    "project_urls": {
        "Homepage": "https://github.com/pyvista/pymeshfix"
    },
    "split_keywords": [
        "meshfix"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "340bfe2df9514cb0b3f55729525c119c64bf8766b31e7f997c08d410ee962b9e",
                "md5": "a2696a3f28bf63b458e78916b9a2b28a",
                "sha256": "135d84ce6a1e98028fef672a199bf4d5eb38aa54959ab032de6bc107ff447207"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a2696a3f28bf63b458e78916b9a2b28a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1457953,
            "upload_time": "2024-06-21T18:09:53",
            "upload_time_iso_8601": "2024-06-21T18:09:53.400766Z",
            "url": "https://files.pythonhosted.org/packages/34/0b/fe2df9514cb0b3f55729525c119c64bf8766b31e7f997c08d410ee962b9e/pymeshfix-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c6b0ffdef66d6873ac9dae2ec869d02cdafb03a3e447e68ac2274d096e35eba8",
                "md5": "2f4c7198bd143ff80190d83d3e736ebe",
                "sha256": "0abd1e40836b8199fcdf2ced61e6f3cb4ce2e56406832238827d330dc9e580d4"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "2f4c7198bd143ff80190d83d3e736ebe",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1442596,
            "upload_time": "2024-06-21T18:09:56",
            "upload_time_iso_8601": "2024-06-21T18:09:56.162848Z",
            "url": "https://files.pythonhosted.org/packages/c6/b0/ffdef66d6873ac9dae2ec869d02cdafb03a3e447e68ac2274d096e35eba8/pymeshfix-0.17.0-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7be95932527c8d42bd9b7f6fa8ee2fa533cb6c8581caded5f01118191efea670",
                "md5": "392280ae9a2b3c73a33938d9b7007b8f",
                "sha256": "e66b870ba9143f1edd71ec945c4de7b0d4e8f54d184260d8fbf71b1eaa3a1065"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "392280ae9a2b3c73a33938d9b7007b8f",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 2523717,
            "upload_time": "2024-06-21T18:09:57",
            "upload_time_iso_8601": "2024-06-21T18:09:57.782819Z",
            "url": "https://files.pythonhosted.org/packages/7b/e9/5932527c8d42bd9b7f6fa8ee2fa533cb6c8581caded5f01118191efea670/pymeshfix-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "259a7c233c7740d57ea99101cbfc63dddcff99bf96044eac3b6fea049ac5b4e0",
                "md5": "5b63c4a2ae16657fb24cd3829380f51b",
                "sha256": "df88f2bbdd43b72a067a557b080da8820e51adc9833e2eae8aa1373f204316f9"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5b63c4a2ae16657fb24cd3829380f51b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1363941,
            "upload_time": "2024-06-21T18:09:59",
            "upload_time_iso_8601": "2024-06-21T18:09:59.386845Z",
            "url": "https://files.pythonhosted.org/packages/25/9a/7c233c7740d57ea99101cbfc63dddcff99bf96044eac3b6fea049ac5b4e0/pymeshfix-0.17.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1aeadaa383e947c7cbe69a76884b8c2ede4dc9910a7f3047dc70680c8df609f7",
                "md5": "a24dab5a7667b918609a5aa951d98f67",
                "sha256": "dabe6b589dd71cf7314856ac6e7a861756c7d3b8dbc9d07cae3f74722e6ff00a"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a24dab5a7667b918609a5aa951d98f67",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1458097,
            "upload_time": "2024-06-21T18:10:01",
            "upload_time_iso_8601": "2024-06-21T18:10:01.657491Z",
            "url": "https://files.pythonhosted.org/packages/1a/ea/daa383e947c7cbe69a76884b8c2ede4dc9910a7f3047dc70680c8df609f7/pymeshfix-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "56b08095d7e08a77c4d4e2b8eaf847bf539004ff8736ef0ed013ec20dc055b2e",
                "md5": "4aece3fb4ceb148b75f1582f85a5169a",
                "sha256": "fef1de0b0d250221b41b9f2df5cc381558ffae105c7de7a3a0c66559c43088e0"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "4aece3fb4ceb148b75f1582f85a5169a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1442675,
            "upload_time": "2024-06-21T18:10:04",
            "upload_time_iso_8601": "2024-06-21T18:10:04.098531Z",
            "url": "https://files.pythonhosted.org/packages/56/b0/8095d7e08a77c4d4e2b8eaf847bf539004ff8736ef0ed013ec20dc055b2e/pymeshfix-0.17.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3822a7548529770112a4b3980e2c06ec5c4618da537b6d236c01d0cc0f07c5c5",
                "md5": "bccc0e76cceffc4409480757a100c2b3",
                "sha256": "e15ebfd8396f9504674391b81b0ec06f55640c04f212cb3a940463165e06910b"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bccc0e76cceffc4409480757a100c2b3",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 2563324,
            "upload_time": "2024-06-21T18:10:06",
            "upload_time_iso_8601": "2024-06-21T18:10:06.202012Z",
            "url": "https://files.pythonhosted.org/packages/38/22/a7548529770112a4b3980e2c06ec5c4618da537b6d236c01d0cc0f07c5c5/pymeshfix-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0a767c3bd6eb9fa1e8f0580ae18bcc0e5279fd58440a76d6a879cd22630957ae",
                "md5": "3d441e554d6fd2943c3ac5e9a357631a",
                "sha256": "8bfa35b1105b3af6fee3e75e64da08bb82d9a92021277c02d3678639eeefe6ee"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "3d441e554d6fd2943c3ac5e9a357631a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1364059,
            "upload_time": "2024-06-21T18:10:08",
            "upload_time_iso_8601": "2024-06-21T18:10:08.244979Z",
            "url": "https://files.pythonhosted.org/packages/0a/76/7c3bd6eb9fa1e8f0580ae18bcc0e5279fd58440a76d6a879cd22630957ae/pymeshfix-0.17.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f098c7d6b965e776030063e5ee051ba55ed2fefa8222a2e4f89107913c08f589",
                "md5": "fdb0113132554ce263db1c3ebc298a04",
                "sha256": "a7218bc3bb7bc87a7d7335ad0b0dcd376ce6f993980d4bd244365175d73ea8ea"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fdb0113132554ce263db1c3ebc298a04",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1459739,
            "upload_time": "2024-06-21T18:10:10",
            "upload_time_iso_8601": "2024-06-21T18:10:10.289500Z",
            "url": "https://files.pythonhosted.org/packages/f0/98/c7d6b965e776030063e5ee051ba55ed2fefa8222a2e4f89107913c08f589/pymeshfix-0.17.0-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aae898ad3f3310aa94ce334211054a4e9fe8e21877b39bca0db5942adfdbdd0a",
                "md5": "8602df11b5626708ce5e83344503596a",
                "sha256": "5bfc96dadd774591394451ad2855d3d5b2771e7dfd85a0ca9cbd47a968f8ed1f"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "8602df11b5626708ce5e83344503596a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1443411,
            "upload_time": "2024-06-21T18:10:11",
            "upload_time_iso_8601": "2024-06-21T18:10:11.621335Z",
            "url": "https://files.pythonhosted.org/packages/aa/e8/98ad3f3310aa94ce334211054a4e9fe8e21877b39bca0db5942adfdbdd0a/pymeshfix-0.17.0-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a032023c0869f7056ce9f578308322722f25a2dc57a38430283bfc2b101a4bcb",
                "md5": "e1852022eb5685f0fabbb77038444a89",
                "sha256": "0a5215bda194e53c7b909a11313f2a2b6086c87e3e3f9ad26bfe016e9da45dab"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e1852022eb5685f0fabbb77038444a89",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 2558520,
            "upload_time": "2024-06-21T18:10:13",
            "upload_time_iso_8601": "2024-06-21T18:10:13.763657Z",
            "url": "https://files.pythonhosted.org/packages/a0/32/023c0869f7056ce9f578308322722f25a2dc57a38430283bfc2b101a4bcb/pymeshfix-0.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0440999e52f51b96ad580786e193073f1b96cf0e92bc06a444eb529022a7989c",
                "md5": "f36c2b30c6c62f0a4f831cccce48b6f5",
                "sha256": "575bde851ab93642176a55f31c1e8c9611fc2ed43601cac4f3a028b8530f7075"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f36c2b30c6c62f0a4f831cccce48b6f5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1364167,
            "upload_time": "2024-06-21T18:10:15",
            "upload_time_iso_8601": "2024-06-21T18:10:15.111270Z",
            "url": "https://files.pythonhosted.org/packages/04/40/999e52f51b96ad580786e193073f1b96cf0e92bc06a444eb529022a7989c/pymeshfix-0.17.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "66dc4240cbc68f19e42f8fdd7a07d78327108f0cbb029ed6a020765cfbc74b95",
                "md5": "e05382984ba1bdb4fc15c3ffd977c10d",
                "sha256": "370db90b316d304dac11974167e7da111f232b8bb7aae2a85affe723584bb7c1"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e05382984ba1bdb4fc15c3ffd977c10d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1458746,
            "upload_time": "2024-06-21T18:10:16",
            "upload_time_iso_8601": "2024-06-21T18:10:16.629357Z",
            "url": "https://files.pythonhosted.org/packages/66/dc/4240cbc68f19e42f8fdd7a07d78327108f0cbb029ed6a020765cfbc74b95/pymeshfix-0.17.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "10f0dccdf11c3cec6e73fef444ecd9d7504ccd098944d3be2113b9da7a1ab993",
                "md5": "db844164155ba2330b683635071f34ab",
                "sha256": "d6549f5c856709888ed3c445b785c6ecb0372b0f649b879c222a62622ab3172b"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "db844164155ba2330b683635071f34ab",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1443185,
            "upload_time": "2024-06-21T18:10:18",
            "upload_time_iso_8601": "2024-06-21T18:10:18.031185Z",
            "url": "https://files.pythonhosted.org/packages/10/f0/dccdf11c3cec6e73fef444ecd9d7504ccd098944d3be2113b9da7a1ab993/pymeshfix-0.17.0-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7ffc1560f2b1d674c7b2a3847fd64ae27dd4768c1cda0ddb5ac5012778aa337c",
                "md5": "7254a9330fcf084136caabc4ab00b178",
                "sha256": "ab82020dfa9dfeb1894e3ed416bb7ea493bf0d78ba28f31d9d0ccf0c27e2384e"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7254a9330fcf084136caabc4ab00b178",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 2526273,
            "upload_time": "2024-06-21T18:10:19",
            "upload_time_iso_8601": "2024-06-21T18:10:19.474208Z",
            "url": "https://files.pythonhosted.org/packages/7f/fc/1560f2b1d674c7b2a3847fd64ae27dd4768c1cda0ddb5ac5012778aa337c/pymeshfix-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b7ae4dca7c3bc6744605fbd70337860608660f2c6a840f4336e7a61d3fb14d90",
                "md5": "c90a98b7467976a3bde843963db0492c",
                "sha256": "dc9c41417a303e461cddc40d0bf5ff1359a891c4f0050a286223f60fc32435be"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c90a98b7467976a3bde843963db0492c",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1364502,
            "upload_time": "2024-06-21T18:10:21",
            "upload_time_iso_8601": "2024-06-21T18:10:21.569339Z",
            "url": "https://files.pythonhosted.org/packages/b7/ae/4dca7c3bc6744605fbd70337860608660f2c6a840f4336e7a61d3fb14d90/pymeshfix-0.17.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f51385fd4145af2e1e9c03194512309e0a631afc826396b11860c831171a37e0",
                "md5": "b14de61faf92ba19cd3627517457795a",
                "sha256": "ce809a1741aaf670a3df98cf6aaba15881223bd7230928effc021395455397c9"
            },
            "downloads": -1,
            "filename": "pymeshfix-0.17.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b14de61faf92ba19cd3627517457795a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 1502310,
            "upload_time": "2024-06-21T18:10:22",
            "upload_time_iso_8601": "2024-06-21T18:10:22.942138Z",
            "url": "https://files.pythonhosted.org/packages/f5/13/85fd4145af2e1e9c03194512309e0a631afc826396b11860c831171a37e0/pymeshfix-0.17.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-21 18:10:22",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pyvista",
    "github_project": "pymeshfix",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "pyvista",
            "specs": [
                [
                    ">=",
                    "0.23.0"
                ]
            ]
        },
        {
            "name": "Sphinx",
            "specs": [
                [
                    "<=",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "sphinx-autobuild",
            "specs": [
                [
                    ">",
                    ""
                ]
            ]
        },
        {
            "name": "sphinx-rtd-theme",
            "specs": []
        },
        {
            "name": "sphinxcontrib-napoleon",
            "specs": []
        },
        {
            "name": "sphinxcontrib-websupport",
            "specs": []
        },
        {
            "name": "doctr",
            "specs": []
        },
        {
            "name": "sphinx-copybutton",
            "specs": []
        },
        {
            "name": "sphinx-gallery",
            "specs": []
        },
        {
            "name": "sphinx-notfound-page",
            "specs": [
                [
                    ">=",
                    "0.3.0"
                ]
            ]
        }
    ],
    "lcname": "pymeshfix"
}
        
Elapsed time: 0.25020s