<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def ReadArtifactDefinitionValues(self, artifact_definition_values):
 """Reads an artifact definition from a dictionary. Args: artifact_definition_values (dict[str, object]):
 artifact definition values. Returns: ArtifactDefinition: an artifact definition. Raises: FormatError: if the format of the artifact definition is not set or incorrect. """

    if not artifact_definition_values:
      raise errors.FormatError('Missing artifact definition values.')

    different_keys = (
        set(artifact_definition_values) - definitions.TOP_LEVEL_KEYS)
    if different_keys:
      different_keys = ', '.join(different_keys)
      raise errors.FormatError('Undefined keys: {0:s}'.format(different_keys))

    name = artifact_definition_values.get('name', None)
    if not name:
      raise errors.FormatError('Invalid artifact definition missing name.')

    # The description is assumed to be mandatory.
    description = artifact_definition_values.get('doc', None)
    if not description:
      raise errors.FormatError(
          'Invalid artifact definition: {0:s} missing description.'.format(
              name))

    artifact_definition = artifact.ArtifactDefinition(
        name, description=description)

    if artifact_definition_values.get('collectors', []):
      raise errors.FormatError(
          'Invalid artifact definition: {0:s} still uses collectors.'.format(
              name))

    urls = artifact_definition_values.get('urls', [])
    if not isinstance(urls, list):
      raise errors.FormatError(
          'Invalid artifact definition: {0:s} urls is not a list.'.format(
              name))

    # TODO: check conditions.
    artifact_definition.conditions = artifact_definition_values.get(
        'conditions', [])
    artifact_definition.provides = artifact_definition_values.get(
        'provides', [])
    self._ReadLabels(artifact_definition_values, artifact_definition, name)
    self._ReadSupportedOS(artifact_definition_values, artifact_definition, name)
    artifact_definition.urls = urls
    self._ReadSources(artifact_definition_values, artifact_definition, name)

    return artifact_definition