Skip to content

Commit

Permalink
feat(amber): expose serialize_custom_iterable method of AmberDataSeri…
Browse files Browse the repository at this point in the history
…alizer
  • Loading branch information
Noah Negin-Ulster committed Aug 16, 2023
1 parent f4bc845 commit ef36bf4
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions src/syrupy/extensions/amber/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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="{",
Expand All @@ -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="=",
Expand All @@ -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="{",
Expand All @@ -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("_")),
Expand Down Expand Up @@ -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",
Expand All @@ -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
Expand Down

1 comment on commit ef36bf4

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: ef36bf4 Previous: f4bc845 Ratio
benchmarks/test_1000x.py::test_1000x_reads 0.6955246931153228 iter/sec (stddev: 0.06563096007318679) 0.778894787434532 iter/sec (stddev: 0.04719469622330271) 1.12
benchmarks/test_1000x.py::test_1000x_writes 0.688648670493028 iter/sec (stddev: 0.07897709894263917) 0.7666487335670356 iter/sec (stddev: 0.05904571566187082) 1.11
benchmarks/test_standard.py::test_standard 0.6685651785460213 iter/sec (stddev: 0.10334413107249055) 0.7442668868284715 iter/sec (stddev: 0.08586868313405226) 1.11

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.