Skip to content

Commit e1e1918

Browse files
author
Sergio García Prado
authored
Merge pull request #447 from minos-framework/issue-446-fix-bug-enitity-set-non-hashable
#446 - Fix bug related with `EntitySet` and non-hashable `Entity` instances
2 parents 197c04c + 8d02a82 commit e1e1918

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

packages/core/minos-microservice-aggregate/minos/aggregate/entities/collections.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ def decode_data(cls, decoder: DataDecoder, target: Any, type_: ModelType, **kwar
141141
:return: A decoded instance.
142142
"""
143143
data_cls = get_args(type_.type_hints["data"])[1]
144-
target = {decoder.build(v, data_cls, **kwargs) for v in target}
144+
target = (decoder.build(v, data_cls, **kwargs) for v in target)
145145
target = {str(v["uuid"]): v for v in target}
146146
decoded = decoder.build(target, type_.type_hints["data"], **kwargs)
147147
return cls(decoded, additional_type_hints=type_.type_hints)

packages/core/minos-microservice-aggregate/tests/test_aggregate/test_entities/test_collections.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
from minos.aggregate import (
1010
Action,
11+
Entity,
1112
EntitySet,
1213
IncrementalSetDiff,
1314
IncrementalSetDiffEntry,
@@ -20,6 +21,10 @@
2021
)
2122

2223

24+
class _NotHashable(Entity):
25+
foo: set[int]
26+
27+
2328
class TestEntitySet(unittest.TestCase):
2429
def test_data(self):
2530
raw = {OrderItem("John"), OrderItem("Michael")}
@@ -139,6 +144,10 @@ def test_avro_bytes(self):
139144
expected = EntitySet({OrderItem("John"), OrderItem("Michael")})
140145
self.assertEqual(expected, Model.from_avro_bytes(expected.avro_bytes))
141146

147+
def test_avro_bytes_not_hashable(self):
148+
expected = EntitySet([_NotHashable({1}), _NotHashable({2})])
149+
self.assertEqual(expected, Model.from_avro_bytes(expected.avro_bytes))
150+
142151

143152
class TestEntitySetDiff(unittest.TestCase):
144153
def setUp(self) -> None:

0 commit comments

Comments
 (0)