Skip to content

Commit 2b06f9d

Browse files
authored
[rasterio] Fix rowcol operation return type (#16352)
1 parent 3aaba0c commit 2b06f9d

1 file changed

Lines changed: 11 additions & 9 deletions

File tree

‎stubs/rasterio/rasterio/transform.pyi‎

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
from _typeshed import ConvertibleToInt
12
from collections.abc import Callable, Sequence
23
from typing import Final, Literal, TypeAlias, overload
3-
from typing_extensions import Self, deprecated
4+
from typing_extensions import Self, TypeVar, deprecated
45

56
from affine import Affine as Affine
67
from rasterio._transform import GCPTransformerBase, RPCTransformerBase
@@ -12,7 +13,8 @@ from rasterio.rpc import RPC
1213

1314
_Sextuple: TypeAlias = tuple[float, float, float, float, float, float]
1415
_OffsetOptions: TypeAlias = Literal["center", "ul", "ur", "ll", "lr"]
15-
_RoundOperation: TypeAlias = Callable[[float], int]
16+
_T = TypeVar("_T", default=int)
17+
_RoundOperation: TypeAlias = Callable[[float], _T]
1618

1719
IDENTITY: Final[Affine]
1820
GDAL_IDENTITY: Final[_Sextuple]
@@ -32,7 +34,7 @@ class TransformMethodsMixin:
3234
x: float | Sequence[float],
3335
y: float | Sequence[float],
3436
z: float | Sequence[float] | None = None,
35-
op: _RoundOperation | None = None,
37+
op: _RoundOperation[ConvertibleToInt] | None = None,
3638
precision: int | None = None,
3739
transform_method: TransformMethod = ...,
3840
**rpc_options: _GDALOption,
@@ -57,10 +59,10 @@ def rowcol(
5759
xs: float | Sequence[float],
5860
ys: float | Sequence[float],
5961
zs: float | Sequence[float] | None = None,
60-
op: _RoundOperation | None = None,
62+
op: _RoundOperation[_T] | None = None,
6163
precision: int | None = None,
6264
**rpc_options: _GDALOption,
63-
) -> tuple[int, int] | tuple[list[int], list[int]]: ...
65+
) -> tuple[_T, _T] | tuple[list[_T], list[_T]]: ...
6466
def get_transformer(
6567
transform: Affine | Sequence[GroundControlPoint] | RPC, **rpc_options: _GDALOption
6668
) -> type[TransformerBase]: ...
@@ -83,18 +85,18 @@ class TransformerBase:
8385
xs: float | Sequence[float],
8486
ys: float | Sequence[float],
8587
zs: float | Sequence[float] | None = None,
86-
op: _RoundOperation | None = None,
87-
) -> tuple[int, int] | tuple[list[int], list[int]]: ...
88+
op: _RoundOperation[_T] | None = None,
89+
) -> tuple[_T, _T] | tuple[list[_T], list[_T]]: ...
8890
@overload
8991
@deprecated("The `precision` parameter is unused since rasterio 1.3 and will be removed in 2.0.0.")
9092
def rowcol(
9193
self,
9294
xs: float | Sequence[float],
9395
ys: float | Sequence[float],
9496
zs: float | Sequence[float] | None = None,
95-
op: _RoundOperation | None = None,
97+
op: _RoundOperation[_T] | None = None,
9698
precision: int | None = None,
97-
) -> tuple[int, int] | tuple[list[int], list[int]]: ...
99+
) -> tuple[_T, _T] | tuple[list[_T], list[_T]]: ...
98100

99101
class GDALTransformerBase(TransformerBase):
100102
def __init__(self) -> None: ...

0 commit comments

Comments
 (0)