Source code for secure_learning.utils.types

"""
Types to use for type hinting.
"""
from typing import List, Sequence, TypeVar, Union

import numpy as np
import numpy.typing as npt
from mpyc.sectypes import (
    SecureFiniteField,
    SecureFixedPoint,
    SecureInteger,
    SecureObject,
)

SecNumTypes = Union[SecureFixedPoint, SecureInteger, SecureFiniteField]
SecNumTypesTV = TypeVar(
    "SecNumTypesTV", SecureFiniteField, SecureFixedPoint, SecureInteger
)
TemplateType = TypeVar("TemplateType")

Vector = List[TemplateType]
Matrix = List[List[TemplateType]]
SeqVector = Sequence[TemplateType]
SeqMatrix = Sequence[Sequence[TemplateType]]
SecureObjectType = TypeVar("SecureObjectType", bound=SecureObject)
NumpyFloatArray = npt.NDArray[np.float_]
NumpyIntegerArray = npt.NDArray[np.int_]
NumpyObjectArray = npt.NDArray[np.object_]
NumpyNumberArray = Union[NumpyIntegerArray, NumpyFloatArray]
NumpyOrVector = Union[NumpyNumberArray, Vector[float]]
NumpyOrMatrix = Union[NumpyNumberArray, Matrix[float]]


[docs] def seq_to_list(matrix: SeqMatrix[TemplateType]) -> Matrix[TemplateType]: """ Convert a sequence-like matrix to a list-like matrix. :param matrix: Sequence of sequences. :return: List of lists with the same contents. """ return list(list(row) for row in matrix)