12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 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]: ...
|