From 6b5218ac35bfc17c0306218c49df284f46b4ecc7 Mon Sep 17 00:00:00 2001 From: Raphael Fakhri <153192858+RaphaelFakhri@users.noreply.github.com> Date: Thu, 5 Nov 2026 09:28:08 +0000 Subject: [PATCH] Fix z_deserialize returning a set for frozenset of fixed-size numbers Signed-off-by: Raphael Fakhri <153192858+RaphaelFakhri@users.noreply.github.com> --- src/ext.rs | 2 +- tests/test_serializer.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ext.rs b/src/ext.rs index 896d5632..6150b057 100644 --- a/src/ext.rs +++ b/src/ext.rs @@ -400,7 +400,7 @@ fn deserialize_collection( Ok(match tp { SupportedType::List => PyList::new(py, vec)?.into_py_any(py)?, SupportedType::Set => PySet::new(py, vec)?.into_py_any(py)?, - SupportedType::FrozenSet => PySet::new(py, vec)?.into_py_any(py)?, + SupportedType::FrozenSet => PyFrozenSet::new(py, vec)?.into_py_any(py)?, _ => unreachable!(), }) } diff --git a/tests/test_serializer.py b/tests/test_serializer.py index 7854d6a0..01fa8868 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -54,6 +54,7 @@ (dict[str, str], {"foo": "bar"}), (set[int], {0, 1, 2}), (frozenset[int], frozenset([0, 1, 2])), + (frozenset[Int32], frozenset([Int32(0), Int32(1), Int32(2)])), (list[tuple[float, Float32]], [(0.0, Float32(0.5)), (1.5, Float32(2))]), ] @@ -61,4 +62,6 @@ @pytest.mark.parametrize("tp, value", default_serializer_tests) def test_default_serializer(tp, value): zbytes = z_serialize(value) - assert z_deserialize(tp, zbytes) == value + deserialized = z_deserialize(tp, zbytes) + assert deserialized == value + assert type(deserialized) is type(value)