###########
pyminiply
###########
|pypi| |MIT|
.. |pypi| image:: https://img.shields.io/pypi/v/pyminiply.svg?logo=python&logoColor=white
:target: https://pypi.org/project/pyminiply/
.. |MIT| image:: https://img.shields.io/badge/License-MIT-yellow.svg
:target: https://opensource.org/licenses/MIT
``pyminiply`` is a Python library for rapidly reading PLY files. It is a
Python wrapper around the fast C++ PLY reading library provided by
`miniply <ehttps://github.com/vilya/miniply>`_. Thanks @vilya!
The main advantage of ``pyminiply`` over other PLY reading libraries is
its performance. See the benchmarks below for more details.
**************
Installation
**************
The recommended way to install ``pyminiply`` is via PyPI:
.. code:: sh
pip install pyminiply
You can also clone the repository and install it from source:
.. code:: sh
git clone https://github.com/pyvista/pyminiply.git
cd pyminiply
git submodule update --init --recursive
pip install .
*******
Usage
*******
Load in the vertices, indices, normals, UV, and color information from a
PLY file:
.. code:: pycon
>>> import pyminiply
>>> vertices, indices, normals, uv, color = pyminiply.read("example.ply")
>>> vertices
array([[ 5.0000000e-01, -5.0000000e-01, -5.5511151e-17],
[ 4.0000001e-01, -5.0000000e-01, -4.4408922e-17],
[ 3.0000001e-01, -5.0000000e-01, -3.3306692e-17],
...,
[-4.2500001e-01, 5.0000000e-01, 4.7184480e-17],
[-4.7499999e-01, 4.4999999e-01, 5.2735593e-17],
[-5.0000000e-01, 4.2500001e-01, 5.5511151e-17]], dtype=float32)
>>> indices
array([[ 0, 442, 441],
[ 442, 122, 443],
[ 443, 121, 441],
...,
[1677, 438, 1679],
[1679, 439, 1676],
[1677, 1679, 1676]], dtype=int32)
>>> normals
array([[-1.110223e-16, 0.000000e+00, -1.000000e+00],
[-1.110223e-16, 0.000000e+00, -1.000000e+00],
[-1.110223e-16, 0.000000e+00, -1.000000e+00],
...,
[-1.110223e-16, 0.000000e+00, -1.000000e+00],
[-1.110223e-16, 0.000000e+00, -1.000000e+00],
[-1.110223e-16, 0.000000e+00, -1.000000e+00]], dtype=float32)
>>> uv
array([[0. , 0. ],
[0.1 , 0. ],
[0.2 , 0. ],
...,
[0.92499995, 1. ],
[0.975 , 0.95 ],
[1. , 0.92499995]], dtype=float32)
>>> color
array([[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0],
...,
[254, 254, 254],
[254, 254, 254],
[255, 255, 255]], dtype=uint8)
You can also read in the PLY file as a `PyVista
<https://github.com/pyvista>`_ PolyData and immediately plot it.
.. code:: pycon
>>> import pyminiply
>>> mesh = pyminiply.read_as_mesh("example.ply")
>>> mesh
PolyData (0x7f0653579c00)
N Cells: 200
N Points: 121
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: 2
>>> mesh.plot()
.. image:: https://github.com/pyvista/pyminiply/raw/main/demo.png
***********
Benchmark
***********
The main reason behind writing yet another PLY file reader for Python is
to leverage the highly performant ``miniply`` library.
There is already an benchmark demonstrating how ``miniply`` outperforms
in comparison to competing C and C++ libraries at `ply_io_benchmark
<https://github.com/mhalber/ply_io_benchmark>`_ when reading PLY files.
The benchmark here shows how ``pyminiply`` performs relative to other
Python PLY file readers.
Here are the timings from reading in a 1,000,000 point binary PLY file:
+-------------+-----------------+
| Library | Time (seconds) |
+=============+=================+
| pyminiply | 0.046 |
+-------------+-----------------+
| open3d | 0.149 |
+-------------+-----------------+
| PyVista | 0.409 |
| (VTK) | |
+-------------+-----------------+
| meshio | 0.512 |
+-------------+-----------------+
| plyfile | 8.939 |
+-------------+-----------------+
**Benchmark source:**
.. code:: python
import time
import numpy as np
import pyvista as pv
import pyminiply
import plyfile
import meshio
import open3d
filename = 'tmp.ply'
mesh = pv.Plane(i_resolution=999, j_resolution=999).triangulate()
mesh.clear_data()
mesh.save(filename)
# pyminiply
tstart = time.time()
pyminiply.read(filename)
tend = time.time() - tstart; print(f'pyminiply: {tend:.3f}')
# open3d
tstart = time.time()
open3d.io.read_point_cloud(filename)
tend = time.time() - tstart; print(f'open3d: {tend:.3f}')
# VTK/PyVista
tstart = time.time()
pv.read(filename)
tend = time.time() - tstart; print(f'VTK/PyVista: {tend:.3f}')
tstart = time.time()
meshio.read(filename)
tend = time.time() - tstart; print(f'meshio: {tend:.3f}')
# plyfile
tstart = time.time()
plyfile.PlyData.read(filename)
tend = time.time() - tstart; print(f'plyfile: {tend:.3f}')
Comparison with VTK and PyVista
===============================
Here's an additional benchmark comparing VTK/PyVista with ``pyminiply``:
.. code:: python
import numpy as np
import time
import pyvista as pv
import matplotlib.pyplot as plt
import pyminiply
times = []
filename = 'tmp.ply'
for res in range(50, 800, 50):
mesh = pv.Plane(i_resolution=res, j_resolution=res).triangulate().subdivide(2)
mesh.clear_data()
mesh.save(filename)
tstart = time.time()
pv_mesh = pv.read(filename)
vtk_time = time.time() - tstart
tstart = time.time()
ply_mesh = pyminiply.read_as_mesh(filename)
ply_reader_time = time.time() - tstart
assert np.allclose(pv_mesh['Normals'], ply_mesh['Normals'])
assert np.allclose(pv_mesh.points, ply_mesh.points)
assert np.allclose(pv_mesh._connectivity_array, ply_mesh._connectivity_array)
times.append([mesh.n_points, vtk_time, ply_reader_time])
print(times[-1])
times = np.array(times)
plt.figure(1)
plt.title('PLY load time')
plt.plot(times[:, 0], times[:, 1], label='VTK')
plt.plot(times[:, 0], times[:, 2], label='pyminiply')
plt.xlabel('Number of Points')
plt.ylabel('Time to Load (seconds)')
plt.legend()
plt.figure(2)
plt.title('PLY load time (Log-Log)')
plt.loglog(times[:, 0], times[:, 1], label='VTK')
plt.loglog(times[:, 0], times[:, 2], label='pyminiply')
plt.xlabel('Number of Points')
plt.ylabel('Time to Load (seconds)')
plt.legend()
plt.show()
.. image:: https://github.com/pyvista/pyminiply/raw/main/bench0.png
.. image:: https://github.com/pyvista/pyminiply/raw/main/bench1.png
*****************************
License and Acknowledgments
*****************************
This project relies on ``miniply`` and credit goes to the original
author for the excellent C++ library. That work is licensed under the
MIT License.
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/pyminiply/issues>`_.
Raw data
{
"_id": null,
"home_page": "https://github.com/pyvista/pyminiply",
"name": "pyminiply",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "read ply",
"author": "PyVista Developers",
"author_email": "info@pyvista.org",
"download_url": "https://files.pythonhosted.org/packages/81/b5/cbd800b46b82f0d2a0e3fcb1b1679d4462c0d5a3256bbfd555c7efa6c427/pyminiply-0.1.1.tar.gz",
"platform": null,
"description": "###########\n pyminiply\n###########\n\n|pypi| |MIT|\n\n.. |pypi| image:: https://img.shields.io/pypi/v/pyminiply.svg?logo=python&logoColor=white\n :target: https://pypi.org/project/pyminiply/\n\n.. |MIT| image:: https://img.shields.io/badge/License-MIT-yellow.svg\n :target: https://opensource.org/licenses/MIT\n\n``pyminiply`` is a Python library for rapidly reading PLY files. It is a\nPython wrapper around the fast C++ PLY reading library provided by\n`miniply <ehttps://github.com/vilya/miniply>`_. Thanks @vilya!\n\nThe main advantage of ``pyminiply`` over other PLY reading libraries is\nits performance. See the benchmarks below for more details.\n\n**************\n Installation\n**************\n\nThe recommended way to install ``pyminiply`` is via PyPI:\n\n.. code:: sh\n\n pip install pyminiply\n\nYou can also clone the repository and install it from source:\n\n.. code:: sh\n\n git clone https://github.com/pyvista/pyminiply.git\n cd pyminiply\n git submodule update --init --recursive\n pip install .\n\n*******\n Usage\n*******\n\nLoad in the vertices, indices, normals, UV, and color information from a\nPLY file:\n\n.. code:: pycon\n\n >>> import pyminiply\n >>> vertices, indices, normals, uv, color = pyminiply.read(\"example.ply\")\n >>> vertices\n array([[ 5.0000000e-01, -5.0000000e-01, -5.5511151e-17],\n [ 4.0000001e-01, -5.0000000e-01, -4.4408922e-17],\n [ 3.0000001e-01, -5.0000000e-01, -3.3306692e-17],\n ...,\n [-4.2500001e-01, 5.0000000e-01, 4.7184480e-17],\n [-4.7499999e-01, 4.4999999e-01, 5.2735593e-17],\n [-5.0000000e-01, 4.2500001e-01, 5.5511151e-17]], dtype=float32)\n >>> indices\n array([[ 0, 442, 441],\n [ 442, 122, 443],\n [ 443, 121, 441],\n ...,\n [1677, 438, 1679],\n [1679, 439, 1676],\n [1677, 1679, 1676]], dtype=int32)\n >>> normals\n array([[-1.110223e-16, 0.000000e+00, -1.000000e+00],\n [-1.110223e-16, 0.000000e+00, -1.000000e+00],\n [-1.110223e-16, 0.000000e+00, -1.000000e+00],\n ...,\n [-1.110223e-16, 0.000000e+00, -1.000000e+00],\n [-1.110223e-16, 0.000000e+00, -1.000000e+00],\n [-1.110223e-16, 0.000000e+00, -1.000000e+00]], dtype=float32)\n >>> uv\n array([[0. , 0. ],\n [0.1 , 0. ],\n [0.2 , 0. ],\n ...,\n [0.92499995, 1. ],\n [0.975 , 0.95 ],\n [1. , 0.92499995]], dtype=float32)\n >>> color\n array([[ 0, 0, 0],\n [ 0, 0, 0],\n [ 0, 0, 0],\n ...,\n [254, 254, 254],\n [254, 254, 254],\n [255, 255, 255]], dtype=uint8)\n\nYou can also read in the PLY file as a `PyVista\n<https://github.com/pyvista>`_ PolyData and immediately plot it.\n\n.. code:: pycon\n\n >>> import pyminiply\n >>> mesh = pyminiply.read_as_mesh(\"example.ply\")\n >>> mesh\n PolyData (0x7f0653579c00)\n N Cells: 200\n N Points: 121\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: 2\n\n >>> mesh.plot()\n\n.. image:: https://github.com/pyvista/pyminiply/raw/main/demo.png\n\n***********\n Benchmark\n***********\n\nThe main reason behind writing yet another PLY file reader for Python is\nto leverage the highly performant ``miniply`` library.\n\nThere is already an benchmark demonstrating how ``miniply`` outperforms\nin comparison to competing C and C++ libraries at `ply_io_benchmark\n<https://github.com/mhalber/ply_io_benchmark>`_ when reading PLY files.\nThe benchmark here shows how ``pyminiply`` performs relative to other\nPython PLY file readers.\n\nHere are the timings from reading in a 1,000,000 point binary PLY file:\n\n+-------------+-----------------+\n| Library | Time (seconds) |\n+=============+=================+\n| pyminiply | 0.046 |\n+-------------+-----------------+\n| open3d | 0.149 |\n+-------------+-----------------+\n| PyVista | 0.409 |\n| (VTK) | |\n+-------------+-----------------+\n| meshio | 0.512 |\n+-------------+-----------------+\n| plyfile | 8.939 |\n+-------------+-----------------+\n\n**Benchmark source:**\n\n.. code:: python\n\n import time\n\n import numpy as np\n import pyvista as pv\n import pyminiply\n import plyfile\n import meshio\n import open3d\n\n filename = 'tmp.ply'\n mesh = pv.Plane(i_resolution=999, j_resolution=999).triangulate()\n mesh.clear_data()\n mesh.save(filename)\n\n # pyminiply\n tstart = time.time()\n pyminiply.read(filename)\n tend = time.time() - tstart; print(f'pyminiply: {tend:.3f}')\n\n # open3d\n tstart = time.time()\n open3d.io.read_point_cloud(filename)\n tend = time.time() - tstart; print(f'open3d: {tend:.3f}')\n\n # VTK/PyVista\n tstart = time.time()\n pv.read(filename)\n tend = time.time() - tstart; print(f'VTK/PyVista: {tend:.3f}')\n\n tstart = time.time()\n meshio.read(filename)\n tend = time.time() - tstart; print(f'meshio: {tend:.3f}')\n\n # plyfile\n tstart = time.time()\n plyfile.PlyData.read(filename)\n tend = time.time() - tstart; print(f'plyfile: {tend:.3f}')\n\nComparison with VTK and PyVista\n===============================\n\nHere's an additional benchmark comparing VTK/PyVista with ``pyminiply``:\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 pyminiply\n\n times = []\n filename = 'tmp.ply'\n for res in range(50, 800, 50):\n mesh = pv.Plane(i_resolution=res, j_resolution=res).triangulate().subdivide(2)\n mesh.clear_data()\n mesh.save(filename)\n\n tstart = time.time()\n pv_mesh = pv.read(filename)\n vtk_time = time.time() - tstart\n\n tstart = time.time()\n ply_mesh = pyminiply.read_as_mesh(filename)\n ply_reader_time = time.time() - tstart\n\n assert np.allclose(pv_mesh['Normals'], ply_mesh['Normals'])\n assert np.allclose(pv_mesh.points, ply_mesh.points)\n assert np.allclose(pv_mesh._connectivity_array, ply_mesh._connectivity_array)\n\n times.append([mesh.n_points, vtk_time, ply_reader_time])\n print(times[-1])\n\n\n times = np.array(times)\n plt.figure(1)\n plt.title('PLY load time')\n plt.plot(times[:, 0], times[:, 1], label='VTK')\n plt.plot(times[:, 0], times[:, 2], label='pyminiply')\n plt.xlabel('Number of Points')\n plt.ylabel('Time to Load (seconds)')\n plt.legend()\n\n plt.figure(2)\n plt.title('PLY load time (Log-Log)')\n plt.loglog(times[:, 0], times[:, 1], label='VTK')\n plt.loglog(times[:, 0], times[:, 2], label='pyminiply')\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/pyminiply/raw/main/bench0.png\n\n.. image:: https://github.com/pyvista/pyminiply/raw/main/bench1.png\n\n*****************************\n License and Acknowledgments\n*****************************\n\nThis project relies on ``miniply`` and credit goes to the original\nauthor for the excellent C++ library. That work is licensed under the\nMIT License.\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/pyminiply/issues>`_.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Read in PLY files using a wrapper over miniply",
"version": "0.1.1",
"project_urls": {
"Homepage": "https://github.com/pyvista/pyminiply"
},
"split_keywords": [
"read",
"ply"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "76f530d1d0338fced5e1c831cf0e7ca55a078224844029471cd308a388a4aac8",
"md5": "64da04788996d3809726df063b1682aa",
"sha256": "76816c9ae350147a5667d70c6aeaaddbfe7fba31d93329a1f54ebca3a06483b9"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp310-cp310-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "64da04788996d3809726df063b1682aa",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 123847,
"upload_time": "2023-10-31T18:15:52",
"upload_time_iso_8601": "2023-10-31T18:15:52.027710Z",
"url": "https://files.pythonhosted.org/packages/76/f5/30d1d0338fced5e1c831cf0e7ca55a078224844029471cd308a388a4aac8/pyminiply-0.1.1-cp310-cp310-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "776e26baff59fb8218f7bca60b5b9d36a752ed2f1a4150f0a9122296f684239c",
"md5": "a15a6616cdb9992f8a43181329a0c20e",
"sha256": "e5ebcae7fa1b9bce5c8200bae5ed039e0be49ea38323550c0616587f04b46a93"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "a15a6616cdb9992f8a43181329a0c20e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 67194,
"upload_time": "2023-10-31T18:15:53",
"upload_time_iso_8601": "2023-10-31T18:15:53.883816Z",
"url": "https://files.pythonhosted.org/packages/77/6e/26baff59fb8218f7bca60b5b9d36a752ed2f1a4150f0a9122296f684239c/pyminiply-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6bf0e818e2ca89dab8c2cea4e407d0dca1d2c7136bd1ee5fdb0c9a72c8856f4d",
"md5": "2b46a55391a85d822609b24a268b201c",
"sha256": "3b90d0ac8fea9271af23c1e4967b6fcc8a80c696fb6bc5d63f2dfef8dd63a14e"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "2b46a55391a85d822609b24a268b201c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 463932,
"upload_time": "2023-10-31T18:15:55",
"upload_time_iso_8601": "2023-10-31T18:15:55.502714Z",
"url": "https://files.pythonhosted.org/packages/6b/f0/e818e2ca89dab8c2cea4e407d0dca1d2c7136bd1ee5fdb0c9a72c8856f4d/pyminiply-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0b99bd3cbc647473738a54bc55a64fea263ab6a37c3e272af25bbf787adb77ca",
"md5": "1de843fc33d144163c5e45f5eb97ffb2",
"sha256": "97e434bf8fac2c9c6cc09b1f98dfd882cc9a60541a92ca34ffdefe598405e7c6"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "1de843fc33d144163c5e45f5eb97ffb2",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 52800,
"upload_time": "2023-10-31T18:15:57",
"upload_time_iso_8601": "2023-10-31T18:15:57.053757Z",
"url": "https://files.pythonhosted.org/packages/0b/99/bd3cbc647473738a54bc55a64fea263ab6a37c3e272af25bbf787adb77ca/pyminiply-0.1.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "005ae010d4a8f7fa7a5e6583fedbdebd08ea9b40251bbabd4342152e65640dbc",
"md5": "4fd57ca40845f35b59ce2e788c50cbd8",
"sha256": "f4c98fb89d62c867726c41a72f28070e5a5f7c6f26516643d077dc672eeb2766"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp311-cp311-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "4fd57ca40845f35b59ce2e788c50cbd8",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 123916,
"upload_time": "2023-10-31T18:15:58",
"upload_time_iso_8601": "2023-10-31T18:15:58.513974Z",
"url": "https://files.pythonhosted.org/packages/00/5a/e010d4a8f7fa7a5e6583fedbdebd08ea9b40251bbabd4342152e65640dbc/pyminiply-0.1.1-cp311-cp311-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "492e6dc6729d6b4c484490f5058775ced94772bde81ec0656da8c2373318559e",
"md5": "b1acb86a5b0bbadf23b67bb7047220c3",
"sha256": "d4cd574cdf61a1f9144c0e5f045dcf9c1304553a239c551ba5e19d990dc065d1"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "b1acb86a5b0bbadf23b67bb7047220c3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 67333,
"upload_time": "2023-10-31T18:15:59",
"upload_time_iso_8601": "2023-10-31T18:15:59.617071Z",
"url": "https://files.pythonhosted.org/packages/49/2e/6dc6729d6b4c484490f5058775ced94772bde81ec0656da8c2373318559e/pyminiply-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e89eda63b38fbb27ad1871de22d67a577926066c896aef1adcf28baf92e0bce1",
"md5": "835b84cc6136a9c30c4c2dcb5eff9b3d",
"sha256": "218c88b940ee20fde0048d6c797ac7bc70676ab0f3ae4e69ed9cc29c35ecabaa"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "835b84cc6136a9c30c4c2dcb5eff9b3d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 476785,
"upload_time": "2023-10-31T18:16:01",
"upload_time_iso_8601": "2023-10-31T18:16:01.129956Z",
"url": "https://files.pythonhosted.org/packages/e8/9e/da63b38fbb27ad1871de22d67a577926066c896aef1adcf28baf92e0bce1/pyminiply-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "21562d9b4b3127158e48e82831da9517ba1d678356c2ee8f5635115fc23cba32",
"md5": "e2b420439741bb7c5e0c0c03e9341c1a",
"sha256": "edadaf5f84effeef40bb93b1a800f74260ac437818058d2ec085b37babee4692"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "e2b420439741bb7c5e0c0c03e9341c1a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 52818,
"upload_time": "2023-10-31T18:16:03",
"upload_time_iso_8601": "2023-10-31T18:16:03.290260Z",
"url": "https://files.pythonhosted.org/packages/21/56/2d9b4b3127158e48e82831da9517ba1d678356c2ee8f5635115fc23cba32/pyminiply-0.1.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "02dde940dfc59bcd6f1093eceb60a11c23121f76cb1047e50fe5c558e5b42c86",
"md5": "5ee58739a30a5446a0ed833e72351cc9",
"sha256": "8727e6de855829c50719006b6b6ec9ab3a42348a447fe97f5fd8c5a6f34df9a7"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp312-cp312-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "5ee58739a30a5446a0ed833e72351cc9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 123843,
"upload_time": "2023-10-31T18:16:05",
"upload_time_iso_8601": "2023-10-31T18:16:05.015172Z",
"url": "https://files.pythonhosted.org/packages/02/dd/e940dfc59bcd6f1093eceb60a11c23121f76cb1047e50fe5c558e5b42c86/pyminiply-0.1.1-cp312-cp312-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "139331cbb8d5f87060d4d98f8195c15fc0e4d4690de3de5f1afb741eee4b58b6",
"md5": "530c4ff71490f12fcd761ed6755fccda",
"sha256": "3fe1595e017f4d257ef54ce3d9acbfc504103beddc316142049c85a1d06a6490"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "530c4ff71490f12fcd761ed6755fccda",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 67254,
"upload_time": "2023-10-31T18:16:06",
"upload_time_iso_8601": "2023-10-31T18:16:06.498699Z",
"url": "https://files.pythonhosted.org/packages/13/93/31cbb8d5f87060d4d98f8195c15fc0e4d4690de3de5f1afb741eee4b58b6/pyminiply-0.1.1-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e3c9b34e884eb87407466655990151e558b927a0f4f71861d176134f5eaab903",
"md5": "84f110afa7d31e76f816747fca6a2bf7",
"sha256": "0388f3f464007b86b3daffd8255be102a246738228d099f4eae48cc78e3a0448"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "84f110afa7d31e76f816747fca6a2bf7",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 478259,
"upload_time": "2023-10-31T18:16:08",
"upload_time_iso_8601": "2023-10-31T18:16:08.016582Z",
"url": "https://files.pythonhosted.org/packages/e3/c9/b34e884eb87407466655990151e558b927a0f4f71861d176134f5eaab903/pyminiply-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c035897b76a886270f239ffbccb081d07a858f19b96bfd737b3dd5f841e24a29",
"md5": "96539b3388099906eefb46cc04368005",
"sha256": "6cd769906d206f5ee93ed3dcd2556a0b1ee0ab031aafc8801c2c886865003836"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "96539b3388099906eefb46cc04368005",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 52740,
"upload_time": "2023-10-31T18:16:09",
"upload_time_iso_8601": "2023-10-31T18:16:09.931579Z",
"url": "https://files.pythonhosted.org/packages/c0/35/897b76a886270f239ffbccb081d07a858f19b96bfd737b3dd5f841e24a29/pyminiply-0.1.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f5f1d426cbe714dd75cc6d1d5e3f8e0a91611e96343ad00b50066674b33a854d",
"md5": "b1ca302c0f217664916b84ebc3ca9929",
"sha256": "ff214ed3c3a2227389c3c2402d8f4d40d8b5642f724fc382af76e9d422bc441f"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp38-cp38-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "b1ca302c0f217664916b84ebc3ca9929",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 124644,
"upload_time": "2023-10-31T18:16:11",
"upload_time_iso_8601": "2023-10-31T18:16:11.581885Z",
"url": "https://files.pythonhosted.org/packages/f5/f1/d426cbe714dd75cc6d1d5e3f8e0a91611e96343ad00b50066674b33a854d/pyminiply-0.1.1-cp38-cp38-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2346cb7c606f860e5869587ea681fd391c4a142e2755395c2ef493eefebe4975",
"md5": "0d2257bee73e94f78fadb03a246a313d",
"sha256": "28f1cb4da723cbf08e7a887668ae88299fcd08ea2ebbf6d40087c739188afc8d"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "0d2257bee73e94f78fadb03a246a313d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 67583,
"upload_time": "2023-10-31T18:16:13",
"upload_time_iso_8601": "2023-10-31T18:16:13.138962Z",
"url": "https://files.pythonhosted.org/packages/23/46/cb7c606f860e5869587ea681fd391c4a142e2755395c2ef493eefebe4975/pyminiply-0.1.1-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fbf8037531a90835e12c31926790bad71269fc6233b29ec1e6e7c1cf91b22966",
"md5": "d50db1c034176a15dcc2ad7cf0e90a58",
"sha256": "45ec8550c058cff8856d49472d27e731c81c90a68d8b6988c08a2ac2b1d5b5d7"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d50db1c034176a15dcc2ad7cf0e90a58",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 468594,
"upload_time": "2023-10-31T18:16:14",
"upload_time_iso_8601": "2023-10-31T18:16:14.840780Z",
"url": "https://files.pythonhosted.org/packages/fb/f8/037531a90835e12c31926790bad71269fc6233b29ec1e6e7c1cf91b22966/pyminiply-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a5991d6205f1a06eaadc232ec1458d6e2b20bd43ffcd6fcd913f671487c0c5b6",
"md5": "4d0ffd6c90ae3e0d6882de716dbbd48f",
"sha256": "04e87bc2c94965f29e54b2a18b630ec9ec7cff93d260420e88e7954c4e0f8983"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "4d0ffd6c90ae3e0d6882de716dbbd48f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 53444,
"upload_time": "2023-10-31T18:16:16",
"upload_time_iso_8601": "2023-10-31T18:16:16.065958Z",
"url": "https://files.pythonhosted.org/packages/a5/99/1d6205f1a06eaadc232ec1458d6e2b20bd43ffcd6fcd913f671487c0c5b6/pyminiply-0.1.1-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "edeca4d7a0d1cea63ed47af1fce00395b144211483e60ba453f2f3cba392c4ac",
"md5": "1bdf2103630be0971b2fba4e90bb075c",
"sha256": "b149e83565c47e3cc3110ef40ff8f0f5bb63e9024bb9faa5d62e522b1cdff8cf"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp39-cp39-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "1bdf2103630be0971b2fba4e90bb075c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 124581,
"upload_time": "2023-10-31T18:16:17",
"upload_time_iso_8601": "2023-10-31T18:16:17.690180Z",
"url": "https://files.pythonhosted.org/packages/ed/ec/a4d7a0d1cea63ed47af1fce00395b144211483e60ba453f2f3cba392c4ac/pyminiply-0.1.1-cp39-cp39-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8cd54a59da5610faa8420fde7535cf0f158f062e7ed6c40f5038cc71126427a6",
"md5": "1d1ac8b0e6a89c7821f09ad0a504b4e4",
"sha256": "0412606eadeb0cc26ab8bd423121633bea33ef27a291fedd4d76862d1e85c2ef"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "1d1ac8b0e6a89c7821f09ad0a504b4e4",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 67621,
"upload_time": "2023-10-31T18:16:19",
"upload_time_iso_8601": "2023-10-31T18:16:19.444128Z",
"url": "https://files.pythonhosted.org/packages/8c/d5/4a59da5610faa8420fde7535cf0f158f062e7ed6c40f5038cc71126427a6/pyminiply-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8c6a44e0adeae2d9a7bf44f625a448cadc997edad5c193bfa805230c78d0e730",
"md5": "1bf8792e7767a05144978ba549a7f68c",
"sha256": "63970e81d82682f4fb11e1c215bc1aa8364338b2cac0cd18c1659a958faa91c3"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "1bf8792e7767a05144978ba549a7f68c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 465798,
"upload_time": "2023-10-31T18:16:21",
"upload_time_iso_8601": "2023-10-31T18:16:21.796286Z",
"url": "https://files.pythonhosted.org/packages/8c/6a/44e0adeae2d9a7bf44f625a448cadc997edad5c193bfa805230c78d0e730/pyminiply-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ae99d54cc4b47c21f0eb3def5d35cfad6f35e0d66f2ca926b9a1c7e53a2cd976",
"md5": "494a19a4d6842a446d6734f56776c3e3",
"sha256": "8803b112290706e969ea931e11805f365c46a2dc759673f4841a690f6584ec97"
},
"downloads": -1,
"filename": "pyminiply-0.1.1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "494a19a4d6842a446d6734f56776c3e3",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 53077,
"upload_time": "2023-10-31T18:16:23",
"upload_time_iso_8601": "2023-10-31T18:16:23.469646Z",
"url": "https://files.pythonhosted.org/packages/ae/99/d54cc4b47c21f0eb3def5d35cfad6f35e0d66f2ca926b9a1c7e53a2cd976/pyminiply-0.1.1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "81b5cbd800b46b82f0d2a0e3fcb1b1679d4462c0d5a3256bbfd555c7efa6c427",
"md5": "0188c130103600373323f5d8e5828393",
"sha256": "9cc47f1ac9852ac053148c67883042e92f1a97a3c1ac7f167b2457388f2e9b9c"
},
"downloads": -1,
"filename": "pyminiply-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "0188c130103600373323f5d8e5828393",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 28400,
"upload_time": "2023-10-31T18:16:24",
"upload_time_iso_8601": "2023-10-31T18:16:24.890709Z",
"url": "https://files.pythonhosted.org/packages/81/b5/cbd800b46b82f0d2a0e3fcb1b1679d4462c0d5a3256bbfd555c7efa6c427/pyminiply-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-31 18:16:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pyvista",
"github_project": "pyminiply",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pyminiply"
}