trafaret.extras
— structs for trafaret structures extended definition¶
-
class
trafaret.extras.
KeysSubset
(*keys)¶ From checkers and converters dict must be returned. Some for errors.
>>> from . import extract_error, Mapping, String >>> cmp_pwds = lambda x: {'pwd': x['pwd'] if x.get('pwd') == x.get('pwd1') else DataError('Not equal')} >>> d = Dict({KeysSubset('pwd', 'pwd1'): cmp_pwds, 'key1': String}) >>> sorted(d.check({'pwd': 'a', 'pwd1': 'a', 'key1': 'b'}).keys()) ['key1', 'pwd'] >>> extract_error(d.check, {'pwd': 'a', 'pwd1': 'c', 'key1': 'b'}) {'pwd': 'Not equal'} >>> extract_error(d.check, {'pwd': 'a', 'pwd1': None, 'key1': 'b'}) {'pwd': 'Not equal'} >>> get_values = (lambda d, keys: [d[k] for k in keys if k in d]) >>> join = (lambda d: {'name': ' '.join(get_values(d, ['name', 'last']))}) >>> Dict({KeysSubset('name', 'last'): join}).check({'name': 'Adam', 'last': 'Smith'}) {'name': 'Adam Smith'} >>> Dict({KeysSubset(): Dict({'a': Any})}).check({'a': 3}) {'a': 3}