Bump shapely to 2.1.* (#13847)

This commit is contained in:
Semyon Moroz
2025-04-17 07:54:27 +04:00
committed by GitHub
parent b37974492e
commit 6f7c79786f
17 changed files with 324 additions and 122 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
shapely\.geometry\.conftest
shapely\.conftest
shapely\.tests.*
shapely\._typing # stubs only module
+1 -1
View File
@@ -1,4 +1,4 @@
version = "2.0.*"
version = "2.1.*"
# Requires a version of numpy with a `py.typed` file
requires = ["numpy>=1.20"]
upstream_repository = "https://github.com/shapely/shapely"
+20 -15
View File
@@ -13,28 +13,29 @@ from .lib import Geometry
__all__ = [
"GeometryType",
"get_type_id",
"get_dimensions",
"force_2d",
"force_3d",
"get_coordinate_dimension",
"get_dimensions",
"get_exterior_ring",
"get_geometry",
"get_interior_ring",
"get_m",
"get_num_coordinates",
"get_num_geometries",
"get_num_interior_rings",
"get_num_points",
"get_parts",
"get_point",
"get_precision",
"get_rings",
"get_srid",
"set_srid",
"get_type_id",
"get_x",
"get_y",
"get_z",
"get_exterior_ring",
"get_num_points",
"get_num_interior_rings",
"get_num_geometries",
"get_point",
"get_interior_ring",
"get_geometry",
"get_parts",
"get_rings",
"get_precision",
"set_precision",
"force_2d",
"force_3d",
"set_srid",
]
_PrecisionMode: TypeAlias = Literal["valid_output", "pointwise", "keep_collapsed", 0, 1, 2]
@@ -89,6 +90,10 @@ def get_z(point: Geometry | None, **kwargs) -> float: ...
@overload
def get_z(point: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.float64]: ...
@overload
def get_m(point: Geometry | None, **kwargs) -> float: ...
@overload
def get_m(point: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.float64]: ...
@overload
def get_point(geometry: LineString, index: SupportsIndex, **kwargs) -> Point | Any: ...
@overload
def get_point(geometry: Point | Polygon | BaseMultipartGeometry | None, index: SupportsIndex, **kwargs) -> None: ...
+1 -1
View File
@@ -5,7 +5,7 @@ from ._geometry import GeometryType
from ._typing import ArrayLike, ArrayLikeSeq, GeoArray, OptGeoArrayLikeSeq
def to_ragged_array(
geometries: OptGeoArrayLikeSeq, include_z: bool | None = None
geometries: OptGeoArrayLikeSeq, include_z: bool | None = None, include_m: bool | None = None
) -> tuple[GeometryType, NDArray[np.float64], tuple[NDArray[np.int64], ...]]: ...
def from_ragged_array(
geometry_type: GeometryType, coords: ArrayLike[float], offsets: ArrayLikeSeq[int] | None = None
-3
View File
@@ -1,6 +1,3 @@
from collections.abc import Callable
from ..geometry import LinearRing
def signed_area(ring: LinearRing) -> float: ...
def is_ccw_impl(name: None = None) -> Callable[[LinearRing], bool]: ...
@@ -1,19 +1,3 @@
from ..errors import TopologicalError as TopologicalError
from ..geometry import Point, Polygon
class Cell:
x: float
y: float
h: float
centroid: Point
distance: float
max_distance: float
def __init__(self, x: float, y: float, h: float, polygon: Polygon) -> None: ...
def __lt__(self, other: Cell) -> bool: ...
def __le__(self, other: Cell) -> bool: ...
def __eq__(self, other: object) -> bool: ...
def __ne__(self, other: object) -> bool: ...
def __gt__(self, other: Cell) -> bool: ...
def __ge__(self, other: Cell) -> bool: ...
def polylabel(polygon: Polygon, tolerance: float = 1.0) -> Point: ...
+117 -18
View File
@@ -1,5 +1,6 @@
from collections.abc import Sequence
from typing import Any, Literal, SupportsIndex, overload
from typing_extensions import TypeAlias
from ._enum import ParamEnum
from ._typing import ArrayLike, ArrayLikeSeq, GeoArray, OptGeoArrayLike, OptGeoArrayLikeSeq, OptGeoT
@@ -12,32 +13,38 @@ __all__ = [
"BufferJoinStyle",
"boundary",
"buffer",
"offset_curve",
"build_area",
"centroid",
"clip_by_rect",
"concave_hull",
"constrained_delaunay_triangles",
"convex_hull",
"delaunay_triangles",
"segmentize",
"envelope",
"extract_unique_points",
"build_area",
"make_valid",
"normalize",
"maximum_inscribed_circle",
"minimum_bounding_circle",
"minimum_clearance_line",
"minimum_rotated_rectangle",
"node",
"normalize",
"offset_curve",
"orient_polygons",
"oriented_envelope",
"point_on_surface",
"polygonize",
"polygonize_full",
"remove_repeated_points",
"reverse",
"segmentize",
"simplify",
"snap",
"voronoi_polygons",
"oriented_envelope",
"minimum_rotated_rectangle",
"minimum_bounding_circle",
]
_Method: TypeAlias = Literal["linework", "structure"]
class BufferCapStyle(ParamEnum):
round = 1
flat = 2
@@ -229,6 +236,14 @@ def delaunay_triangles(
geometry: OptGeoArrayLikeSeq, tolerance: ArrayLike[float] = 0.0, only_edges: ArrayLike[bool] = False, **kwargs
) -> GeoArray: ...
@overload
def constrained_delaunay_triangles(geometry: Geometry, **kwargs) -> GeometryCollection: ...
@overload
def constrained_delaunay_triangles(geometry: None, **kwargs) -> None: ...
@overload
def constrained_delaunay_triangles(geometry: Geometry | None, **kwargs) -> GeometryCollection | None: ...
@overload
def constrained_delaunay_triangles(geometry: OptGeoArrayLikeSeq | OptGeoArrayLike, **kwargs) -> GeoArray: ...
@overload
def envelope(geometry: Point, **kwargs) -> Point: ...
@overload
def envelope(geometry: Geometry, **kwargs) -> BaseGeometry: ...
@@ -255,13 +270,37 @@ def build_area(geometry: Geometry | None, **kwargs) -> BaseGeometry | None: ...
@overload
def build_area(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ...
@overload
def make_valid(geometry: Geometry, **kwargs) -> BaseGeometry: ...
def make_valid(geometry: Geometry, *, method: _Method = "linework", keep_collapsed: bool = True, **kwargs) -> BaseGeometry: ...
@overload
def make_valid(geometry: None, **kwargs) -> None: ...
def make_valid(geometry: None, *, method: _Method = "linework", keep_collapsed: bool = True, **kwargs) -> None: ...
@overload
def make_valid(geometry: Geometry | None, **kwargs) -> BaseGeometry | None: ...
def make_valid(
geometry: Geometry | None, *, method: Literal["structure"], keep_collapsed: bool = True, **kwargs
) -> BaseGeometry | None: ...
@overload
def make_valid(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ...
def make_valid(
geometry: Geometry | None, *, method: Literal["linework"], keep_collapsed: Literal[True], **kwargs
) -> BaseGeometry | None: ...
@overload
def make_valid(
geometry: OptGeoArrayLikeSeq, *, method: Literal["structure"], keep_collapsed: bool = True, **kwargs
) -> GeoArray: ...
@overload
def make_valid(
geometry: OptGeoArrayLikeSeq, *, method: Literal["linework"], keep_collapsed: Literal[True], **kwargs
) -> GeoArray: ...
@overload
def minimum_clearance_line(geometry: Point, **kwargs) -> Point: ...
@overload
def minimum_clearance_line(geometry: LineString | Polygon | BaseMultipartGeometry, **kwargs) -> Polygon: ...
@overload
def minimum_clearance_line(geometry: Geometry, **kwargs) -> Polygon | Point: ...
@overload
def minimum_clearance_line(geometry: None, **kwargs) -> None: ...
@overload
def minimum_clearance_line(geometry: Geometry | None, **kwargs) -> Polygon | Point | None: ...
@overload
def minimum_clearance_line(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ...
@overload
def normalize(geometry: OptGeoT, **kwargs) -> OptGeoT: ...
@overload
@@ -335,27 +374,53 @@ def snap(geometry: OptGeoArrayLike, reference: OptGeoArrayLikeSeq, tolerance: Ar
def snap(geometry: OptGeoArrayLike, reference: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], **kwargs) -> GeoArray: ...
@overload
def voronoi_polygons(
geometry: Geometry, tolerance: float = 0.0, extend_to: Geometry | None = None, only_edges: Literal[False] = False, **kwargs
geometry: Geometry,
tolerance: float = 0.0,
extend_to: Geometry | None = None,
only_edges: Literal[False] = False,
ordered: bool = False,
**kwargs,
) -> GeometryCollection[Polygon]: ...
@overload
def voronoi_polygons(
geometry: Geometry, tolerance: float, extend_to: Geometry | None, only_edges: Literal[True], **kwargs
geometry: Geometry, tolerance: float, extend_to: Geometry | None, only_edges: Literal[True], ordered: bool = False, **kwargs
) -> LineString | MultiLineString: ...
@overload
def voronoi_polygons(
geometry: Geometry, tolerance: float = 0.0, extend_to: Geometry | None = None, *, only_edges: Literal[True], **kwargs
geometry: Geometry,
tolerance: float = 0.0,
extend_to: Geometry | None = None,
*,
only_edges: Literal[True],
ordered: bool = False,
**kwargs,
) -> LineString | MultiLineString: ...
@overload
def voronoi_polygons(
geometry: Geometry, tolerance: float = 0.0, extend_to: Geometry | None = None, only_edges: bool = False, **kwargs
geometry: Geometry,
tolerance: float = 0.0,
extend_to: Geometry | None = None,
only_edges: bool = False,
ordered: bool = False,
**kwargs,
) -> GeometryCollection[Polygon] | LineString | MultiLineString: ...
@overload
def voronoi_polygons(
geometry: None, tolerance: float = 0.0, extend_to: Geometry | None = None, only_edges: bool = False, **kwargs
geometry: None,
tolerance: float = 0.0,
extend_to: Geometry | None = None,
only_edges: bool = False,
ordered: bool = False,
**kwargs,
) -> None: ...
@overload
def voronoi_polygons(
geometry: Geometry | None, tolerance: float = 0.0, extend_to: Geometry | None = None, only_edges: bool = False, **kwargs
geometry: Geometry | None,
tolerance: float = 0.0,
extend_to: Geometry | None = None,
only_edges: bool = False,
ordered: bool = False,
**kwargs,
) -> GeometryCollection[Polygon] | LineString | MultiLineString | None: ...
@overload
def voronoi_polygons(
@@ -363,6 +428,7 @@ def voronoi_polygons(
tolerance: ArrayLike[float] = 0.0,
extend_to: OptGeoArrayLike = None,
only_edges: ArrayLike[bool] = False,
ordered: bool = False,
**kwargs,
) -> GeoArray: ...
@overload
@@ -371,6 +437,7 @@ def voronoi_polygons(
tolerance: ArrayLikeSeq[float],
extend_to: OptGeoArrayLike = None,
only_edges: ArrayLike[bool] = False,
ordered: bool = False,
**kwargs,
) -> GeoArray: ...
@overload
@@ -379,6 +446,7 @@ def voronoi_polygons(
tolerance: ArrayLike[float],
extend_to: OptGeoArrayLikeSeq,
only_edges: ArrayLike[bool] = False,
ordered: bool = False,
**kwargs,
) -> GeoArray: ...
@overload
@@ -388,11 +456,17 @@ def voronoi_polygons(
*,
extend_to: OptGeoArrayLikeSeq,
only_edges: ArrayLike[bool] = False,
ordered: bool = False,
**kwargs,
) -> GeoArray: ...
@overload
def voronoi_polygons(
geometry: OptGeoArrayLike, tolerance: ArrayLike[float], extend_to: OptGeoArrayLike, only_edges: ArrayLikeSeq[bool], **kwargs
geometry: OptGeoArrayLike,
tolerance: ArrayLike[float],
extend_to: OptGeoArrayLike,
only_edges: ArrayLikeSeq[bool],
ordered: bool = False,
**kwargs,
) -> GeoArray: ...
@overload
def voronoi_polygons(
@@ -401,6 +475,7 @@ def voronoi_polygons(
extend_to: OptGeoArrayLike = None,
*,
only_edges: ArrayLikeSeq[bool],
ordered: bool = False,
**kwargs,
) -> GeoArray: ...
@overload
@@ -428,3 +503,27 @@ def minimum_bounding_circle(geometry: None, **kwargs) -> None: ...
def minimum_bounding_circle(geometry: Geometry | None, **kwargs) -> Polygon | Point | None: ...
@overload
def minimum_bounding_circle(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ...
@overload
def maximum_inscribed_circle(geometry: Point, tolerance: float | None = None, **kwargs) -> Point: ...
@overload
def maximum_inscribed_circle(
geometry: LineString | Polygon | BaseMultipartGeometry, tolerance: float | None = None, **kwargs
): ...
@overload
def maximum_inscribed_circle(geometry: Geometry, tolerance: float | None = None, **kwargs) -> Polygon | Point: ...
@overload
def maximum_inscribed_circle(geometry: None, tolerance: float | None = None, **kwargs) -> None: ...
@overload
def maximum_inscribed_circle(geometry: Geometry | None, tolerance: float | None = None, **kwargs) -> Polygon | Point | None: ...
@overload
def maximum_inscribed_circle(geometry: OptGeoArrayLikeSeq, tolerance: ArrayLike[float] | None = None, **kwargs) -> GeoArray: ...
@overload
def orient_polygons(geometry: Point, *, exterior_cw: bool = False, **kwargs) -> Point: ...
@overload
def orient_polygons(geometry: Geometry, *, exterior_cw: bool = False, **kwargs) -> BaseGeometry: ...
@overload
def orient_polygons(geometry: None, *, exterior_cw: bool = False, **kwargs) -> None: ...
@overload
def orient_polygons(geometry: Geometry | None, *, exterior_cw: bool = False, **kwargs) -> BaseGeometry | None: ...
@overload
def orient_polygons(geometry: OptGeoArrayLikeSeq, *, exterior_cw: bool = False, **kwargs) -> GeoArray: ...
+15 -7
View File
@@ -10,32 +10,40 @@ __all__ = ["transform", "count_coordinates", "get_coordinates", "set_coordinates
@overload
def transform(
geometry: OptGeoT, transformation: Callable[[NDArray[np.float64]], NDArray[np.float64]], include_z: bool = False
geometry: OptGeoT,
transformation: Callable[[NDArray[np.float64]], NDArray[np.float64]],
include_z: bool = False,
*,
interleaved: bool = True,
) -> OptGeoT: ...
@overload
def transform(
geometry: OptGeoArrayLikeSeq, transformation: Callable[[NDArray[np.float64]], NDArray[np.float64]], include_z: bool = False
geometry: OptGeoArrayLikeSeq,
transformation: Callable[[NDArray[np.float64]], NDArray[np.float64]],
include_z: bool = False,
*,
interleaved: bool = True,
) -> GeoArray: ...
def count_coordinates(geometry: OptGeoArrayLike) -> int: ...
@overload
def get_coordinates(
geometry: OptGeoArrayLike, include_z: bool = False, return_index: Literal[False] = False
geometry: OptGeoArrayLike, include_z: bool = False, return_index: Literal[False] = False, *, include_m: bool = False
) -> NDArray[np.float64]: ...
@overload
def get_coordinates(
geometry: OptGeoArrayLike, include_z: bool = False, *, return_index: Literal[True]
geometry: OptGeoArrayLike, include_z: bool = False, *, return_index: Literal[True], include_m: bool = False
) -> tuple[NDArray[np.float64], NDArray[np.int64]]: ...
@overload
def get_coordinates(
geometry: OptGeoArrayLike, include_z: bool, return_index: Literal[True]
geometry: OptGeoArrayLike, include_z: bool, return_index: Literal[True], *, include_m: bool = False
) -> tuple[NDArray[np.float64], NDArray[np.int64]]: ...
@overload
def get_coordinates(
geometry: OptGeoArrayLike, include_z: bool = False, *, return_index: bool
geometry: OptGeoArrayLike, include_z: bool = False, *, return_index: bool, include_m: bool = False
) -> NDArray[np.float64] | tuple[NDArray[np.float64], NDArray[np.int64]]: ...
@overload
def get_coordinates(
geometry: OptGeoArrayLike, include_z: bool, return_index: bool
geometry: OptGeoArrayLike, include_z: bool, return_index: bool, *, include_m: bool = False
) -> NDArray[np.float64] | tuple[NDArray[np.float64], NDArray[np.int64]]: ...
@overload
def set_coordinates(geometry: GeoT, coordinates: ArrayLikeSeq[float]) -> GeoT: ...
+61 -8
View File
@@ -1,9 +1,11 @@
from collections.abc import Sequence
from typing import Literal, SupportsIndex, overload
from typing_extensions import TypeAlias
import numpy as np
from numpy.typing import NDArray
from ._enum import ParamEnum
from ._geometry import GeometryType
from ._typing import ArrayLike, ArrayLikeSeq, GeoArray, OptGeoArrayLike, OptGeoArrayLikeSeq
from .geometry import GeometryCollection, LinearRing, LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon
@@ -24,13 +26,34 @@ __all__ = [
"empty",
]
class HandleNaN(ParamEnum):
allow = 0
skip = 1
error = 2
_HandleNaN: TypeAlias = Literal[0, 1, 2] | HandleNaN
@overload
def points(
coords: float, y: float, z: float | None = None, indices: None = None, out: None = None, **kwargs # acts as x
coords: float,
y: float,
z: float | None = None,
indices: None = None,
*,
handle_nan: _HandleNaN = 0,
out: None = None,
**kwargs, # acts as x
) -> Point: ...
@overload
def points(
coords: Sequence[float], y: None = None, z: None = None, indices: None = None, out: None = None, **kwargs # acts as x, y[, z]
coords: Sequence[float],
y: None = None,
z: None = None,
indices: None = None,
*,
handle_nan: _HandleNaN = 0,
out: None = None,
**kwargs, # acts as x, y[, z]
) -> Point: ...
@overload
def points(
@@ -38,6 +61,8 @@ def points(
y: Sequence[float], # must be (y1, y2, ...)
z: Sequence[float] | None = None,
indices: ArrayLikeSeq[int] | None = None,
*,
handle_nan: _HandleNaN = 0,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> GeoArray: ...
@@ -47,6 +72,8 @@ def points(
y: None = None,
z: None = None,
indices: ArrayLikeSeq[int] | None = None,
*,
handle_nan: _HandleNaN = 0,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> GeoArray: ...
@@ -56,6 +83,8 @@ def points(
y: ArrayLike[float],
z: ArrayLike[float] | None = None,
indices: ArrayLikeSeq[int] | None = None,
*,
handle_nan: _HandleNaN = 0,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> Point | GeoArray: ...
@@ -65,6 +94,8 @@ def points(
y: ArrayLike[float] | None = None,
z: ArrayLike[float] | None = None,
indices: ArrayLikeSeq[int] | None = None,
*,
handle_nan: _HandleNaN = 0,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> Point | GeoArray: ...
@@ -74,6 +105,8 @@ def linestrings(
y: Sequence[float],
z: Sequence[float] | None = None,
indices: None = None,
*,
handle_nan: _HandleNaN = 0,
out: None = None,
**kwargs,
) -> LineString: ...
@@ -83,6 +116,8 @@ def linestrings(
y: None = None,
z: None = None,
indices: None = None,
*,
handle_nan: _HandleNaN = 0,
out: None = None,
**kwargs,
) -> LineString: ...
@@ -92,6 +127,8 @@ def linestrings(
y: None = None,
z: None = None,
indices: ArrayLikeSeq[int] | None = None,
*,
handle_nan: _HandleNaN = 0,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> GeoArray: ...
@@ -101,6 +138,8 @@ def linestrings(
y: ArrayLikeSeq[float] | None = None,
z: ArrayLikeSeq[float] | None = None,
indices: ArrayLikeSeq[int] | None = None,
*,
handle_nan: _HandleNaN = 0,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> LineString | GeoArray: ...
@@ -110,6 +149,8 @@ def linearrings(
y: Sequence[float],
z: Sequence[float] | None = None,
indices: None = None,
*,
handle_nan: _HandleNaN = 0,
out: None = None,
**kwargs,
) -> LinearRing: ...
@@ -119,6 +160,8 @@ def linearrings(
y: None = None,
z: None = None,
indices: None = None,
*,
handle_nan: _HandleNaN = 0,
out: None = None,
**kwargs,
) -> LinearRing: ...
@@ -128,6 +171,8 @@ def linearrings(
y: None = None,
z: None = None,
indices: ArrayLikeSeq[int] | None = None,
*,
handle_nan: _HandleNaN = 0,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> GeoArray: ...
@@ -137,6 +182,8 @@ def linearrings(
y: ArrayLikeSeq[float] | None = None,
z: ArrayLikeSeq[float] | None = None,
indices: ArrayLikeSeq[int] | None = None,
*,
handle_nan: _HandleNaN = 0,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> LinearRing | GeoArray: ...
@@ -145,6 +192,7 @@ def polygons(
geometries: LinearRing | Sequence[Sequence[float]] | None,
holes: ArrayLikeSeq[float] | OptGeoArrayLikeSeq | None = None,
indices: None = None,
*,
out: None = None,
**kwargs,
) -> Polygon: ...
@@ -153,6 +201,7 @@ def polygons(
geometries: Sequence[LinearRing | Sequence[Sequence[float]] | None],
holes: ArrayLikeSeq[float] | OptGeoArrayLikeSeq | None = None,
indices: ArrayLikeSeq[int] | None = None,
*,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> GeoArray: ...
@@ -161,6 +210,7 @@ def polygons(
geometries: ArrayLikeSeq[float] | OptGeoArrayLikeSeq,
holes: ArrayLikeSeq[float] | OptGeoArrayLikeSeq | None = None,
indices: ArrayLikeSeq[int] | None = None,
*,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> Polygon | GeoArray: ...
@@ -177,48 +227,51 @@ def box(
) -> GeoArray: ...
@overload
def multipoints(
geometries: Sequence[Point | Sequence[float] | None], indices: None = None, out: None = None, **kwargs
geometries: Sequence[Point | Sequence[float] | None], indices: None = None, *, out: None = None, **kwargs
) -> MultiPoint: ...
@overload
def multipoints(
geometries: Sequence[Sequence[Point | Sequence[float] | None]],
indices: ArrayLikeSeq[int] | None = None,
*,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> GeoArray: ...
@overload
def multipoints(
geometries: OptGeoArrayLikeSeq, indices: ArrayLikeSeq[int] | None = None, out: NDArray[np.object_] | None = None, **kwargs
geometries: OptGeoArrayLikeSeq, indices: ArrayLikeSeq[int] | None = None, *, out: NDArray[np.object_] | None = None, **kwargs
) -> MultiPoint | GeoArray: ...
@overload
def multilinestrings(
geometries: Sequence[LineString | Sequence[Sequence[float]] | None], indices: None = None, out: None = None, **kwargs
geometries: Sequence[LineString | Sequence[Sequence[float]] | None], indices: None = None, *, out: None = None, **kwargs
) -> MultiLineString: ...
@overload
def multilinestrings(
geometries: Sequence[Sequence[LineString | Sequence[Sequence[float]] | None]],
indices: ArrayLikeSeq[int] | None = None,
*,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> GeoArray: ...
@overload
def multilinestrings(
geometries: OptGeoArrayLikeSeq, indices: ArrayLikeSeq[int] | None = None, out: NDArray[np.object_] | None = None, **kwargs
geometries: OptGeoArrayLikeSeq, indices: ArrayLikeSeq[int] | None = None, *, out: NDArray[np.object_] | None = None, **kwargs
) -> MultiLineString | GeoArray: ...
@overload
def multipolygons(
geometries: Sequence[Polygon | Sequence[Sequence[float]] | None], indices: None = None, out: None = None, **kwargs
geometries: Sequence[Polygon | Sequence[Sequence[float]] | None], indices: None = None, *, out: None = None, **kwargs
) -> MultiPolygon: ...
@overload
def multipolygons(
geometries: Sequence[Sequence[Polygon | Sequence[Sequence[float]] | None]],
indices: ArrayLikeSeq[int] | None = None,
*,
out: NDArray[np.object_] | None = None,
**kwargs,
) -> GeoArray: ...
@overload
def multipolygons(
geometries: OptGeoArrayLikeSeq, indices: ArrayLikeSeq[int] | None = None, out: NDArray[np.object_] | None = None, **kwargs
geometries: OptGeoArrayLikeSeq, indices: ArrayLikeSeq[int] | None = None, *, out: NDArray[np.object_] | None = None, **kwargs
) -> MultiPolygon | GeoArray: ...
@overload
def geometrycollections(
+2 -1
View File
@@ -1,4 +1,4 @@
from collections.abc import Callable
from collections.abc import Callable, Iterable
from typing import TypeVar
_F = TypeVar("_F", bound=Callable[..., object])
@@ -9,3 +9,4 @@ class requires_geos:
def __call__(self, func: _F) -> _F: ...
def multithreading_enabled(func: _F) -> _F: ...
def deprecate_positional(should_be_kwargs: Iterable[str], category: type[Warning] = ...) -> Callable[..., object]: ...
+9 -5
View File
@@ -158,6 +158,8 @@ class BaseGeometry(Geometry):
@property
def has_z(self) -> bool: ...
@property
def has_m(self) -> bool: ...
@property
def is_empty(self) -> bool: ...
@property
def is_ring(self) -> bool: ...
@@ -224,13 +226,15 @@ class BaseGeometry(Geometry):
@overload
def dwithin(self, other: OptGeoArrayLike, distance: ArrayLikeSeq[float]) -> NDArray[np.bool_]: ...
@overload
def equals_exact(self, other: Geometry | None, tolerance: float) -> bool: ...
def equals_exact(self, other: Geometry | None, tolerance: float = 0.0, *, normalize: Literal[False] = False) -> bool: ...
@overload
def equals_exact(self, other: OptGeoArrayLikeSeq, tolerance: float) -> NDArray[np.bool_]: ...
def equals_exact(
self, other: OptGeoArrayLikeSeq, tolerance: float = 0.0, *, normalize: bool = False
) -> NDArray[np.bool_]: ...
@overload
def equals_exact(self, other: OptGeoArrayLike, tolerance: ArrayLikeSeq[float]) -> NDArray[np.bool_]: ...
@deprecated("Method 'almost_equals()' is deprecated. Use method 'equals_exact()' instead.")
def almost_equals(self, other: OptGeoArrayLike, decimal: int = 6) -> bool | NDArray[np.bool_]: ...
def equals_exact(
self, other: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], *, normalize: bool = False
) -> NDArray[np.bool_]: ...
@overload
def relate_pattern(self, other: Geometry | None, pattern: str) -> bool: ...
@overload
+2
View File
@@ -25,6 +25,8 @@ class Point(BaseGeometry):
def y(self) -> float: ...
@property
def z(self) -> float: ...
@property
def m(self) -> float: ...
def svg(self, scale_factor: float = 1.0, fill_color: str | None = None, opacity: float | None = None) -> str: ... # type: ignore[override]
# more precise base overrides
@property
+23 -10
View File
@@ -1,5 +1,6 @@
from _typeshed import Incomplete
from typing import Literal, overload
from typing_extensions import TypeAlias
import numpy as np
from numpy.typing import NDArray
@@ -12,6 +13,8 @@ from .lib import Geometry
__all__ = ["from_geojson", "from_ragged_array", "from_wkb", "from_wkt", "to_geojson", "to_ragged_array", "to_wkb", "to_wkt"]
_OutputDimension: TypeAlias = Literal[2, 3, 4]
# Mypy and stubtest aren't happy with the following definition and
# raise is a reserved keyword, so we cannot use the class syntax of enums
# DecodingErrorOptions = ParamEnum("DecodingErrorOptions", {"ignore": 0, "warn": 1, "raise": 2})
@@ -23,18 +26,28 @@ class WKBFlavorOptions(ParamEnum):
@overload
def to_wkt(
geometry: None, rounding_precision: int = 6, trim: bool = True, output_dimension: int = 3, old_3d: bool = False, **kwargs
geometry: None,
rounding_precision: int = 6,
trim: bool = True,
output_dimension: _OutputDimension | None = None,
old_3d: bool = False,
**kwargs,
) -> None: ...
@overload
def to_wkt(
geometry: Geometry, rounding_precision: int = 6, trim: bool = True, output_dimension: int = 3, old_3d: bool = False, **kwargs
geometry: Geometry,
rounding_precision: int = 6,
trim: bool = True,
output_dimension: _OutputDimension | None = None,
old_3d: bool = False,
**kwargs,
) -> str: ...
@overload
def to_wkt(
geometry: OptGeoArrayLikeSeq,
rounding_precision: int = 6,
trim: bool = True,
output_dimension: int = 3,
output_dimension: _OutputDimension | None = None,
old_3d: bool = False,
**kwargs,
) -> NDArray[np.str_]: ...
@@ -42,7 +55,7 @@ def to_wkt(
def to_wkb(
geometry: None,
hex: bool = False,
output_dimension: int = 3,
output_dimension: _OutputDimension | None = None,
byte_order: int = -1,
include_srid: bool = False,
flavor: Literal["iso", "extended"] = "extended",
@@ -52,7 +65,7 @@ def to_wkb(
def to_wkb(
geometry: Geometry,
hex: Literal[False] = False,
output_dimension: int = 3,
output_dimension: _OutputDimension | None = None,
byte_order: int = -1,
include_srid: bool = False,
flavor: Literal["iso", "extended"] = "extended",
@@ -62,7 +75,7 @@ def to_wkb(
def to_wkb(
geometry: Geometry,
hex: Literal[True],
output_dimension: int = 3,
output_dimension: _OutputDimension | None = None,
byte_order: int = -1,
include_srid: bool = False,
flavor: Literal["iso", "extended"] = "extended",
@@ -72,7 +85,7 @@ def to_wkb(
def to_wkb(
geometry: Geometry,
hex: bool,
output_dimension: int = 3,
output_dimension: _OutputDimension | None = None,
byte_order: int = -1,
include_srid: bool = False,
flavor: Literal["iso", "extended"] = "extended",
@@ -82,7 +95,7 @@ def to_wkb(
def to_wkb(
geometry: OptGeoArrayLikeSeq,
hex: Literal[False] = False,
output_dimension: int = 3,
output_dimension: _OutputDimension | None = None,
byte_order: int = -1,
include_srid: bool = False,
flavor: Literal["iso", "extended"] = "extended",
@@ -92,7 +105,7 @@ def to_wkb(
def to_wkb(
geometry: OptGeoArrayLikeSeq,
hex: Literal[True],
output_dimension: int = 3,
output_dimension: _OutputDimension | None = None,
byte_order: int = -1,
include_srid: bool = False,
flavor: Literal["iso", "extended"] = "extended",
@@ -102,7 +115,7 @@ def to_wkb(
def to_wkb(
geometry: OptGeoArrayLikeSeq,
hex: bool,
output_dimension: int = 3,
output_dimension: _OutputDimension | None = None,
byte_order: int = -1,
include_srid: bool = False,
flavor: Literal["iso", "extended"] = "extended",
+12
View File
@@ -13,10 +13,14 @@ build_area: np.ufunc
centroid: np.ufunc
clip_by_rect: np.ufunc
concave_hull: np.ufunc
constrained_delaunay_triangles: np.ufunc
contains: np.ufunc
contains_properly: np.ufunc
contains_xy: np.ufunc
convex_hull: np.ufunc
coverage_invalid_edges: np.ufunc
coverage_is_valid: np.ufunc
coverage_simplify: np.ufunc
coverage_union: np.ufunc
covered_by: np.ufunc
covers: np.ufunc
@@ -27,11 +31,13 @@ destroy_prepared: np.ufunc
difference: np.ufunc
difference_prec: np.ufunc
disjoint: np.ufunc
disjoint_subset_union: np.ufunc
distance: np.ufunc
dwithin: np.ufunc
envelope: np.ufunc
equals: np.ufunc
equals_exact: np.ufunc
equals_identical: np.ufunc
extract_unique_points: np.ufunc
force_2d: np.ufunc
force_3d: np.ufunc
@@ -45,6 +51,7 @@ get_dimensions: np.ufunc
get_exterior_ring: np.ufunc
get_geometry: np.ufunc
get_interior_ring: np.ufunc
get_m: np.ufunc
get_num_coordinates: np.ufunc
get_num_geometries: np.ufunc
get_num_interior_rings: np.ufunc
@@ -53,6 +60,7 @@ get_point: np.ufunc
get_precision: np.ufunc
get_srid: np.ufunc
get_type_id: np.ufunc
has_m: np.ufunc
get_x: np.ufunc
get_y: np.ufunc
get_z: np.ufunc
@@ -85,12 +93,16 @@ line_merge_directed: np.ufunc
linearrings: np.ufunc
linestrings: np.ufunc
make_valid: np.ufunc
make_valid_with_params: np.ufunc
maximum_inscribed_circle: np.ufunc
minimum_bounding_circle: np.ufunc
minimum_bounding_radius: np.ufunc
minimum_clearance: np.ufunc
minimum_clearance_line: np.ufunc
node: np.ufunc
normalize: np.ufunc
offset_curve: np.ufunc
orient_polygons: np.ufunc
oriented_envelope: np.ufunc
overlaps: np.ufunc
point_on_surface: np.ufunc
+10 -16
View File
@@ -1,6 +1,5 @@
from collections.abc import Callable, Iterable
from typing import Any, Literal, overload
from typing_extensions import deprecated
from ._typing import GeoT, OptGeoArrayLike, SupportsGeoInterface
from .algorithms.polylabel import polylabel as polylabel
@@ -10,23 +9,22 @@ from .geometry.linestring import _ConvertibleToLineString
from .lib import Geometry
__all__ = [
"cascaded_union",
"clip_by_rect",
"linemerge",
"nearest_points",
"operator",
"orient",
"polygonize",
"polygonize_full",
"transform",
"unary_union",
"triangulate",
"voronoi_diagram",
"split",
"nearest_points",
"validate",
"snap",
"shared_paths",
"clip_by_rect",
"orient",
"snap",
"split",
"substring",
"transform",
"triangulate",
"unary_union",
"validate",
"voronoi_diagram",
]
class CollectionOperator:
@@ -47,8 +45,6 @@ class CollectionOperator:
def linemerge(
self, lines: MultiLineString | BaseMultipartGeometry | Iterable[_ConvertibleToLineString], directed: bool = False
) -> LineString | MultiLineString: ...
@deprecated("The `cascaded_union()` function is deprecated. Use `unary_union()` instead.")
def cascaded_union(self, geoms: OptGeoArrayLike) -> BaseGeometry: ...
def unary_union(self, geoms: OptGeoArrayLike) -> BaseGeometry: ...
operator: CollectionOperator
@@ -58,8 +54,6 @@ linemerge = operator.linemerge
unary_union = operator.unary_union
# This is also an alias to operator method but we want to mark it as deprecated
@deprecated("The `cascaded_union()` function is deprecated. Use `unary_union()` instead.")
def cascaded_union(geoms: OptGeoArrayLike) -> BaseGeometry: ...
@overload # edges false
def triangulate(geom: Geometry, tolerance: float = 0.0, edges: Literal[False] = False) -> list[Polygon]: ...
@overload # edges true (keyword)
+38 -18
View File
@@ -9,7 +9,21 @@ from .geometry.base import BaseGeometry
from .lib import Geometry
__all__ = [
"contains",
"contains_properly",
"contains_xy",
"covered_by",
"covers",
"crosses",
"disjoint",
"dwithin",
"equals",
"equals_exact",
"equals_identical",
"has_m",
"has_z",
"intersects",
"intersects_xy",
"is_ccw",
"is_closed",
"is_empty",
@@ -21,23 +35,11 @@ __all__ = [
"is_valid",
"is_valid_input",
"is_valid_reason",
"crosses",
"contains",
"contains_xy",
"contains_properly",
"covered_by",
"covers",
"disjoint",
"dwithin",
"equals",
"intersects",
"intersects_xy",
"overlaps",
"touches",
"within",
"equals_exact",
"relate",
"relate_pattern",
"touches",
"within",
]
@overload
@@ -45,6 +47,10 @@ def has_z(geometry: Geometry | None, **kwargs) -> bool: ...
@overload
def has_z(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ...
@overload
def has_m(geometry: Geometry | None, **kwargs) -> bool: ...
@overload
def has_m(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ...
@overload
def is_ccw(geometry: Geometry | None, **kwargs) -> bool: ...
@overload
def is_ccw(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ...
@@ -163,13 +169,27 @@ def within(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bo
@overload
def within(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ...
@overload
def equals_exact(a: Geometry | None, b: Geometry | None, tolerance: float = 0.0, **kwargs) -> bool: ...
def equals_exact(
a: Geometry | None, b: Geometry | None, tolerance: float = 0.0, *, normalize: bool = False, **kwargs
) -> bool: ...
@overload
def equals_exact(a: OptGeoArrayLike, b: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], **kwargs) -> NDArray[np.bool_]: ...
def equals_exact(
a: OptGeoArrayLike, b: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], *, normalize: bool = False, **kwargs
) -> NDArray[np.bool_]: ...
@overload
def equals_exact(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, tolerance: ArrayLike[float] = 0.0, **kwargs) -> NDArray[np.bool_]: ...
def equals_exact(
a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, tolerance: ArrayLike[float] = 0.0, *, normalize: bool = False, **kwargs
) -> NDArray[np.bool_]: ...
@overload
def equals_exact(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, tolerance: ArrayLike[float] = 0.0, **kwargs) -> NDArray[np.bool_]: ...
def equals_exact(
a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, tolerance: ArrayLike[float] = 0.0, *, normalize: bool = False, **kwargs
) -> NDArray[np.bool_]: ...
@overload
def equals_identical(a: Geometry | None, b: Geometry | None, **kwargs) -> bool: ...
@overload
def equals_identical(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ...
@overload
def equals_identical(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ...
@overload
def relate(a: Geometry | None, b: None, **kwargs) -> None: ...
@overload
+12 -2
View File
@@ -5,7 +5,11 @@ from .geometry.base import BaseGeometry
from .lib import Geometry
__all__ = [
"coverage_union",
"coverage_union_all",
"difference",
"disjoint_subset_union",
"disjoint_subset_union_all",
"intersection",
"intersection_all",
"symmetric_difference",
@@ -13,8 +17,6 @@ __all__ = [
"unary_union",
"union",
"union_all",
"coverage_union",
"coverage_union_all",
]
@overload
@@ -84,3 +86,11 @@ def coverage_union(a: OptGeoArrayLike, b: OptGeoArrayLike, *, axis: int, **kwarg
def coverage_union_all(geometries: OptGeoArrayLike, axis: None = None, **kwargs) -> BaseGeometry: ...
@overload
def coverage_union_all(geometries: OptGeoArrayLikeSeq, axis: int, **kwargs) -> BaseGeometry | GeoArray: ...
@overload
def disjoint_subset_union(a: OptGeoArrayLike, b: OptGeoArrayLike, *, axis: None = None, **kwargs) -> BaseGeometry: ...
@overload
def disjoint_subset_union(a: OptGeoArrayLike, b: OptGeoArrayLike, *, axis: int, **kwargs) -> BaseGeometry | GeoArray: ...
@overload
def disjoint_subset_union_all(geometries: OptGeoArrayLike, *, axis: None = None, **kwargs) -> BaseGeometry: ...
@overload
def disjoint_subset_union_all(geometries: OptGeoArrayLikeSeq, *, axis: int, **kwargs) -> BaseGeometry | GeoArray: ...