From 18b95f91f94f1ad6d6b06a99ace963eb3cca0015 Mon Sep 17 00:00:00 2001 From: ducklet Date: Wed, 18 Aug 2021 20:08:09 +0200 Subject: [PATCH] use more compact JSON repr --- unwind/models.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/unwind/models.py b/unwind/models.py index 5944363..d85547d 100644 --- a/unwind/models.py +++ b/unwind/models.py @@ -2,6 +2,7 @@ import json from dataclasses import dataclass, field from dataclasses import fields as _fields from datetime import datetime, timezone +from functools import partial from typing import ( Annotated, Any, @@ -72,6 +73,9 @@ def optional_fields(o): yield f +json_dump = partial(json.dumps, separators=(",", ":")) + + def asplain(o, *, fields_: set = None) -> dict[str, Any]: validate(o) @@ -94,9 +98,9 @@ def asplain(o, *, fields_: set = None) -> dict[str, Any]: elif target in {datetime}: d[f.name] = v.isoformat() elif target in {set}: - d[f.name] = json.dumps(list(sorted(v))) + d[f.name] = json_dump(list(sorted(v))) elif target in {list}: - d[f.name] = json.dumps(list(v)) + d[f.name] = json_dump(list(v)) elif target in {bool, str, int, float, None}: d[f.name] = v else: @@ -165,7 +169,7 @@ class Progress: @_state.setter def _state(self, state: dict): - self.state = json.dumps(state, separators=(",", ":")) + self.state = json_dump(state) @property def percent(self) -> float: