docs: def parse_cmdline_args(args, classes):
      """
      Parse all updater and detector related arguments from args.
  
      Returns a list of ("name", { "k": "v"})
  
      :param args: argparse arguments
      """
      if args is None:
          raise ValueError("args must not be None")
      parsed_args = {}
      for kls in classes:
          prefix = kls.configuration_key_prefix()
          name = kls.configuration_key
          if getattr(args, "%s_%s" % (prefix, name), False):
              logging.debug(
                  "Gathering initargs for '%s.%s'", prefix, name)
              initargs = {}
              for arg_name in kls.init_argnames():
                  val = getattr(args, "%s_%s_%s" %
                                (prefix, name, arg_name))
                  if val is not None:
                      initargs[arg_name] = val
              if prefix not in parsed_args:
                  parsed_args[prefix] = []
              parsed_args[prefix].append((name, initargs))
      return parsed_args