Right. At first I thought about flag and Exception subclass, but when realized that output message formatting is done is in exception itself. So to experiment with the proper message formatting, I changed the flag to the list of version to output in case more explicit instruction is required.

There is another argument. From architectural point of view, more clean logic is:

  step 1. build a '''table''' of all available distributions and versions
  step 2. run select with required criteria

But because Python doesn't have simple table type, the two lists is like an emulation.