Source code for pysqa.base.abstract
from abc import ABC, abstractmethod
from typing import Optional, Union
import pandas
from jinja2 import Template
[docs]
class QueueAdapterAbstractClass(ABC):
@abstractmethod
def submit_job(
self,
queue: Optional[str] = None,
job_name: str = "pysqa",
working_directory: Optional[str] = None,
cores: int = 1,
memory_max: Optional[Union[int, str]] = None,
run_time_max: Optional[int] = None,
dependency_list: Optional[list[int]] = None,
command: str = "",
submission_template: Optional[Union[str, Template]] = None,
**kwargs,
) -> Union[int, None]:
pass
@abstractmethod
def enable_reservation(self, process_id: int):
pass
@abstractmethod
def delete_job(self, process_id: int) -> Union[str, None]:
pass
[docs]
@abstractmethod
def get_queue_status(self, user: Optional[str] = None) -> pandas.DataFrame:
"""
Get the status of the queue.
Args:
user (str): The user to filter the queue status for.
Returns:
pandas.DataFrame: The queue status.
"""
pass
[docs]
@abstractmethod
def get_status_of_my_jobs(self) -> pandas.DataFrame:
"""
Get the status of the user's jobs.
Returns:
pandas.DataFrame: The status of the user's jobs.
"""
pass
[docs]
@abstractmethod
def get_status_of_job(self, process_id: int) -> Union[str, None]:
"""
Get the status of a job.
Args:
process_id (int): The process ID.
Returns:
str: The status of the job.results_lst.append(df_selected.values[0])
"""
pass
[docs]
@abstractmethod
def get_status_of_jobs(self, process_id_lst: list[int]) -> list[str]:
"""
Get the status of multiple jobs.
Args:
process_id_lst (list[int]): List of process IDs.
Returns:
list[str]: List of job statuses.
"""
pass