so the kwargs problem is exactly as you describe, because of *attrs.  We can change the function name, I don't think this function will be used heavily by users, but they may.  I think the reason for keeping it *attrs is for consistency of API with dump, as the 2 are related