As I've said in a previous, similar discussion, I strongly feel this package shouldn't be duplicating PyMongo's own parameter validation. Do the absolute minimum necessary to get the parameters to PyMongo and let PyMongo do the rest. If a user misconfigures her app and passes a bad value, she'll get a helpful error message from PyMongo. Doing the validation twice is asking for bugs.