From 204a308be0f741726b9a620d88fbc22b22124c81 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Fri, 29 Dec 2023 18:55:37 +0000 Subject: Namespace all modules under gn2. We move all modules under a gn2 directory. This is important for "correct" packaging and deployment as a Guix service. --- gn2/utility/json/__init__.py | 3 +++ gn2/utility/json/encoders.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 gn2/utility/json/__init__.py create mode 100644 gn2/utility/json/encoders.py (limited to 'gn2/utility/json') diff --git a/gn2/utility/json/__init__.py b/gn2/utility/json/__init__.py new file mode 100644 index 00000000..b1141a34 --- /dev/null +++ b/gn2/utility/json/__init__.py @@ -0,0 +1,3 @@ +"""Local JSON utilities.""" + +from .encoders import CustomJSONEncoder diff --git a/gn2/utility/json/encoders.py b/gn2/utility/json/encoders.py new file mode 100644 index 00000000..7c5839ac --- /dev/null +++ b/gn2/utility/json/encoders.py @@ -0,0 +1,17 @@ +"""Custom JSON encoders""" +from uuid import UUID +from json import JSONEncoder + +# Do not use this `__ENCODERS__` variable outside of this module. +__ENCODERS__ = { + UUID: lambda obj: str(obj) +} + +class CustomJSONEncoder(JSONEncoder): + """Custom JSONEncoder class.""" + def default(self, obj): + """Serialise `obj` to a JSON representation.""" + obj_type = type(obj) + if obj_type in __ENCODERS__: + return __ENCODERS__[obj_type](obj) + return JSONEncoder.default(self, obj) -- cgit v1.2.3