[Git][debian-gis-team/python-shapely][master] 6 commits: New upstream version 2.1.2
Bas Couwenberg (@sebastic)
gitlab at salsa.debian.org
Fri Sep 26 17:27:55 BST 2025
Bas Couwenberg pushed to branch master at Debian GIS Project / python-shapely
Commits:
7d895e25 by Bas Couwenberg at 2025-09-26T18:19:41+02:00
New upstream version 2.1.2
- - - - -
3c043ea5 by Bas Couwenberg at 2025-09-26T18:19:42+02:00
Update upstream source from tag 'upstream/2.1.2'
Update to upstream version '2.1.2'
with Debian dir 68b21f0d42474c319128a2f8388136b8c6bfc8e7
- - - - -
eec20f3b by Bas Couwenberg at 2025-09-26T18:19:58+02:00
New upstream release.
- - - - -
f23684b2 by Bas Couwenberg at 2025-09-26T18:21:35+02:00
Drop geos-3.14.0.patch, fixed upstream.
- - - - -
3058fa66 by Bas Couwenberg at 2025-09-26T18:24:51+02:00
Enable verbose pytest output.
- - - - -
b066776e by Bas Couwenberg at 2025-09-26T18:25:10+02:00
Set distribution to unstable.
- - - - -
15 changed files:
- .github/workflows/pre-commit.yml
- .github/workflows/release.yml
- .github/workflows/tests.yml
- CHANGES.txt
- CITATION.cff
- debian/changelog
- − debian/patches/geos-3.14.0.patch
- debian/patches/series
- debian/rules
- docs/release/2.x.rst
- pyproject.toml
- shapely/_version.py
- shapely/set_operations.py
- shapely/tests/test_measurement.py
- shapely/tests/test_set_operations.py
Changes:
=====================================
.github/workflows/pre-commit.yml
=====================================
@@ -6,9 +6,9 @@ jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout at v4
+ - uses: actions/checkout at v5
- - uses: actions/setup-python at v5
+ - uses: actions/setup-python at v6
with:
python-version: 3.x
=====================================
.github/workflows/release.yml
=====================================
@@ -28,12 +28,12 @@ jobs:
steps:
- name: Checkout source
- uses: actions/checkout at v4
+ uses: actions/checkout at v5
with:
fetch-depth: 0
- name: Set up Python
- uses: actions/setup-python at v5
+ uses: actions/setup-python at v6
with:
python-version: "3.x"
@@ -75,11 +75,11 @@ jobs:
cibw_build: "*musllinux_aarch64"
arch: aarch64
env:
- basetag: 2024.08.12-1
+ basetag: 2025.08.02-1
steps:
- name: Checkout source
- uses: actions/checkout at v4
+ uses: actions/checkout at v5
with:
fetch-depth: 0
@@ -113,7 +113,7 @@ jobs:
shell: bash
- name: Build wheels
- uses: pypa/cibuildwheel at v2.23.3
+ uses: pypa/cibuildwheel at v3.2.0
env:
CIBW_ARCHS: ${{ matrix.arch }}
# TEMP don't use automated/isolated build environment, but manually
@@ -145,10 +145,10 @@ jobs:
fail-fast: false
matrix:
include:
- - os: windows-2019
+ - os: windows-2022
arch: x86
msvc_arch: x86
- - os: windows-2019
+ - os: windows-2022
arch: AMD64
msvc_arch: x64
- os: macos-13
@@ -160,7 +160,7 @@ jobs:
steps:
- name: Checkout source
- uses: actions/checkout at v4
+ uses: actions/checkout at v5
with:
fetch-depth: 0
@@ -177,7 +177,7 @@ jobs:
- name: Add MSVC LICENSE
run: cp ci/wheelbuilder/LICENSE_win32 .
shell: bash
- if: ${{ matrix.os == 'windows-2019' }}
+ if: ${{ startsWith(matrix.os, 'windows') }}
- name: Activate MSVC
uses: ilammy/msvc-dev-cmd at v1
@@ -186,7 +186,7 @@ jobs:
if: ${{ matrix.msvc_arch }}
- name: Build wheels
- uses: pypa/cibuildwheel at v2.23.3
+ uses: pypa/cibuildwheel at v3.2.0
env:
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_ENVIRONMENT_MACOS:
@@ -230,7 +230,7 @@ jobs:
runs-on: ubuntu-latest
if: github.repository == 'shapely/shapely' && github.ref == 'refs/heads/main'
steps:
- - uses: actions/download-artifact at v4
+ - uses: actions/download-artifact at v5
with:
pattern: release-*
merge-multiple: true
@@ -248,7 +248,7 @@ jobs:
# release on every tag
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/')
steps:
- - uses: actions/download-artifact at v4
+ - uses: actions/download-artifact at v5
with:
pattern: release-*
merge-multiple: true
=====================================
.github/workflows/tests.yml
=====================================
@@ -12,9 +12,9 @@ jobs:
strategy:
fail-fast: false
matrix:
- os: [ubuntu-latest, macos-13, windows-2019]
+ os: [ubuntu-latest, macos-13, windows-2022]
architecture: [x64]
- geos: [3.9.6, 3.10.7, 3.11.5, 3.12.3, 3.13.1, main]
+ geos: [3.9.6, 3.10.7, 3.11.5, 3.12.3, 3.13.1, 3.14.0, main]
include:
# 2020
- python: "3.10"
@@ -39,6 +39,10 @@ jobs:
matplotlib: true
doctest: true
extra_pytest_args: "-W error" # error on warnings
+ # 2025
+ - python: "3.14"
+ geos: 3.14.0
+ numpy: 2.3.3
# free threaded Python (no numpy version to indicate installing nightly cython and numpy)
- os: ubuntu-22.04
python: "3.13t"
@@ -53,12 +57,12 @@ jobs:
geos: main
extra_pytest_args: "-W error" # error on warnings
# enable two 32-bit windows builds:
- - os: windows-2019
+ - os: windows-2022
architecture: x86
python: "3.10"
geos: 3.9.6
numpy: 1.21.6
- - os: windows-2019
+ - os: windows-2022
architecture: x86
python: "3.11"
geos: 3.12.3
@@ -80,13 +84,13 @@ jobs:
run: |
echo 'GEOS_INSTALL=${{ github.workspace }}\geosinstall\geos-${{ matrix.geos }}' >> $GITHUB_ENV
echo 'GEOS_BUILD=${{ github.workspace }}\geosbuild' >> $GITHUB_ENV
- if: ${{ matrix.os == 'windows-2019' }}
+ if: ${{ startsWith(matrix.os, 'windows') }}
- name: Checkout Shapely
- uses: actions/checkout at v4
+ uses: actions/checkout at v5
- name: Checkout GEOS (main)
- uses: actions/checkout at v4
+ uses: actions/checkout at v5
with:
repository: libgeos/geos
ref: main
@@ -100,7 +104,7 @@ jobs:
if: ${{ matrix.geos == 'main' }}
- name: Set up Python ${{ matrix.python }}
- uses: Quansight-Labs/setup-python at 869aeafb7eeb9dc48ba68acc0479e6fc3fd7ce5e # v5.4.0
+ uses: actions/setup-python at v6
with:
python-version: ${{ matrix.python }}
architecture: ${{ matrix.architecture }}
@@ -118,7 +122,7 @@ jobs:
uses: ilammy/msvc-dev-cmd at v1
with:
arch: ${{ matrix.architecture }}
- if: ${{ matrix.os == 'windows-2019' }}
+ if: ${{ startsWith(matrix.os, 'windows') }}
- name: Install GEOS
run: |
=====================================
CHANGES.txt
=====================================
@@ -1,6 +1,12 @@
Changes
=======
+2.1.2 (2025-09-24)
+------------------
+
+Wheels are available for Python 3.14 (and still include GEOS 3.13.1).
+
+
2.1.1 (2025-05-19)
------------------
=====================================
CITATION.cff
=====================================
@@ -2,8 +2,8 @@ cff-version: 1.2.0
message: "Please cite this software using these metadata."
type: software
title: Shapely
-version: "2.1.1"
-date-released: "2025-05-19"
+version: "2.1.2"
+date-released: "2025-09-24"
doi: 10.5281/zenodo.5597138
abstract: "Manipulation and analysis of geometric objects in the Cartesian plane."
repository-artifact: https://pypi.org/project/Shapely
=====================================
debian/changelog
=====================================
@@ -1,8 +1,11 @@
-python-shapely (2.1.1-4) UNRELEASED; urgency=medium
+python-shapely (2.1.2-1) unstable; urgency=medium
+ * New upstream release.
* Update lintian overrides.
+ * Drop geos-3.14.0.patch, fixed upstream.
+ * Enable verbose pytest output.
- -- Bas Couwenberg <sebastic at debian.org> Fri, 12 Sep 2025 17:48:08 +0200
+ -- Bas Couwenberg <sebastic at debian.org> Fri, 26 Sep 2025 18:25:00 +0200
python-shapely (2.1.1-3) unstable; urgency=medium
=====================================
debian/patches/geos-3.14.0.patch deleted
=====================================
@@ -1,34 +0,0 @@
-Description: Fix FTBFS with GEOS 3.14.0.
-Author: Bas Couwenberg <sebastic at debian.org>
-Forwarded: not-needed
-
---- a/shapely/tests/test_measurement.py
-+++ b/shapely/tests/test_measurement.py
-@@ -240,6 +240,7 @@ def test_frechet_distance(geom1, geom2,
- assert actual == pytest.approx(expected, abs=1e-12)
-
-
-+ at pytest.mark.xfail(strict=False, reason="Fails with GEOS 3.14.0")
- @pytest.mark.parametrize(
- "geom1, geom2, densify, expected",
- [
---- a/shapely/tests/test_set_operations.py
-+++ b/shapely/tests/test_set_operations.py
-@@ -283,6 +283,7 @@ def test_coverage_union_reduce_axis():
- assert actual.shape == (3,)
-
-
-+ at pytest.mark.xfail(strict=False, reason="Fails with GEOS 3.14.0")
- def test_coverage_union_overlapping_inputs():
- polygon = Polygon([(1, 1), (1, 0), (0, 0), (0, 1), (1, 1)])
- other = Polygon([(1, 0), (0.9, 1), (2, 1), (2, 0), (1, 0)])
---- a/shapely/tests/legacy/test_polylabel.py
-+++ b/shapely/tests/legacy/test_polylabel.py
-@@ -32,6 +32,7 @@ class PolylabelTestCase(unittest.TestCas
- label = polylabel(concave_polygon)
- assert concave_polygon.contains(label)
-
-+ @pytest.mark.xfail(strict=False, reason="Fails with GEOS 3.14.0 when built with prior version")
- def test_rectangle_special_case(self):
- """
- The centroid algorithm used is vulnerable to floating point errors
=====================================
debian/patches/series
=====================================
@@ -1,2 +1 @@
0004-Remove-externally-referenced-image.patch
-geos-3.14.0.patch
=====================================
debian/rules
=====================================
@@ -12,6 +12,8 @@ export DEB_CFLAGS_MAINT_APPEND=-Wno-error=incompatible-pointer-types
export PYBUILD_NAME=shapely
ifeq ($(PYBUILD_AUTOPKGTEST),1)
export PYBUILD_TEST_ARGS=-vv --pyargs ${PYBUILD_NAME}
+else
+export PYBUILD_TEST_ARGS=-vv
endif
export LC_ALL=C.UTF-8
=====================================
docs/release/2.x.rst
=====================================
@@ -1,6 +1,13 @@
Version 2.x
===========
+.. _version-2-1-2:
+
+Version 2.1.2 (2025-09-24)
+--------------------------
+
+Wheels are available for Python 3.14 (and still include GEOS 3.13.1).
+
.. _version-2-1-1:
Version 2.1.1 (2025-05-19)
=====================================
pyproject.toml
=====================================
@@ -35,6 +35,7 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering :: GIS",
]
requires-python = ">=3.10"
@@ -74,7 +75,7 @@ skip = ["pp*", "*_i686", "*_ppc64le", "*_s390x"]
build-verbosity = 1
test-requires = "pytest"
test-command = "pytest --pyargs shapely.tests"
-free-threaded-support = true
+enable = ["cpython-freethreading"]
[tool.coverage.run]
source = ["shapely"]
=====================================
shapely/_version.py
=====================================
@@ -25,9 +25,9 @@ def get_keywords():
# setup.py/versioneer.py will grep for the variable names, so they must
# each be defined on a line of their own. _version.py will just call
# get_keywords().
- git_refnames = " (HEAD -> main, tag: 2.1.1)"
- git_full = "b49155ea7eaec698a0357fb9bc1147533b566916"
- git_date = "2025-05-19 12:40:46 +0200"
+ git_refnames = " (tag: 2.1.2, maint-2.1)"
+ git_full = "5fb639d1056888d135fe56bfaf750c9648addeec"
+ git_date = "2025-09-24 15:22:48 +0200"
keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
return keywords
=====================================
shapely/set_operations.py
=====================================
@@ -562,6 +562,9 @@ def coverage_union(a, b, **kwargs):
This is an optimized version of union which assumes the polygons to be
non-overlapping.
+ If this assumption is not met, the exact result is not guaranteed
+ (depending on the GEOS version, it may return the input unchanged or raise
+ an error).
Parameters
----------
=====================================
shapely/tests/test_measurement.py
=====================================
@@ -247,7 +247,7 @@ def test_frechet_distance(geom1, geom2, expected):
(
shapely.linestrings([[0, 0], [100, 0]]),
shapely.linestrings([[0, 0], [50, 50], [100, 0]]),
- 0.001,
+ 0.002,
50,
)
],
=====================================
shapely/tests/test_set_operations.py
=====================================
@@ -287,7 +287,11 @@ def test_coverage_union_overlapping_inputs():
polygon = Polygon([(1, 1), (1, 0), (0, 0), (0, 1), (1, 1)])
other = Polygon([(1, 0), (0.9, 1), (2, 1), (2, 0), (1, 0)])
- if shapely.geos_version >= (3, 12, 0):
+ if shapely.geos_version >= (3, 14, 0):
+ # Overlapping polygons raise an error again
+ with pytest.raises(shapely.GEOSException, match="TopologyException"):
+ shapely.coverage_union(polygon, other)
+ elif shapely.geos_version >= (3, 12, 0):
# Return mostly unchanged output
result = shapely.coverage_union(polygon, other)
expected = shapely.multipolygons([polygon, other])
View it on GitLab: https://salsa.debian.org/debian-gis-team/python-shapely/-/compare/cbb0a78667920d4badf945e362e21ec95365fd7a...b066776ed15283aa83d74c72563af58472e47f69
--
View it on GitLab: https://salsa.debian.org/debian-gis-team/python-shapely/-/compare/cbb0a78667920d4badf945e362e21ec95365fd7a...b066776ed15283aa83d74c72563af58472e47f69
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20250926/a9e065dd/attachment-0001.htm>
More information about the Pkg-grass-devel
mailing list