]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
fix(shapely): maintain Shapely < 2 compatibility
authorKamil Monicz <kamil@monicz.dev>
Mon, 24 Mar 2025 11:32:41 +0000 (11:32 +0000)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 25 Mar 2025 18:41:53 +0000 (19:41 +0100)
psycopg/psycopg/types/shapely.py

index 1fb48885dc92f9f761904905b751680641b1d7c2..cef953346d9879968d5aa59eb7b0fcac1bf717d9 100644 (file)
@@ -13,9 +13,7 @@ from ..adapt import Dumper, Loader
 from .._typeinfo import TypeInfo
 
 try:
-    from shapely import from_wkb, to_wkb
     from shapely.geometry.base import BaseGeometry
-
 except ImportError:
     raise ImportError(
         "The module psycopg.types.shapely requires the package 'Shapely'"
@@ -23,29 +21,38 @@ except ImportError:
     )
 
 
+try:
+    from shapely import from_wkb as from_wkb_compat
+    from shapely import to_wkb as to_wkb_compat
+except ImportError:
+    # Shapely<2 compatibility
+    from shapely.wkb import dumps as to_wkb_compat  # type: ignore[no-redef]
+    from shapely.wkb import loads as from_wkb_compat  # type: ignore[no-redef]
+
+
 class GeometryBinaryLoader(Loader):
     format = Format.BINARY
 
     def load(self, data: Buffer) -> BaseGeometry:
-        return from_wkb(bytes(data))
+        return from_wkb_compat(bytes(data))
 
 
 class GeometryLoader(Loader):
     def load(self, data: Buffer) -> BaseGeometry:
         # it's a hex string in binary
-        return from_wkb(bytes(data))
+        return from_wkb_compat(bytes(data))
 
 
 class BaseGeometryBinaryDumper(Dumper):
     format = Format.BINARY
 
     def dump(self, obj: BaseGeometry) -> Buffer | None:
-        return to_wkb(obj, include_srid=True)
+        return to_wkb_compat(obj, include_srid=True)
 
 
 class BaseGeometryDumper(Dumper):
     def dump(self, obj: BaseGeometry) -> Buffer | None:
-        return to_wkb(obj, True, include_srid=True).encode()
+        return to_wkb_compat(obj, True, include_srid=True).encode()
 
 
 def register_shapely(info: TypeInfo, context: AdaptContext | None = None) -> None: