Coverage for event_normalizer/serializers/json.py: 100%

13 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-21 20:04 +0000

1"""JSON serializer.""" 

2 

3import json 

4from typing import Any, Literal 

5 

6from ..models import NormalizedEvent 

7from .flat_dict import to_flat_dict 

8 

9 

10class JSONSerializer: 

11 """Serialize NormalizedEvent as structured or flat JSON.""" 

12 

13 @staticmethod 

14 def to_dict( 

15 event: NormalizedEvent, 

16 mode: Literal["structured", "flat"] = "structured", 

17 exclude_none: bool = True, 

18 ) -> dict[str, Any]: 

19 if mode == "flat": 

20 return to_flat_dict( 

21 event, 

22 exclude_none=exclude_none, 

23 ) 

24 

25 return event.model_dump( 

26 exclude_none=exclude_none, 

27 mode="json", 

28 ) 

29 

30 @staticmethod 

31 def serialize( 

32 event: NormalizedEvent, 

33 mode: Literal["structured", "flat"] = "structured", 

34 exclude_none: bool = True, 

35 ) -> str: 

36 return json.dumps( 

37 JSONSerializer.to_dict( 

38 event, 

39 mode=mode, 

40 exclude_none=exclude_none, 

41 ) 

42 )