[Git][debian-gis-team/python-shapely][upstream] New upstream version 2.1.2

Bas Couwenberg (@sebastic) gitlab at salsa.debian.org
Fri Sep 26 17:28:00 BST 2025



Bas Couwenberg pushed to branch upstream 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
- - - - -


11 changed files:

- .github/workflows/pre-commit.yml
- .github/workflows/release.yml
- .github/workflows/tests.yml
- CHANGES.txt
- CITATION.cff
- 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


=====================================
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/-/commit/7d895e25bdf75d24d035359aa2954f7f52e59e8b

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/python-shapely/-/commit/7d895e25bdf75d24d035359aa2954f7f52e59e8b
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/ccc25926/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list