Although asserts are an easy way to ensure that your program has the right arguments, it is removed when using optimization. I know that only a few python programs actually use optimization (because it only removes asserts) but I believe you shouldn't use asserts. Here is more information about asserts in python code.
So far, I've found out that you use an assert in cmdline.py on line 490. You might want to keep it but I think throwing a KeyError is better. Just imagine somebody used your module with optimization and help() is for some reason called without any argument. It would always say "Don't know topic ...".
Here is what you should do instead.
def help(self, error=None, topic=None, parser=None): """Display an error message, or the named topic.""" if error: print(error) print("Use 'coverage help' for help.") elif parser: print(parser.format_help().strip()) elif topic: help_msg = HELP_TOPICS.get(topic, '').strip() if help_msg: print(help_msg % self.covpkg.__dict__) else: print("Don't know topic %r" % topic) else: raise KeyError("At least one argument needs to be given.")