docs: def parse_args(self, command_selected, flags, _free_args):
          # type: (str, Dict[str, str], List[str]) -> bool
          """
          Parse the args and fill the global data
          Currently we disregard the free parameters
          :param command_selected:
          :param flags:
          :param _free_args:
          :return:
          """
          configs = self.function_name_to_configs[command_selected]
          suggested_configs = self.function_name_to_suggest_configs[command_selected]
  
          # create the attribute_to_config map
          attribute_to_config = dict()  # type: Dict[str, Config]
          for config in itertools.chain(configs, suggested_configs):
              for attribute in config.get_attributes():
                  if attribute in attribute_to_config:
                      raise ValueError("attribute [{}] double".format(attribute))
                  attribute_to_config[attribute] = config
  
          # set the flags into the "default" field
          unknown_flags = []
          for flag_raw, value in flags.items():
              edit = value.startswith('=')
              if flag_raw not in attribute_to_config:
                  unknown_flags.append(flag_raw)
              config = attribute_to_config[flag_raw]
              param = config.get_param_by_name(flag_raw)
              if edit:
                  v = param.s2t_generate_from_default(value[1:])
              else:
                  v = param.s2t(value)
              setattr(config, flag_raw, v)
  
          # check for missing parameters and show help if there are any missing
          missing_parameters = []
          for config in configs:
              for attribute in config.get_attributes():
                  value = getattr(config, attribute)
                  if value is NO_DEFAULT:
                      missing_parameters.append(attribute)
          if unknown_flags or missing_parameters:
              if missing_parameters:
                  print()
                  print_warn("missing parameters [{}]".format(",".join(missing_parameters)))
              if unknown_flags:
                  print()
                  print_warn("unknown flags [{}]".format(",".join(unknown_flags)))
              print("problems found, not running")
              print()
              self.show_help_for_function(command_selected, show_help_full=False, show_help_suggest=False)
              return False
  
          # move all default values to place
          for config in itertools.chain(configs, self._configs):
              for attribute in config.get_attributes():
                  param = getattr(config, attribute)  # type: Param
                  if isinstance(param, Param):
                      if param.default is not NO_DEFAULT:
                          setattr(config, attribute, param.default)
          return True