docs: def getFromKwargs(self, kwargs):
          """Simple customization point for child classes that do not need the other
             parameters supplied to updateFromKwargs. Return the value for the property
             named 'self.name'.
  
             The default implementation converts from a list of items, validates using
             the optional regex field and calls 'parse_from_args' for the final conversion.
          """
          args = kwargs.get(self.fullName, [])
  
          # delete white space for args
          for arg in args:
              if isinstance(arg, str) and not arg.strip():
                  args.remove(arg)
  
          if not args:
              if self.required:
                  raise ValidationError(
                      "'%s' needs to be specified" % (self.label))
              if self.multiple:
                  args = self.default
              else:
                  args = [self.default]
  
          if self.regex:
              for arg in args:
                  if not self.regex.match(arg):
                      raise ValidationError("%s:'%s' does not match pattern '%s'"
                                            % (self.label, arg, self.regex.pattern))
          if self.maxsize is not None:
              for arg in args:
                  if len(arg) > self.maxsize:
                      raise ValidationError("%s: is too large %d > %d"
                                            % (self.label, len(arg), self.maxsize))
  
          try:
              arg = self.parse_from_args(args)
          except Exception as e:
              # an exception will just display an alert in the web UI
              # also log the exception
              if self.debug:
                  traceback.print_exc()
              raise e
          if arg is None:
              raise ValidationError("need %s: no default provided by config"
                                    % (self.fullName,))
          return arg