Source code for pysqa.wrapper.gent

from typing import Union

import pandas

from pysqa.wrapper.slurm import SlurmCommands
from pysqa.wrapper.slurm import template as template_slurm

template = template_slurm


[docs] class GentCommands(SlurmCommands):
[docs] @staticmethod def get_job_id_from_output(queue_submit_output: str) -> int: """ Extracts the job ID from the queue submit output. Args: queue_submit_output (str): The output of the queue submit command. Returns: int: The job ID. """ return int(queue_submit_output.splitlines()[-1].rstrip().lstrip().split(";")[0])
[docs] @staticmethod def get_queue_from_output(queue_submit_output: str) -> str: """ Extracts the queue name from the queue submit output. Args: queue_submit_output (str): The output of the queue submit command. Returns: str: The queue name. """ return str(queue_submit_output.splitlines()[-1].rstrip().lstrip().split(";")[1])
[docs] @staticmethod def convert_queue_status(queue_status_output: str) -> Union[pandas.DataFrame, None]: """ Converts the queue status output into a pandas DataFrame. Args: queue_status_output (str): The output of the queue status command. Returns: pandas.DataFrame: The converted queue status. """ qstat = queue_status_output.splitlines() queue = qstat[0].split(":")[1].strip() if len(qstat) <= 1: # first row contains cluster name, check if there are jobs return None line_split_lst = [line.split("|") for line in qstat[1:]] job_id_lst, user_lst, status_lst, job_name_lst, queue_lst = zip( *[ (int(jobid), user, status.lower(), jobname, queue) for jobid, user, status, jobname in line_split_lst ] ) return pandas.DataFrame( { "cluster": queue_lst, "jobid": job_id_lst, "user": user_lst, "jobname": job_name_lst, "status": status_lst, } )
[docs] @staticmethod def dependencies(dependency_list: list[str]) -> list[str]: """ Returns the dependencies for the job. Args: dependency_list (list[str]): The list of job dependencies. Returns: list[str]: The dependencies for the job. Raises: NotImplementedError: If dependency_list is not None. """ if dependency_list is not None: raise NotImplementedError() else: return []