馃悕馃悕馃悕
at main 33 lines 771 B view raw
1 2class AttrDict(dict): 3 def __getattr__(self, key): 4 try: 5 return self[key] 6 except KeyError: 7 raise AttributeError(key) 8 9 def __setattr__(self, key, value): 10 self[key] = value 11 12 def __delattr__(self, key): 13 del self[key] 14 15class Errs(type): 16 def __iter__(_class): 17 return iter((k,v) for (k,v) in vars(_class).items() if not k.startswith("_")) 18 19 def __repr__(_class): 20 return str(list(k for (k,v) in _class)) 21 22def errs(errs): 23 def _errs(fn): 24 fn.errs = errs 25 return fn 26 return _errs 27 28def lsnap(s: str, delimiter=' '): 29 parts = s.lstrip().split(delimiter, 1) 30 return (parts[0].rstrip(), parts[1].lstrip() if len(parts) > 1 else "") 31 32from dataclasses import dataclass 33