Skip to content

Commit

Permalink
feat(serializer): Allow classes to short circuit serializer with `sen…
Browse files Browse the repository at this point in the history
…try_repr` (#1322)
  • Loading branch information
sl0thentr0py authored Jan 26, 2022
1 parent 4ce0a1d commit cdfab0d
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
3 changes: 3 additions & 0 deletions sentry_sdk/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,9 @@ def _serialize_node_impl(
else:
return obj

elif callable(getattr(obj, "sentry_repr", None)):
return obj.sentry_repr()

elif isinstance(obj, datetime):
return (
text_type(format_timestamp(obj))
Expand Down
9 changes: 9 additions & 0 deletions tests/test_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,12 @@ def test_bytes_serialization_repr(message_normalizer):
def test_serialize_sets(extra_normalizer):
result = extra_normalizer({1, 2, 3})
assert result == [1, 2, 3]


def test_serialize_custom_mapping(extra_normalizer):
class CustomReprDict(dict):
def sentry_repr(self):
return "custom!"

result = extra_normalizer(CustomReprDict(one=1, two=2))
assert result == "custom!"

0 comments on commit cdfab0d

Please sign in to comment.