trafaret.keys — custom Dict keys implementations

trafaret.keys.confirm_key(name, confirm_name, trafaret)

confirm_key - takes name, confirm_name and trafaret.

Checks if data[‘name’] equals data[‘confirm_name’] and both are valid against trafaret.

trafaret.keys.subdict(name, *keys, **kw)

Subdict key.

Takes a name, any number of keys as args and keyword argument trafaret. Use it like:

def check_passwords_equal(data):
if data[‘password’] != data[‘password_confirm’]:
return t.DataError(‘Passwords are not equal’)

return data[‘password’]

passwords_key = subdict(
‘password’, t.Key(‘password’, trafaret=check_password), t.Key(‘password_confirm’, trafaret=check_password), trafaret=check_passwords_equal,

)

signup_trafaret = t.Dict(
t.Key(‘email’, trafaret=t.Email), passwords_key,

)

trafaret.keys.xor_key(first, second, trafaret)

xor_key - takes first and second key names and trafaret.

Checks if we have only first or only second in data, not both, and at least one.

Then checks key value against trafaret.