diff --git a/stubs/shapely/shapely/_typing.pyi b/stubs/shapely/shapely/_typing.pyi index 931dc2e7cc59..ed62e8b881eb 100644 --- a/stubs/shapely/shapely/_typing.pyi +++ b/stubs/shapely/shapely/_typing.pyi @@ -1,10 +1,10 @@ import sys from _typeshed import SupportsWrite as SupportsWrite from collections.abc import Sequence -from typing import Any, Protocol, TypeAlias, TypeVar, type_check_only +from typing import Any, Literal, Protocol, TypeAlias, TypedDict, TypeVar, type_check_only import numpy as np -from numpy.typing import NDArray +import numpy.typing as npt from .lib import Geometry @@ -44,7 +44,7 @@ OptGeoArrayLike: TypeAlias = ArrayLike[Geometry | None] # There is no way to pronounce "array of BaseGeometry" currently because of the restriction on # NDArray type variable to np.dtype and because np.object_ is not generic. # Note the use of `BaseGeometry` instead of `Geometry` as the alias is used in return types. -GeoArray: TypeAlias = NDArray[np.object_] +GeoArray: TypeAlias = npt.NDArray[np.object_] @type_check_only class SupportsGeoInterface(Protocol): @@ -55,3 +55,21 @@ class SupportsGeoInterface(Protocol): @type_check_only class SupportsRead(Protocol[_T_co]): def read(self) -> _T_co: ... + +CastingKind: TypeAlias = Literal["no", "equiv", "safe", "same_kind", "unsafe"] +OrderKind: TypeAlias = Literal["K", "A", "C", "F"] + +@type_check_only +class _UFuncKwargsBase(TypedDict, total=False): + where: npt.ArrayLike + casting: CastingKind + order: OrderKind + dtype: np.dtype[Any] | type[Any] + subok: bool + +@type_check_only +class UFuncKwargs(_UFuncKwargsBase, total=False): + out: npt.NDArray[Any] | tuple[npt.NDArray[Any], ...] + +@type_check_only +class UFuncKwargsNoOut(_UFuncKwargsBase, total=False): ... diff --git a/stubs/shapely/shapely/constructive.pyi b/stubs/shapely/shapely/constructive.pyi index 80ff27d36add..e3d21dedb46d 100644 --- a/stubs/shapely/shapely/constructive.pyi +++ b/stubs/shapely/shapely/constructive.pyi @@ -1,8 +1,9 @@ from collections.abc import Sequence from typing import Any, Literal, SupportsIndex, overload +from typing_extensions import Unpack from ._enum import ParamEnum -from ._typing import ArrayLike, ArrayLikeSeq, GeoArray, OptGeoArrayLike, OptGeoArrayLikeSeq, OptGeoT +from ._typing import ArrayLike, ArrayLikeSeq, GeoArray, OptGeoArrayLike, OptGeoArrayLikeSeq, OptGeoT, UFuncKwargs from .geometry import GeometryCollection, LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon from .geometry.base import BaseGeometry, BaseMultipartGeometry from .lib import Geometry @@ -53,17 +54,17 @@ class BufferJoinStyle(ParamEnum): bevel = 3 @overload -def boundary(geometry: Point | MultiPoint, **kwargs) -> GeometryCollection: ... +def boundary(geometry: Point | MultiPoint, **kwargs: Unpack[UFuncKwargs]) -> GeometryCollection: ... @overload -def boundary(geometry: LineString | MultiLineString, **kwargs) -> MultiPoint: ... +def boundary(geometry: LineString | MultiLineString, **kwargs: Unpack[UFuncKwargs]) -> MultiPoint: ... @overload -def boundary(geometry: Polygon | MultiPolygon, **kwargs) -> MultiLineString: ... +def boundary(geometry: Polygon | MultiPolygon, **kwargs: Unpack[UFuncKwargs]) -> MultiLineString: ... @overload -def boundary(geometry: GeometryCollection | None, **kwargs) -> None: ... +def boundary(geometry: GeometryCollection | None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def boundary(geometry: Geometry, **kwargs) -> BaseMultipartGeometry | Any: ... +def boundary(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> BaseMultipartGeometry | Any: ... @overload -def boundary(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def boundary(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload def buffer( @@ -74,7 +75,7 @@ def buffer( join_style: BufferJoinStyle | Literal["round", "mitre", "bevel"] = "round", mitre_limit: float = 5.0, single_sided: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> Polygon: ... @overload def buffer( @@ -85,7 +86,7 @@ def buffer( join_style: BufferJoinStyle | Literal["round", "mitre", "bevel"] = "round", mitre_limit: float = 5.0, single_sided: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> None: ... @overload def buffer( @@ -96,7 +97,7 @@ def buffer( join_style: BufferJoinStyle | Literal["round", "mitre", "bevel"] = "round", mitre_limit: float = 5.0, single_sided: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> Polygon | None: ... @overload def buffer( @@ -107,7 +108,7 @@ def buffer( join_style: BufferJoinStyle | Literal["round", "mitre", "bevel"] = "round", mitre_limit: float = 5.0, single_sided: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload def buffer( @@ -118,7 +119,7 @@ def buffer( join_style: BufferJoinStyle | Literal["round", "mitre", "bevel"] = "round", mitre_limit: float = 5.0, single_sided: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload @@ -128,7 +129,7 @@ def offset_curve( quad_segs: SupportsIndex = 8, join_style: BufferJoinStyle | Literal["round", "mitre", "bevel"] = "round", mitre_limit: float = 5.0, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> LineString | MultiLineString: ... @overload def offset_curve( @@ -137,7 +138,7 @@ def offset_curve( quad_segs: SupportsIndex = 8, join_style: BufferJoinStyle | Literal["round", "mitre", "bevel"] = "round", mitre_limit: float = 5.0, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> None: ... @overload def offset_curve( @@ -146,7 +147,7 @@ def offset_curve( quad_segs: SupportsIndex = 8, join_style: BufferJoinStyle | Literal["round", "mitre", "bevel"] = "round", mitre_limit: float = 5.0, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> LineString | MultiLineString | None: ... @overload def offset_curve( @@ -155,7 +156,7 @@ def offset_curve( quad_segs: SupportsIndex = 8, join_style: BufferJoinStyle | Literal["round", "mitre", "bevel"] = "round", mitre_limit: float = 5.0, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload def offset_curve( @@ -164,243 +165,292 @@ def offset_curve( quad_segs: SupportsIndex = 8, join_style: BufferJoinStyle | Literal["round", "mitre", "bevel"] = "round", mitre_limit: float = 5.0, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload -def centroid(geometry: Geometry, **kwargs) -> Point: ... +def centroid(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> Point: ... @overload -def centroid(geometry: None, **kwargs) -> None: ... +def centroid(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def centroid(geometry: Geometry | None, **kwargs) -> Point | None: ... +def centroid(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> Point | None: ... @overload -def centroid(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def centroid(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def clip_by_rect(geometry: Geometry, xmin: float, ymin: float, xmax: float, ymax: float, **kwargs) -> BaseGeometry: ... +def clip_by_rect( + geometry: Geometry, xmin: float, ymin: float, xmax: float, ymax: float, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry: ... @overload -def clip_by_rect(geometry: None, xmin: float, ymin: float, xmax: float, ymax: float, **kwargs) -> None: ... +def clip_by_rect(geometry: None, xmin: float, ymin: float, xmax: float, ymax: float, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload def clip_by_rect( - geometry: Geometry | None, xmin: float, ymin: float, xmax: float, ymax: float, **kwargs + geometry: Geometry | None, xmin: float, ymin: float, xmax: float, ymax: float, **kwargs: Unpack[UFuncKwargs] ) -> BaseGeometry | None: ... @overload -def clip_by_rect(geometry: OptGeoArrayLikeSeq, xmin: float, ymin: float, xmax: float, ymax: float, **kwargs) -> GeoArray: ... +def clip_by_rect( + geometry: OptGeoArrayLikeSeq, xmin: float, ymin: float, xmax: float, ymax: float, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def concave_hull(geometry: Geometry, ratio: float = 0.0, allow_holes: bool = False, **kwargs) -> BaseGeometry: ... +def concave_hull( + geometry: Geometry, ratio: float = 0.0, allow_holes: bool = False, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry: ... @overload -def concave_hull(geometry: None, ratio: float = 0.0, allow_holes: bool = False, **kwargs) -> None: ... +def concave_hull(geometry: None, ratio: float = 0.0, allow_holes: bool = False, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def concave_hull(geometry: Geometry | None, ratio: float = 0.0, allow_holes: bool = False, **kwargs) -> BaseGeometry | None: ... +def concave_hull( + geometry: Geometry | None, ratio: float = 0.0, allow_holes: bool = False, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry | None: ... @overload -def concave_hull(geometry: OptGeoArrayLikeSeq, ratio: float = 0.0, allow_holes: bool = False, **kwargs) -> GeoArray: ... +def concave_hull( + geometry: OptGeoArrayLikeSeq, ratio: float = 0.0, allow_holes: bool = False, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def convex_hull(geometry: Geometry, **kwargs) -> BaseGeometry: ... +def convex_hull(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry: ... @overload -def convex_hull(geometry: None, **kwargs) -> None: ... +def convex_hull(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def convex_hull(geometry: Geometry | None, **kwargs) -> BaseGeometry | None: ... +def convex_hull(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry | None: ... @overload -def convex_hull(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def convex_hull(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload def delaunay_triangles( - geometry: Geometry, tolerance: float = 0.0, only_edges: Literal[False] = False, **kwargs + geometry: Geometry, tolerance: float = 0.0, only_edges: Literal[False] = False, **kwargs: Unpack[UFuncKwargs] ) -> GeometryCollection: ... @overload -def delaunay_triangles(geometry: Geometry, tolerance: float, only_edges: Literal[True], **kwargs) -> MultiLineString: ... +def delaunay_triangles( + geometry: Geometry, tolerance: float, only_edges: Literal[True], **kwargs: Unpack[UFuncKwargs] +) -> MultiLineString: ... @overload -def delaunay_triangles(geometry: Geometry, tolerance: float = 0.0, *, only_edges: Literal[True], **kwargs) -> MultiLineString: ... +def delaunay_triangles( + geometry: Geometry, tolerance: float = 0.0, *, only_edges: Literal[True], **kwargs: Unpack[UFuncKwargs] +) -> MultiLineString: ... @overload def delaunay_triangles( - geometry: Geometry, tolerance: float = 0.0, only_edges: bool = False, **kwargs + geometry: Geometry, tolerance: float = 0.0, only_edges: bool = False, **kwargs: Unpack[UFuncKwargs] ) -> GeometryCollection | MultiLineString: ... @overload -def delaunay_triangles(geometry: None, tolerance: float = 0.0, only_edges: bool = False, **kwargs) -> None: ... +def delaunay_triangles( + geometry: None, tolerance: float = 0.0, only_edges: bool = False, **kwargs: Unpack[UFuncKwargs] +) -> None: ... @overload def delaunay_triangles( - geometry: Geometry | None, tolerance: float = 0.0, only_edges: bool = False, **kwargs + geometry: Geometry | None, tolerance: float = 0.0, only_edges: bool = False, **kwargs: Unpack[UFuncKwargs] ) -> GeometryCollection | MultiLineString | None: ... @overload def delaunay_triangles( - geometry: OptGeoArrayLike, tolerance: ArrayLike[float], only_edges: ArrayLikeSeq[bool], **kwargs + geometry: OptGeoArrayLike, tolerance: ArrayLike[float], only_edges: ArrayLikeSeq[bool], **kwargs: Unpack[UFuncKwargs] ) -> GeoArray: ... @overload def delaunay_triangles( - geometry: OptGeoArrayLike, tolerance: ArrayLike[float] = 0.0, *, only_edges: ArrayLikeSeq[bool], **kwargs + geometry: OptGeoArrayLike, tolerance: ArrayLike[float] = 0.0, *, only_edges: ArrayLikeSeq[bool], **kwargs: Unpack[UFuncKwargs] ) -> GeoArray: ... @overload def delaunay_triangles( - geometry: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], only_edges: ArrayLike[bool] = False, **kwargs + geometry: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], only_edges: ArrayLike[bool] = False, **kwargs: Unpack[UFuncKwargs] ) -> GeoArray: ... @overload def delaunay_triangles( - geometry: OptGeoArrayLikeSeq, tolerance: ArrayLike[float] = 0.0, only_edges: ArrayLike[bool] = False, **kwargs + geometry: OptGeoArrayLikeSeq, + tolerance: ArrayLike[float] = 0.0, + only_edges: ArrayLike[bool] = False, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload -def constrained_delaunay_triangles(geometry: Geometry, **kwargs) -> GeometryCollection: ... +def constrained_delaunay_triangles(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> GeometryCollection: ... # type: ignore[overload-overlap] @overload -def constrained_delaunay_triangles(geometry: None, **kwargs) -> None: ... +def constrained_delaunay_triangles(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... # type: ignore[overload-overlap] @overload -def constrained_delaunay_triangles(geometry: Geometry | None, **kwargs) -> GeometryCollection | None: ... +def constrained_delaunay_triangles(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> GeometryCollection | None: ... # type: ignore[overload-overlap] @overload -def constrained_delaunay_triangles(geometry: OptGeoArrayLikeSeq | OptGeoArrayLike, **kwargs) -> GeoArray: ... +def constrained_delaunay_triangles(geometry: OptGeoArrayLikeSeq | OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def envelope(geometry: Point, **kwargs) -> Point: ... +def envelope(geometry: Point, **kwargs: Unpack[UFuncKwargs]) -> Point: ... @overload -def envelope(geometry: Geometry, **kwargs) -> BaseGeometry: ... +def envelope(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry: ... @overload -def envelope(geometry: None, **kwargs) -> None: ... +def envelope(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def envelope(geometry: Geometry | None, **kwargs) -> BaseGeometry | None: ... +def envelope(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry | None: ... @overload -def envelope(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def envelope(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def extract_unique_points(geometry: Geometry, **kwargs) -> MultiPoint: ... +def extract_unique_points(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> MultiPoint: ... @overload -def extract_unique_points(geometry: None, **kwargs) -> None: ... +def extract_unique_points(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def extract_unique_points(geometry: Geometry | None, **kwargs) -> MultiPoint | None: ... +def extract_unique_points(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> MultiPoint | None: ... @overload -def extract_unique_points(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def extract_unique_points(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def build_area(geometry: Geometry, **kwargs) -> BaseGeometry: ... +def build_area(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry: ... @overload -def build_area(geometry: None, **kwargs) -> None: ... +def build_area(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def build_area(geometry: Geometry | None, **kwargs) -> BaseGeometry | None: ... +def build_area(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry | None: ... @overload -def build_area(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def build_area(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... # make_valid with `method="linework"` only accepts `keep_collapsed=True` @overload def make_valid( - geometry: Geometry, *, method: Literal["linework"] = "linework", keep_collapsed: Literal[True] = True, **kwargs + geometry: Geometry, + *, + method: Literal["linework"] = "linework", + keep_collapsed: Literal[True] = True, + **kwargs: Unpack[UFuncKwargs], ) -> BaseGeometry: ... @overload def make_valid( - geometry: None, *, method: Literal["linework"] = "linework", keep_collapsed: Literal[True] = True, **kwargs + geometry: None, + *, + method: Literal["linework"] = "linework", + keep_collapsed: Literal[True] = True, + **kwargs: Unpack[UFuncKwargs], ) -> None: ... @overload def make_valid( - geometry: Geometry | None, *, method: Literal["linework"] = "linework", keep_collapsed: Literal[True] = True, **kwargs + geometry: Geometry | None, + *, + method: Literal["linework"] = "linework", + keep_collapsed: Literal[True] = True, + **kwargs: Unpack[UFuncKwargs], ) -> BaseGeometry | None: ... @overload def make_valid( - geometry: OptGeoArrayLikeSeq, *, method: Literal["linework"] = "linework", keep_collapsed: Literal[True] = True, **kwargs + geometry: OptGeoArrayLikeSeq, + *, + method: Literal["linework"] = "linework", + keep_collapsed: Literal[True] = True, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload -def make_valid(geometry: Geometry, *, method: Literal["structure"], keep_collapsed: bool = True, **kwargs) -> BaseGeometry: ... +def make_valid( + geometry: Geometry, *, method: Literal["structure"], keep_collapsed: bool = True, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry: ... @overload -def make_valid(geometry: None, *, method: Literal["structure"], keep_collapsed: bool = True, **kwargs) -> None: ... +def make_valid( + geometry: None, *, method: Literal["structure"], keep_collapsed: bool = True, **kwargs: Unpack[UFuncKwargs] +) -> None: ... @overload def make_valid( - geometry: Geometry | None, *, method: Literal["structure"], keep_collapsed: bool = True, **kwargs + geometry: Geometry | None, *, method: Literal["structure"], keep_collapsed: bool = True, **kwargs: Unpack[UFuncKwargs] ) -> BaseGeometry | None: ... @overload def make_valid( - geometry: OptGeoArrayLikeSeq, *, method: Literal["structure"], keep_collapsed: bool = True, **kwargs + geometry: OptGeoArrayLikeSeq, *, method: Literal["structure"], keep_collapsed: bool = True, **kwargs: Unpack[UFuncKwargs] ) -> GeoArray: ... @overload -def minimum_clearance_line(geometry: Point, **kwargs) -> Point: ... +def minimum_clearance_line(geometry: Point, **kwargs: Unpack[UFuncKwargs]) -> Point: ... @overload -def minimum_clearance_line(geometry: LineString | Polygon | BaseMultipartGeometry, **kwargs) -> Polygon: ... +def minimum_clearance_line(geometry: LineString | Polygon | BaseMultipartGeometry, **kwargs: Unpack[UFuncKwargs]) -> Polygon: ... @overload -def minimum_clearance_line(geometry: Geometry, **kwargs) -> Polygon | Point: ... +def minimum_clearance_line(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> Polygon | Point: ... @overload -def minimum_clearance_line(geometry: None, **kwargs) -> None: ... +def minimum_clearance_line(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def minimum_clearance_line(geometry: Geometry | None, **kwargs) -> Polygon | Point | None: ... +def minimum_clearance_line(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> Polygon | Point | None: ... @overload -def minimum_clearance_line(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def minimum_clearance_line(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def normalize(geometry: OptGeoT, **kwargs) -> OptGeoT: ... +def normalize(geometry: OptGeoT, **kwargs: Unpack[UFuncKwargs]) -> OptGeoT: ... @overload -def normalize(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def normalize(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def point_on_surface(geometry: Geometry, **kwargs) -> Point: ... +def point_on_surface(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> Point: ... @overload -def point_on_surface(geometry: None, **kwargs) -> None: ... +def point_on_surface(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def point_on_surface(geometry: Geometry | None, **kwargs) -> Point | None: ... +def point_on_surface(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> Point | None: ... @overload -def point_on_surface(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def point_on_surface(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def node(geometry: Geometry, **kwargs) -> MultiLineString: ... +def node(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> MultiLineString: ... @overload -def node(geometry: None, **kwargs) -> None: ... +def node(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def node(geometry: Geometry | None, **kwargs) -> MultiLineString | None: ... +def node(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> MultiLineString | None: ... @overload -def node(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def node(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def polygonize(geometries: Sequence[Geometry | None], **kwargs) -> GeometryCollection: ... +def polygonize(geometries: Sequence[Geometry | None], **kwargs: Unpack[UFuncKwargs]) -> GeometryCollection: ... @overload -def polygonize(geometries: Sequence[Sequence[Geometry | None]], **kwargs) -> GeoArray: ... +def polygonize(geometries: Sequence[Sequence[Geometry | None]], **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def polygonize(geometries: OptGeoArrayLikeSeq, **kwargs) -> GeometryCollection | GeoArray: ... +def polygonize(geometries: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeometryCollection | GeoArray: ... @overload def polygonize_full( - geometries: Sequence[Geometry | None], **kwargs + geometries: Sequence[Geometry | None], **kwargs: Unpack[UFuncKwargs] ) -> tuple[GeometryCollection, GeometryCollection, GeometryCollection, GeometryCollection]: ... @overload def polygonize_full( - geometries: Sequence[Sequence[Geometry | None]], **kwargs + geometries: Sequence[Sequence[Geometry | None]], **kwargs: Unpack[UFuncKwargs] ) -> tuple[GeoArray, GeoArray, GeoArray, GeoArray]: ... @overload def polygonize_full( - geometries: OptGeoArrayLikeSeq, **kwargs + geometries: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs] ) -> ( tuple[GeometryCollection, GeometryCollection, GeometryCollection, GeometryCollection] | tuple[GeoArray, GeoArray, GeoArray, GeoArray] ): ... @overload -def remove_repeated_points(geometry: OptGeoT, tolerance: float = 0.0, **kwargs) -> OptGeoT: ... +def remove_repeated_points(geometry: OptGeoT, tolerance: float = 0.0, **kwargs: Unpack[UFuncKwargs]) -> OptGeoT: ... @overload -def remove_repeated_points(geometry: OptGeoArrayLikeSeq, tolerance: float = 0.0, **kwargs) -> GeoArray: ... +def remove_repeated_points(geometry: OptGeoArrayLikeSeq, tolerance: float = 0.0, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def reverse(geometry: OptGeoT, **kwargs) -> OptGeoT: ... +def reverse(geometry: OptGeoT, **kwargs: Unpack[UFuncKwargs]) -> OptGeoT: ... @overload -def reverse(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def reverse(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def segmentize(geometry: OptGeoT, max_segment_length: float, **kwargs) -> OptGeoT: ... +def segmentize(geometry: OptGeoT, max_segment_length: float, **kwargs: Unpack[UFuncKwargs]) -> OptGeoT: ... @overload -def segmentize(geometry: OptGeoArrayLike, max_segment_length: ArrayLikeSeq[float], **kwargs) -> GeoArray: ... +def segmentize(geometry: OptGeoArrayLike, max_segment_length: ArrayLikeSeq[float], **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def segmentize(geometry: OptGeoArrayLikeSeq, max_segment_length: ArrayLike[float], **kwargs) -> GeoArray: ... +def segmentize(geometry: OptGeoArrayLikeSeq, max_segment_length: ArrayLike[float], **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def simplify(geometry: OptGeoT, tolerance: float, preserve_topology: bool = True, **kwargs) -> OptGeoT: ... +def simplify(geometry: OptGeoT, tolerance: float, preserve_topology: bool = True, **kwargs: Unpack[UFuncKwargs]) -> OptGeoT: ... @overload -def simplify(geometry: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], preserve_topology: bool = True, **kwargs) -> GeoArray: ... +def simplify( + geometry: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], preserve_topology: bool = True, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def simplify(geometry: OptGeoArrayLikeSeq, tolerance: ArrayLike[float], preserve_topology: bool = True, **kwargs) -> GeoArray: ... +def simplify( + geometry: OptGeoArrayLikeSeq, tolerance: ArrayLike[float], preserve_topology: bool = True, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def snap(geometry: OptGeoT, reference: Geometry, tolerance: float, **kwargs) -> OptGeoT: ... +def snap(geometry: OptGeoT, reference: Geometry, tolerance: float, **kwargs: Unpack[UFuncKwargs]) -> OptGeoT: ... @overload -def snap(geometry: Geometry | None, reference: None, tolerance: float, **kwargs) -> None: ... +def snap(geometry: Geometry | None, reference: None, tolerance: float, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def snap(geometry: OptGeoArrayLikeSeq, reference: OptGeoArrayLike, tolerance: ArrayLike[float], **kwargs) -> GeoArray: ... +def snap( + geometry: OptGeoArrayLikeSeq, reference: OptGeoArrayLike, tolerance: ArrayLike[float], **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def snap(geometry: OptGeoArrayLike, reference: OptGeoArrayLikeSeq, tolerance: ArrayLike[float], **kwargs) -> GeoArray: ... +def snap( + geometry: OptGeoArrayLike, reference: OptGeoArrayLikeSeq, tolerance: ArrayLike[float], **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def snap(geometry: OptGeoArrayLike, reference: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], **kwargs) -> GeoArray: ... +def snap( + geometry: OptGeoArrayLike, reference: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload def voronoi_polygons( @@ -409,11 +459,16 @@ def voronoi_polygons( extend_to: Geometry | None = None, only_edges: Literal[False] = False, ordered: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeometryCollection[Polygon]: ... @overload def voronoi_polygons( - geometry: Geometry, tolerance: float, extend_to: Geometry | None, only_edges: Literal[True], ordered: bool = False, **kwargs + geometry: Geometry, + tolerance: float, + extend_to: Geometry | None, + only_edges: Literal[True], + ordered: bool = False, + **kwargs: Unpack[UFuncKwargs], ) -> LineString | MultiLineString: ... @overload def voronoi_polygons( @@ -423,7 +478,7 @@ def voronoi_polygons( *, only_edges: Literal[True], ordered: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> LineString | MultiLineString: ... @overload def voronoi_polygons( @@ -432,7 +487,7 @@ def voronoi_polygons( extend_to: Geometry | None = None, only_edges: bool = False, ordered: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeometryCollection[Polygon] | LineString | MultiLineString: ... @overload def voronoi_polygons( @@ -441,7 +496,7 @@ def voronoi_polygons( extend_to: Geometry | None = None, only_edges: bool = False, ordered: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> None: ... @overload def voronoi_polygons( @@ -450,7 +505,7 @@ def voronoi_polygons( extend_to: Geometry | None = None, only_edges: bool = False, ordered: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeometryCollection[Polygon] | LineString | MultiLineString | None: ... @overload # `geometry` as sequence-like def voronoi_polygons( @@ -459,7 +514,7 @@ def voronoi_polygons( extend_to: OptGeoArrayLike = None, only_edges: ArrayLike[bool] = False, ordered: ArrayLike[bool] = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload # `tolerance` as sequence-like def voronoi_polygons( @@ -468,7 +523,7 @@ def voronoi_polygons( extend_to: OptGeoArrayLike = None, only_edges: ArrayLike[bool] = False, ordered: ArrayLike[bool] = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload def voronoi_polygons( # `extend_to` as positional sequence-like @@ -477,7 +532,7 @@ def voronoi_polygons( # `extend_to` as positional sequence-like extend_to: OptGeoArrayLikeSeq, only_edges: ArrayLike[bool] = False, ordered: ArrayLike[bool] = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload # `extend_to` as keyword sequence-like def voronoi_polygons( @@ -487,7 +542,7 @@ def voronoi_polygons( extend_to: OptGeoArrayLikeSeq, only_edges: ArrayLike[bool] = False, ordered: ArrayLike[bool] = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload def voronoi_polygons( # `only_edges` as positional sequence-like @@ -496,7 +551,7 @@ def voronoi_polygons( # `only_edges` as positional sequence-like extend_to: OptGeoArrayLike, only_edges: ArrayLikeSeq[bool], ordered: ArrayLike[bool] = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload def voronoi_polygons( # `only_edges` as keyword sequence-like @@ -506,7 +561,7 @@ def voronoi_polygons( # `only_edges` as keyword sequence-like *, only_edges: ArrayLikeSeq[bool], ordered: ArrayLike[bool] = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload # `ordered` as positional sequence-like def voronoi_polygons( @@ -515,7 +570,7 @@ def voronoi_polygons( extend_to: OptGeoArrayLike, only_edges: ArrayLike[bool], ordered: ArrayLikeSeq[bool], - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload # `ordered` as keyword sequence-like def voronoi_polygons( @@ -525,49 +580,55 @@ def voronoi_polygons( *, only_edges: ArrayLike[bool] = False, ordered: ArrayLikeSeq[bool], - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... @overload -def oriented_envelope(geometry: Point, **kwargs) -> Point: ... +def oriented_envelope(geometry: Point, **kwargs: Unpack[UFuncKwargs]) -> Point: ... @overload -def oriented_envelope(geometry: Geometry, **kwargs) -> BaseGeometry: ... +def oriented_envelope(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry: ... @overload -def oriented_envelope(geometry: None, **kwargs) -> None: ... +def oriented_envelope(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def oriented_envelope(geometry: Geometry | None, **kwargs) -> BaseGeometry | None: ... +def oriented_envelope(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry | None: ... @overload -def oriented_envelope(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def oriented_envelope(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... minimum_rotated_rectangle = oriented_envelope @overload -def minimum_bounding_circle(geometry: Point, **kwargs) -> Point: ... +def minimum_bounding_circle(geometry: Point, **kwargs: Unpack[UFuncKwargs]) -> Point: ... @overload -def minimum_bounding_circle(geometry: LineString | Polygon | BaseMultipartGeometry, **kwargs) -> Polygon: ... +def minimum_bounding_circle(geometry: LineString | Polygon | BaseMultipartGeometry, **kwargs: Unpack[UFuncKwargs]) -> Polygon: ... @overload -def minimum_bounding_circle(geometry: Geometry, **kwargs) -> Polygon | Point: ... +def minimum_bounding_circle(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> Polygon | Point: ... @overload -def minimum_bounding_circle(geometry: None, **kwargs) -> None: ... +def minimum_bounding_circle(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def minimum_bounding_circle(geometry: Geometry | None, **kwargs) -> Polygon | Point | None: ... +def minimum_bounding_circle(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> Polygon | Point | None: ... @overload -def minimum_bounding_circle(geometry: OptGeoArrayLikeSeq, **kwargs) -> GeoArray: ... +def minimum_bounding_circle(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... @overload -def maximum_inscribed_circle(geometry: Polygon | MultiPolygon, tolerance: float | None = None, **kwargs) -> LineString: ... +def maximum_inscribed_circle( + geometry: Polygon | MultiPolygon, tolerance: float | None = None, **kwargs: Unpack[UFuncKwargs] +) -> LineString: ... @overload -def maximum_inscribed_circle(geometry: None, tolerance: float | None = None, **kwargs) -> None: ... +def maximum_inscribed_circle(geometry: None, tolerance: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload def maximum_inscribed_circle( - geometry: Polygon | MultiPolygon | None, tolerance: float | None = None, **kwargs + geometry: Polygon | MultiPolygon | None, tolerance: float | None = None, **kwargs: Unpack[UFuncKwargs] ) -> LineString | None: ... @overload -def maximum_inscribed_circle(geometry: OptGeoArrayLikeSeq, tolerance: ArrayLike[float] | None = None, **kwargs) -> GeoArray: ... +def maximum_inscribed_circle( + geometry: OptGeoArrayLikeSeq, tolerance: ArrayLike[float] | None = None, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def maximum_inscribed_circle(geometry: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], **kwargs) -> GeoArray: ... +def maximum_inscribed_circle( + geometry: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def orient_polygons(geometry: OptGeoT, *, exterior_cw: bool = False, **kwargs) -> OptGeoT: ... +def orient_polygons(geometry: OptGeoT, *, exterior_cw: bool = False, **kwargs: Unpack[UFuncKwargs]) -> OptGeoT: ... @overload -def orient_polygons(geometry: OptGeoArrayLikeSeq, *, exterior_cw: bool = False, **kwargs) -> GeoArray: ... +def orient_polygons(geometry: OptGeoArrayLikeSeq, *, exterior_cw: bool = False, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... diff --git a/stubs/shapely/shapely/creation.pyi b/stubs/shapely/shapely/creation.pyi index d9631df85d80..a51ff551071d 100644 --- a/stubs/shapely/shapely/creation.pyi +++ b/stubs/shapely/shapely/creation.pyi @@ -1,12 +1,13 @@ from collections.abc import Sequence from typing import Literal, SupportsIndex, TypeAlias, overload +from typing_extensions import Unpack 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 ._typing import ArrayLike, ArrayLikeSeq, GeoArray, OptGeoArrayLike, OptGeoArrayLikeSeq, UFuncKwargsNoOut from .geometry import GeometryCollection, LinearRing, LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon from .lib import Geometry @@ -41,7 +42,7 @@ def points( *, handle_nan: _HandleNaN = ..., out: None = None, - **kwargs, # acts as x + **kwargs: Unpack[UFuncKwargsNoOut], # acts as x ) -> Point: ... @overload def points( @@ -52,7 +53,7 @@ def points( *, handle_nan: _HandleNaN = ..., out: None = None, - **kwargs, # acts as x, y[, z] + **kwargs: Unpack[UFuncKwargsNoOut], # acts as x, y[, z] ) -> Point: ... @overload def points( @@ -63,7 +64,7 @@ def points( *, handle_nan: _HandleNaN = ..., out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> GeoArray: ... @overload def points( @@ -74,7 +75,7 @@ def points( *, handle_nan: _HandleNaN = ..., out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> GeoArray: ... @overload def points( @@ -85,7 +86,7 @@ def points( *, handle_nan: _HandleNaN = ..., out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> Point | GeoArray: ... @overload def points( @@ -96,7 +97,7 @@ def points( *, handle_nan: _HandleNaN = ..., out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> Point | GeoArray: ... @overload @@ -108,7 +109,7 @@ def linestrings( *, handle_nan: _HandleNaN = ..., out: None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> LineString: ... @overload def linestrings( @@ -119,7 +120,7 @@ def linestrings( *, handle_nan: _HandleNaN = ..., out: None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> LineString: ... @overload def linestrings( @@ -130,7 +131,7 @@ def linestrings( *, handle_nan: _HandleNaN = ..., out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> GeoArray: ... @overload def linestrings( @@ -141,7 +142,7 @@ def linestrings( *, handle_nan: _HandleNaN = ..., out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> LineString | GeoArray: ... @overload @@ -153,7 +154,7 @@ def linearrings( *, handle_nan: _HandleNaN = ..., out: None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> LinearRing: ... @overload def linearrings( @@ -164,7 +165,7 @@ def linearrings( *, handle_nan: _HandleNaN = ..., out: None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> LinearRing: ... @overload def linearrings( @@ -175,7 +176,7 @@ def linearrings( *, handle_nan: _HandleNaN = ..., out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> GeoArray: ... @overload def linearrings( @@ -186,7 +187,7 @@ def linearrings( *, handle_nan: _HandleNaN = ..., out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> LinearRing | GeoArray: ... @overload @@ -196,7 +197,7 @@ def polygons( indices: None = None, *, out: None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> Polygon: ... @overload def polygons( @@ -205,7 +206,7 @@ def polygons( indices: ArrayLikeSeq[int] | None = None, *, out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> GeoArray: ... @overload def polygons( @@ -214,11 +215,11 @@ def polygons( indices: ArrayLikeSeq[int] | None = None, *, out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> Polygon | GeoArray: ... @overload -def box(xmin: float, ymin: float, xmax: float, ymax: float, ccw: bool = True, **kwargs) -> Polygon: ... +def box(xmin: float, ymin: float, xmax: float, ymax: float, ccw: bool = True, **kwargs: Unpack[UFuncKwargsNoOut]) -> Polygon: ... @overload def box( xmin: ArrayLikeSeq[float], @@ -226,12 +227,16 @@ def box( xmax: ArrayLikeSeq[float], ymax: ArrayLikeSeq[float], ccw: bool = True, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> 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: Unpack[UFuncKwargsNoOut], ) -> MultiPoint: ... @overload def multipoints( @@ -239,16 +244,24 @@ def multipoints( indices: ArrayLikeSeq[int] | None = None, *, out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> 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: Unpack[UFuncKwargsNoOut], ) -> 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: Unpack[UFuncKwargsNoOut], ) -> MultiLineString: ... @overload def multilinestrings( @@ -256,16 +269,24 @@ def multilinestrings( indices: ArrayLikeSeq[int] | None = None, *, out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> 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: Unpack[UFuncKwargsNoOut], ) -> 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: Unpack[UFuncKwargsNoOut], ) -> MultiPolygon: ... @overload def multipolygons( @@ -273,31 +294,38 @@ def multipolygons( indices: ArrayLikeSeq[int] | None = None, *, out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> 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: Unpack[UFuncKwargsNoOut], ) -> MultiPolygon | GeoArray: ... @overload def geometrycollections( - geometries: Sequence[Geometry | None], indices: None = None, out: None = None, **kwargs + geometries: Sequence[Geometry | None], indices: None = None, out: None = None, **kwargs: Unpack[UFuncKwargsNoOut] ) -> GeometryCollection: ... @overload def geometrycollections( geometries: Sequence[Sequence[Geometry | None]], indices: ArrayLikeSeq[int] | None = None, out: NDArray[np.object_] | None = None, - **kwargs, + **kwargs: Unpack[UFuncKwargsNoOut], ) -> GeoArray: ... @overload def geometrycollections( - 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: Unpack[UFuncKwargsNoOut], ) -> GeometryCollection | GeoArray: ... -def prepare(geometry: OptGeoArrayLike, **kwargs) -> None: ... -def destroy_prepared(geometry: OptGeoArrayLike, **kwargs) -> None: ... +def prepare(geometry: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargsNoOut]) -> None: ... +def destroy_prepared(geometry: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargsNoOut]) -> None: ... def empty( shape: SupportsIndex | Sequence[SupportsIndex], geom_type: GeometryType | int | None = None, order: Literal["C", "F"] = "C" ) -> NDArray[np.object_]: ... diff --git a/stubs/shapely/shapely/io.pyi b/stubs/shapely/shapely/io.pyi index 871967fa8fc0..2506df3e6c3b 100644 --- a/stubs/shapely/shapely/io.pyi +++ b/stubs/shapely/shapely/io.pyi @@ -1,12 +1,13 @@ from _typeshed import Incomplete from typing import Literal, TypeAlias, overload +from typing_extensions import Unpack import numpy as np from numpy.typing import NDArray from ._enum import ParamEnum from ._ragged_array import from_ragged_array as from_ragged_array, to_ragged_array as to_ragged_array -from ._typing import ArrayLikeSeq, GeoArray, OptGeoArrayLikeSeq +from ._typing import ArrayLikeSeq, GeoArray, OptGeoArrayLikeSeq, UFuncKwargs from .geometry.base import BaseGeometry from .lib import Geometry @@ -30,7 +31,7 @@ def to_wkt( trim: bool = True, output_dimension: _OutputDimension | None = None, old_3d: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> None: ... @overload def to_wkt( @@ -39,7 +40,7 @@ def to_wkt( trim: bool = True, output_dimension: _OutputDimension | None = None, old_3d: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> str: ... @overload def to_wkt( @@ -48,7 +49,7 @@ def to_wkt( trim: bool = True, output_dimension: _OutputDimension | None = None, old_3d: bool = False, - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> NDArray[np.str_]: ... @overload @@ -59,7 +60,7 @@ def to_wkb( byte_order: int = -1, include_srid: bool = False, flavor: Literal["iso", "extended"] = "extended", - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> None: ... @overload def to_wkb( @@ -69,7 +70,7 @@ def to_wkb( byte_order: int = -1, include_srid: bool = False, flavor: Literal["iso", "extended"] = "extended", - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> bytes: ... @overload def to_wkb( @@ -79,7 +80,7 @@ def to_wkb( byte_order: int = -1, include_srid: bool = False, flavor: Literal["iso", "extended"] = "extended", - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> str: ... @overload def to_wkb( @@ -89,7 +90,7 @@ def to_wkb( byte_order: int = -1, include_srid: bool = False, flavor: Literal["iso", "extended"] = "extended", - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> bytes | str: ... @overload def to_wkb( @@ -99,7 +100,7 @@ def to_wkb( byte_order: int = -1, include_srid: bool = False, flavor: Literal["iso", "extended"] = "extended", - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> NDArray[np.bytes_]: ... @overload def to_wkb( @@ -109,7 +110,7 @@ def to_wkb( byte_order: int = -1, include_srid: bool = False, flavor: Literal["iso", "extended"] = "extended", - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> NDArray[np.str_]: ... @overload def to_wkb( @@ -119,43 +120,57 @@ def to_wkb( byte_order: int = -1, include_srid: bool = False, flavor: Literal["iso", "extended"] = "extended", - **kwargs, + **kwargs: Unpack[UFuncKwargs], ) -> NDArray[np.bytes_] | NDArray[np.str_]: ... @overload -def to_geojson(geometry: None, indent: int | None = None, **kwargs) -> None: ... +def to_geojson(geometry: None, indent: int | None = None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def to_geojson(geometry: Geometry, indent: int | None = None, **kwargs) -> str: ... +def to_geojson(geometry: Geometry, indent: int | None = None, **kwargs: Unpack[UFuncKwargs]) -> str: ... @overload -def to_geojson(geometry: OptGeoArrayLikeSeq, indent: int | None = None, **kwargs) -> NDArray[np.str_]: ... +def to_geojson(geometry: OptGeoArrayLikeSeq, indent: int | None = None, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.str_]: ... @overload -def from_wkt(geometry: None, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs) -> None: ... +def from_wkt( + geometry: None, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs: Unpack[UFuncKwargs] +) -> None: ... @overload -def from_wkt(geometry: str, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs) -> BaseGeometry: ... # type: ignore[overload-overlap] +def from_wkt( # type: ignore[overload-overlap] + geometry: str, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry: ... @overload def from_wkt( - geometry: ArrayLikeSeq[str | None], on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs + geometry: ArrayLikeSeq[str | None], + on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... -@overload -def from_wkb(geometry: None, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs) -> None: ... @overload def from_wkb( - geometry: str | bytes, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs -) -> BaseGeometry: ... # type: ignore[overload-overlap] + geometry: None, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs: Unpack[UFuncKwargs] +) -> None: ... +@overload +def from_wkb( # type: ignore[overload-overlap] + geometry: str | bytes, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry: ... @overload def from_wkb( - geometry: ArrayLikeSeq[str | bytes | None], on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs + geometry: ArrayLikeSeq[str | bytes | None], + on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... -@overload -def from_geojson(geometry: None, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs) -> None: ... @overload def from_geojson( - geometry: str | bytes, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs -) -> BaseGeometry: ... # type: ignore[overload-overlap] + geometry: None, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs: Unpack[UFuncKwargs] +) -> None: ... +@overload +def from_geojson( # type: ignore[overload-overlap] + geometry: str | bytes, on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry: ... @overload def from_geojson( - geometry: ArrayLikeSeq[str | bytes | None], on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", **kwargs + geometry: ArrayLikeSeq[str | bytes | None], + on_invalid: Literal["raise", "warn", "ignore", "fix"] = "raise", + **kwargs: Unpack[UFuncKwargs], ) -> GeoArray: ... diff --git a/stubs/shapely/shapely/predicates.pyi b/stubs/shapely/shapely/predicates.pyi index 85790e546d9f..03e2a2fd4b50 100644 --- a/stubs/shapely/shapely/predicates.pyi +++ b/stubs/shapely/shapely/predicates.pyi @@ -1,9 +1,10 @@ from typing import Any, Literal, TypeGuard, overload +from typing_extensions import Unpack import numpy as np from numpy.typing import NDArray -from ._typing import ArrayLike, ArrayLikeSeq, OptGeoArrayLike, OptGeoArrayLikeSeq +from ._typing import ArrayLike, ArrayLikeSeq, OptGeoArrayLike, OptGeoArrayLikeSeq, UFuncKwargs from .geometry.base import BaseGeometry from .lib import Geometry @@ -42,226 +43,261 @@ __all__ = [ ] @overload -def has_z(geometry: Geometry | None, **kwargs) -> np.bool_: ... +def has_z(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def has_z(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def has_z(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def has_m(geometry: Geometry | None, **kwargs) -> np.bool_: ... +def has_m(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def has_m(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def has_m(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def is_ccw(geometry: Geometry | None, **kwargs) -> np.bool_: ... +def is_ccw(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def is_ccw(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def is_ccw(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def is_closed(geometry: Geometry | None, **kwargs) -> np.bool_: ... +def is_closed(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def is_closed(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def is_closed(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def is_empty(geometry: Geometry | None, **kwargs) -> np.bool_: ... +def is_empty(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def is_empty(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def is_empty(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def is_geometry(geometry: Geometry, **kwargs) -> np.bool_[Literal[True]]: ... +def is_geometry(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> np.bool_[Literal[True]]: ... # type: ignore[overload-overlap] @overload -def is_geometry(geometry: None, **kwargs) -> np.bool_[Literal[False]]: ... +def is_geometry(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_[Literal[False]]: ... @overload -def is_geometry(geometry: ArrayLikeSeq[Any], **kwargs) -> NDArray[np.bool_]: ... # type: ignore[overload-overlap] +def is_geometry(geometry: ArrayLikeSeq[Any], **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... # type: ignore[overload-overlap] @overload -def is_geometry(geometry: object, **kwargs) -> TypeGuard[BaseGeometry]: ... +def is_geometry(geometry: object, **kwargs: Unpack[UFuncKwargs]) -> TypeGuard[BaseGeometry]: ... @overload -def is_missing(geometry: Geometry, **kwargs) -> np.bool_[Literal[False]]: ... +def is_missing(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> np.bool_[Literal[False]]: ... # type: ignore[overload-overlap] @overload -def is_missing(geometry: None, **kwargs) -> np.bool_[Literal[True]]: ... +def is_missing(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_[Literal[True]]: ... @overload -def is_missing(geometry: ArrayLikeSeq[Any], **kwargs) -> NDArray[np.bool_]: ... # type: ignore[overload-overlap] +def is_missing(geometry: ArrayLikeSeq[Any], **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... # type: ignore[overload-overlap] @overload -def is_missing(geometry: object, **kwargs) -> TypeGuard[None]: ... +def is_missing(geometry: object, **kwargs: Unpack[UFuncKwargs]) -> TypeGuard[None]: ... @overload -def is_prepared(geometry: Geometry | None, **kwargs) -> np.bool_: ... +def is_prepared(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def is_prepared(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def is_prepared(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def is_valid_input(geometry: Geometry | None, **kwargs) -> np.bool_[Literal[True]]: ... +def is_valid_input(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_[Literal[True]]: ... # type: ignore[overload-overlap] @overload -def is_valid_input(geometry: ArrayLikeSeq[Any], **kwargs) -> NDArray[np.bool_]: ... # type: ignore[overload-overlap] +def is_valid_input(geometry: ArrayLikeSeq[Any], **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... # type: ignore[overload-overlap] @overload -def is_valid_input(geometry: object, **kwargs) -> TypeGuard[BaseGeometry | None]: ... +def is_valid_input(geometry: object, **kwargs: Unpack[UFuncKwargs]) -> TypeGuard[BaseGeometry | None]: ... @overload -def is_ring(geometry: Geometry | None, **kwargs) -> np.bool_: ... +def is_ring(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def is_ring(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def is_ring(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def is_simple(geometry: Geometry | None, **kwargs) -> np.bool_: ... +def is_simple(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def is_simple(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def is_simple(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def is_valid(geometry: Geometry | None, **kwargs) -> np.bool_: ... +def is_valid(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def is_valid(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def is_valid(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def is_valid_reason(geometry: None, **kwargs) -> None: ... +def is_valid_reason(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def is_valid_reason(geometry: Geometry, **kwargs) -> str: ... +def is_valid_reason(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> str: ... @overload -def is_valid_reason(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.object_]: ... +def is_valid_reason(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.object_]: ... @overload -def crosses(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def crosses(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def crosses(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def crosses(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def crosses(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def crosses(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def contains(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def contains(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def contains(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def contains(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def contains(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def contains(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def contains_properly(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def contains_properly(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def contains_properly(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def contains_properly(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def contains_properly(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def contains_properly(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def covered_by(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def covered_by(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def covered_by(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def covered_by(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def covered_by(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def covered_by(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def covers(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def covers(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def covers(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def covers(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def covers(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def covers(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def disjoint(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def disjoint(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def disjoint(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def disjoint(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def disjoint(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def disjoint(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def equals(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def equals(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def equals(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def equals(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def equals(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def equals(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def intersects(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def intersects(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def intersects(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def intersects(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def intersects(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def intersects(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def overlaps(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def overlaps(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def overlaps(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def overlaps(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def overlaps(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def overlaps(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def touches(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def touches(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def touches(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def touches(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def touches(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def touches(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def within(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def within(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def within(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def within(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def within(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def within(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload def equals_exact( - a: Geometry | None, b: Geometry | None, tolerance: float = 0.0, *, normalize: bool = False, **kwargs + a: Geometry | None, b: Geometry | None, tolerance: float = 0.0, *, normalize: bool = False, **kwargs: Unpack[UFuncKwargs] ) -> np.bool_: ... @overload def equals_exact( - a: OptGeoArrayLike, b: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], *, normalize: bool = False, **kwargs + a: OptGeoArrayLike, + b: OptGeoArrayLike, + tolerance: ArrayLikeSeq[float], + *, + normalize: bool = False, + **kwargs: Unpack[UFuncKwargs], ) -> NDArray[np.bool_]: ... @overload def equals_exact( - a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, tolerance: ArrayLike[float] = 0.0, *, normalize: bool = False, **kwargs + a: OptGeoArrayLikeSeq, + b: OptGeoArrayLike, + tolerance: ArrayLike[float] = 0.0, + *, + normalize: bool = False, + **kwargs: Unpack[UFuncKwargs], ) -> NDArray[np.bool_]: ... @overload def equals_exact( - a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, tolerance: ArrayLike[float] = 0.0, *, normalize: bool = False, **kwargs + a: OptGeoArrayLike, + b: OptGeoArrayLikeSeq, + tolerance: ArrayLike[float] = 0.0, + *, + normalize: bool = False, + **kwargs: Unpack[UFuncKwargs], ) -> NDArray[np.bool_]: ... @overload -def equals_identical(a: Geometry | None, b: Geometry | None, **kwargs) -> np.bool_: ... +def equals_identical(a: Geometry | None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def equals_identical(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.bool_]: ... +def equals_identical(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def equals_identical(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.bool_]: ... +def equals_identical(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def relate(a: Geometry | None, b: None, **kwargs) -> None: ... +def relate(a: Geometry | None, b: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def relate(a: None, b: Geometry | None, **kwargs) -> None: ... +def relate(a: None, b: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def relate(a: Geometry, b: Geometry, **kwargs) -> str: ... +def relate(a: Geometry, b: Geometry, **kwargs: Unpack[UFuncKwargs]) -> str: ... @overload -def relate(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs) -> NDArray[np.object_]: ... +def relate(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.object_]: ... @overload -def relate(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.object_]: ... +def relate(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.object_]: ... @overload -def relate_pattern(a: Geometry | None, b: Geometry | None, pattern: str, **kwargs) -> np.bool_: ... +def relate_pattern(a: Geometry | None, b: Geometry | None, pattern: str, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def relate_pattern(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, pattern: str, **kwargs) -> NDArray[np.bool_]: ... +def relate_pattern( + a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, pattern: str, **kwargs: Unpack[UFuncKwargs] +) -> NDArray[np.bool_]: ... @overload -def relate_pattern(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, pattern: str, **kwargs) -> NDArray[np.bool_]: ... +def relate_pattern( + a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, pattern: str, **kwargs: Unpack[UFuncKwargs] +) -> NDArray[np.bool_]: ... @overload -def dwithin(a: Geometry | None, b: Geometry | None, distance: float, **kwargs) -> np.bool_: ... +def dwithin(a: Geometry | None, b: Geometry | None, distance: float, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def dwithin(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, distance: float, **kwargs) -> NDArray[np.bool_]: ... +def dwithin(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, distance: float, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def dwithin(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, distance: float, **kwargs) -> NDArray[np.bool_]: ... +def dwithin(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, distance: float, **kwargs: Unpack[UFuncKwargs]) -> NDArray[np.bool_]: ... @overload -def contains_xy(geom: Geometry | None, x: float, y: float, **kwargs) -> np.bool_: ... +def contains_xy(geom: Geometry | None, x: float, y: float, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def contains_xy(geom: OptGeoArrayLike, x: ArrayLikeSeq[float], y: None = None, **kwargs) -> NDArray[np.bool_]: ... +def contains_xy( + geom: OptGeoArrayLike, x: ArrayLikeSeq[float], y: None = None, **kwargs: Unpack[UFuncKwargs] +) -> NDArray[np.bool_]: ... @overload -def contains_xy(geom: Geometry | None, x: ArrayLike[float], y: ArrayLikeSeq[float], **kwargs) -> NDArray[np.bool_]: ... +def contains_xy( + geom: Geometry | None, x: ArrayLike[float], y: ArrayLikeSeq[float], **kwargs: Unpack[UFuncKwargs] +) -> NDArray[np.bool_]: ... @overload -def contains_xy(geom: Geometry | None, x: ArrayLikeSeq[float], y: ArrayLike[float], **kwargs) -> NDArray[np.bool_]: ... +def contains_xy( + geom: Geometry | None, x: ArrayLikeSeq[float], y: ArrayLike[float], **kwargs: Unpack[UFuncKwargs] +) -> NDArray[np.bool_]: ... @overload -def contains_xy(geom: OptGeoArrayLikeSeq, x: ArrayLike[float], y: ArrayLike[float], **kwargs) -> NDArray[np.bool_]: ... +def contains_xy( + geom: OptGeoArrayLikeSeq, x: ArrayLike[float], y: ArrayLike[float], **kwargs: Unpack[UFuncKwargs] +) -> NDArray[np.bool_]: ... @overload -def intersects_xy(geom: Geometry | None, x: float, y: float, **kwargs) -> np.bool_: ... +def intersects_xy(geom: Geometry | None, x: float, y: float, **kwargs: Unpack[UFuncKwargs]) -> np.bool_: ... @overload -def intersects_xy(geom: OptGeoArrayLike, x: ArrayLikeSeq[float], y: None = None, **kwargs) -> NDArray[np.bool_]: ... +def intersects_xy( + geom: OptGeoArrayLike, x: ArrayLikeSeq[float], y: None = None, **kwargs: Unpack[UFuncKwargs] +) -> NDArray[np.bool_]: ... @overload -def intersects_xy(geom: Geometry | None, x: ArrayLike[float], y: ArrayLikeSeq[float], **kwargs) -> NDArray[np.bool_]: ... +def intersects_xy( + geom: Geometry | None, x: ArrayLike[float], y: ArrayLikeSeq[float], **kwargs: Unpack[UFuncKwargs] +) -> NDArray[np.bool_]: ... @overload -def intersects_xy(geom: Geometry | None, x: ArrayLikeSeq[float], y: ArrayLike[float], **kwargs) -> NDArray[np.bool_]: ... +def intersects_xy( + geom: Geometry | None, x: ArrayLikeSeq[float], y: ArrayLike[float], **kwargs: Unpack[UFuncKwargs] +) -> NDArray[np.bool_]: ... @overload -def intersects_xy(geom: OptGeoArrayLikeSeq, x: ArrayLike[float], y: ArrayLike[float], **kwargs) -> NDArray[np.bool_]: ... +def intersects_xy( + geom: OptGeoArrayLikeSeq, x: ArrayLike[float], y: ArrayLike[float], **kwargs: Unpack[UFuncKwargs] +) -> NDArray[np.bool_]: ... diff --git a/stubs/shapely/shapely/set_operations.pyi b/stubs/shapely/shapely/set_operations.pyi index 7328583d2ad1..f1972a624d7f 100644 --- a/stubs/shapely/shapely/set_operations.pyi +++ b/stubs/shapely/shapely/set_operations.pyi @@ -1,7 +1,7 @@ from typing import overload -from typing_extensions import deprecated +from typing_extensions import Unpack, deprecated -from ._typing import GeoArray, OptGeoArrayLike, OptGeoArrayLikeSeq +from ._typing import GeoArray, OptGeoArrayLike, OptGeoArrayLikeSeq, UFuncKwargs from .geometry.base import BaseGeometry from .lib import Geometry @@ -21,85 +21,117 @@ __all__ = [ ] @overload -def difference(a: Geometry, b: Geometry, grid_size: float | None = None, **kwargs) -> BaseGeometry: ... +def difference(a: Geometry, b: Geometry, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry: ... @overload -def difference(a: None, b: Geometry | None, grid_size: float | None = None, **kwargs) -> None: ... +def difference(a: None, b: Geometry | None, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def difference(a: Geometry | None, b: None, grid_size: float | None = None, **kwargs) -> None: ... +def difference(a: Geometry | None, b: None, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def difference(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, grid_size: float | None = None, **kwargs) -> GeoArray: ... +def difference( + a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def difference(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, grid_size: float | None = None, **kwargs) -> GeoArray: ... +def difference( + a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def intersection(a: Geometry, b: Geometry, grid_size: float | None = None, **kwargs) -> BaseGeometry: ... +def intersection(a: Geometry, b: Geometry, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry: ... @overload -def intersection(a: None, b: Geometry | None, grid_size: float | None = None, **kwargs) -> None: ... +def intersection(a: None, b: Geometry | None, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def intersection(a: Geometry | None, b: None, grid_size: float | None = None, **kwargs) -> None: ... +def intersection(a: Geometry | None, b: None, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def intersection(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, grid_size: float | None = None, **kwargs) -> GeoArray: ... +def intersection( + a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def intersection(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, grid_size: float | None = None, **kwargs) -> GeoArray: ... +def intersection( + a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def intersection_all(geometries: OptGeoArrayLike, axis: None = None, **kwargs) -> BaseGeometry: ... +def intersection_all(geometries: OptGeoArrayLike, axis: None = None, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry: ... @overload -def intersection_all(geometries: OptGeoArrayLikeSeq, axis: int, **kwargs) -> BaseGeometry | GeoArray: ... +def intersection_all(geometries: OptGeoArrayLikeSeq, axis: int, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry | GeoArray: ... @overload -def symmetric_difference(a: Geometry, b: Geometry, grid_size: float | None = None, **kwargs) -> BaseGeometry: ... +def symmetric_difference( + a: Geometry, b: Geometry, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry: ... @overload -def symmetric_difference(a: None, b: Geometry | None, grid_size: float | None = None, **kwargs) -> None: ... +def symmetric_difference(a: None, b: Geometry | None, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def symmetric_difference(a: Geometry | None, b: None, grid_size: float | None = None, **kwargs) -> None: ... +def symmetric_difference(a: Geometry | None, b: None, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def symmetric_difference(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, grid_size: float | None = None, **kwargs) -> GeoArray: ... +def symmetric_difference( + a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def symmetric_difference(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, grid_size: float | None = None, **kwargs) -> GeoArray: ... +def symmetric_difference( + a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload @deprecated("symmetric_difference_all behaves incorrectly and will be removed in a future version.") -def symmetric_difference_all(geometries: OptGeoArrayLike, axis: None = None, **kwargs) -> BaseGeometry: ... +def symmetric_difference_all(geometries: OptGeoArrayLike, axis: None = None, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry: ... @overload @deprecated("symmetric_difference_all behaves incorrectly and will be removed in a future version.") -def symmetric_difference_all(geometries: OptGeoArrayLikeSeq, axis: int, **kwargs) -> BaseGeometry | GeoArray: ... +def symmetric_difference_all( + geometries: OptGeoArrayLikeSeq, axis: int, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry | GeoArray: ... @overload -def union(a: Geometry, b: Geometry, grid_size: float | None = None, **kwargs) -> BaseGeometry: ... +def union(a: Geometry, b: Geometry, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry: ... @overload -def union(a: None, b: Geometry | None, grid_size: float | None = None, **kwargs) -> None: ... +def union(a: None, b: Geometry | None, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def union(a: Geometry | None, b: None, grid_size: float | None = None, **kwargs) -> None: ... +def union(a: Geometry | None, b: None, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs]) -> None: ... @overload -def union(a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, grid_size: float | None = None, **kwargs) -> GeoArray: ... +def union( + a: OptGeoArrayLikeSeq, b: OptGeoArrayLike, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def union(a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, grid_size: float | None = None, **kwargs) -> GeoArray: ... +def union( + a: OptGeoArrayLike, b: OptGeoArrayLikeSeq, grid_size: float | None = None, **kwargs: Unpack[UFuncKwargs] +) -> GeoArray: ... @overload -def union_all(geometries: OptGeoArrayLike, grid_size: float | None = None, axis: None = None, **kwargs) -> BaseGeometry: ... +def union_all( + geometries: OptGeoArrayLike, grid_size: float | None = None, axis: None = None, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry: ... @overload def union_all( - geometries: OptGeoArrayLikeSeq, grid_size: float | None = None, *, axis: int, **kwargs + geometries: OptGeoArrayLikeSeq, grid_size: float | None = None, *, axis: int, **kwargs: Unpack[UFuncKwargs] ) -> BaseGeometry | GeoArray: ... @overload -def union_all(geometries: OptGeoArrayLikeSeq, grid_size: float | None, axis: int, **kwargs) -> BaseGeometry | GeoArray: ... +def union_all( + geometries: OptGeoArrayLikeSeq, grid_size: float | None, axis: int, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry | GeoArray: ... unary_union = union_all @overload -def coverage_union(a: OptGeoArrayLike, b: OptGeoArrayLike, *, axis: None = None, **kwargs) -> BaseGeometry: ... +def coverage_union( + a: OptGeoArrayLike, b: OptGeoArrayLike, *, axis: None = None, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry: ... @overload -def coverage_union(a: OptGeoArrayLike, b: OptGeoArrayLike, *, axis: int, **kwargs) -> BaseGeometry | GeoArray: ... +def coverage_union( + a: OptGeoArrayLike, b: OptGeoArrayLike, *, axis: int, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry | GeoArray: ... @overload -def coverage_union_all(geometries: OptGeoArrayLike, axis: None = None, **kwargs) -> BaseGeometry: ... +def coverage_union_all(geometries: OptGeoArrayLike, axis: None = None, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry: ... @overload -def coverage_union_all(geometries: OptGeoArrayLikeSeq, axis: int, **kwargs) -> BaseGeometry | GeoArray: ... +def coverage_union_all(geometries: OptGeoArrayLikeSeq, axis: int, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry | GeoArray: ... -def disjoint_subset_union(a: OptGeoArrayLike, b: OptGeoArrayLike, **kwargs) -> BaseGeometry | GeoArray: ... +def disjoint_subset_union(a: OptGeoArrayLike, b: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> BaseGeometry | GeoArray: ... @overload -def disjoint_subset_union_all(geometries: OptGeoArrayLike, *, axis: None = None, **kwargs) -> BaseGeometry: ... +def disjoint_subset_union_all( + geometries: OptGeoArrayLike, *, axis: None = None, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry: ... @overload -def disjoint_subset_union_all(geometries: OptGeoArrayLikeSeq, *, axis: int, **kwargs) -> BaseGeometry | GeoArray: ... +def disjoint_subset_union_all( + geometries: OptGeoArrayLikeSeq, *, axis: int, **kwargs: Unpack[UFuncKwargs] +) -> BaseGeometry | GeoArray: ...