This rule raises an issue when a deprecated Numpy alias of a built-in type is used.

== Why is this an issue?

In NumPy, some built-in types such as `int` have aliases in the form of `numpy.int`. However, these aliases have been deprecated and should not be used anymore.

The following deprecated aliases should be replaced with their built-in alternatives:

[frame=all]
[cols="^1,^1"]
|===
|Deprecated name|Equivalent built-in type

|numpy.bool|bool
|numpy.int|int
|numpy.float|float
|numpy.complex|complex
|numpy.object|object
|numpy.str|str
|numpy.long|int
|numpy.unicode|str
|===

== How to fix it

To fix this issue, make sure to replace deprecated NumPy type aliases with their corresponding built-in types.

=== Code examples

==== Noncompliant code example

[source,python,diff-id=1,diff-type=noncompliant]
----
import numpy as np
def foo():
    x = np.int(42)  # Noncompliant: deprecated type alias
----

==== Compliant solution

[source,python,diff-id=1,diff-type=compliant]
----
import numpy as np
def foo():
    x = 42  # Compliant
----


== Resources
=== Documentation

* NumPy Documentation - https://numpy.org/devdocs/user/basics.types.html#basics-types[Data types]
* NumPy Documentation - https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations[Deprecation of aliases of builtin types]
