86 lines
1.7 KiB
Python
86 lines
1.7 KiB
Python
|
from typing import (
|
||
|
Literal as L,
|
||
|
Any,
|
||
|
overload,
|
||
|
TypeVar,
|
||
|
Protocol,
|
||
|
)
|
||
|
|
||
|
from numpy import generic
|
||
|
|
||
|
from numpy._typing import (
|
||
|
ArrayLike,
|
||
|
NDArray,
|
||
|
_ArrayLikeInt,
|
||
|
_ArrayLike,
|
||
|
)
|
||
|
|
||
|
_SCT = TypeVar("_SCT", bound=generic)
|
||
|
|
||
|
class _ModeFunc(Protocol):
|
||
|
def __call__(
|
||
|
self,
|
||
|
vector: NDArray[Any],
|
||
|
iaxis_pad_width: tuple[int, int],
|
||
|
iaxis: int,
|
||
|
kwargs: dict[str, Any],
|
||
|
/,
|
||
|
) -> None: ...
|
||
|
|
||
|
_ModeKind = L[
|
||
|
"constant",
|
||
|
"edge",
|
||
|
"linear_ramp",
|
||
|
"maximum",
|
||
|
"mean",
|
||
|
"median",
|
||
|
"minimum",
|
||
|
"reflect",
|
||
|
"symmetric",
|
||
|
"wrap",
|
||
|
"empty",
|
||
|
]
|
||
|
|
||
|
__all__: list[str]
|
||
|
|
||
|
# TODO: In practice each keyword argument is exclusive to one or more
|
||
|
# specific modes. Consider adding more overloads to express this in the future.
|
||
|
|
||
|
# Expand `**kwargs` into explicit keyword-only arguments
|
||
|
@overload
|
||
|
def pad(
|
||
|
array: _ArrayLike[_SCT],
|
||
|
pad_width: _ArrayLikeInt,
|
||
|
mode: _ModeKind = ...,
|
||
|
*,
|
||
|
stat_length: None | _ArrayLikeInt = ...,
|
||
|
constant_values: ArrayLike = ...,
|
||
|
end_values: ArrayLike = ...,
|
||
|
reflect_type: L["odd", "even"] = ...,
|
||
|
) -> NDArray[_SCT]: ...
|
||
|
@overload
|
||
|
def pad(
|
||
|
array: ArrayLike,
|
||
|
pad_width: _ArrayLikeInt,
|
||
|
mode: _ModeKind = ...,
|
||
|
*,
|
||
|
stat_length: None | _ArrayLikeInt = ...,
|
||
|
constant_values: ArrayLike = ...,
|
||
|
end_values: ArrayLike = ...,
|
||
|
reflect_type: L["odd", "even"] = ...,
|
||
|
) -> NDArray[Any]: ...
|
||
|
@overload
|
||
|
def pad(
|
||
|
array: _ArrayLike[_SCT],
|
||
|
pad_width: _ArrayLikeInt,
|
||
|
mode: _ModeFunc,
|
||
|
**kwargs: Any,
|
||
|
) -> NDArray[_SCT]: ...
|
||
|
@overload
|
||
|
def pad(
|
||
|
array: ArrayLike,
|
||
|
pad_width: _ArrayLikeInt,
|
||
|
mode: _ModeFunc,
|
||
|
**kwargs: Any,
|
||
|
) -> NDArray[Any]: ...
|