code: def dump_io_meta(self) -> dict:
      from fate.components.core.spec.artifact import IOArtifactMeta
  
      return IOArtifactMeta(
          inputs=IOArtifactMeta.InputMeta(
              data={
                  k: v.artifact.dict()
                  for k, v in self.input_data.items()
                  if v.artifact is not None
              },
              model={
                  k: v.artifact.dict()
                  for k, v in self.input_model.items()
                  if v.artifact is not None
              },
          ),
          outputs=IOArtifactMeta.OutputMeta(
              data={
                  k: v.artifact.dict()
                  for k, v in self.output_data.items()
                  if v.artifact is not None
              },
              model={
                  k: v.artifact.dict()
                  for k, v in self.output_model.items()
                  if v.artifact is not None
              },
              metric={
                  k: v.artifact.dict()
                  for k, v in self.output_metric.items()
                  if v.artifact is not None
              },
          ),
      ).dict(exclude_none=True)
  
imports: import logging
  import typing
  from typing import Dict, Generic, List, Optional, Union
  from fate.components.core.essential import Role, Stage
  from .artifacts._base_type import AT, MM, ArtifactDescribe, M, _ArtifactsType, _ArtifactType
label_desc: Use image node_id 7 for calling the ComponentExecutionIO obj's underlying member method code with example usage: obj.dump_io_meta() and returns: IOArtifactMeta