Skip to content

Commit 3d65c67

Browse files
Added RawPlutusData to PlutusData primitive types (#363)
* Added RawPlutusData to PlutusData primitive types * Added unit test for RawPlutusData
1 parent 2bb4820 commit 3d65c67

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

pycardano/plutus.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,15 @@ def CONSTR_ID(cls):
548548
return getattr(cls, k)
549549

550550
def __post_init__(self):
551-
valid_types = (PlutusData, dict, IndefiniteList, int, ByteString, bytes)
551+
valid_types = (
552+
RawPlutusData,
553+
PlutusData,
554+
dict,
555+
IndefiniteList,
556+
int,
557+
ByteString,
558+
bytes,
559+
)
552560
for f in fields(self):
553561
if inspect.isclass(f.type) and not issubclass(f.type, valid_types):
554562
raise TypeError(

test/pycardano/test_plutus.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,3 +490,33 @@ class A(PlutusData):
490490
assert (
491491
A_tmp.to_cbor_hex() == quote_hex
492492
), "Long metadata bytestring is encoded incorrectly."
493+
494+
495+
def test_plutus_raw_plutus_data():
496+
497+
@dataclass
498+
class A(PlutusData):
499+
CONSTR_ID = 0
500+
payload: bytes
501+
502+
@dataclass
503+
class B(PlutusData):
504+
CONSTR_ID = 0
505+
506+
a: A
507+
b: RawPlutusData
508+
c: int
509+
d: RawPlutusData
510+
e: RawPlutusData
511+
f: Union[RawPlutusData, bytes]
512+
513+
cbor = (
514+
"d8799fd8799f581c2f36866691fa75a9aab66dec99f7cc2d297ca09e34d9ce68cde04773ffd879"
515+
+ "9f581cf0e17b51bc18962397450eb625222bce9c510cb82b213bd9cf17ea82ff1a0007a120d8"
516+
+ "799fd8799fd8799f581ce0b68e229f9c043ab610067ed7f3c6d662b8f3c6bb4ec452c11f6411"
517+
+ "ffd8799fd8799fd8799f581cf0e17b51bc18962397450eb625222bce9c510cb82b213bd9cf17"
518+
+ "ea82ffffffffd87980ffd87a9f9f40401a00989680ff9f581c9a9693a9a37912a5097918f979"
519+
+ "18d15240c92ab729a0b7c4aa144d774653554e4441451a1d5a82fdffff43d87980ff"
520+
)
521+
522+
assert B.from_cbor(cbor).to_cbor_hex() == cbor

0 commit comments

Comments
 (0)