Skip to content

Commit 649b121

Browse files
Add cleartext typing (#37)
Add cleartext type conversion
1 parent 83d2f24 commit 649b121

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

nada_algebra/array.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@
88
from typing import Any, Callable, Optional, Sequence, Union, get_args, overload
99

1010
import numpy as np
11-
from nada_dsl import (Input, Integer, Output, Party, PublicInteger,
11+
from nada_dsl import (Boolean, Input, Integer, Output, Party, PublicInteger,
1212
PublicUnsignedInteger, SecretInteger,
1313
SecretUnsignedInteger, UnsignedInteger)
1414

1515
from nada_algebra.context import UnsafeArithmeticSession
16-
from nada_algebra.nada_typing import (NadaBoolean, NadaInteger, NadaRational,
16+
from nada_algebra.nada_typing import (NadaBoolean, NadaCleartextType,
17+
NadaInteger, NadaRational,
1718
NadaUnsignedInteger)
1819
from nada_algebra.types import (Rational, SecretRational, get_log_scale,
1920
public_rational, rational, secret_rational)
@@ -738,6 +739,24 @@ def is_boolean(self) -> bool:
738739
"""
739740
return self.dtype == NadaBoolean
740741

742+
@property
743+
def cleartext_nada_type(self) -> NadaCleartextType:
744+
"""
745+
Returns a clear-text Nada type compatible with the Nada array.
746+
747+
Returns:
748+
NadaCleartextType: Compatible cleartext type.
749+
"""
750+
if self.is_rational:
751+
return Rational
752+
if self.is_integer:
753+
return Integer
754+
if self.is_unsigned_integer:
755+
return UnsignedInteger
756+
if self.is_boolean:
757+
return Boolean
758+
raise TypeError(f"Array {self} is of unknown type {self.dtype}.")
759+
741760
def __str__(self) -> str:
742761
"""
743762
String representation of the NadaArray.

nada_algebra/nada_typing.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,16 @@
3131
PublicBoolean,
3232
SecretBoolean,
3333
]
34+
35+
NadaCleartextNumber = Union[
36+
dsl.Integer,
37+
dsl.UnsignedInteger,
38+
Rational,
39+
]
40+
41+
NadaCleartextType = Union[
42+
dsl.Integer,
43+
dsl.UnsignedInteger,
44+
dsl.Boolean,
45+
Rational,
46+
]

0 commit comments

Comments
 (0)