stl-reader


Namestl-reader JSON
Version 0.1.2 PyPI version JSON
download
home_pagehttps://github.com/pyvista/stl-reader
SummaryRead in STL files
upload_time2023-10-31 19:08:31
maintainer
docs_urlNone
authorPyVista Developers
requires_python>=3.8
licenseMIT
keywords read stl
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ############
 stl-reader
############

|pypi| |MIT|

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

.. |MIT| image:: https://img.shields.io/badge/License-MIT-yellow.svg
   :target: https://opensource.org/licenses/MIT

``stl-reader`` is a Python library for raipidly reading binary STL
files. It wraps a Cython interface to the fast STL library provided by
`libstl <https://github.com/aki5/libstl>`_. Thanks @aki5!

The main advantage of ``stl-reader`` over other STL reading libraries is
its performance. It is particularly well-suited for large files, mainly
due to its efficient use of hashing when merging points. This results in
a 5-35x speedup over VTK for files containing between 4,000 and
9,000,000 points.

See the benchmarks below for more details.

**************
 Installation
**************

The recommended way to install ``stl-reader`` is via PyPI:

.. code:: sh

   pip install stl-reader

You can also clone the repository and install it from source:

.. code:: sh

   git clone https://github.com/pyvista/stl-reader.git
   cd stl-reader
   pip install .

*******
 Usage
*******

Load in the vertices and indices of a STL file directly as a NumPy
array:

.. code:: pycon

   >>> import stl_reader
   >>> vertices, indices = stl_reader.read("example.stl")
   >>> vertices
   array([[-0.01671113,  0.5450843 , -0.8382146 ],
          [ 0.01671113,  0.5450843 , -0.8382146 ],
          [ 0.        ,  0.52573115, -0.8506509 ],
          ...,
          [ 0.5952229 , -0.57455426,  0.56178033],
          [ 0.56178033, -0.5952229 ,  0.57455426],
          [ 0.57455426, -0.56178033,  0.5952229 ]], dtype=float32)
   >>> indices
   array([[      0,       1,       2],
          [      1,       3,       4],
          [      4,       5,       2],
          ...,
          [9005998, 9005988, 9005999],
          [9005999, 9005996, 9005995],
          [9005998, 9005999, 9005995]], dtype=uint32)

In this example, ``vertices`` is a 2D NumPy array where each row
represents a vertex and the three columns represent the X, Y, and Z
coordinates, respectively. ``indices`` is a 1D NumPy array representing
the triangles from the STL file.

Alternatively, you can load in the STL file as a PyVista PolyData:

.. code:: pycon

   >>> import stl_reader
   >>> mesh = stl_reader.read_as_mesh('example.stl')
   >>> mesh
   PolyData (0x7f43063ec700)
     N Cells:    1280000
     N Points:   641601
     N Strips:   0
     X Bounds:   -5.000e-01, 5.000e-01
     Y Bounds:   -5.000e-01, 5.000e-01
     Z Bounds:   -5.551e-17, 5.551e-17
     N Arrays:   0

***********
 Benchmark
***********

The main reason behind writing yet another STL file reader for Python is
to leverage the performant `libstl <https://github.com/aki5/libstl>`_
library.

Here are some timings from reading in a 1,000,000 point binary STL file:

+-------------+-----------------------+
| Library     | Time (seconds)        |
+=============+=======================+
| stl-reader  | 0.174                 |
+-------------+-----------------------+
| numpy-stl   | 0.201 (see note)      |
+-------------+-----------------------+
| PyVista     | 1.663                 |
| (VTK)       |                       |
+-------------+-----------------------+
| meshio      | 4.451                 |
+-------------+-----------------------+

**Note** ``numpy-stl`` does not merge duplicate vertices.

Comparison with VTK
===================

Here's an additional benchmark comparing VTK with ``stl-reader``:

