Skip to content

Commit f936287

Browse files
UPDATE. only allow str/bytes value for Address.from_primitive()
1 parent ee5e411 commit f936287

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

pycardano/address.py

+12-1
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,18 @@ def to_primitive(self) -> bytes:
343343
return bytes(self)
344344

345345
@classmethod
346-
def from_primitive(cls: Type[Address], value: Union[bytes, str]) -> Address:
346+
def from_primitive(cls: Type[Address], value: Primitive) -> Address:
347+
if not isinstance(
348+
value,
349+
(
350+
bytes,
351+
str,
352+
),
353+
):
354+
raise DeserializeException(
355+
f"A bytes or a string value is required for deserialization: {value}"
356+
)
357+
347358
if isinstance(value, str):
348359
value = bytes(decode(value))
349360
header = value[0]

test/pycardano/test_address.py

+18
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,21 @@ class PointerAddressTest(TestCase):
2424
def test_from_primitive_invalid_value(self):
2525
with self.assertRaises(DeserializeException):
2626
PointerAddress.from_primitive(1)
27+
28+
with self.assertRaises(DeserializeException):
29+
PointerAddress.from_primitive([])
30+
31+
with self.assertRaises(DeserializeException):
32+
PointerAddress.from_primitive({})
33+
34+
35+
class AddressTest(TestCase):
36+
def test_from_primitive_invalid_value(self):
37+
with self.assertRaises(DeserializeException):
38+
Address.from_primitive(1)
39+
40+
with self.assertRaises(DeserializeException):
41+
Address.from_primitive([])
42+
43+
with self.assertRaises(DeserializeException):
44+
Address.from_primitive({})

0 commit comments

Comments
 (0)