docs: def _verify_dict_list(self, values, keys, name):
          '''Validate a list of `dict`, ensuring it has specific keys
          and no others.
  
          :param values: A list of `dict` to validate.
          :param keys: A list of keys to validate each `dict` against.
          :param name: Name describing the values, to show in error messages.
          '''
          keys = set(keys)
          name = name.title()
          for value in values:
              if not isinstance(value, Mapping):
                  raise MessageError('Invalid {0} value'.format(name))
              for key in keys:
                  if key not in value:
                      err = '{0} must contain "{1}"'
                      raise MessageError(err.format(name, key))
              if set(value) - keys:
                  err = '{0} must contain only {1}'
                  words = ['"{0}"'.format(r) for r in sorted(keys)]
                  words = ' and '.join(words)
                  raise MessageError(err.format(name, words))