dpmcore.services.dpm_xl

Unified facade over the DPM-XL services. validate_syntax and validate_semantic wrap SyntaxService and SemanticService behind a single entry point.

DpmXlService

class dpmcore.services.dpm_xl.DpmXlService(session=None)[source]

Bases: object

One-stop facade for all DPM-XL operations.

Composes the individual services and provides convenient shortcuts for common workflows.

Parameters:

session (Optional[Session]) – An open SQLAlchemy session (optional for syntax-only operations).

__init__(session=None)[source]

Build the facade, optionally bound to a SQLAlchemy session.

Parameters:

session (Session | None)

Return type:

None

validate_syntax(expression)[source]

Validate syntax only (no DB required).

Return type:

SyntaxValidationResult

Parameters:

expression (str)

validate_semantic(expression, release_id=None, release_code=None, *, precondition_expression=None)[source]

Full semantic validation, optionally gated (requires DB).

precondition_expression is keyword-only and appended after the pre-existing arguments, so validate_semantic(expr, 5) still means release_id=5.

Return type:

SemanticValidationResult

Parameters:
  • expression (str)

  • release_id (int | None)

  • release_code (str | None)

  • precondition_expression (str | None)

get_parameters(expression, release_id=None, release_code=None)[source]

Return the parameters referenced by expression (requires DB).

Surfaces the runtime-binding contract: each referenced parameter with its declared type, set-ness and default. Returns an empty tuple when the expression references no parameters or fails validation.

Return type:

tuple[ParameterInfo, ...]

Parameters:
  • expression (str)

  • release_id (int | None)

  • release_code (str | None)