docs: def _get_valid_checkers(self, ds, checker_names):
          """
          Returns a filtered list of 2-tuples: (name, valid checker) based on the ds object's type and
          the user selected names.
          """
  
          assert len(self.checkers) > 0, "No checkers could be found."
  
          if len(checker_names) == 0:
              checker_names = list(self.checkers.keys())
  
          args = [(name, self.checkers[name]) for name in checker_names if name in self.checkers]
          valid = []
  
          all_checked = set([a[1] for a in args])  # only class types
          checker_queue = set(args)
          while len(checker_queue):
              name, a = checker_queue.pop()
              # is the current dataset type in the supported filetypes
              # for the checker class?
              if type(ds) in a().supported_ds:
                  valid.append((name, a))
  
              # add any subclasses of the checker class
              for subc in a.__subclasses__():
                  if subc not in all_checked:
                      all_checked.add(subc)
                      checker_queue.add((name, subc))
  
          return valid