def sync_summaries(last_check: Optional[datetime], run_uuid: str, client: RunClient): events_path = CONTEXT_MOUNT_RUN_EVENTS_FORMAT.format(run_uuid) # check if there's a path to sync if not os.path.exists(events_path): return # crawl dirs summaries = [] last_values = {} connection = get_artifacts_connection() connection_name = connection.name if connection else None for events_kind in get_dirs_under_path(events_path): _summaries, _last_values = sync_events_summaries( events_path=events_path, events_kind=events_kind, last_check=last_check, connection_name=connection_name, ) summaries += _summaries last_values.update(_last_values) if summaries: client.log_artifact_lineage(summaries) if last_values: client.log_outputs(**last_values)
def handle_iteration( client: RunClient, suggestions: List[Dict] = None, ): if not suggestions: logger.warning("No new suggestions were created") return try: logger.info("Generated new {} suggestions".format(len(suggestions))) client.log_outputs(suggestions=[sanitize_dict(s) for s in suggestions], async_req=False) except Exception as e: exp = "Polyaxon tuner failed logging iteration definition: {}\n{}".format( repr(e), traceback.format_exc()) client.log_failed(reason="PolyaxonTunerIteration", message=exp) logger.warning(e)