Python: Why does this doc test fail?

docstring, doctest, python

Solution

doctest requires that you use `...` for continuation lines:

>>> @requireparams(['name', 'pass', 'code'])
... def complex_function(params):
...     print(params['name'])
...     print(params['pass'])
...     print(params['code'])
...
>>> params = {
...     'name': 'John Doe',
...     'pass': 'OpenSesame',
...     #'code': '1134',
... }
...
>>> complex_function(params)

Problem

This code that's in the doctest works when run by itself, but in this doctest it fails in 10 places. I can't figure out why it does though. The following is the entire module: ``` class requireparams(object): """ >>> @requireparams(['name', 'pass', 'code']) >>> def complex_function(params): >>> print(params['name']) >>> print(params['pass']) >>> print(params['code']) >>> >>> params = { >>> 'name': 'John Doe', >>> 'pass': 'OpenSesame', >>> #'code': '1134', >>> } >>> >>> complex_function(params) Traceback (most recent call last): ... ValueError: Missing from "params" argument: code """ def __init__(self, required): self.required = set(required) def __call__(self, params): def wrapper(params): missing = self.required.difference(params) if missing: raise ValueError('Missing from "params" argument: %s' % ', '.join(sorted(missing))) return wrapper if __name__ == "__main__": import doctest doctest.testmod() ```

Original source