ndtools package#
- class TotalEquality[source]#
Bases:
objectMix-in class that fills in missing multidimensional equality methods.
- Raises:
ValueError – Raised if none of the equality operators (==, !=) is defined.
Examples
import numpy as np from ndtools import TotalEquality class Even(TotalEquality): def __eq__(self, array): return array % 2 == 0 result = (np.arange(3) == Even()) expected = np.array([True, False, True]) assert (result == expected).all()
- class TotalOrdering[source]#
Bases:
objectMix-in class decorator that fills in missing multidimensional ordering methods.
- Raises:
ValueError – Raise if none of the ordering operator (>=, >, <=, <) is defined.
Examples
import numpy as np from dataclasses import dataclass from ndtools import TotalOrdering @dataclass class Range(TotalOrdering): 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) == Range(1, 2)) expected = np.array([False, True, False]) assert (result == expected).all() result = (np.arange(3) < Range(1, 2)) expected = np.array([True, False, False]) assert (result == expected).all()
- 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.
- Raises:
ValueError – Raised if none of the equality operators (==, !=) is defined.
- 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 == 0 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.
- Raises:
ValueError – Raise if none of the ordering operator (>=, >, <=, <) is defined.
- Return type:
type[T]
Examples
import numpy as np from dataclasses import dataclass from ndtools import total_ordering @dataclass @total_ordering class Range: 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) == Range(1, 2)) expected = np.array([False, True, False]) assert (result == expected).all() result = (np.arange(3) < Range(1, 2)) expected = np.array([True, False, False]) assert (result == expected).all()