############
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"
}