Skip to main content

Type hints for NumPy.

## Project description

💡 Type hints for `NumPy`
💡 Extends `numpy.typing`
💡 Extensive dynamic type checks for dtypes and shapes of arrays

Example of a hinted function with `nptyping`:

```>>> from nptyping import NDArray, Int, Shape

>>> def func(arr: NDArray[Shape["2, 2"], Int]) -> None:
...     pass
```

### Installation

``````pip install nptyping
``````

### Instance checking

Example of instance checking:

```>>> import numpy as np

>>> isinstance(np.array([[1, 2], [3, 4]]), NDArray[Shape["2, 2"], Int])
True

>>> isinstance(np.array([[1., 2.], [3., 4.]]), NDArray[Shape["2, 2"], Int])
False

>>> isinstance(np.array([1, 2, 3, 4]), NDArray[Shape["2, 2"], Int])
False
```

`nptyping` also provides `assert_isinstance`. In contrast to `assert isinstance(...)`, this won't cause IDEs or MyPy complaints. Here is an example:

```>>> from nptyping import assert_isinstance

>>> assert_isinstance(np.array([1]), NDArray[Shape["1"], Int])
True
```

### Structured arrays

You can also express structured arrays using `nptyping.Structure`:

```>>> from nptyping import Structure

>>> Structure["name: Str, age: Int"]
Structure['age: Int, name: Str']
```

Here is an example to see it in action:

```>>> from typing import Any
>>> import numpy as np
>>> from nptyping import NDArray, Structure

>>> arr = np.array([("Peter", 34)], dtype=[("name", "U10"), ("age", "i4")])
>>> isinstance(arr, NDArray[Any, Structure["name: Str, age: Int"]])
True
```

### Record arrays

The recarray is a specialization of a structured array. You can use `RecArray` to express them.

```>>> from nptyping import RecArray

>>> arr = np.array([("Peter", 34)], dtype=[("name", "U10"), ("age", "i4")])
>>> rec_arr = arr.view(np.recarray)
>>> isinstance(rec_arr, RecArray[Any, Structure["name: Str, age: Int"]])
True
```

### More examples

Here is an example of a rich expression that can be done with `nptyping`:

```def plan_route(
locations: NDArray[Shape["[from, to], [x, y]"], Float]
) -> NDArray[Shape["* stops, [x, y]"], Float]:
...
```

More examples can be found in the documentation.

## Documentation

• User documentation
The place to go if you are using this library.

• Release notes
To see what's new, check out the release notes.

• Contributing
If you're interested in developing along, find the guidelines here.

• Licence
If you want to check out how open source this library is.

## Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

### Source Distribution

nptyping-2.1.3.tar.gz (18.0 kB view hashes)

Uploaded `source`

### Built Distribution

nptyping-2.1.3-py3-none-any.whl (31.8 kB view hashes)

Uploaded `py3`