Skip to content

Job types

Immutable request values, durable records, retry policy, and scheduler queue rows.

Memory dataclass

Memory(bytes)

Immutable memory quantity stored as bytes.

parse classmethod

parse(s)

Parse a human-readable string like '8GB', '512MB', '1024'.

to_slurm

to_slurm()

Format for SLURM --mem (e.g. '8G', '512M').

to_pbs

to_pbs()

Format for PBS -l mem (e.g. '8gb', '512mb').

to_lsf_kb

to_lsf_kb()

Format for LSF -M (KB integer).

Duration dataclass

Duration(seconds)

Immutable time duration stored as seconds.

parse classmethod

parse(s)

Parse '2h30m', '01:30:00', '40:00:00', '1-00:00:00', '90m', or plain seconds.

to_slurm

to_slurm()

Format for SLURM --time (HH:MM:SS or D-HH:MM:SS).

to_pbs

to_pbs()

Format for PBS -l walltime (HH:MM:SS).

to_lsf_minutes

to_lsf_minutes()

Format for LSF -W (integer minutes, rounded up).

Script dataclass

Script(_variant, _text, _path)

Immutable script reference — either inline text or a file path.

inline classmethod

inline(text)

Create a script from inline text content.

path classmethod

path(path)

Create a script from an existing file path.

JobResources dataclass

JobResources(cpu_count=None, memory=None, gpu_count=None, gpu_type=None, time_limit=None)

Hardware requirements for job execution.

JobScheduling dataclass

JobScheduling(partition=None, account=None, priority=None, dependency=None, dependencies=(), node_count=None, exclusive_node=False, array_spec=None, email=None, qos=None, reservation=None)

Scheduler-level parameters.

JobExecution dataclass

JobExecution(env=None, cwd=None, job_name=None, output_file=None, error_file=None)

Execution environment parameters.

DependencyRef dataclass

DependencyRef(job_id, condition='after_success')

Logical dependency on another molq job.

DependencyCondition module-attribute

DependencyCondition = Literal['after_started', 'after', 'after_success', 'after_failure']

JobRecord dataclass

JobRecord(job_id, cluster_name, scheduler, state, scheduler_job_id=None, submitted_at=None, started_at=None, finished_at=None, exit_code=None, failure_reason=None, cwd='', command_type='', command_display='', metadata=dict(), root_job_id='', attempt=1, previous_attempt_job_id=None, retry_group_id=None, profile_name=None, cleaned_at=None)

Immutable snapshot of a job's full lifecycle state.

JobDependency dataclass

JobDependency(job_id, dependency_job_id, dependency_type, scheduler_dependency)

Persisted dependency edge between two molq jobs.

StatusTransition dataclass

StatusTransition(job_id, old_state, new_state, timestamp, reason=None)

Immutable persisted lifecycle transition for a job.

SubmitorDefaults dataclass

SubmitorDefaults(resources=None, scheduling=None, execution=None)

Default resource, scheduling, and execution parameters for a Submitor.

RetryBackoff dataclass

RetryBackoff(mode='exponential', initial_seconds=5.0, maximum_seconds=300.0, factor=2.0)

Retry delay policy.

RetryPolicy dataclass

RetryPolicy(max_attempts=1, retry_on_states=(JobState.FAILED, JobState.TIMED_OUT), retry_on_exit_codes=None, backoff=RetryBackoff())

Retry policy applied by molq after terminal failures.

RetentionPolicy dataclass

RetentionPolicy(keep_job_dirs_for_days=30, keep_terminal_records_for_days=90, keep_failed_job_dirs=True)

Retention policy for job artifacts and terminal records.

RememberedAllocation dataclass

RememberedAllocation(partition, account, qos, reservation, label, last_used, use_count)

A scheduling config previously used to submit to a cluster.

Persisted by molq on each successful submission so callers (the molq CLI, molexp's submit UI) can offer "configs you've used before" without re-querying the cluster. Identity is the (partition, account, qos, reservation) tuple; use_count / last_used track usage.

JobState

Bases: StrEnum

Terminal-aware job state.

QueueEntry dataclass

QueueEntry(scheduler_job_id, name=None, user=None, state=JobState.QUEUED, raw_state='', partition=None, submit_time=None, start_time=None)

A row from the scheduler's current queue.

Independent of molq's own JobRecord: this represents jobs as the scheduler sees them, including ones submitted outside molq.

DependencyEdge dataclass

DependencyEdge(condition, scheduler_job_id)

One "wait for that job, under this condition" edge.

condition is a canonical molq DependencyConditionafter, after_success, after_failure, after_started — and scheduler_job_id is the upstream job's id as the backend knows it. Translating the pair into submit syntax belongs to the backend, since only it knows whether that reads afterok:123, done(123), or something else entirely.

SchedulerCapabilities dataclass

SchedulerCapabilities(supports_cwd=False, supports_env=False, supports_output_file=False, supports_error_file=False, supports_job_name=False, supports_cpu_count=False, supports_memory=False, supports_gpu_count=False, supports_gpu_type=False, supports_time_limit=False, supports_partition=False, supports_account=False, supports_priority=False, supports_dependency=False, supports_node_count=False, supports_exclusive_node=False, supports_array_jobs=False, supports_email=False, supports_qos=False, supports_reservation=False)

Declared scheduler support matrix used for submit-time validation.

DependencyPreview dataclass

DependencyPreview(job_id, upstream_total=0, upstream_satisfied=0, upstream=(), downstream_total=0, downstream=())

Depth-1 dependency preview for a single job.

DependencyPreviewItem dataclass

DependencyPreviewItem(job_id, dependency_type, relation_state, job_state, command_display='', scheduler_dependency=None)

Dependency relation enriched with related job state.