Repository: numpy/numpy
File: numpy/ma/core.pyi (Python)

Code before:
        *,
        keepdims: bool | _NoValueType = ...,
    ) -> Any: ...
    @overload
    def argmin(  # type: ignore[override]
        self,
        axis: _ShapeLike | None = None,
        fill_value: _ScalarLike_co | None = None,
        *,
        out: _ArrayType,
        keepdims: bool | _NoValueType = ...,
    ) -> _ArrayType: ...
    @overload
    def argmin(  # type: ignore[override]
        self,
        axis: _ScalarLike_co | None,
        fill_value: _ScalarLike_co | None,
        out: _ArrayType,
        *,
        keepdims: bool | _NoValueType = ...,
    ) -> _ArrayType: ...
    @overload
    def argmax(  # type: ignore[override]
        self,
        axis: None = None,
        fill_value: _ScalarLike_co | None = None,
        out: None = None,
        *,
        keepdims: Literal[False] | _NoValueType = ...,
    ) -> intp: ...
    @overload
    def argmax(  # type: ignore[override]
        self,
        axis: _ShapeLike | None = None,
        fill_value: _ScalarLike_co | None = None,
        out: None = None,
        *,
        keepdims: bool | _NoValueType = ...,
    ) -> Any: ...
    @overload
    def argmax(  # type: ignore[override]
        self,
        axis: _ShapeLike | None = None,
        fill_value: _ScalarLike_co | None = None,
        *,
        out: _ArrayType,
        keepdims: bool | _NoValueType = ...,
    ) -> _ArrayType: ...
    @overload
    def argmax(  # type: ignore[override]
        self,

Review comment (suggestion):
To pick a nit: It can be difficult to visually distinguish between these separate overloaded methods. Adding a cheeky little `#` between them could help with that. 
See https://github.com/numpy/numtype/blob/c9cbab555d0c9d80c5a794093fb78ad5d4275754/src/numpy-stubs/_core/numeric.pyi#L2087 for an example of this.

You could, for example, also "fill in" the comment with something like "keep in sync with `argmin`" or something.

But as far as I'm concerned it's also fine to leave it like this.

Code after:
        fill_value: _ScalarLike_co | None = None,
        out: None = None,
        *,
        keepdims: bool | _NoValueType = ...,
    ) -> Any: ...
    @overload
    def argmin(  # type: ignore[override]
        self,
        axis: SupportsIndex | None = None,
        fill_value: _ScalarLike_co | None = None,
        *,
        out: _ArrayType,
        keepdims: bool | _NoValueType = ...,
    ) -> _ArrayType: ...
    @overload
    def argmin(  # type: ignore[override]
        self,
        axis: SupportsIndex | None,
        fill_value: _ScalarLike_co | None,
        out: _ArrayType,
        *,
        keepdims: bool | _NoValueType = ...,
    ) -> _ArrayType: ...

    # Keep in-sync with np.ma.argmax
    @overload
    def argmax(  # type: ignore[override]
        self,
        axis: None = None,
        fill_value: _ScalarLike_co | None = None,
        out: None = None,
        *,
        keepdims: Literal[False] | _NoValueType = ...,
    ) -> intp: ...
    @overload
    def argmax(  # type: ignore[override]
        self,
        axis: SupportsIndex | None = None,
        fill_value: _ScalarLike_co | None = None,
        out: None = None,
        *,
        keepdims: bool | _NoValueType = ...,
    ) -> Any: ...
    @overload
    def argmax(  # type: ignore[override]
        self,
        axis: SupportsIndex | None = None,
        fill_value: _ScalarLike_co | None = None,
        *,
        out: _ArrayType,
        keepdims: bool | _NoValueType = ...,