From d210cf192962afc3196c9d6cc81e7c799a6caf26 Mon Sep 17 00:00:00 2001 From: Noah Date: Wed, 16 Aug 2023 10:44:44 -0400 Subject: [PATCH] feat(amber): expose serialize_custom_iterable method of AmberDataSerializer (#788) --- src/syrupy/extensions/amber/serializer.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/syrupy/extensions/amber/serializer.py b/src/syrupy/extensions/amber/serializer.py index ed38acb3..abbeccfd 100644 --- a/src/syrupy/extensions/amber/serializer.py +++ b/src/syrupy/extensions/amber/serializer.py @@ -286,7 +286,7 @@ def serialize_iterable( open_paren, close_paren = ("[", "]") values = list(data) - return cls.__serialize_iterable( + return cls.serialize_custom_iterable( data=data, resolve_entries=(range(len(values)), item_getter, None), open_paren=open_paren, @@ -296,7 +296,7 @@ def serialize_iterable( @classmethod def serialize_set(cls, data: Set["SerializableData"], **kwargs: Any) -> str: - return cls.__serialize_iterable( + return cls.serialize_custom_iterable( data=data, resolve_entries=(cls.sort(data), lambda _, p: p, None), open_paren="{", @@ -306,7 +306,7 @@ def serialize_set(cls, data: Set["SerializableData"], **kwargs: Any) -> str: @classmethod def serialize_namedtuple(cls, data: NamedTuple, **kwargs: Any) -> str: - return cls.__serialize_iterable( + return cls.serialize_custom_iterable( data=data, resolve_entries=(cls.sort(data._fields), attr_getter, None), separator="=", @@ -321,7 +321,7 @@ def serialize_dict( data.keys() if isinstance(data, (OrderedDict,)) else cls.sort(data.keys()) ) - return cls.__serialize_iterable( + return cls.serialize_custom_iterable( data=data, resolve_entries=(keys, item_getter, None), open_paren="{", @@ -336,7 +336,7 @@ def serialize_unknown(cls, data: Any, *, depth: int = 0, **kwargs: Any) -> str: if data.__class__.__repr__ != object.__repr__: return cls.__serialize_plain(data=data, depth=depth) - return cls.__serialize_iterable( + return cls.serialize_custom_iterable( data=data, resolve_entries=( (name for name in cls.sort(dir(data)) if not name.startswith("_")), @@ -379,7 +379,7 @@ def __serialize_plain( return cls.with_indent(repr(data), depth) @classmethod - def __serialize_iterable( + def serialize_custom_iterable( cls, *, data: "SerializableData", @@ -393,6 +393,9 @@ def __serialize_iterable( serialize_key: bool = False, **kwargs: Any, ) -> str: + """ + Utility to serialize a custom iterable. + """ kwargs["depth"] = depth + 1 keys, get_value, include_value = resolve_entries