def peek_with_kwargs(init, args=[]):
def peek(store, container, _stack=None):<EOL><INDENT>return init(*[ store.peek(attr, container, _stack=_stack) for attr in args ],**dict([ (attr, store.peek(attr, container, _stack=_stack))for attr in container if attr not in args ]))<EOL><DEDENT>return peek<EOL>
Make datatypes passing keyworded arguments to the constructor.

This is a factory function; returns the actual `peek` routine.

Arguments:

    init (callable): type constructor.

    args (iterable): arguments NOT to be keyworded; order does matter.

Returns:

    callable: deserializer (`peek` routine).

All the peeked attributes that are not referenced in `args` are passed to `init` as
keyworded arguments.