Skip to content

Commit f7fa13e

Browse files
authored
[shapely] Narrower types for geom_type in BaseGeometry subclasses (#15955)
1 parent 1658f9e commit f7fa13e

7 files changed

Lines changed: 22 additions & 3 deletions

File tree

stubs/shapely/shapely/geometry/collection.pyi

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from collections.abc import Collection
2-
from typing import overload
2+
from typing import Literal, overload
33
from typing_extensions import Self
44

55
from .._typing import OptGeoArrayLike
@@ -18,4 +18,6 @@ class GeometryCollection(BaseMultipartGeometry[_GeoT_co]):
1818

1919
# more precise base overrides
2020
@property
21+
def geom_type(self) -> Literal["GeometryCollection"]: ...
22+
@property
2123
def boundary(self) -> None: ...

stubs/shapely/shapely/geometry/linestring.pyi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ class LineString(BaseGeometry):
3535
) -> LineString | MultiLineString: ...
3636
# more precise base overrides
3737
@property
38+
def geom_type(self) -> Literal["LineString", "LinearRing"]: ... # LinearRing is a subclass of LineString
39+
@property
3840
def boundary(self) -> MultiPoint: ...
3941
@property
4042
def convex_hull(self) -> LineString: ...

stubs/shapely/shapely/geometry/multilinestring.pyi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from collections.abc import Collection
2+
from typing import Literal
23
from typing_extensions import Self
34

45
from .base import BaseMultipartGeometry
@@ -13,4 +14,6 @@ class MultiLineString(BaseMultipartGeometry[LineString]):
1314
def svg(self, scale_factor: float = 1.0, stroke_color: str | None = None, opacity: float | None = None) -> str: ... # type: ignore[override]
1415
# more precise base overrides
1516
@property
17+
def geom_type(self) -> Literal["MultiLineString"]: ...
18+
@property
1619
def boundary(self) -> MultiPoint: ...

stubs/shapely/shapely/geometry/multipoint.pyi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from collections.abc import Collection
2+
from typing import Literal
23
from typing_extensions import Self
34

45
from .base import BaseMultipartGeometry
@@ -18,4 +19,6 @@ class MultiPoint(BaseMultipartGeometry[Point]):
1819
def svg(self, scale_factor: float = 1.0, fill_color: str | None = None, opacity: float | None = None) -> str: ... # type: ignore[override]
1920
# more precise base overrides
2021
@property
22+
def geom_type(self) -> Literal["MultiPoint"]: ...
23+
@property
2124
def boundary(self) -> GeometryCollection: ... # empty geometry collection

stubs/shapely/shapely/geometry/multipolygon.pyi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from collections.abc import Collection
2+
from typing import Literal
23
from typing_extensions import Self
34

45
from .base import BaseMultipartGeometry
@@ -20,4 +21,6 @@ class MultiPolygon(BaseMultipartGeometry[Polygon]):
2021
def svg(self, scale_factor: float = 1.0, fill_color: str | None = None, opacity: float | None = None) -> str: ... # type: ignore[override]
2122
# more precise base overrides
2223
@property
24+
def geom_type(self) -> Literal["MultiPolygon"]: ...
25+
@property
2326
def boundary(self) -> MultiLineString: ...

stubs/shapely/shapely/geometry/point.pyi

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from collections.abc import Iterable
2-
from typing import TypeAlias, overload
2+
from typing import Literal, TypeAlias, overload
33
from typing_extensions import Self
44

55
from .._typing import ArrayLikeSeq
@@ -33,6 +33,8 @@ class Point(BaseGeometry):
3333
def svg(self, scale_factor: float = 1.0, fill_color: str | None = None, opacity: float | None = None) -> str: ... # type: ignore[override]
3434
# more precise base overrides
3535
@property
36+
def geom_type(self) -> Literal["Point"]: ...
37+
@property
3638
def boundary(self) -> GeometryCollection: ... # empty geometry collection
3739
@property
3840
def convex_hull(self) -> Point: ...

stubs/shapely/shapely/geometry/polygon.pyi

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from collections.abc import Collection
2-
from typing import NoReturn, TypeAlias, overload
2+
from typing import Literal, NoReturn, TypeAlias, overload
33
from typing_extensions import Self
44

55
from .base import BaseGeometry
@@ -17,6 +17,8 @@ class LinearRing(LineString):
1717
def __new__(self, coordinates: _ConvertibleToLinearRing | None = None) -> Self: ...
1818
@property
1919
def is_ccw(self) -> bool: ...
20+
@property
21+
def geom_type(self) -> Literal["LinearRing"]: ...
2022

2123
class InteriorRingSequence:
2224
def __init__(self, parent: Polygon) -> None: ...
@@ -43,6 +45,8 @@ class Polygon(BaseGeometry):
4345
def from_bounds(cls, xmin: float, ymin: float, xmax: float, ymax: float) -> Self: ...
4446
# more precise base overrides
4547
@property
48+
def geom_type(self) -> Literal["Polygon"]: ...
49+
@property
4650
def boundary(self) -> MultiLineString: ...
4751

4852
def orient(polygon: Polygon, sign: float = 1.0) -> Polygon: ...

0 commit comments

Comments
 (0)