def resolve(
        self,
        metadata_handler: metadata.Metadata,
        source_channels: Dict[Text, types.Channel],
    ) -> base_resolver.ResolveResult:
        artifacts_dict = {}
        resolve_state_dict = {}
        for k, c in source_channels.items():
            previous_artifacts = sorted(metadata_handler.get_artifacts_by_type(
                c.type_name),
                                        key=lambda m: m.id,
                                        reverse=True)
            if len(previous_artifacts) >= self._desired_num_of_artifact:
                artifacts_dict[k] = [
                    _generate_tfx_artifact(a, c.type)
                    for a in previous_artifacts[:self._desired_num_of_artifact]
                ]
                resolve_state_dict[k] = True
            else:
                artifacts_dict[k] = [
                    _generate_tfx_artifact(a, c.type)
                    for a in previous_artifacts
                ]
                resolve_state_dict[k] = False

        return base_resolver.ResolveResult(
            per_key_resolve_result=artifacts_dict,
            per_key_resolve_state=resolve_state_dict)
Beispiel #2
0
  def resolve(
      self,
      metadata_handler: metadata.Metadata,
      source_channels: Dict[Text, types.Channel],
  ) -> base_resolver.ResolveResult:
    artifacts_dict = {}
    for k, c in source_channels.items():
      previous_artifacts = metadata_handler.get_artifacts_by_type(c.type_name)
      if previous_artifacts:
        latest_mlmd_artifact = max(previous_artifacts, key=lambda m: m.id)
        result_artifact = types.Artifact(type_name=c.type_name)
        result_artifact.set_artifact(latest_mlmd_artifact)
        artifacts_dict[k] = ([result_artifact], True)
      else:
        artifacts_dict[k] = ([], False)

    return base_resolver.ResolveResult(per_key_resolve_result=artifacts_dict)