use more compact JSON repr
This commit is contained in:
parent
b676c9ddde
commit
18b95f91f9
1 changed files with 7 additions and 3 deletions
|
|
@ -2,6 +2,7 @@ import json
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from dataclasses import fields as _fields
|
from dataclasses import fields as _fields
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
|
from functools import partial
|
||||||
from typing import (
|
from typing import (
|
||||||
Annotated,
|
Annotated,
|
||||||
Any,
|
Any,
|
||||||
|
|
@ -72,6 +73,9 @@ def optional_fields(o):
|
||||||
yield f
|
yield f
|
||||||
|
|
||||||
|
|
||||||
|
json_dump = partial(json.dumps, separators=(",", ":"))
|
||||||
|
|
||||||
|
|
||||||
def asplain(o, *, fields_: set = None) -> dict[str, Any]:
|
def asplain(o, *, fields_: set = None) -> dict[str, Any]:
|
||||||
validate(o)
|
validate(o)
|
||||||
|
|
||||||
|
|
@ -94,9 +98,9 @@ def asplain(o, *, fields_: set = None) -> dict[str, Any]:
|
||||||
elif target in {datetime}:
|
elif target in {datetime}:
|
||||||
d[f.name] = v.isoformat()
|
d[f.name] = v.isoformat()
|
||||||
elif target in {set}:
|
elif target in {set}:
|
||||||
d[f.name] = json.dumps(list(sorted(v)))
|
d[f.name] = json_dump(list(sorted(v)))
|
||||||
elif target in {list}:
|
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}:
|
elif target in {bool, str, int, float, None}:
|
||||||
d[f.name] = v
|
d[f.name] = v
|
||||||
else:
|
else:
|
||||||
|
|
@ -165,7 +169,7 @@ class Progress:
|
||||||
|
|
||||||
@_state.setter
|
@_state.setter
|
||||||
def _state(self, state: dict):
|
def _state(self, state: dict):
|
||||||
self.state = json.dumps(state, separators=(",", ":"))
|
self.state = json_dump(state)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def percent(self) -> float:
|
def percent(self) -> float:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue