1+ from _typeshed import ConvertibleToInt
12from collections .abc import Callable , Sequence
23from typing import Final , Literal , TypeAlias , overload
3- from typing_extensions import Self , deprecated
4+ from typing_extensions import Self , TypeVar , deprecated
45
56from affine import Affine as Affine
67from 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
1719IDENTITY : Final [Affine ]
1820GDAL_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 ]]: ...
6466def 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
99101class GDALTransformerBase (TransformerBase ):
100102 def __init__ (self ) -> None : ...
0 commit comments