Bamboost

Configuration

bamboost reads configuration from two sources that are merged together:

  1. A global config file at ~/.config/bamboost/config.toml
  2. A project config file — either bamboost.toml or the [tool.bamboost] table in pyproject.toml, located at the project root (the nearest parent directory that contains .git or pyproject.toml)

Project settings take precedence over global ones.

Config file format

Both files use TOML with top-level tables [options] and [index].

~/.config/bamboost/config.toml
[options]
logLevel = "WARNING"
sortTableKey = "created_at"

[index]
searchPaths = ["~/simulations", "/data/scratch/myuser"]
excludeDirs = [".git", ".venv", "__pycache__"]
pyproject.toml (project-specific)
[tool.bamboost.options]
logLevel = "DEBUG"

[tool.bamboost.index]
isolated = true
bamboost.toml (project-specific)
[options]
logLevel = "DEBUG"

[index]
isolated = true

[options] — Core options

KeyTypeDefaultDescription
mpiboolfalseEnable MPI detection. When set to true, bamboost checks for standard MPI launcher environment variables and initialises mpi4py if found.
sortTableKeystr"created_at"Default column used to sort the collection DataFrame.
sortTableOrderstr"desc"Sort order for the table: "asc" or "desc".
logLevelstr"WARNING"Log verbosity: DEBUG, INFO, WARNING, ERROR, or CRITICAL.
log_root_onlyboolfalseIf true, suppress log messages from non-root MPI ranks.
log_file_lock_severitystr"WARNING"Log level used when bamboost is waiting to acquire an HDF5 file lock.
file_lock_timeoutfloat|null60.0Seconds to wait for an HDF5 file lock before raising TimeoutError. Set to 0 to fail immediately; set to null (or a negative value) to wait indefinitely.
clipboardCommandstr|nullnullShell command used to copy text to the clipboard (e.g. "wl-copy", "xclip -sel clip", "pbcopy"). Required for bamboost yank.

[index] — Index options

KeyTypeDefaultDescription
searchPaths (alias: paths)list[str]["~"]Directories to scan when looking for bamboost collections.
excludeDirslist[str]manyDirectory names to skip during scanning (.git, venv, node_modules, …).
extendDefaultExcludeDirslist[str]|nullnullExtra directory names to add to the default exclude list without replacing it.
syncTablesbooltrueKeep the SQLite cache up to date after reads and writes.
convertArraysbooltrueDeserialise SQLite lists as numpy arrays.
databaseFileNamestr"bamboost.0.11.sqlite"Basename of the index database file (used when not in isolated mode).
isolatedboolfalseRestrict the index to the current project directory and store the database under .bamboost/.
strictLinksbooltrueRaise an error when assigning a link whose target simulation is not found in the index.
strictLinksWhenSyncingboolfalseApply strictLinks validation also during collection syncing.

Reading config at runtime

The config object is a global singleton accessible from Python:

from bamboost import config

print(config.options.logLevel)
print(config.index.searchPaths)
print(config.index.databaseFile)   # resolved Path to the active database file

You can override individual options at runtime before creating any Collection or Index objects:

from bamboost import config

config.options.logLevel = "DEBUG"
config.index.syncTables = False

Setting config.options.mpi = True at runtime will also re-trigger MPI detection immediately (if bamboost.mpi has already been imported).

Isolated mode

Setting isolated = true in your project config makes bamboost manage a project-local index database. The database is stored at .bamboost/bamboost.0.11.sqlite inside the project root, and the search paths are automatically narrowed to the project root only.

This is useful when you want to keep project data completely self-contained, for example when using bamboost as part of a reproducible research repository.

bamboost.toml
[index]
isolated = true

On this page