exlab_wizard.config.test_bootstrap#

Starter config.yaml bootstrap for the -test sandbox.

Shared by the tray’s --test flag (exlab_wizard.tray.main) and the standalone dev seeder (exlab_wizard.dev.seed). Lives in the light config package so the dev command can reuse it without importing the heavy tray package (whose __init__ pulls in pystray and the server stack).

Functions

bootstrap_test_config(config_path, *, ...)

Tray --test bootstrap: write the starter config, optionally seed samples.

write_starter_test_config(config_path)

Write a starter test config.yaml if one does not already exist.

exlab_wizard.config.test_bootstrap.bootstrap_test_config(config_path, *, include_samples)[source]#

Tray --test bootstrap: write the starter config, optionally seed samples.

No-op when a config already exists – the sandbox is persistent, so a repeat --test boot must neither overwrite the config nor re-seed (and never wipes). On a fresh sandbox, writes the starter config and, when include_samples (--add-test-samples), expands the declarative SAMPLES tree through the shared generator in non-destructive mode.

Parameters:
  • config_path (Path)

  • include_samples (bool)

Return type:

None

exlab_wizard.config.test_bootstrap.write_starter_test_config(config_path)[source]#

Write a starter test config.yaml if one does not already exist.

Pins paths.app_root to an app/ folder under the test sandbox (config_path.parent) – rather than the real Documents-folder default – so the whole working tree stays contained in the suffixed sandbox and the wizard runs without manual Settings entry. The LIMS endpoint and email are intentionally left blank so the operator still wires that integration through the live Settings UI. Equipment is left empty – sample equipment is seeded separately by exlab_wizard.sample_data.generate_samples().

Idempotent: an existing config is never overwritten. The sandbox is persistent across launches and the operator resets it by deleting the suffixed directory.

Parameters:

config_path (Path)

Return type:

None