There's a rather serious regression in docopt 0.6. The following program fails to parse a simple "fs fail --loglevel 5". Instead it prints the usage message: <pre> #! /usr/bin/env python """ Usage: fs good [options] fs fail [options] Options: --loglevel=<level> loglevel """ import docopt print docopt.docopt(__doc__) </pre> i.e. with docopt 0.6 I get <pre> [dev] ~/ % ./fs good --loglevel 5 {'--loglevel': '5', 'fail': False, 'good': True} [dev] ~/ % ./fs fail --loglevel 5 Usage: fs good [options] fs fail [options] </pre> Without the --loglevel parameter it's working: <pre> [dev] ~/ % ./fs fail {'--loglevel': None, 'fail': True, 'good': False} </pre> with 0.5 I get the expected results: <pre> [dev] ~/ % ./fs good --loglevel 5 {'--loglevel': '5', 'fail': False, 'good': True} [dev] ~/ % ./fs fail --loglevel 5 {'--loglevel': '5', 'fail': True, 'good': False} </pre>