docs: def _set_arg(self, a, s="main", c=False):
          """
          Set a single argument.
          
          :param a: argparse.Action instance
          :param s: config section title
          :param c: use class' ConfigParser instance to get parameters
          """
          # if action of an argument that suppresses any other, just return
          if a.dest is SUPPRESS or a.default is SUPPRESS:
              return
          # check if an option string is used for this action in sys.argv ;
          #  if so, simply return as it will be parsed normally
          if any(o in sys.argv[1:] for o in a.option_strings):
              return
          # in case of non-null config, get the value from the config object
          default = a.default if a.default is None else str(a.default)
          if c:
              try:
                  value = ArgumentParser._config.get(s, a.dest)
              except (NoOptionError, NoSectionError) as e:
                  item = "setting" if isinstance(e, NoOptionError) else "section"
                  # if the argument is required, just ask for the value
                  value = self._input_arg(a) if a.required else default
                  logger.debug("{} {} not present in config (set to {})"
                               .format(a.dest, item, value))
          # in case of null config, just ask for the value
          else:
              value = self._input_arg(a)
          # collect the option string before continuing
          try:
              ostr = a.option_strings[0]
          except IndexError:  # occurs when positional argument
              ostr = None
          # now handle arguments regarding the action
          if self.is_action(a, 'store', 'append'):
              if value:
                  if ostr:
                      self._reparse_args['opt'].extend([ostr, value])
                  else:
                      self._reparse_args['pos'].extend([value])
          elif self.is_action(a, 'store_const', 'append_const'):
              if value.lower() == "add" or value != default:
                  self._reparse_args['opt'].append(ostr)
          elif self.is_action(a, 'store_true'):
              if value.lower() in ["y", "true"]:
                  self._reparse_args['opt'].append(ostr)
          elif self.is_action(a, 'store_false'):
              if value.lower() in ["n", "false"]:
                  self._reparse_args['opt'].append(ostr)
          elif self.is_action(a, 'count'):
              v = int(value or 0)
              if v > 0:
                  if ostr.startswith("--"):
                      new_arg = [ostr for i in range(v)]
                  else:
                      new_arg = ["-{}".format(v * ostr.strip('-'))]
                  self._reparse_args['opt'].extend(new_arg)
          elif self.is_action(a, 'parsers'):
              if not value:
                  value = self._input_arg(a)
              pmap = a._name_parser_map
              if c:
                  pmap[value].config_args(a.dest)
                  pmap[value]._reparse_args['pos'].insert(0, value)
              else:
                  pmap[value].input_args()
              self._reparse_args['sub'].append(pmap[value])
          else:
              raise NotImplementedError("Unknown argparse action")