.. code:: python

   import numpy as np
   import time
   import pyvista as pv
   import matplotlib.pyplot as plt
   import stl_reader

   times = []
   filename = 'tmp.stl'
   for res in range(50, 800, 50):
       mesh = pv.Plane(i_resolution=res, j_resolution=res).triangulate().subdivide(2)
       mesh.save(filename)

       tstart = time.time()
       out_pv = pv.read(filename)
       vtk_time = time.time() - tstart

       tstart = time.time()
       out_stl = stl_reader.read(filename)
       stl_reader_time =  time.time() - tstart

       times.append([mesh.n_points, vtk_time, stl_reader_time])
       print(times[-1])


   times = np.array(times)
   plt.figure(1)
   plt.title('STL load time')
   plt.plot(times[:, 0], times[:, 1], label='VTK')
   plt.plot(times[:, 0], times[:, 2], label='stl_reader')
   plt.xlabel('Number of Points')
   plt.ylabel('Time to Load (seconds)')
   plt.legend()

   plt.figure(2)
   plt.title('STL load time (Log-Log)')
   plt.loglog(times[:, 0], times[:, 1], label='VTK')
   plt.loglog(times[:, 0], times[:, 2], label='stl_reader')
   plt.xlabel('Number of Points')
   plt.ylabel('Time to Load (seconds)')
   plt.legend()
   plt.show()
   import numpy as np
   import time
   import pyvista as pv
   import matplotlib.pyplot as plt
   import stl_reader

   times = []
   filename = 'tmp.stl'
   for res in range(50, 800, 50):
       mesh = pv.Plane(i_resolution=res, j_resolution=res).triangulate().subdivide(2)
       mesh.save(filename)

       tstart = time.time()
       out_pv = pv.read(filename)
       vtk_time = time.time() - tstart

       tstart = time.time()
       out_stl = stl_reader.read(filename)
       stl_reader_time =  time.time() - tstart

       times.append([mesh.n_points, vtk_time, stl_reader_time])
       print(times[-1])


   times = np.array(times)
   plt.figure(1)
   plt.title('STL load time')
   plt.plot(times[:, 0], times[:, 1], label='VTK')
   plt.plot(times[:, 0], times[:, 2], label='stl_reader')
   plt.xlabel('Number of Points')
   plt.ylabel('Time to Load (seconds)')
   plt.legend()

   plt.figure(2)
   plt.title('STL load time (Log-Log)')
   plt.loglog(times[:, 0], times[:, 1], label='VTK')
   plt.loglog(times[:, 0], times[:, 2], label='stl_reader')
   plt.xlabel('Number of Points')
   plt.ylabel('Time to Load (seconds)')
   plt.legend()
   plt.show()

.. image:: https://github.com/pyvista/stl-reader/raw/main/bench0.png

.. image:: https://github.com/pyvista/stl-reader/raw/main/bench1.png

*****************************
 License and Acknowledgments
*****************************

This project relies on `libstl <https://github.com/aki5/libstl>`_ for
reading in and merging the vertices of a STL file. Wherever code is
reused, the original `MIT License
<https://github.com/aki5/libstl/blob/master/LICENSE>`_ is mentioned.

The work in this repository is also licensed under the MIT License.

*********
 Support
*********

