[+] 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 datetime import datetime, date
from pathlib import Path from pathlib import Path
from typing import Union, Callable from typing import Union, Callable
from types import SimpleNamespace
def ansi_rgb(r: int, g: int, b: int, foreground: bool = True) -> str: def ansi_rgb(r: int, g: int, b: int, foreground: bool = True) -> str:
@@ -112,6 +113,10 @@ class EnhancedJSONEncoder(json.JSONEncoder):
if dataclasses.is_dataclass(o): if dataclasses.is_dataclass(o):
return dataclasses.asdict(o) return dataclasses.asdict(o)
# Simple namespace
if isinstance(o, SimpleNamespace):
return o.__dict__
# Support encoding datetime # Support encoding datetime
if isinstance(o, (datetime, date)): if isinstance(o, (datetime, date)):
return o.isoformat() return o.isoformat()
@@ -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) 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: def write(file: Union[str, Path], text: str) -> None:
""" """
Write text to a file Write text to a file