plexus.linting.rules module

Domain-specific validation rules for YAML DSL linter.

Provides a flexible rule engine for implementing custom validation logic.

class plexus.linting.rules.AllowedValuesRule(field_path: str, allowed_values: List[Any], rule_id: str | None = None)

Bases: ValidationRule

Rule that validates field values are from allowed set.

Initialize the allowed values rule.

Args:

field_path: Dot-separated path to the field allowed_values: List of allowed values rule_id: Optional custom rule ID

__init__(field_path: str, allowed_values: List[Any], rule_id: str | None = None)

Initialize the allowed values rule.

Args:

field_path: Dot-separated path to the field allowed_values: List of allowed values rule_id: Optional custom rule ID

validate(data: Dict[str, Any]) List[LintMessage]

Validate the data against this rule.

Args:

data: Parsed YAML data to validate

Returns:

List of LintMessage objects for any violations

class plexus.linting.rules.ConfidenceConfigurationRule

Bases: ValidationRule

Rule that validates confidence configuration requirements.

__init__()
validate(data: Dict[str, Any]) List[LintMessage]

Validate the data against this rule.

Args:

data: Parsed YAML data to validate

Returns:

List of LintMessage objects for any violations

class plexus.linting.rules.RequiredFieldRule(field_path: str, rule_id: str | None = None)

Bases: ValidationRule

Rule that validates required fields exist.

Initialize the required field rule.

Args:

field_path: Dot-separated path to the required field (e.g., ‘config.name’) rule_id: Optional custom rule ID

__init__(field_path: str, rule_id: str | None = None)

Initialize the required field rule.

Args:

field_path: Dot-separated path to the required field (e.g., ‘config.name’) rule_id: Optional custom rule ID

validate(data: Dict[str, Any]) List[LintMessage]

Validate the data against this rule.

Args:

data: Parsed YAML data to validate

Returns:

List of LintMessage objects for any violations

class plexus.linting.rules.RuleEngine(rules: List[ValidationRule])

Bases: object

Engine for running validation rules against YAML data.

Initialize the rule engine.

Args:

rules: List of validation rules to apply

__init__(rules: List[ValidationRule])

Initialize the rule engine.

Args:

rules: List of validation rules to apply

validate(data: Dict[str, Any]) List[LintMessage]

Run all rules against the provided data.

Args:

data: Parsed YAML data to validate

Returns:

List of all LintMessage objects from rule violations

class plexus.linting.rules.TypeValidationRule(field_path: str, expected_type: type, rule_id: str | None = None)

Bases: ValidationRule

Rule that validates field types.

Initialize the type validation rule.

Args:

field_path: Dot-separated path to the field expected_type: Expected Python type rule_id: Optional custom rule ID

__init__(field_path: str, expected_type: type, rule_id: str | None = None)

Initialize the type validation rule.

Args:

field_path: Dot-separated path to the field expected_type: Expected Python type rule_id: Optional custom rule ID

validate(data: Dict[str, Any]) List[LintMessage]

Validate the data against this rule.

Args:

data: Parsed YAML data to validate

Returns:

List of LintMessage objects for any violations

class plexus.linting.rules.ValidationRule(rule_id: str, description: str, severity: str = 'error')

Bases: ABC

Abstract base class for validation rules.

__init__(rule_id: str, description: str, severity: str = 'error') None
description: str
rule_id: str
severity: str = 'error'
abstractmethod validate(data: Dict[str, Any]) List[LintMessage]

Validate the data against this rule.

Args:

data: Parsed YAML data to validate

Returns:

List of LintMessage objects for any violations