services/ui_backend_service/data/refiner/artifact_refiner.py (17 lines of code) (raw):
from .refinery import Refinery
class ArtifactRefiner(Refinery):
"""
Refiner class for postprocessing Artifact rows.
Uses Metaflow Client API to refine Artifact's actual content from Metaflow Service and Datastore.
Parameters
-----------
cache : AsyncCacheClient
An instance of a cache that implements the GetArtifacts action.
"""
def __init__(self, cache):
super().__init__(cache=cache)
def _action(self):
return self.cache_store.cache.GetArtifacts
def _record_to_action_input(self, record):
# Prefer run_id over run_number
# Prefer task_name over task_id
return "{flow_id}/{run_id}/{step_name}/{task_name}/{name}/{attempt_id}".format(
flow_id=record['flow_id'],
run_id=record.get('run_id') or record['run_number'],
step_name=record['step_name'],
task_name=record.get('task_name') or record['task_id'],
name=record['name'],
attempt_id=record['attempt_id'])
async def refine_record(self, record, values):
record['content'] = str(values)
return record