馃悕馃悕馃悕
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