Very fast Python line simplification using either the RDP or Visvalingam-Whyatt algorithm implemented in Rust

Update Python version support from 3.9-3.13 to 3.10-3.14 (#120)

* Update Python version support from 3.9-3.13 to 3.10-3.14

- Update CI workflow to build wheels for Python 3.10-3.14 across all platforms
- Update pyproject.toml to require Python >=3.10
- Remove Python 3.9 classifier and add Python 3.14 classifier
- Drops Python 3.9 support (approaching EOL)
- Adds Python 3.14 support (latest release)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix macOS x86_64 wheel build by setting MACOSX_DEPLOYMENT_TARGET=10.12

The librdp.dylib from v0.14.2 requires macOS 10.12 minimum, but cibuildwheel
was defaulting to 10.9 for x86_64 builds. This caused delocate-wheel to fail
with a deployment target mismatch error.

Setting CIBW_ENVIRONMENT_MACOS to specify MACOSX_DEPLOYMENT_TARGET=10.12 aligns
the wheel's minimum macOS version with the library's requirement.

---------

Co-authored-by: Claude <noreply@anthropic.com>

authored by urschrei.bsky.social Claude and committed by GitHub 4edf88e1 63c60979

Changed files
+8 -7
.github
workflows
+6 -5
.github/workflows/wheels.yml
··· 35 35 matrix: 36 36 include: 37 37 - os: ubuntu-latest 38 - pybuilds: cp3{9,10,11,12,13}-manylinux_x86_64 38 + pybuilds: cp3{10,11,12,13,14}-manylinux_x86_64 39 39 arch: x86_64 40 40 id: linux 41 41 - os: ubuntu-24.04-arm 42 - pybuilds: cp3{9,10,11,12,13}-manylinux_aarch64 42 + pybuilds: cp3{10,11,12,13,14}-manylinux_aarch64 43 43 arch: aarch64 44 44 id: linux_arm64 45 45 - os: macos-latest 46 - pybuilds: cp3{9,10,11,12,13}-macosx_x86_64 46 + pybuilds: cp3{10,11,12,13,14}-macosx_x86_64 47 47 arch: x86_64 48 48 id: macos_x86 49 49 - os: macos-latest 50 - pybuilds: cp3{10,11,12,13}-macosx_arm64 50 + pybuilds: cp3{10,11,12,13,14}-macosx_arm64 51 51 arch: arm64 52 52 id: macos_arm64 53 53 - os: windows-latest 54 - pybuilds: cp3{9,10,11,12,13}-win_amd64 54 + pybuilds: cp3{10,11,12,13,14}-win_amd64 55 55 arch: x86_64 56 56 id: windows 57 57 ··· 111 111 CIBW_BUILD: ${{ matrix.pybuilds }} 112 112 CIBW_ARCHS_MACOS: ${{ matrix.arch }} 113 113 CIBW_ARCHS_LINUX: ${{ matrix.arch }} 114 + CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=10.12 114 115 115 116 - id: attest 116 117 name: Attest Build Provenance
+2 -2
pyproject.toml
··· 2 2 name = "simplification" 3 3 dynamic = ["version", "readme"] 4 4 description = "Fast linestring simplification using RDP or Visvalingam-Whyatt and a Rust binary" 5 - requires-python = ">=3.9" 5 + requires-python = ">=3.10" 6 6 dependencies = [ 7 7 "numpy >= 2.0.0", 8 8 ] ··· 12 12 keywords = ["Geo", "Polyline", "Linestring", "Ramer-Douglas-Peucker", "Douglas-Peucker", "Visvalingam-Whyatt"] 13 13 classifiers = [ 14 14 "Programming Language :: Python", 15 - "Programming Language :: Python :: 3.9", 16 15 "Programming Language :: Python :: 3.10", 17 16 "Programming Language :: Python :: 3.11", 18 17 "Programming Language :: Python :: 3.12", 19 18 "Programming Language :: Python :: 3.13", 19 + "Programming Language :: Python :: 3.14", 20 20 "Development Status :: 5 - Production/Stable", 21 21 "Intended Audience :: Developers", 22 22 "Intended Audience :: Science/Research",