Finally beginning to look at this. I'm working from the pulled version, rather than the commentless patch (please don't do that again :). A nit from SphinxBuilder::__init__(): > # > # As we handle number of jobs and quiet in separate, we need to pick > # both the same way as sphinx-build would pick, optionally accepts > # whitespaces or not. So let's use argparse to handle argument expansion > # > parser = argparse.ArgumentParser() > parser.add_argument('-j', '--jobs', type=int) > parser.add_argument('-q', '--quiet', type=int) > > # > # Other sphinx-build arguments go as-is, so place them > # at self.sphinxopts, using shell parser > # > sphinxopts = shlex.split(os.environ.get("SPHINXOPTS", ")) > > # > # Build a list of sphinx args > # > sphinx_args, self.sphinxopts = parser.parse_known_args(sphinxopts) > if sphinx_args.quiet is True: > self.verbose = False > > if sphinx_args.jobs: > self.n_jobs = sphinx_args.jobs > > # > # If the command line argument "-j" is used override SPHINXOPTS > # > > self.n_jobs = n_jobs First of all, I do wish you would isolate this sort of concern into its own function. But, beyond that, you go to all that effort to parse the --jobs flag, but that last line just throws it all away. What was the real purpose here? Thanks, jon