Skip to content

Commit 7300341

Browse files
authored
Plomin deser (#420)
* Add OrderedSet as a serialization type * Minor fixes * All tests passing * Fix qa * Fix failed tests in ^3.11
1 parent f21348f commit 7300341

19 files changed

+673
-238
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
strategy:
1515
matrix:
1616
os: [ubuntu-latest, macos-latest]
17-
python-version: ['3.8', '3.9', '3.10', '3.11']
17+
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
1818

1919
steps:
2020
- uses: actions/checkout@v4

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ clean-test: ## remove test and coverage artifacts
5757
test: ## runs tests
5858
poetry run pytest -vv -n 4
5959

60+
test-integration: ## runs integration tests
61+
cd integration-test && ./run_tests.sh
62+
6063
test-single: ## runs tests with "single" markers
6164
poetry run pytest -s -vv -m single
6265

integration-test/configs/local-chang/shelley-genesis.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"keyDeposit": 1000000,
2222
"protocolVersion": {
2323
"minor": 0,
24-
"major": 9
24+
"major": 10
2525
},
2626
"poolDeposit": 1000000,
2727
"a0": 0.0,

integration-test/docker-compose-chang.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ networks:
99
services:
1010

1111
cardano-node:
12-
image: ghcr.io/intersectmbo/cardano-node:${CARDANO_NODE_VERSION:-10.1.3}
12+
image: ghcr.io/intersectmbo/cardano-node:${CARDANO_NODE_VERSION:-10.1.4}
1313
platform: linux/amd64
1414
entrypoint: bash
1515
environment:
@@ -35,7 +35,7 @@ services:
3535
max-file: "10"
3636

3737
cardano-pool:
38-
image: ghcr.io/intersectmbo/cardano-node:${CARDANO_NODE_VERSION:-10.1.3}
38+
image: ghcr.io/intersectmbo/cardano-node:${CARDANO_NODE_VERSION:-10.1.4}
3939
platform: linux/amd64
4040
entrypoint: bash
4141
environment:
@@ -56,7 +56,7 @@ services:
5656
max-file: "10"
5757

5858
ogmios:
59-
image: cardanosolutions/ogmios:v6.9.0
59+
image: cardanosolutions/ogmios:v6.11.0
6060
platform: linux/amd64
6161
environment:
6262
NETWORK: "${NETWORK:-local-alonzo}"

integration-test/run_tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ set -o pipefail
55

66
ROOT=$(pwd)
77

8-
poetry install
8+
poetry install -C ..
99
#poetry run pip install ogmios
1010

1111
##########

poetry.lock

Lines changed: 87 additions & 83 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pycardano/certificate.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def __post_init__(self):
4545
self._CODE = 1
4646

4747
@classmethod
48-
@limit_primitive_type(list)
48+
@limit_primitive_type(list, tuple)
4949
def from_primitive(
5050
cls: Type[StakeCredential], values: Union[list, tuple]
5151
) -> StakeCredential:
@@ -67,7 +67,7 @@ def __post_init__(self):
6767
self._CODE = 0
6868

6969
@classmethod
70-
@limit_primitive_type(list)
70+
@limit_primitive_type(list, tuple)
7171
def from_primitive(
7272
cls: Type[StakeRegistration], values: Union[list, tuple]
7373
) -> StakeRegistration:
@@ -87,7 +87,7 @@ def __post_init__(self):
8787
self._CODE = 1
8888

8989
@classmethod
90-
@limit_primitive_type(list)
90+
@limit_primitive_type(list, tuple)
9191
def from_primitive(
9292
cls: Type[StakeDeregistration], values: Union[list, tuple]
9393
) -> StakeDeregistration:
@@ -109,7 +109,7 @@ def __post_init__(self):
109109
self._CODE = 2
110110

111111
@classmethod
112-
@limit_primitive_type(list)
112+
@limit_primitive_type(list, tuple)
113113
def from_primitive(
114114
cls: Type[StakeDelegation], values: Union[list, tuple]
115115
) -> StakeDelegation:
@@ -138,7 +138,7 @@ def to_primitive(self):
138138
return super().to_primitive()
139139

140140
@classmethod
141-
@limit_primitive_type(list)
141+
@limit_primitive_type(list, tuple)
142142
def from_primitive(
143143
cls: Type[PoolRegistration], values: Union[list, tuple]
144144
) -> PoolRegistration:
@@ -166,7 +166,7 @@ def __post_init__(self):
166166
self._CODE = 4
167167

168168
@classmethod
169-
@limit_primitive_type(list)
169+
@limit_primitive_type(list, tuple)
170170
def from_primitive(
171171
cls: Type[PoolRetirement], values: Union[list, tuple]
172172
) -> PoolRetirement:

pycardano/metadata.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,9 @@ def to_primitive(self) -> Primitive:
123123
return self.data.to_primitive()
124124

125125
@classmethod
126-
def from_primitive(cls: Type[AuxiliaryData], value: Primitive) -> AuxiliaryData:
126+
def from_primitive(
127+
cls: Type[AuxiliaryData], value: Primitive, type_args: Optional[tuple] = None
128+
) -> AuxiliaryData:
127129
for t in [AlonzoMetadata, ShelleyMarryMetadata, Metadata]:
128130
# The schema of metadata in different eras are mutually exclusive, so we can try deserializing
129131
# them one by one without worrying about mismatch.

pycardano/nativescript.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class NativeScript(ArrayCBORSerializable):
3535
json_field: ClassVar[str]
3636

3737
@classmethod
38-
@limit_primitive_type(list)
38+
@limit_primitive_type(list, tuple)
3939
def from_primitive(
4040
cls: Type[NativeScript], value: list
4141
) -> Union[

pycardano/plutus.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -989,7 +989,7 @@ class Redeemer(ArrayCBORSerializable):
989989
ex_units: Optional[ExecutionUnits] = None
990990

991991
@classmethod
992-
@limit_primitive_type(list)
992+
@limit_primitive_type(list, tuple)
993993
def from_primitive(cls: Type[Redeemer], values: list) -> Redeemer:
994994
if isinstance(values[2], CBORTag) and cls is Redeemer:
995995
values[2] = RawPlutusData.from_primitive(values[2])
@@ -1028,7 +1028,7 @@ class RedeemerValue(ArrayCBORSerializable):
10281028
ex_units: ExecutionUnits
10291029

10301030
@classmethod
1031-
@limit_primitive_type(list)
1031+
@limit_primitive_type(list, tuple)
10321032
def from_primitive(cls: Type[RedeemerValue], values: list) -> RedeemerValue:
10331033
if isinstance(values[0], CBORTag) and cls is RedeemerValue:
10341034
values[0] = RawPlutusData.from_primitive(values[0])

0 commit comments

Comments
 (0)