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" )
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 ,
@@ -52,15 +54,39 @@ def xy(
5254 offset : _OffsetOptions = "center" ,
5355 ** rpc_options : _GDALOption ,
5456) -> tuple [float , float ] | tuple [list [float ], list [float ]]: ...
57+
58+ @overload
5559def rowcol (
5660 transform : Affine | Sequence [GroundControlPoint ] | RPC ,
5761 xs : float | Sequence [float ],
5862 ys : float | Sequence [float ],
5963 zs : float | Sequence [float ] | None = None ,
60- op : _RoundOperation | None = None ,
64+ op : None = None ,
6165 precision : int | None = None ,
6266 ** rpc_options : _GDALOption ,
6367) -> tuple [int , int ] | tuple [list [int ], list [int ]]: ...
68+ @overload
69+ def rowcol (
70+ transform : Affine | Sequence [GroundControlPoint ] | RPC ,
71+ xs : float | Sequence [float ],
72+ ys : float | Sequence [float ],
73+ zs : float | Sequence [float ] | None ,
74+ op : _RoundOperation [_T ],
75+ precision : int | None = None ,
76+ ** rpc_options : _GDALOption ,
77+ ) -> tuple [_T , _T ] | tuple [list [_T ], list [_T ]]: ...
78+ @overload
79+ def rowcol (
80+ transform : Affine | Sequence [GroundControlPoint ] | RPC ,
81+ xs : float | Sequence [float ],
82+ ys : float | Sequence [float ],
83+ zs : float | Sequence [float ] | None = None ,
84+ * ,
85+ op : _RoundOperation [_T ],
86+ precision : int | None = None ,
87+ ** rpc_options : _GDALOption ,
88+ ) -> tuple [_T , _T ] | tuple [list [_T ], list [_T ]]: ...
89+
6490def get_transformer (
6591 transform : Affine | Sequence [GroundControlPoint ] | RPC , ** rpc_options : _GDALOption
6692) -> type [TransformerBase ]: ...
@@ -77,24 +103,58 @@ class TransformerBase:
77103 offset : _OffsetOptions = "center" ,
78104 ) -> tuple [float , float ] | tuple [list [float ], list [float ]]: ...
79105
106+ @overload
107+ def rowcol (
108+ self , xs : float | Sequence [float ], ys : float | Sequence [float ], zs : float | Sequence [float ] | None = None , op : None = None
109+ ) -> tuple [int , int ] | tuple [list [int ], list [int ]]: ...
110+ @overload
111+ def rowcol (
112+ self ,
113+ xs : float | Sequence [float ],
114+ ys : float | Sequence [float ],
115+ zs : float | Sequence [float ] | None ,
116+ op : _RoundOperation [_T ],
117+ ) -> tuple [_T , _T ] | tuple [list [_T ], list [_T ]]: ...
80118 @overload
81119 def rowcol (
82120 self ,
83121 xs : float | Sequence [float ],
84122 ys : float | Sequence [float ],
85123 zs : float | Sequence [float ] | None = None ,
86- op : _RoundOperation | None = None ,
87- ) -> tuple [int , int ] | tuple [list [int ], list [int ]]: ...
124+ * ,
125+ op : _RoundOperation [_T ],
126+ ) -> tuple [_T , _T ] | tuple [list [_T ], list [_T ]]: ...
88127 @overload
89128 @deprecated ("The `precision` parameter is unused since rasterio 1.3 and will be removed in 2.0.0." )
90129 def rowcol (
91130 self ,
92131 xs : float | Sequence [float ],
93132 ys : float | Sequence [float ],
94133 zs : float | Sequence [float ] | None = None ,
95- op : _RoundOperation | None = None ,
134+ op : None = None ,
96135 precision : int | None = None ,
97136 ) -> tuple [int , int ] | tuple [list [int ], list [int ]]: ...
137+ @overload
138+ @deprecated ("The `precision` parameter is unused since rasterio 1.3 and will be removed in 2.0.0." )
139+ def rowcol (
140+ self ,
141+ xs : float | Sequence [float ],
142+ ys : float | Sequence [float ],
143+ zs : float | Sequence [float ] | None ,
144+ op : _RoundOperation [_T ],
145+ precision : int | None = None ,
146+ ) -> tuple [_T , _T ] | tuple [list [_T ], list [_T ]]: ...
147+ @overload
148+ @deprecated ("The `precision` parameter is unused since rasterio 1.3 and will be removed in 2.0.0." )
149+ def rowcol (
150+ self ,
151+ xs : float | Sequence [float ],
152+ ys : float | Sequence [float ],
153+ zs : float | Sequence [float ] | None = None ,
154+ * ,
155+ op : _RoundOperation [_T ],
156+ precision : int | None = None ,
157+ ) -> tuple [_T , _T ] | tuple [list [_T ], list [_T ]]: ...
98158
99159class GDALTransformerBase (TransformerBase ):
100160 def __init__ (self ) -> None : ...
0 commit comments