moreover's picture
first commit
acd4009
raw
history blame
903 Bytes
from dataclasses import dataclass, is_dataclass
# decorator to wrap original __init__
def has_nested_dataclass(*args, **kwargs):
def wrapper(check_class):
# passing class to investigate
check_class = dataclass(check_class, **kwargs)
o_init = check_class.__init__
def __init__(self, *args, **kwargs):
for name, value in kwargs.items():
# getting field type
ft = check_class.__annotations__.get(name, None)
if is_dataclass(ft) and isinstance(value, dict):
obj = ft(**value)
kwargs[name] = obj
o_init(self, *args, **kwargs)
check_class.__init__ = __init__
return check_class
return wrapper(args[0]) if args else wrapper
def convert_crlf_to_lf(s: str) -> str:
s = s.replace("\r", "").replace("\r\n", "\n")
return s