I've decided to go with making RequirementError a derived class of RepoError. It's less of a global surprise compared to the status quo and the odd spot of having to discern RequirementError from RepoError is confined to that single special place in dispatch.py. (sorry for the preceding noise)