Tool to locally run tests for AnalysisProductions
Project description
LbAPLocal
LbAPLocal is the Python library and CLI for running offline tests for the LHCb AnalysisProductions framework.
Installation
LbAPLocal is installed by default with the LHCb environment on lxplus. For users on external clusters, source the LHCb environment from CVMFS:
source /cvmfs/lhcb.cern.ch/lib/LbEnv
Usage
Usage: lb-ap [OPTIONS] COMMAND [ARGS]...
CLI for LHCb AnalysisProductions
Options:
-C, --change-dir PATH Change to this directory before running
-b, --branch TEXT Branch or tag to use
-v, --verbose Enable verbose output
--version Show version and exit
--help Show this message and exit
Commands:
versions List available tags of the Analysis Productions repository
clone Clone the AnalysisProductions repository
checkout Check out a branch or tag
list List available productions and jobs
test Test a job using CWL workflow
parse-log Analyse a Gaudi log file and show a summary with advice
make-reproducer Create a minimal reproducer from a failed grid job
cwl CWL-based workflow commands (generate, run, validate, test)
Testing a job
The primary command. Generates a CWL workflow from the production configuration and executes it locally:
lb-ap test MyAnalysis My2016MagDownJob
Key options:
lb-ap test MyAnalysis MyJob -i /path/to/input.dst # Use a specific input file
lb-ap test MyAnalysis MyJob -n 100 # Slice input to 100 events
lb-ap test MyAnalysis MyJob --n-lfns 5 # Test with 5 input LFNs
lb-ap test MyAnalysis MyJob --pick-smallest-lfn # Use smallest LFN for speed
lb-ap test MyAnalysis MyJob --download # Download input files locally
lb-ap test MyAnalysis MyJob --pretty # Real-time TUI monitoring
lb-ap test MyAnalysis MyJob --dry-run # Validate without executing
lb-ap test MyAnalysis MyJob -o ./output # Custom output directory
If arguments are omitted, an interactive wizard guides you through the setup.
The -n <N> flag slices the input file to N events using GaudiConf.mergeDST:dst (remote read, local write). After slicing, a reuse hint is printed so subsequent runs can skip the slicing step by passing the sliced file with -i.
Custom input files
When testing a job that depends on another job, pass the upstream output with -i:
lb-ap test MyAnalysis MyDownstreamJob -i /path/to/upstream_output.dst
The input can be a local file path or an LFN (LFN:/lhcb/...).
Analysing log files
Parse a Gaudi log file for FATAL, ERROR, and WARNING messages with contextual advice:
lb-ap parse-log DaVinci_00012345_00006789_1.log
Log analysis is also integrated into lb-ap test — after a test completes (success or failure), any Gaudi log files in the output are automatically analysed and a summary is displayed.
Listing productions and jobs
lb-ap list # List available productions
lb-ap list MyAnalysis # List jobs in a production
lb-ap list --tree # Tree view of all productions and jobs
Repository management
lb-ap clone --protocol ssh # Clone AnalysisProductions
lb-ap checkout v1r4315 # Check out a version
lb-ap versions MyAnalysis # List available versions
Creating a minimal reproducer
From a failed grid job, create a self-contained reproducer package:
lb-ap make-reproducer 12345678 # From DIRAC job ID
lb-ap make-reproducer --job-dir ./downloaded_job_dir # From local job directory
Development
Platform: pixi targets linux-64 only (requires CERN CVMFS and DIRAC).
# On linux-64 (lxplus or CI):
pixi install
pixi run pytest # Run tests
pixi run lb-ap # Run the CLI
# Linting (any platform):
ruff check src/ tests/ # Lint
ruff check --fix src/ # Auto-fix
ruff format src/ tests/ # Format
Legacy CLI
The original Click-based CLI is still available as lb-ap-legacy for backward compatibility but is deprecated.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lbaplocal-0.10.1.tar.gz.
File metadata
- Download URL: lbaplocal-0.10.1.tar.gz
- Upload date:
- Size: 411.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fe74ba91fed8b8aed64e27e4977ee8a2f1ebaf8b26eb703f0733a5b78771962
|
|
| MD5 |
1538a4bd9f63471a37ff39c690721669
|
|
| BLAKE2b-256 |
1b57ee6540f9427379cda335f3ba4d3beeab1420bb30f75d8c92ab66ce514ca8
|
File details
Details for the file lbaplocal-0.10.1-py3-none-any.whl.
File metadata
- Download URL: lbaplocal-0.10.1-py3-none-any.whl
- Upload date:
- Size: 123.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9e9019f9aa4e4441cff27049410c1205ef0572475e25b832ae2f6d38e855363
|
|
| MD5 |
13037282cc1e63cf51972a4203bba567
|
|
| BLAKE2b-256 |
08aa24944da15b065986a9c08686fe16fba3ce06acf6420d36bfe0d7118b6159
|