I get a mypy error if I check that it's not a ThreadedResReq and then access threads_per_mpi_process, because mypy believes that ResourceRequirements could be instantiated. Can we mark it abstract in such a way that we still get the nice error if it's recognised?