LbAPCommon
Common utilities for LHCb DPA WP2 related software, including Analysis Productions workflow parsing, validation, and conversion tools.
Features
- Workflow Parsing: Parse and render Analysis Productions YAML configuration files
- DIRAC Conversion: Convert workflow definitions to DIRAC production requests
- CWL Conversion: Convert production requests to Common Workflow Language (CWL) format
- Validation & Linting: Validate workflow configurations and check for common issues
- Data Models: Pydantic v2 models for workflow and production data structures
Installation
pip install LbAPCommon
For development:
# Using pixi (recommended)
pixi install
pixi run test
# Using conda/mamba
mamba env create --file environment.yaml
conda activate lbaplocal-dev
pip install -e '.[testing]'
Usage
DIRAC Production Request Generation
Convert Analysis Productions info.yaml files to DIRAC production requests. This is the primary CLI used by the Analysis Productions system:
python -m LbAPCommon <production_name> --input info.yaml --output output.json
# With specific AP package version
python -m LbAPCommon my_production --input info.yaml --output result.json --ap-pkg-version v1r0
# Process only a specific job from the workflow
python -m LbAPCommon my_production --input info.yaml --output result.json --only-include job_name
# Dump individual YAML request files for each production
python -m LbAPCommon my_production --input info.yaml --output result.json --dump-requests
# With DIRAC server credentials
python -m LbAPCommon my_production --input info.yaml --output result.json --server-credentials user password
Arguments:
production_name- Name of the production (alphanumeric + underscore, 2-200 chars)--input- Path to theinfo.yamlworkflow definition file--output- Path for the output JSON file containing production requests--ap-pkg-version- AnalysisProductions package version (default:v999999999999)--only-include- Only process the workflow chain containing this job name--dump-requests- Also write individual.yamlfiles for each production request--server-credentials- DIRAC server credentials (username and password)
The output JSON contains:
rendered_yaml- The rendered workflow YAML after Jinja2 processingproductions- Dictionary of production requests, each containing:request- The DIRAC production request in LbAPI formatinput-dataset- Input dataset specification from Bookkeeping querydynamic_files- Auto-generated configuration filesraw-yaml- Original YAML for the jobs in this production
CWL Conversion CLI
Convert DIRAC production request YAML files to CWL workflows:
# List productions in a file
lhcb-production-yaml-to-cwl list_productions production.yaml
# Generate CWL workflow files
lhcb-production-yaml-to-cwl generate production.yaml --output-dir ./cwl-output
# Convert a specific production
lhcb-production-yaml-to-cwl generate production.yaml --production "MyProduction"
Python API
from LbAPCommon import parse_yaml, render_yaml, validate_yaml
from LbAPCommon.dirac_conversion import group_in_to_requests, step_to_production_request
from LbAPCommon.prod_request_to_cwl import fromProductionRequestYAMLToCWL
# Parse and validate workflow YAML
rendered = render_yaml(yaml_content)
jobs_data = parse_yaml(rendered, production_name, wg)
validate_yaml(jobs_data, wg, production_name)
# Group jobs into production requests
for job_names in group_in_to_requests(jobs_data):
request = step_to_production_request(
production_name, jobs_data, job_names, input_spec, ap_pkg_version
)
# Convert DIRAC output to CWL
workflow, inputs, metadata = fromProductionRequestYAMLToCWL(yaml_path)
Development
Running Tests
pixi run test # Run all tests
pixi run test-dirac # Run DIRAC conversion tests
pixi run test-cov # Run with coverage report
Updating Test Fixtures
When CWL output changes, update reference fixtures:
pixi run update-fixtures # Regenerate reference .cwl files
Code Quality
pixi run pre-commit # Run all pre-commit hooks (linting, formatting, etc.)
Documentation
Documentation goes in the LbAPDoc project.
Related Projects
- LbAPI - REST API server for Analysis Productions
- LbAPLocal - Local testing tools
- LbAPWeb - Web interface for Analysis Productions
License
GPL-3.0 - See COPYING for details.
Metadata
Release files for LbAPCommon 0.19.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lbapcommon-0.19.5.tar.gz | 535.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lbapcommon-0.19.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 716.2 kB
Release files / lbapcommon-0.19.5.tar.gz
| Download URL | lbapcommon-0.19.5.tar.gz |
|---|---|
| Size | 535.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
81a1699d8aa72e96b7c1fa0fcabedcd4a23d6ae29e9896b260b0d983a7f5ae1e
|
|
BLAKE2b-256 checksum How to use checksums |
bafeaf53542d7341967d6a2d90dced143fe16644b64f6369b60bce5ab2a5618b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / lbapcommon-0.19.5-py3-none-any.whl
| Download URL | lbapcommon-0.19.5-py3-none-any.whl |
|---|---|
| Size | 181.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
482b7c64238fb6862abc048df2b5bb12482434d9da56416bea1e8464f6665fb8
|
|
BLAKE2b-256 checksum How to use checksums |
006f0c2b794be93d848093c112e55dff3a9e8cc973276ca66f432a57b605a623
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|