ndtools package#

total_equality(cls: type[T], /) type[T][source]#

Class decorator that fills in missing multidimensional equality methods.

Parameters:

cls (type[T]) – Class to be decorated.

Returns:

The same class with missing multidimensional equality methods.

Return type:

type[T]

Examples

import numpy as np
from ndtools import total_equality


@total_equality
class Even:
    def __eq__(self, array):
        return ~((array % 2).astype(bool))


result = (np.arange(3) == Even())
expected = np.array([True, False, True])
assert (result == expected).all()
total_ordering(cls: type[T], /) type[T][source]#

Class decorator that fills in missing multidimensional ordering methods.

Parameters:

cls (type[T]) – Class to be decorated.

Returns:

The same class with missing multidimensional ordering methods.

Return type:

type[T]

Examples

import numpy as np
from dataclasses import dataclass
from ndtools import total_ordering


@dataclass
@total_ordering
class Interval:
    lower: float
    upper: float

    def __eq__(self, array):
        return (array >= self.lower) & (array < self.upper)

    def __ge__(self, array):
        return array < self.upper


result = (np.arange(3) == Interval(1, 2))
expected = np.array([False, True, False])
assert (result == expected).all()

result = (np.arange(3) < Interval(1, 2))
expected = np.array([True, False, False])
assert (result == expected).all()

Submodules#