{"library":"skia-pathops","title":"skia-pathops: Skia Path Operations for Python","description":"skia-pathops is a Python library that provides access to boolean operations on 2D vector paths using Google's Skia graphics library. It's currently at version 0.9.2, seeing relatively frequent updates that often align with upstream Skia library changes or Python version support.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install skia-pathops"],"cli":null},"imports":["from skia_pathops import Path","from skia_pathops import PathOp","from skia_pathops import OpBuilder"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from skia_pathops import Path, PathOp, OpBuilder\n\n# Create two simple paths\npath1 = Path()\npath1.moveTo(0, 0)\npath1.lineTo(100, 0)\npath1.lineTo(100, 100)\npath1.lineTo(0, 100)\npath1.close()\n\npath2 = Path()\npath2.moveTo(50, 50)\npath2.lineTo(150, 50)\npath2.lineTo(150, 150)\npath2.lineTo(50, 150)\npath2.close()\n\n# Perform a union operation\nbuilder = OpBuilder()\nbuilder.op(path1, path2, PathOp.UNION)\nunion_path = builder.resolve().pop() # resolve returns a list of paths\n\nprint(f\"Original path 1 contour count: {len(path1.getContours())}\")\nprint(f\"Original path 2 contour count: {len(path2.getContours())}\")\nprint(f\"Union path contour count: {len(union_path.getContours())}\")\n\n# You can inspect the points of the resulting path (simplified output)\nfirst_contour_points = union_path.getContours()[0].points\nprint(f\"First contour points (first 3): {first_contour_points[:3]}\")","lang":"python","description":"This quickstart demonstrates how to create two simple rectangular paths and perform a union operation using `OpBuilder`. The result is a new `Path` object representing the combined shape.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"0.8.0.post2","pypi_latest":"0.9.2","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.7,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"skia-pathops","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"29.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"skia-pathops","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"27M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"skia-pathops","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"31.2M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"skia-pathops","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.7,"import_time_s":null,"mem_mb":null,"disk_size":"29M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"skia-pathops","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"23.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"skia-pathops","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"21M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"skia-pathops","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"22.8M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"skia-pathops","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":"21M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"skia-pathops","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"28.7M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"skia-pathops","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":2,"import_time_s":null,"mem_mb":null,"disk_size":"27M"}]}}