If you are having issues, please feel free to raise an `Issue
<https://github.com/pyvista/stl-reader/issues>`_.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pyvista/stl-reader",
    "name": "stl-reader",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "read stl",
    "author": "PyVista Developers",
    "author_email": "info@pyvista.org",
    "download_url": "https://files.pythonhosted.org/packages/7a/ec/5ae5cd2e1b656f06d3847d53f324bc3285a729e99188e772a1b77c8e3219/stl-reader-0.1.2.tar.gz",
    "platform": null,
    "description": "############\n stl-reader\n############\n\n|pypi| |MIT|\n\n.. |pypi| image:: https://img.shields.io/pypi/v/stl-reader.svg?logo=python&logoColor=white\n   :target: https://pypi.org/project/stl-reader/\n\n.. |MIT| image:: https://img.shields.io/badge/License-MIT-yellow.svg\n   :target: https://opensource.org/licenses/MIT\n\n``stl-reader`` is a Python library for raipidly reading binary STL\nfiles. It wraps a Cython interface to the fast STL library provided by\n`libstl <https://github.com/aki5/libstl>`_. Thanks @aki5!\n\nThe main advantage of ``stl-reader`` over other STL reading libraries is\nits performance. It is particularly well-suited for large files, mainly\ndue to its efficient use of hashing when merging points. This results in\na 5-35x speedup over VTK for files containing between 4,000 and\n9,000,000 points.\n\nSee the benchmarks below for more details.\n\n**************\n Installation\n**************\n\nThe recommended way to install ``stl-reader`` is via PyPI:\n\n.. code:: sh\n\n   pip install stl-reader\n\nYou can also clone the repository and install it from source:\n\n.. code:: sh\n\n   git clone https://github.com/pyvista/stl-reader.git\n   cd stl-reader\n   pip install .\n\n*******\n Usage\n*******\n\nLoad in the vertices and indices of a STL file directly as a NumPy\narray:\n\n.. code:: pycon\n\n   >>> import stl_reader\n   >>> vertices, indices = stl_reader.read(\"example.stl\")\n   >>> vertices\n   array([[-0.01671113,  0.5450843 , -0.8382146 ],\n          [ 0.01671113,  0.5450843 , -0.8382146 ],\n          [ 0.        ,  0.52573115, -0.8506509 ],\n          ...,\n          [ 0.5952229 , -0.57455426,  0.56178033],\n          [ 0.56178033, -0.5952229 ,  0.57455426],\n          [ 0.57455426, -0.56178033,  0.5952229 ]], dtype=float32)\n   >>> indices\n   array([[      0,       1,       2],\n          [      1,       3,       4],\n          [      4,       5,       2],\n          ...,\n          [9005998, 9005988, 9005999],\n          [9005999, 9005996, 9005995],\n          [9005998, 9005999, 9005995]], dtype=uint32)\n\nIn this example, ``vertices`` is a 2D NumPy array where each row\nrepresents a vertex and the three columns represent the X, Y, and Z\ncoordinates, respectively. ``indices`` is a 1D NumPy array representing\nthe triangles from the STL file.\n\nAlternatively, you can load in the STL file as a PyVista PolyData:\n\n.. code:: pycon\n\n   >>> import stl_reader\n   >>> mesh = stl_reader.read_as_mesh('example.stl')\n   >>> mesh\n   PolyData (0x7f43063ec700)\n     N Cells:    1280000\n     N Points:   641601\n     N Strips:   0\n     X Bounds:   -5.000e-01, 5.000e-01\n     Y Bounds:   -5.000e-01, 5.000e-01\n     Z Bounds:   -5.551e-17, 5.551e-17\n     N Arrays:   0\n\n***********\n Benchmark\n***********\n\nThe main reason behind writing yet another STL file reader for Python is\nto leverage the performant `libstl <https://github.com/aki5/libstl>`_\nlibrary.\n\nHere are some timings from reading in a 1,000,000 point binary STL file:\n\n+-------------+-----------------------+\n| Library     | Time (seconds)        |\n+=============+=======================+\n| stl-reader  | 0.174                 |\n+-------------+-----------------------+\n| numpy-stl   | 0.201 (see note)      |\n+-------------+-----------------------+\n| PyVista     | 1.663                 |\n| (VTK)       |                       |\n+-------------+-----------------------+\n| meshio      | 4.451                 |\n+-------------+-----------------------+\n\n**Note** ``numpy-stl`` does not merge duplicate vertices.\n\nComparison with VTK\n===================\n\nHere's an additional benchmark comparing VTK with ``stl-reader``:\n\n.. code:: python\n\n   import numpy as np\n   import time\n   import pyvista as pv\n   import matplotlib.pyplot as plt\n   import stl_reader\n\n   times = []\n   filename = 'tmp.stl'\n   for res in range(50, 800, 50):\n       mesh = pv.Plane(i_resolution=res, j_resolution=res).triangulate().subdivide(2)\n       mesh.save(filename)\n\n       tstart = time.time()\n       out_pv = pv.read(filename)\n       vtk_time = time.time() - tstart\n\n       tstart = time.time()\n       out_stl = stl_reader.read(filename)\n       stl_reader_time =  time.time() - tstart\n\n       times.append([mesh.n_points, vtk_time, stl_reader_time])\n       print(times[-1])\n\n\n   times = np.array(times)\n   plt.figure(1)\n   plt.title('STL load time')\n   plt.plot(times[:, 0], times[:, 1], label='VTK')\n   plt.plot(times[:, 0], times[:, 2], label='stl_reader')\n   plt.xlabel('Number of Points')\n   plt.ylabel('Time to Load (seconds)')\n   plt.legend()\n\n   plt.figure(2)\n   plt.title('STL load time (Log-Log)')\n   plt.loglog(times[:, 0], times[:, 1], label='VTK')\n   plt.loglog(times[:, 0], times[:, 2], label='stl_reader')\n   plt.xlabel('Number of Points')\n   plt.ylabel('Time to Load (seconds)')\n   plt.legend()\n   plt.show()\n   import numpy as np\n   import time\n   import pyvista as pv\n   import matplotlib.pyplot as plt\n   import stl_reader\n\n   times = []\n   filename = 'tmp.stl'\n   for res in range(50, 800, 50):\n       mesh = pv.Plane(i_resolution=res, j_resolution=res).triangulate().subdivide(2)\n       mesh.save(filename)\n\n       tstart = time.time()\n       out_pv = pv.read(filename)\n       vtk_time = time.time() - tstart\n\n       tstart = time.time()\n       out_stl = stl_reader.read(filename)\n       stl_reader_time =  time.time() - tstart\n\n       times.append([mesh.n_points, vtk_time, stl_reader_time])\n       print(times[-1])\n\n\n   times = np.array(times)\n   plt.figure(1)\n   plt.title('STL load time')\n   plt.plot(times[:, 0], times[:, 1], label='VTK')\n   plt.plot(times[:, 0], times[:, 2], label='stl_reader')\n   plt.xlabel('Number of Points')\n   plt.ylabel('Time to Load (seconds)')\n   plt.legend()\n\n   plt.figure(2)\n   plt.title('STL load time (Log-Log)')\n   plt.loglog(times[:, 0], times[:, 1], label='VTK')\n   plt.loglog(times[:, 0], times[:, 2], label='stl_reader')\n   plt.xlabel('Number of Points')\n   plt.ylabel('Time to Load (seconds)')\n   plt.legend()\n   plt.show()\n\n.. image:: https://github.com/pyvista/stl-reader/raw/main/bench0.png\n\n.. image:: https://github.com/pyvista/stl-reader/raw/main/bench1.png\n\n*****************************\n License and Acknowledgments\n*****************************\n\nThis project relies on `libstl <https://github.com/aki5/libstl>`_ for\nreading in and merging the vertices of a STL file. Wherever code is\nreused, the original `MIT License\n<https://github.com/aki5/libstl/blob/master/LICENSE>`_ is mentioned.\n\nThe work in this repository is also licensed under the MIT License.\n\n*********\n Support\n*********\n\nIf you are having issues, please feel free to raise an `Issue\n<https://github.com/pyvista/stl-reader/issues>`_.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Read in STL files",
    "version": "0.1.2",
    "project_urls": {
        "Homepage": "https://github.com/pyvista/stl-reader"
    },
    "split_keywords": [
        "read",
        "stl"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6c16d96e203e8a4246790c34209933984b4d8c1bb9e85ea11be8445c4445ad3d",
                "md5": "50d19cb05a29fc5db31670342d8f2dfa",
                "sha256": "70d5d16c7d24700ab2ff20c075fe769fa3b7470fcea45c0f1b8c6c2c2d337087"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp310-cp310-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "50d19cb05a29fc5db31670342d8f2dfa",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 61784,
            "upload_time": "2023-10-31T19:07:58",
            "upload_time_iso_8601": "2023-10-31T19:07:58.584943Z",
            "url": "https://files.pythonhosted.org/packages/6c/16/d96e203e8a4246790c34209933984b4d8c1bb9e85ea11be8445c4445ad3d/stl_reader-0.1.2-cp310-cp310-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a3574e192bfd6e86f4cc4e6669b841b0feebcff817bf7c36e7c58a30aa51f258",
                "md5": "1908270e658c226eea9985ac5a9ba2ba",
                "sha256": "031a81e416b2414b0a3f9359372dce0a19850141a5257c490805f466a433a3d7"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1908270e658c226eea9985ac5a9ba2ba",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 34772,
            "upload_time": "2023-10-31T19:08:00",
            "upload_time_iso_8601": "2023-10-31T19:08:00.966481Z",
            "url": "https://files.pythonhosted.org/packages/a3/57/4e192bfd6e86f4cc4e6669b841b0feebcff817bf7c36e7c58a30aa51f258/stl_reader-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "627e78750b89a9aa6e46f73c4e2ba5e5ed627e8e0d7c9859b7fbc148d6abee00",
                "md5": "913c7690489c70f7a3bb7926fc8ba336",
                "sha256": "56490b187f321cdb3b8a63fc493953b5789c4c984d48bb20bdc4da3b0f3a18be"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "913c7690489c70f7a3bb7926fc8ba336",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 138661,
            "upload_time": "2023-10-31T19:08:02",
            "upload_time_iso_8601": "2023-10-31T19:08:02.611257Z",
            "url": "https://files.pythonhosted.org/packages/62/7e/78750b89a9aa6e46f73c4e2ba5e5ed627e8e0d7c9859b7fbc148d6abee00/stl_reader-0.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "51df73d1c7fd9ce45d59b72d7c50efecac7026b829617849cd93c5b556364716",
                "md5": "0b0b4aee833aae3fb303fc599a1959ca",
                "sha256": "eea5a3b525c2916876a25cd32f64c57786150b7fa8d13379797d353fd276535d"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0b0b4aee833aae3fb303fc599a1959ca",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 34167,
            "upload_time": "2023-10-31T19:08:04",
            "upload_time_iso_8601": "2023-10-31T19:08:04.236202Z",
            "url": "https://files.pythonhosted.org/packages/51/df/73d1c7fd9ce45d59b72d7c50efecac7026b829617849cd93c5b556364716/stl_reader-0.1.2-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c3f57b3a9e9adb79883a5f4378adc23a0cc993b761f61cc51263b447471eb6ea",
                "md5": "f5fec490999ca6decd2039405c286b37",
                "sha256": "e105737c1cd595a89396a36f7ff387e2e5d02daee4ba72e1f74f04992b7dccf2"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp311-cp311-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "f5fec490999ca6decd2039405c286b37",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 61803,
            "upload_time": "2023-10-31T19:08:05",
            "upload_time_iso_8601": "2023-10-31T19:08:05.863078Z",
            "url": "https://files.pythonhosted.org/packages/c3/f5/7b3a9e9adb79883a5f4378adc23a0cc993b761f61cc51263b447471eb6ea/stl_reader-0.1.2-cp311-cp311-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9dd001613d0022678acb3ecdc32aa5d9ff7f668ef797d3a6480f5cbca57d5a05",
                "md5": "fb52f27b2988ee93daed3b0643149de2",
                "sha256": "d9ea0f1a0edde59c4e52ec901afd20e20942daee851c14b3202e3e83c3e465c1"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fb52f27b2988ee93daed3b0643149de2",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 34782,
            "upload_time": "2023-10-31T19:08:07",
            "upload_time_iso_8601": "2023-10-31T19:08:07.754648Z",
            "url": "https://files.pythonhosted.org/packages/9d/d0/01613d0022678acb3ecdc32aa5d9ff7f668ef797d3a6480f5cbca57d5a05/stl_reader-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3634757e71140b75a4a02c85e1f72f6895b9c1d57bb681c24b41b57d3b7fe380",
                "md5": "c407503cab26cf8380e36956ab068650",
                "sha256": "bf39f3fcb08674a3b785a2ac0404d02c40e09b29a9786c0e8ff598f30312681f"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c407503cab26cf8380e36956ab068650",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 146992,
            "upload_time": "2023-10-31T19:08:08",
            "upload_time_iso_8601": "2023-10-31T19:08:08.956628Z",
            "url": "https://files.pythonhosted.org/packages/36/34/757e71140b75a4a02c85e1f72f6895b9c1d57bb681c24b41b57d3b7fe380/stl_reader-0.1.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b1c71f26a33143554b9c05cac67ba26915922f1e0f5cd33b2aec8efbe72175ab",
                "md5": "7a530919d9c4904a7a5c225d66794b51",
                "sha256": "ef1f224b8fcdfb6b96b53a36d1902bcb8d5b2b604cbe15e78b20454f81e0b419"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "7a530919d9c4904a7a5c225d66794b51",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 34202,
            "upload_time": "2023-10-31T19:08:10",
            "upload_time_iso_8601": "2023-10-31T19:08:10.516749Z",
            "url": "https://files.pythonhosted.org/packages/b1/c7/1f26a33143554b9c05cac67ba26915922f1e0f5cd33b2aec8efbe72175ab/stl_reader-0.1.2-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "75d7888791fc416e97d1e6e2c9a213b79ce94fd38348235966666464062687ab",
                "md5": "69f1c1a78b1bc560e6a754c2ea6ad0ab",
                "sha256": "34ef5ef6d9f6886b6fefdbf57c5dd6afcd2a31aba05b5035a9080de91d2778b8"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp312-cp312-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "69f1c1a78b1bc560e6a754c2ea6ad0ab",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 62297,
            "upload_time": "2023-10-31T19:08:12",
            "upload_time_iso_8601": "2023-10-31T19:08:12.008252Z",
            "url": "https://files.pythonhosted.org/packages/75/d7/888791fc416e97d1e6e2c9a213b79ce94fd38348235966666464062687ab/stl_reader-0.1.2-cp312-cp312-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bc419add72a8ab09ea805a773c8b6b6acfc07ff75445b2e0dbdd5ee99fea2fcd",
                "md5": "126e37149db7bbbd79c741d9bdce6e8b",
                "sha256": "449198b0989f39a36d1e97fa2821811867039a59de0fd05363b75ae61a1ee601"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "126e37149db7bbbd79c741d9bdce6e8b",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 35090,
            "upload_time": "2023-10-31T19:08:13",
            "upload_time_iso_8601": "2023-10-31T19:08:13.540282Z",
            "url": "https://files.pythonhosted.org/packages/bc/41/9add72a8ab09ea805a773c8b6b6acfc07ff75445b2e0dbdd5ee99fea2fcd/stl_reader-0.1.2-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ce067fda45787c7245e1d7e8cb044167d13dd014bd8728c966eefddf3e073363",
                "md5": "3ec2aaf0e8f6792d14adf6a0b068096a",
                "sha256": "88375fd4b71323b3a8dde565ac1367ece91017637534ca8de86a8f993f3fe388"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3ec2aaf0e8f6792d14adf6a0b068096a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 153195,
            "upload_time": "2023-10-31T19:08:15",
            "upload_time_iso_8601": "2023-10-31T19:08:15.122242Z",
            "url": "https://files.pythonhosted.org/packages/ce/06/7fda45787c7245e1d7e8cb044167d13dd014bd8728c966eefddf3e073363/stl_reader-0.1.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "73dddae722fdf06df208c25f7800e89338ebb75eaf74defea464dd60f3df1371",
                "md5": "516b6673653fb92fe948dc809a8b6570",
                "sha256": "d2c1b5c6f22ad7da9b66fa0a57d12bcee67f117ab0e37f0b705ec86c68c9b789"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "516b6673653fb92fe948dc809a8b6570",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 34456,
            "upload_time": "2023-10-31T19:08:16",
            "upload_time_iso_8601": "2023-10-31T19:08:16.586839Z",
            "url": "https://files.pythonhosted.org/packages/73/dd/dae722fdf06df208c25f7800e89338ebb75eaf74defea464dd60f3df1371/stl_reader-0.1.2-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3823778f89f69d4c1be9971be15ed855cc135c9054eedb45365ef2f3c261eef8",
                "md5": "de7dcdbe6827d82bf702abef0d18cfa5",
                "sha256": "992e6ddd69d72d9422a63dc02aacf0459545abfa2579b70464453ad40a62e046"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp38-cp38-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "de7dcdbe6827d82bf702abef0d18cfa5",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 63460,
            "upload_time": "2023-10-31T19:08:18",
            "upload_time_iso_8601": "2023-10-31T19:08:18.098364Z",
            "url": "https://files.pythonhosted.org/packages/38/23/778f89f69d4c1be9971be15ed855cc135c9054eedb45365ef2f3c261eef8/stl_reader-0.1.2-cp38-cp38-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c8c5d8b48aa6b29fa291d2840988fa24ccc9e70e2a5efda04d8b2212c78d1165",
                "md5": "d35369574c41b35c9500b64abbc1503a",
                "sha256": "98e3f203f6e9987284c970e2a3a97ff7c4046b80ff356b5ba5938901ff208665"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d35369574c41b35c9500b64abbc1503a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 35633,
            "upload_time": "2023-10-31T19:08:19",
            "upload_time_iso_8601": "2023-10-31T19:08:19.595955Z",
            "url": "https://files.pythonhosted.org/packages/c8/c5/d8b48aa6b29fa291d2840988fa24ccc9e70e2a5efda04d8b2212c78d1165/stl_reader-0.1.2-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "feb8c10661f4bb8ed8914b3381d5a8dbabe5972ca9af2217e9b0a7bf40a2515c",
                "md5": "18375fde31ee8be6acb0cd4f00aefd50",
                "sha256": "ca3d114e1a1a86016e1dd690b00f0719c14ec23136ab8fed0093c9fc1ffdcb66"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "18375fde31ee8be6acb0cd4f00aefd50",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 140248,
            "upload_time": "2023-10-31T19:08:21",
            "upload_time_iso_8601": "2023-10-31T19:08:21.209935Z",
            "url": "https://files.pythonhosted.org/packages/fe/b8/c10661f4bb8ed8914b3381d5a8dbabe5972ca9af2217e9b0a7bf40a2515c/stl_reader-0.1.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fb495eb9f128afab60a255fda5735eba0117ed2e7d708aeb40f8a2e3b2993e4c",
                "md5": "12ad190aef54c819600015a20e3d6c09",
                "sha256": "ee6a9b03f24f858d97e5ef2ffe9de0527a2c9ac4ed4dba98ee95b1543001884b"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "12ad190aef54c819600015a20e3d6c09",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 34844,
            "upload_time": "2023-10-31T19:08:23",
            "upload_time_iso_8601": "2023-10-31T19:08:23.126071Z",
            "url": "https://files.pythonhosted.org/packages/fb/49/5eb9f128afab60a255fda5735eba0117ed2e7d708aeb40f8a2e3b2993e4c/stl_reader-0.1.2-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ecf314559400fcbdd0725fa7ba475ec5a5f349e31642dabf4aa916ba3298fb8f",
                "md5": "442ef700fa625146b2c014184a0e828e",
                "sha256": "fea7f24a28a3d9aea0e4c001d99fd6af1e0b735b2224b62aba292642d378bf7d"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp39-cp39-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "442ef700fa625146b2c014184a0e828e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 62501,
            "upload_time": "2023-10-31T19:08:24",
            "upload_time_iso_8601": "2023-10-31T19:08:24.618557Z",
            "url": "https://files.pythonhosted.org/packages/ec/f3/14559400fcbdd0725fa7ba475ec5a5f349e31642dabf4aa916ba3298fb8f/stl_reader-0.1.2-cp39-cp39-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9f2c5a142605a1895f69300c47f1e09c196fee6136c46157eb72b31edb39776c",
                "md5": "ad34e86cf84efc4703c550ed9c7e4a40",
                "sha256": "c692791be3ca91a8fb1ac6dee9b1272294ef4a156c7aa3e2e93fdb7ea98da36d"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ad34e86cf84efc4703c550ed9c7e4a40",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 35171,
            "upload_time": "2023-10-31T19:08:25",
            "upload_time_iso_8601": "2023-10-31T19:08:25.840167Z",
            "url": "https://files.pythonhosted.org/packages/9f/2c/5a142605a1895f69300c47f1e09c196fee6136c46157eb72b31edb39776c/stl_reader-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d6d9e7374386952ac9d301fb5f39a6cc18414bb1e07f94673fecf6bfb9d86005",
                "md5": "b95e3eeff4344afd74e9b58fd6ffa64e",
                "sha256": "2ffa4015f8921603d463b2bec16784639616026e1096a5f71f8ef6087364b113"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b95e3eeff4344afd74e9b58fd6ffa64e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 141207,
            "upload_time": "2023-10-31T19:08:29",
            "upload_time_iso_8601": "2023-10-31T19:08:29.615746Z",
            "url": "https://files.pythonhosted.org/packages/d6/d9/e7374386952ac9d301fb5f39a6cc18414bb1e07f94673fecf6bfb9d86005/stl_reader-0.1.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "75965bb82285378859a7f90e7db2d95522241db87928f1aee10b0deb3b53b458",
                "md5": "63d7c884aeb98db5bb5da756e79c5dfc",
                "sha256": "af0edbbe8cdf1f2c12ad67d3005528b2bf1393dd0962b5a779ce4af8fd897796"
            },
            "downloads": -1,
            "filename": "stl_reader-0.1.2-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "63d7c884aeb98db5bb5da756e79c5dfc",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 34450,
            "upload_time": "2023-10-31T19:08:30",
            "upload_time_iso_8601": "2023-10-31T19:08:30.912096Z",
            "url": "https://files.pythonhosted.org/packages/75/96/5bb82285378859a7f90e7db2d95522241db87928f1aee10b0deb3b53b458/stl_reader-0.1.2-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7aec5ae5cd2e1b656f06d3847d53f324bc3285a729e99188e772a1b77c8e3219",
                "md5": "ab9144256c3ee7bf6e15e4b7ffd0146d",
                "sha256": "838d9c23897871a2186c9ec9b3230403aad73318010aeb089d8283d453c9886d"
            },
            "downloads": -1,
            "filename": "stl-reader-0.1.2.tar.gz",
            "has_sig": false,
            "md5_digest": "ab9144256c3ee7bf6e15e4b7ffd0146d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 12083,
            "upload_time": "2023-10-31T19:08:31",
            "upload_time_iso_8601": "2023-10-31T19:08:31.942604Z",
            "url": "https://files.pythonhosted.org/packages/7a/ec/5ae5cd2e1b656f06d3847d53f324bc3285a729e99188e772a1b77c8e3219/stl-reader-0.1.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-31 19:08:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pyvista",
    "github_project": "stl-reader",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "stl-reader"
}
        
Elapsed time: 0.13355s