mapbox-earcut 2.0.0


pip install mapbox-earcut

  Latest version

Released: Nov 16, 2025

Project Links

Meta
Author: Samuel Kogler
Requires Python: >=3.9

Classifiers

Development Status
  • 5 - Production/Stable

Intended Audience
  • Developers

License
  • OSI Approved :: ISC License (ISCL)

Programming Language
  • C++
  • Python :: 3
  • Python :: 3.9
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13
  • Python :: 3.14
  • Python :: Free Threading :: 1 - Unstable

mapbox_earcut

PyPi version

Python bindings for the C++ implementation of the Mapbox Earcut library, which provides very fast and quite robust triangulation of 2D polygons.

Original code: earcut.hpp

Original description:

The library implements a modified ear slicing algorithm, optimized by z-order curve hashing and extended to handle holes, twisted polygons, degeneracies and self-intersections in a way that doesn't guarantee correctness of triangulation, but attempts to always produce acceptable results for practical data like geographical shapes.

Provided functions (depending on dtype of vertex data):

triangulate_float32
triangulate_float64
triangulate_int32
triangulate_int64

Example:

import mapbox_earcut as earcut
import numpy as np

# A Nx2 array of vertices. Must be 2D.
verts = np.array([[0, 0], [1, 0], [1, 1]]).reshape(-1, 2)

# An array of end-indices for each ring.
# The first ring is the outer contour of the polygon.
# Subsequent ones are holes.
# This implies that the last index must always be equal to the size of verts!
rings = np.array([3])

result = earcut.triangulate_float32(verts, rings)

# Result is an np.ndarray with dtype np.uint32 and shape (3,)
# containing indices into the verts array.

print(verts[result])
# [[1 0]
#  [1 1]
#  [0 0]]

Wheel compatibility matrix

Platform CPython 3.9 CPython 3.10 CPython 3.11 CPython 3.12 CPython 3.13 CPython 3.14 CPython (additional flags: t) 3.14
macosx_10_13_x86_64
macosx_10_15_x86_64
macosx_11_0_arm64
manylinux_2_24_aarch64
manylinux_2_24_x86_64
manylinux_2_26_aarch64
manylinux_2_27_x86_64
manylinux_2_28_aarch64
manylinux_2_28_x86_64
musllinux_1_2_aarch64
musllinux_1_2_x86_64
win32
win_amd64
win_arm64

Files in release

mapbox_earcut-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl (54.6KiB)
mapbox_earcut-2.0.0-cp310-cp310-macosx_11_0_arm64.whl (51.3KiB)
mapbox_earcut-2.0.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (55.6KiB)
mapbox_earcut-2.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (58.2KiB)
mapbox_earcut-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl (149.4KiB)
mapbox_earcut-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl (154.0KiB)
mapbox_earcut-2.0.0-cp310-cp310-win32.whl (50.4KiB)
mapbox_earcut-2.0.0-cp310-cp310-win_amd64.whl (55.5KiB)
mapbox_earcut-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl (54.5KiB)
mapbox_earcut-2.0.0-cp311-cp311-macosx_11_0_arm64.whl (51.2KiB)
mapbox_earcut-2.0.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (55.5KiB)
mapbox_earcut-2.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (58.0KiB)
mapbox_earcut-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl (149.3KiB)
mapbox_earcut-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl (153.9KiB)
mapbox_earcut-2.0.0-cp311-cp311-win32.whl (50.2KiB)
mapbox_earcut-2.0.0-cp311-cp311-win_amd64.whl (55.3KiB)
mapbox_earcut-2.0.0-cp311-cp311-win_arm64.whl (49.3KiB)
mapbox_earcut-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl (54.3KiB)
mapbox_earcut-2.0.0-cp312-cp312-macosx_11_0_arm64.whl (50.8KiB)
mapbox_earcut-2.0.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (55.0KiB)
mapbox_earcut-2.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (57.8KiB)
mapbox_earcut-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl (148.7KiB)
mapbox_earcut-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl (153.6KiB)
mapbox_earcut-2.0.0-cp312-cp312-win32.whl (50.0KiB)
mapbox_earcut-2.0.0-cp312-cp312-win_amd64.whl (55.1KiB)
mapbox_earcut-2.0.0-cp312-cp312-win_arm64.whl (48.9KiB)
mapbox_earcut-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl (54.3KiB)
mapbox_earcut-2.0.0-cp313-cp313-macosx_11_0_arm64.whl (50.8KiB)
mapbox_earcut-2.0.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (55.0KiB)
mapbox_earcut-2.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (57.8KiB)
mapbox_earcut-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl (148.7KiB)
mapbox_earcut-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl (153.6KiB)
mapbox_earcut-2.0.0-cp313-cp313-win32.whl (50.0KiB)
mapbox_earcut-2.0.0-cp313-cp313-win_amd64.whl (55.1KiB)
mapbox_earcut-2.0.0-cp313-cp313-win_arm64.whl (48.9KiB)
mapbox_earcut-2.0.0-cp314-cp314-macosx_10_15_x86_64.whl (54.4KiB)
mapbox_earcut-2.0.0-cp314-cp314-macosx_11_0_arm64.whl (50.8KiB)
mapbox_earcut-2.0.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (55.2KiB)
mapbox_earcut-2.0.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (57.8KiB)
mapbox_earcut-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl (149.0KiB)
mapbox_earcut-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl (153.6KiB)
mapbox_earcut-2.0.0-cp314-cp314-win32.whl (51.7KiB)
mapbox_earcut-2.0.0-cp314-cp314-win_amd64.whl (56.4KiB)
mapbox_earcut-2.0.0-cp314-cp314-win_arm64.whl (50.7KiB)
mapbox_earcut-2.0.0-cp314-cp314t-macosx_10_15_x86_64.whl (55.1KiB)
mapbox_earcut-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl (51.9KiB)
mapbox_earcut-2.0.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (55.0KiB)
mapbox_earcut-2.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (57.2KiB)
mapbox_earcut-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl (151.3KiB)
mapbox_earcut-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl (155.5KiB)
mapbox_earcut-2.0.0-cp314-cp314t-win32.whl (52.9KiB)
mapbox_earcut-2.0.0-cp314-cp314t-win_amd64.whl (59.4KiB)
mapbox_earcut-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl (54.7KiB)
mapbox_earcut-2.0.0-cp39-cp39-macosx_11_0_arm64.whl (51.4KiB)
mapbox_earcut-2.0.0-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (55.7KiB)
mapbox_earcut-2.0.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (58.3KiB)
mapbox_earcut-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl (149.5KiB)
mapbox_earcut-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl (154.0KiB)
mapbox_earcut-2.0.0-cp39-cp39-win32.whl (50.8KiB)
mapbox_earcut-2.0.0-cp39-cp39-win_amd64.whl (55.8KiB)
mapbox_earcut-2.0.0.tar.gz (39.0KiB)
Extras:
Dependencies:
numpy