We are currently working on porting this changelog to the specifications in Keep a Changelog. This project adheres to Semantic Versioning.
-
First-class job
setup/teardownlifecycle onBashJob(serial/tmux) andSlurmJob.setupis a gating precondition (shares the preamble'sPREAMBLE_OKgating; a failing setup skips the command and marks the job failed).teardownalways runs after the command — on success, failure, and SIGINT/SIGTERM — provided setup succeeded. It is rendered as a per-job, signal-safe cleanup (a scoped subshell trap for serial/tmux so it cannot leak across the many jobs in one script; an in---wraptrap for slurm). The main command's exit code stays authoritative (a teardown failure does not flip the job result). A hard SIGKILL cannot be trapped — an out-of-band reclaim (e.g. a lease TTL) is the only backstop for that. This is the job-level try/finally for bracketing an external resource (e.g. acquire/release a GPU lease). -
Backend execution tests (
tests/test_backend_execution.py) that actually run a queue — simple DAGs and thesetup/teardownlifecycle — on the serial backend, and on tmux/slurm when those backends report themselves available (skipped otherwise).
- A list-valued
preamblepassed toSlurmJob(e.g.submit(..., preamble=['a', 'b'])) no longer crashes script construction; list steps are now flattened into the&&chain instead of being appended as a single element. - Corrected the inverted
is_available()guard in twoSlurmQueue--rundoctests (they readif not self.is_available(): self.run(), which would only submit when slurm was unavailable).
- generalized the monitor so it can be launched in an independent process and reports errors better.
- New
monitor='hybrid'mode (now the default for tmux and slurmrun()): renders the live status table inline in the current shell and also spawns a detachedcmd_queue monitortmux session. Press[a]from the inline UI to attach (orswitch-clientwhen already inside tmux),[q]to stop watching while the queue keeps running. The side session is killed when the inline monitor exits.
monitorkwarg accepted values are now'hybrid' | 'inline' | 'tmux' | 'none'.'inline'reverts to its original pure-current-shell meaning; the'hybrid'mode covers the inline+tmux combination. The default is'hybrid', so a no-argrun()now spawns an attachable tmux side session whenever tmux is available.
- cwd will now handle failures if the directory doesnt exist in the bash queue
- general improvements to bash script construction with per-job preamble commands
- slurm now correctly respects header/preamble commands
- deprecate
header_commandsforpreamble - Dropped support for 3.8 and 3.9
- Transition from stubs to type annotations.
- Issue with slurm 21.x
- Experimental feature to automatically handle activating virtual environments, currently disabled by default set
--virtualenv_cmd=autoto use with cmdqueue boilerplate scripts. - Experimental airflow backend now has minimal functionality.
- Add initial support for monitoring passed and failed jobs in slurm.
- Fixed compatibility issues with Slurm v23
- Slurmify helper script
- Better slurm support
- fix
SlurmQueue.is_availablewith slurm version 19.x
- Add "gpus" as a CLI option
- Made pint an optional requirement
- Drop support for 3.6 and 3.7
- Fixed issue with single-argv commands in the bash interface
- CLI Boilerplate run-queue can now pass kwargs to the run method.
- Change the CLI to be modal
- Added experimental
vertical_chainsargument to draw-network-text
- Add yes argument to CLI
- Added more options to the serial queue
runmethod.
- allow workaround gres issue with slurm by explicitly specifying it.
- consolidated print commands code, all backends use the same logic now.
- Issue with
slurm_options
- the
cli_boilerplatesubmodule for help writing consistent scriptconfig + cmdqueue CLIs - util yaml
- Support for more sbatch options in slurm backend
- Bugs in slurm backend
- New experimental CLI-queue feature. Create a pipeline in bash using the CLI. Very basic atm.
- The log option to submit now default to False (due to non-obvious tee issues)
- The serial queue now correctly reorders jobs into a topological order when necessary.
- Experimental CLI to help cleanup dangling tmux jobs
- Deprecate
rprintin favor ofprint_commands. - Deprecate
use_richinprint_commandsin favor ofstyle='rich'.
- Tweaked text output
- Demo in the readme with better record demo scripts
- new
other_session_handlerarg to run, which can be ask, kill, ignore, or auto.
- Textual monitor will now restart if you decide not to quit.
- tmux queue is condensed when size=1
- UnknownBackendError and DuplicateJobError
- Add
tagsproperty to Jobs andexclude_tagstorprint.
-
The kill-other-session logic now only asks to kill sessions with the same name.
-
The serial / tmux queue now output stdout/stderr of each process to a log file and write a status indicating when a command has started to run.
-
Slurm is available check now looks to see if any node exists that is not down.
- Bug in serial queue when a dependency was None
- Improved textual monitor for tmux queue
- Keep track of skipped jobs in tmux / serial queue
- The tmux queue can now clean up other existing sessions if you start fresh
- Basic airflow queue.
- Job dependencies can now be given by name.
- Bug where serial queue would execute jobs if any dependency passed.
- Minor dependency issues
- Initial version