docs: def ArtifactsFromYaml(self, yaml_content):
      """Get a list of Artifacts from yaml."""
      raw_list = yaml.ParseMany(yaml_content)
  
      # TODO(hanuszczak): I am very sceptical about that "doing the right thing"
      # below. What are the real use cases?
  
      # Try to do the right thing with json/yaml formatted as a list.
      if (isinstance(raw_list, list) and len(raw_list) == 1 and
          isinstance(raw_list[0], list)):
        raw_list = raw_list[0]
  
      # Convert json into artifact and validate.
      valid_artifacts = []
      for artifact_dict in raw_list:
        # In this case we are feeding parameters directly from potentially
        # untrusted yaml/json to our RDFValue class. However, safe_load ensures
        # these are all primitive types as long as there is no other
        # deserialization involved, and we are passing these into protobuf
        # primitive types.
        try:
          artifact_value = rdf_artifacts.Artifact(**artifact_dict)
          valid_artifacts.append(artifact_value)
        except (TypeError, AttributeError, type_info.TypeValueError) as e:
          name = artifact_dict.get("name")
          raise rdf_artifacts.ArtifactDefinitionError(
              name, "invalid definition", cause=e)
  
      return valid_artifacts