docs: def ToPrimitiveDict(self):
      """Handle dict generation specifically for Artifacts."""
      artifact_dict = super(Artifact, self).ToPrimitiveDict()
  
      # ArtifactName is not JSON-serializable, so convert name to string.
      artifact_dict["name"] = utils.SmartStr(self.name)
  
      # Convert proto enum to simple strings so they get rendered in the GUI
      # properly
      for source in artifact_dict["sources"]:
        if "type" in source:
          source["type"] = str(source["type"])
        if "key_value_pairs" in source["attributes"]:
          outarray = []
          for indict in source["attributes"]["key_value_pairs"]:
            outarray.append(dict(indict))
          source["attributes"]["key_value_pairs"] = outarray
  
      # Repeated fields that have not been set should return as empty lists.
      for field in self.required_repeated_fields:
        if field not in artifact_dict:
          artifact_dict[field] = []
      return artifact_dict