Changelog#
The format is based on Keep a Changelog.
[Unreleased]#
Added#
CommandPythonEnvcan also execute any tools available in the Python environment (in.venv/bin), not just modules.-m bfabric_app_runner.commands.command_python_envprovides an experimental CLI to run arbitrary commands analogously to the app runner.Automatically save links to workunits without specifying extra IDs.
Changed#
Dispatch action detects, when the script modifies
workunit_definition.ymlwhich should not happen anymore, and notifies the user restoring the original file. The app continues without an error.
[0.3.0] - 2025-08-26#
Added#
Add
workflow_template_step_idfield toBfabricAppSpecto specify template step to register workunits under automatically.Dispatch action checks if a workflow template step is specified and registers the workunit under it automatically.
Changed#
Generic dispatch functionality will not override existing
workunit_definition.ymlfiles anymore.Update
bfabricdependency to 1.13.33.
[0.2.1] - 2025-07-22#
Fixed#
Makefile avoids redundant dispatch on every target.
[0.2.0] - 2025-07-15#
This release consolidates various commands in bfabric-app-runner streamlining the user experience.
It also brings an improved Makefile which should obsolete the manual installation of bfabric-app-runner providing
the user with the configured version by default.
Removed#
Removed experimental
bfabric-app-runner deploy build-app-zipcommand and associated app.zip functionality. This functionality has been superseded by the more robustCommandPythonEnvapproach for Python environment management.Removed
bfabric-app-runner appcommand (covered bybfabric-app-runner runandbfabric-app-runner preparenow).Removed
bfabric-app-runner chunkcommand (covered bybfabric-app-runner actionnow).Removed module path support for app specification.
CommandPythonEnvis cleaner than the workflow this tried to enable.The app related commands do not support
AppVersioninputs anymore. Instead, you should always specify aAppSpecfile.
Changed#
bfabric-app-runner prepare workunitdoes not accept module refs anymore and will resolve the app spec path.bfabric-app-runner prepare workunit --force-app-versionto force a specific app version for the workunit.Old
bfabric-app-runner app runandbfabric-app-runner app dispatchuse the new makefile function from cmd_prepare.
Added#
copierbased template/demo application for development and end-to-end testing of bfabric-app-runner.Added
ResolvedDirectorytype to represent directories resolved from resource archives.Added
BfabricResourceArchiveSpecto specify input archives which should be extracted (and select which files are needed).Validation logic has been added for
ResolvedDirectoryandBfabricResourceArchiveSpec. In particular aResolvedDirectorymay never overlap with aResolvedFileorResolvedStaticFilepath.Using
uv toolthe Makefile will provide the correct version of the app runner when called. To opt-out of this behavior, one can setUSE_EXTERNAL_RUNNER=truefor the makefile.
[0.1.2] - 2025-07-08#
Changed#
CommandPythonEnvwithrefresh=Truenow will create a separate environment to avoid breaking apps which are already using a particular Python environment without locking it.
[0.1.1] - 2025-07-07#
Changed#
CommandPythonEnvcomputes the hash more carefully.
[0.1.0] - 2025-06-27#
Added#
Command type
python_envfor commands which require a provisioned Python environment.
Changed#
Command implementation is separated from command definition for cleaner implementation.
New submitter requires
BFABRICPY_CONFIG_ENVandXDG_CACHE_HOMEto be set.Update
bfabricdependency to 1.13.28.
[0.0.23] - 2025-06-02#
Added#
bfabric_app_runner.bfabric_integration.slurmand associated packages.Command
bfabric-app-runner run workunitto run the whole app end-to-end for a workunit.
Removed#
AppVersion does not have a
submitterfield anymore.Some old submitter related functionality is deleted.
[0.0.22] - 2025-05-21#
Added#
Apps can now be referred to by module path rather than just file paths. This is going to be a primary building block to very simple package-based deployment of apps.
The
static_fileinput spec type has been integrated properly.Missing integration for
fileinput spec type has been added.The workunit makefile now directly shows how to use the GitHub app runner version instead, which is sometimes required while debugging.
CommandExecallows prepending paths toPATHand setting environment variables and is less ambiguous thanshell.bfabric-app-runner actioninterface which standardizes the various actions of running app steps.bfabric-app-runner prepare workunitto prepare a workunit execution and sets up aapp_env.ymlandMakefile.bfabric-app-runner deploy build-app-zipexperimental command to build an app zip file which can be deployed, for a particular Python application.
Changed#
Silently interpolate_config_strings log messages.
Update
bfabricdependency to 1.13.27.App versions do not always require a version key as it will default to “latest”, but only one version can have a particular version key per app definition.
Fixed#
Use most recent cyclopts version again, i.e. issue 168 is fixed.
Compatibility with pandera 0.24.0 was restored.
[0.0.21] - 2025-03-27#
Added#
workunitcan now be interpolated in config files.SubmittersSpecto define a slurm submitter.
Changed#
Submitter params in app definition, use key
paramsrather thanconfigto be more explicit.
Fixed#
Temporary workaround for https://github.com/fgcz/bfabricPy/issues/168.
[0.0.20] - 2025-03-25#
Changed#
Input staging is now more efficient for large numbers of similar input types, by batching the transformation into resolved operations.
Fixed#
workunit.mkcorrectly chooses betweenapp_version.ymlandapp_definition.ymldepending on availabilityMultiple inputs with the same output filename, will yield an error now.
File timestamps will not be modified anymore, if the file is already up-to-date.
Added#
SaveLinkSpecto save a B-Fabric link e.g. to a workunit.
Removed#
file_scpspec has been removed, one should usefileinstead (FileSpec)A lot of the old input handling code has been removed, it should not cause any problems, but mentioning this in case it shows up after the release.
[0.0.19] - 2025-02-28#
Added#
dispatch_resource_flowoutput table allows null filename--force-storageis available in more commands now
Changed#
The
workunit.mkMakefile now specifies Python 3.13 in the uv venv, so it is more reliable.
[0.0.18] - 2025-02-25#
Added#
static_yamlinput type to write parameters etc.dispatch.dispatch_resource_flowimplements a generic solution for dispatching resource flow workunits without having to perform entity look up in many cases yourself.App Definition now supports omitting the collect step.
Changed#
BfabricResourceSpecdefaults to file basename vs resource name, if no name is specified.
[0.0.17] - 2025-02-19#
Fixed#
Update
bfabricto 1.13.22 for dataset fix.
[0.0.16] - 2025-02-19#
Added#
Implement
--force-storageto pass a yaml to a forced storage instead of the real one.A Makefile will be created in the app folder for easier interaction with the app-runner (it uses uv and PyPI).
Changed#
CopyResourceSpec.update_existing now defaults to
if_exists.Resolve workunit_ref to absolute path if it is a Path instance for CLI.
[0.0.15] - 2025-02-06#
Added#
New input type
filewhich replacesfile_scpand preserves timestamps whenever possible and allows to create symlinks instead of copying the file, as needed.BfabricOrderFastaSpec.requiredwhich allows specifying whether the order fasta is required or not
Changed#
Better error when app version is not found.
Fixed#
Config: Log messages are shown by default again.
[0.0.14] - 2025-01-30#
Fixed#
Correctly consume bfabricPy from PyPI.
[0.0.13] - 2025-01-28#
Added#
WorkunitDefinition.registration.workunit_namefield.
[0.0.12] - 2025-01-22#
Added#
New input type
bfabric_order_fastawhich will place an order fasta file to the specified path, or create an empty file if there is no order fasta available.--filterflag has been added toinputs prepareandinputs cleancommands.The
app-runner appcommands now support passing aAppVersionyaml file instead of just aAppSpecyaml file.
[0.0.11] - 2025-01-16#
Added#
New input type
BfabricAnnotationSpec.For now, it only supports one type of annotation, which is
"resource_sample".
[0.0.10] - 2025-01-15#
Added#
FileScpSpecto copy a file from a remote server to the local filesystem, without using B-Fabric information.CommandDocker.hostnameso it won’t have to be passed bycustom_argsin the future.DispatchSingleDatasetFlowdispatch a workunit in dataset-flow which consists of only one execution unit.DispatchSingleResourceFlowdispatch a workunit in resource-flow which consists of only one execution unit.
[0.0.9] - 2025-01-09#
Added#
App specs can now define multiple versions in one file. (AppSpec = Collection of app versions and other information.)
To avoid boilerplate, mako templates can be used inside of strings.
Apps will resolve the version to use based on the
application_versionfield.Validation functionality for the new app specification has been added.
App versions can define a submitter, however this information is not yet used.
[0.0.8] - 2025-01-08#
Added#
Register single file command:
bfabric-app-runner outputs register-single-fileImplement copy resource
UpdateExisting.IF_EXISTSandUpdateExisting.REQUIREDsupport.The following fields have been added to
WorkunitRegistrationDefinition:storage_idstorage_output_folderapplication_idapplication_name
Changed#
App-runner code related to output staging accepts workunit-definition file like the other steps.
[0.0.7] - 2024-11-22#
Fixed#
When executing
app runthe experimental entity cache created incorrect behavior. The caching is temporarily disabled, until the issue is resolved.
[0.0.6] - 2024-11-14#
First version with CD that will trigger the deployment automatically.
Fixed#
Output spec was broken since
Pathwas moved intoif TYPE_CHECKINGblock.
Changed#
The app spec is now strict and will fail parsing if there are any unknown fields in the spec. It is better to find this type of error early.
Log messages originating in
app_runnershould be printed now, they were previously muted (unintentionally).
[0.0.5] - 2024-11-11#
Added#
CommandDocker.mac_address: allows to specify the MAC address of the container.CommandDocker.custom_args: allows to specify arbitrary additional arguments to thedocker runcommand.
[0.0.4] - 2024-11-11#
Added#
MountOptions.writeablelist for writeable mount points.
[0.0.3] - 2024-10-24#
Added#
Specify environment variables for docker container in spec.
[0.0.2] - 2024-10-23#
Added#
App spec supports changing docker entrypoint.
bfabric-app-runner inputs checkto validate the local files
Fixed#
bfabric-app-runner inputs listdoes not fail anymore if resources have no “name” field value.