[+] Add simple namespace support

This commit is contained in:
Hykilpikonna
2022-08-15 20:05:38 -04:00
committed by GitHub
parent 7f56d94fe8
commit b76a624b4f
+9
View File
@@ -9,6 +9,7 @@ import time
from datetime import datetime, date
from pathlib import Path
from typing import Union, Callable
from types import SimpleNamespace
def ansi_rgb(r: int, g: int, b: int, foreground: bool = True) -> str:
@@ -111,6 +112,10 @@ class EnhancedJSONEncoder(json.JSONEncoder):
# https://stackoverflow.com/a/51286749/7346633
if dataclasses.is_dataclass(o):
return dataclasses.asdict(o)
# Simple namespace
if isinstance(o, SimpleNamespace):
return o.__dict__
# Support encoding datetime
if isinstance(o, (datetime, date)):
@@ -139,6 +144,10 @@ def json_stringify(obj: object, indent: Union[int, None] = None) -> str:
return json.dumps(obj, indent=indent, cls=EnhancedJSONEncoder, ensure_ascii=False)
def jsn(s: str):
return json.loads(s, object_hook=lambda d: SimpleNamespace(**d))
def write(file: Union[str, Path], text: str) -> None:
"""
Write text to a file