diff --git a/stubs/shapely/METADATA.toml b/stubs/shapely/METADATA.toml index 326a70f2733c..1a322ea8ac0b 100644 --- a/stubs/shapely/METADATA.toml +++ b/stubs/shapely/METADATA.toml @@ -1,4 +1,4 @@ -version = "2.1.*" +version = "2.2.*" upstream-repository = "https://github.com/shapely/shapely" # Requires a version of numpy with a `py.typed` file dependencies = ["numpy>=1.20"] diff --git a/stubs/shapely/shapely/_geometry.pyi b/stubs/shapely/shapely/_geometry.pyi index 7e9b64f1a71d..0c338a980d63 100644 --- a/stubs/shapely/shapely/_geometry.pyi +++ b/stubs/shapely/shapely/_geometry.pyi @@ -28,6 +28,7 @@ __all__ = [ "get_point", "get_precision", "get_rings", + "get_segments", "get_srid", "get_type_id", "get_x", @@ -184,6 +185,19 @@ def get_precision(geometry: Geometry | None, **kwargs) -> np.float64: ... @overload def get_precision(geometry: OptGeoArrayLikeSeq, **kwargs) -> NDArray[np.float64]: ... +@overload +def get_segments( + geometry: OptGeoArrayLike, *, include_z: bool = False, return_index: Literal[False] = False, **kwargs +) -> GeoArray: ... +@overload +def get_segments( + geometry: OptGeoArrayLike, *, include_z: bool = False, return_index: Literal[True], **kwargs +) -> tuple[GeoArray, NDArray[np.int64]]: ... +@overload +def get_segments( + geometry: OptGeoArrayLike, *, include_z: bool = False, return_index: bool, **kwargs +) -> GeoArray | tuple[GeoArray, NDArray[np.int64]]: ... + class SetPrecisionMode(ParamEnum): valid_output = 0 pointwise = 1 diff --git a/stubs/shapely/shapely/constructive.pyi b/stubs/shapely/shapely/constructive.pyi index e3d21dedb46d..05fa83845534 100644 --- a/stubs/shapely/shapely/constructive.pyi +++ b/stubs/shapely/shapely/constructive.pyi @@ -27,6 +27,7 @@ __all__ = [ "minimum_bounding_circle", "minimum_clearance_line", "minimum_rotated_rectangle", + "minimum_width", "node", "normalize", "offset_curve", @@ -40,6 +41,7 @@ __all__ = [ "segmentize", "simplify", "snap", + "split", "voronoi_polygons", ] @@ -452,6 +454,13 @@ def snap( geometry: OptGeoArrayLike, reference: OptGeoArrayLike, tolerance: ArrayLikeSeq[float], **kwargs: Unpack[UFuncKwargs] ) -> GeoArray: ... +@overload +def split(geometry: OptGeoArrayLikeSeq, splitter: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> GeometryCollection: ... +@overload +def split(geometry: OptGeoArrayLike, splitter: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeometryCollection: ... +@overload +def split(geometry: OptGeoArrayLike, splitter: OptGeoArrayLike, **kwargs: Unpack[UFuncKwargs]) -> GeometryCollection: ... + @overload def voronoi_polygons( geometry: Geometry, @@ -609,6 +618,19 @@ def minimum_bounding_circle(geometry: Geometry | None, **kwargs: Unpack[UFuncKwa @overload def minimum_bounding_circle(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> GeoArray: ... +@overload +def minimum_width(geometry: Point, **kwargs: Unpack[UFuncKwargs]) -> LineString: ... +@overload +def minimum_width(geometry: LineString | Polygon | BaseMultipartGeometry, **kwargs: Unpack[UFuncKwargs]) -> LineString: ... +@overload +def minimum_width(geometry: Geometry, **kwargs: Unpack[UFuncKwargs]) -> LineString: ... +@overload +def minimum_width(geometry: None, **kwargs: Unpack[UFuncKwargs]) -> None: ... +@overload +def minimum_width(geometry: Geometry | None, **kwargs: Unpack[UFuncKwargs]) -> LineString | None: ... +@overload +def minimum_width(geometry: OptGeoArrayLikeSeq, **kwargs: Unpack[UFuncKwargs]) -> LineString: ... + @overload def maximum_inscribed_circle( geometry: Polygon | MultiPolygon, tolerance: float | None = None, **kwargs: Unpack[UFuncKwargs] diff --git a/stubs/shapely/shapely/coordinates.pyi b/stubs/shapely/shapely/coordinates.pyi index fd3d1284c10f..5f4861a5de39 100644 --- a/stubs/shapely/shapely/coordinates.pyi +++ b/stubs/shapely/shapely/coordinates.pyi @@ -6,7 +6,7 @@ from numpy.typing import NDArray from ._typing import ArrayLikeSeq, GeoArray, GeoT, OptGeoArrayLike, OptGeoArrayLikeSeq, OptGeoT -__all__ = ["transform", "count_coordinates", "get_coordinates", "set_coordinates"] +__all__ = ["transform", "count_coordinates", "get_coordinates", "set_coordinates", "transform_coordseq"] @overload def transform( @@ -25,6 +25,23 @@ def transform( interleaved: bool = True, ) -> GeoArray: ... +@overload +def transform_coordseq( + geometry: OptGeoT, + transformation: Callable[[NDArray[np.float64]], NDArray[np.float64]], + *, + include_z: bool | None = False, + interleaved: bool = True, +) -> OptGeoT: ... +@overload +def transform_coordseq( + geometry: OptGeoArrayLikeSeq, + transformation: Callable[[NDArray[np.float64]], NDArray[np.float64]], + include_z: bool | None = False, + *, + interleaved: bool = True, +) -> GeoArray: ... + def count_coordinates(geometry: OptGeoArrayLike) -> int: ... @overload diff --git a/stubs/shapely/shapely/lib.pyi b/stubs/shapely/shapely/lib.pyi index ea224928eab6..fc335262ab99 100644 --- a/stubs/shapely/shapely/lib.pyi +++ b/stubs/shapely/shapely/lib.pyi @@ -180,3 +180,43 @@ def get_coordinates( ) -> NDArray[np.float64] | tuple[NDArray[np.float64], NDArray[np.int64]]: ... def set_coordinates(geoms: NDArray[np.object_], coords: NDArray[np.float64], /) -> NDArray[np.object_]: ... +def contains_scalar(a: Geometry | None, b: Geometry | None, /) -> bool: ... +def covered_by_scalar(a: Geometry | None, b: Geometry | None, /) -> bool: ... +def covers_scalar(a: Geometry | None, b: Geometry | None, /) -> bool: ... +def crosses_scalar(a: Geometry | None, b: Geometry | None, /) -> bool: ... +def disjoint_scalar(a: Geometry | None, b: Geometry | None, /) -> bool: ... +def equals_scalar(a: Geometry | None, b: Geometry | None, /) -> bool: ... +def get_coordinate_dimension_scalar(a: Geometry | None, /) -> int: ... +def get_dimensions_scalar(a: Geometry | None, /) -> int: ... +def get_exterior_ring_scalar(a: Geometry | None, /) -> Geometry | None: ... +def get_geometry_scalar(a: Geometry | None, index: int, /) -> Geometry | None: ... +def get_interior_ring_scalar(a: Geometry | None, index: int, /) -> Geometry | None: ... +def get_m_scalar(a: Geometry | None, /) -> float: ... +def get_num_coordinates_scalar(a: Geometry | None, /) -> int: ... +def get_num_geometries_scalar(a: Geometry | None, /) -> int: ... +def get_num_interior_rings_scalar(a: Geometry | None, /) -> int: ... +def get_num_points_scalar(a: Geometry | None, /) -> int: ... +def get_point_scalar(a: Geometry | None, index: int, /) -> Geometry | None: ... +def get_precision_scalar(a: Geometry | None, /) -> float: ... +def get_srid_scalar(a: Geometry | None, /) -> int: ... +def get_type_id_scalar(a: Geometry | None, /) -> int: ... +def get_x_scalar(a: Geometry | None, /) -> float: ... +def get_y_scalar(a: Geometry | None, /) -> float: ... +def get_z_scalar(a: Geometry | None, /) -> float: ... +def intersects_scalar(a: Geometry | None, b: Geometry | None, /) -> bool: ... +def is_ccw_scalar(a: Geometry | None, /) -> bool: ... +def is_closed_scalar(a: Geometry | None, /) -> bool: ... +def is_empty_scalar(a: Geometry | None, /) -> bool: ... +def is_geometry_scalar(a: object, /) -> bool: ... +def is_missing_scalar(a: object, /) -> bool: ... +def is_prepared_scalar(a: object, /) -> bool: ... +def is_ring_scalar(a: Geometry | None, /) -> bool: ... +def is_simple_scalar(a: Geometry | None, /) -> bool: ... +def is_valid_input_scalar(obj: object, /) -> bool: ... +def is_valid_reason_scalar(a: Geometry | None, /) -> str | None: ... +def is_valid_scalar(a: Geometry | None, /) -> bool: ... +def overlaps_scalar(a: Geometry | None, b: Geometry | None, /) -> bool: ... +def touches_scalar(a: Geometry | None, b: Geometry | None, /) -> bool: ... +def union_prec_scalar(a: Geometry | None, b: Geometry | None, grid_size: float, /) -> Geometry | None: ... +def union_scalar(a: Geometry | None, b: Geometry | None, /) -> Geometry | None: ... +def within_scalar(a: Geometry | None, b: Geometry | None, /) -> bool: ...