[docs]defparse_log_files(database_manager:DatabaseManager,scheduler:BaseScheduler,*,only_last:bool=True,)->pd.DataFrame:"""Parse the log-files and convert it to a `~pandas.core.frame.DataFrame`. Parameters ---------- job_names List of job names. database_manager A `DatabaseManager` instance. scheduler A scheduler instance from `adaptive_scheduler.scheduler`. only_last Only look use the last printed status message. Returns ------- `~pandas.core.frame.DataFrame` """_queue=scheduler.queue()database_manager.update(_queue)infos=[]forentryindatabase_manager.as_dicts():log_fname=entry["log_fname"]iflog_fnameisNoneornotos.path.exists(log_fname):# noqa: PTH110continueforinfo_dictin_get_infos(log_fname,only_last=only_last):info_dict.pop("event")# this is always "current status"info_dict["timestamp"]=datetime.datetime.strptime(# noqa: DTZ007info_dict["timestamp"],"%Y-%m-%d %H:%M.%S",)info_dict["elapsed_time"]=pd.to_timedelta(info_dict["elapsed_time"])info_dict.update(entry)infos.append(info_dict)forinfo_dictininfos:info_from_queue=_queue.get(info_dict["job_id"])ifinfo_from_queueisNone:continueinfo_dict["state"]=info_from_queue["state"]info_dict["job_name"]=info_from_queue["job_name"]returnpd.DataFrame(infos)