Skip to main content
Build status Coverage Status PyPI latest version Documentation status License

Nani is a Python library that provides an alternative approach to defining and viewing NumPy’s arrays.

Upon getting started with NumPy, the rules to define numpy.dtype objects tend to quickly become confusing. Not only different syntaxes can create a same data type, but it also seems arbitrary and hence difficult to remember that sub-array data types can only be defined as tuples while structured data types exclusively require lists made of field tuples, and so on.

To address this point, Nani takes the stance of offering one—and only one—way of constructing numpy.dtype objects. Although this syntax makes the code more verbose, it also makes it easier to read and to reason about.

Nani’s approach allows type introspection which brings additional benefits in the form of dynamically generated default values and view types. Default values facilitate the definition of new array elements while view types are useful to encapsulate interactions with NumPy and to expose a different public interface to your library users instead of the one provided with numpy.ndarray.

Features

  • explicit syntax for defining numpy.dtype objects.

  • generates default values and view types.

  • allows for type introspection.

Usage

>>> import numpy
>>> import nani
>>> color_type = nani.Array(
...     element_type=nani.Number(type=numpy.uint8, default=255),
...     shape=3,
...     view=None)
>>> dtype, default, view = nani.resolve(color_type, name='Color')
>>> a = numpy.array([default] * 2, dtype=dtype)
>>> v = view(a)
>>> for color in v:
...     print(color)
[255, 255, 255]
[255, 255, 255]

The color_type above defines an array of 3 numpy.uint8 elements having each a default value of 255. The resulting dtype and default objects are used to initialize a new NumPy array of 10 color elements, while the view type is used to wrap that array into a standard collection interface.

See the Tutorial section from the documentation for more detailed examples and explanations on how to use Nani.

Documentation

Read the documentation online at nani.readthedocs.io or check its source in the doc directory.

Author

Christopher Crouzet <christophercrouzet.com>

Metadata

Release files for nani 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nani 0.2.0
File Size Uploaded
nani-0.2.0.tar.gz 28.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nani 0.2.0
File Interpreter ABI Platform
nani-0.2.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 41.4 kB

Release files / nani-0.2.0.tar.gz

Download URL nani-0.2.0.tar.gz
Size 28.2 kB
Tags Source
SHA-256 checksum
How to use checksums
301d5c52c48c95fc82999560925a6f5fd2e74e91dab4b8b4d28e1c71aef0b9b9
BLAKE2b-256 checksum
How to use checksums
552cf0dcf343c4c52b9ac6e7356d6c0e3af80bd323ae516ddd415ae27f342d9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / nani-0.2.0-py2.py3-none-any.whl

Download URL nani-0.2.0-py2.py3-none-any.whl
Size 13.2 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
a21b9bed0d538ab33cbcd53bfdf1f483ce8394c1b18eda6b4101bc9418b4fc48
BLAKE2b-256 checksum
How to use checksums
e2b007986113daee52c877ce33a5a576df593ad0b056d1bdce70a1786825a613
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page