{"library":"plyfile","title":"plyfile","description":"The `plyfile` Python module provides a simple, NumPy-based facility for reading and writing ASCII and binary PLY files, a common format for storing 3D surface meshes. It is currently at version 1.1.3 (released October 21, 2025) and maintains an active development status with several releases per year, as evidenced by its changelog and PyPI activity.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install plyfile"],"cli":null},"imports":["from plyfile import PlyData","from plyfile import PlyElement"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import numpy as np\nfrom plyfile import PlyData, PlyElement\nimport os\n\n# 1. Prepare data for a PLY file\nvertices = np.array([\n    (0.0, 0.0, 0.0, 255, 0, 0),\n    (1.0, 0.0, 0.0, 0, 255, 0),\n    (0.0, 1.0, 0.0, 0, 0, 255),\n    (1.0, 1.0, 0.0, 255, 255, 0)\n], dtype=[('x', 'f4'), ('y', 'f4'), ('z', 'f4'), ('red', 'u1'), ('green', 'u1'), ('blue', 'u1')])\n\nfaces = np.array([\n    ([0, 1, 2],),\n    ([1, 3, 2],)\n], dtype=[('vertex_indices', 'i4', (3,))])\n\n# 2. Create PlyElement instances\nvertex_element = PlyElement.describe(vertices, 'vertex')\nface_element = PlyElement.describe(faces, 'face')\n\n# 3. Create a PlyData instance\nplydata_to_write = PlyData([vertex_element, face_element], text=True, comments=['Created by plyfile quickstart'])\n\noutput_filename = 'quickstart_output.ply'\n\n# 4. Write the PLY data to a file\nwith open(output_filename, 'wb') as f:\n    plydata_to_write.write(f)\n\nprint(f\"Successfully wrote PLY file: {output_filename}\")\n\n# 5. Read the PLY data from the file\nwith open(output_filename, 'rb') as f:\n    plydata_read = PlyData.read(f)\n\nprint(\"\\nSuccessfully read PLY file:\")\nprint(plydata_read)\nprint(\"Vertices:\\n\", plydata_read['vertex'].data)\nprint(\"Faces:\\n\", plydata_read['face'].data)\n\n# Clean up the created file\nos.remove(output_filename)\nprint(f\"Cleaned up {output_filename}\")","lang":"python","description":"This quickstart demonstrates how to create structured NumPy arrays representing vertices and faces, construct `PlyElement` and `PlyData` objects, write them to an ASCII PLY file, and then read the data back. It covers the basic workflow for both serialization and deserialization.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"1.1.3","pypi_latest":"1.1.3","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3.7,"avg_import_s":0.25,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"plyfile","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.22,"mem_mb":6.7,"disk_size":"89.5M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"plyfile","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.7,"import_time_s":0.19,"mem_mb":6.7,"disk_size":"86M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"plyfile","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.34,"mem_mb":7.2,"disk_size":"97.0M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"plyfile","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.28,"mem_mb":7.2,"disk_size":"93M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"plyfile","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.28,"mem_mb":7.1,"disk_size":"85.4M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"plyfile","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.4,"import_time_s":0.3,"mem_mb":7.1,"disk_size":"81M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"plyfile","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.21,"mem_mb":7.6,"disk_size":"85.0M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"plyfile","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.29,"mem_mb":7.6,"disk_size":"80M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"plyfile","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.22,"mem_mb":6.5,"disk_size":"97.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"plyfile","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.4,"import_time_s":0.21,"mem_mb":6.5,"disk_size":"96M"}]}}