plexus.linting package
YAML DSL Linter - Python Implementation
Provides comprehensive linting for YAML-based domain-specific languages, including syntax validation and domain-specific rule checking.
- class plexus.linting.ConfidenceConfigurationRule
Bases:
ValidationRuleRule 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.LintMessage(level: str, code: str, title: str, message: str, suggestion: str | None = None, line: int | None = None, column: int | None = None, doc_url: str | None = None, doc_section: str | None = None, context: ~typing.Dict[str, ~typing.Any] = <factory>)
Bases:
objectRepresents a single linting issue or success message.
- __init__(level: str, code: str, title: str, message: str, suggestion: str | None = None, line: int | None = None, column: int | None = None, doc_url: str | None = None, doc_section: str | None = None, context: ~typing.Dict[str, ~typing.Any] = <factory>) None
- code: str
- column: int | None = None
- context: Dict[str, Any]
- doc_section: str | None = None
- doc_url: str | None = None
- level: str
- line: int | None = None
- message: str
- suggestion: str | None = None
- title: str
- to_dict() Dict[str, Any]
Convert to dictionary for JSON serialization.
- class plexus.linting.LintResult(is_valid: bool, success_message: str | None = None, messages: ~typing.List[~plexus.linting.yaml_linter.LintMessage] = <factory>, error_count: int = 0, warning_count: int = 0, info_count: int = 0, parsed_content: ~typing.Dict[str, ~typing.Any] | None = None)
Bases:
objectComplete linting results for a YAML document.
- __init__(is_valid: bool, success_message: str | None = None, messages: ~typing.List[~plexus.linting.yaml_linter.LintMessage] = <factory>, error_count: int = 0, warning_count: int = 0, info_count: int = 0, parsed_content: ~typing.Dict[str, ~typing.Any] | None = None) None
- add_message(message: LintMessage) None
Add a message and update counters.
- error_count: int = 0
- info_count: int = 0
- is_valid: bool
- messages: List[LintMessage]
- parsed_content: Dict[str, Any] | None = None
- success_message: str | None = None
- to_dict() Dict[str, Any]
Convert to dictionary for JSON serialization.
- to_json() str
Convert to JSON string.
- warning_count: int = 0
- class plexus.linting.RuleEngine(rules: List[ValidationRule])
Bases:
objectEngine 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.SchemaValidator(schema: Dict[str, Any] | None = None)
Bases:
objectValidates YAML data against JSON Schema.
Initialize the schema validator.
- Args:
schema: JSON schema to validate against
- __init__(schema: Dict[str, Any] | None = None)
Initialize the schema validator.
- Args:
schema: JSON schema to validate against
- validate(data: Dict[str, Any]) List[LintMessage]
Validate data against the schema.
- Args:
data: Parsed YAML data to validate
- Returns:
List of LintMessage objects for schema violations
- class plexus.linting.ValidationRule(rule_id: str, description: str, severity: str = 'error')
Bases:
ABCAbstract 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
- class plexus.linting.YamlLinter(domain_schema: Dict[str, Any] | None = None, custom_rules: List[Any] | None = None, doc_base_url: str = 'https://docs.plexus.ai/yaml-dsl')
Bases:
objectMain YAML DSL linter that validates both syntax and domain-specific rules.
This class provides comprehensive linting for YAML-based configuration files, including syntax validation using ruamel.yaml and domain-specific rule validation.
Initialize the YAML linter.
- Args:
domain_schema: JSON schema defining the domain-specific structure custom_rules: List of custom validation rules doc_base_url: Base URL for documentation links
- __init__(domain_schema: Dict[str, Any] | None = None, custom_rules: List[Any] | None = None, doc_base_url: str = 'https://docs.plexus.ai/yaml-dsl')
Initialize the YAML linter.
- Args:
domain_schema: JSON schema defining the domain-specific structure custom_rules: List of custom validation rules doc_base_url: Base URL for documentation links
- lint(yaml_content: str, source_path: str | None = None) LintResult
Lint a YAML document for syntax and domain-specific issues.
- Args:
yaml_content: The YAML content to lint source_path: Optional path to the source file (for better error messages)
- Returns:
LintResult containing all validation results
- lint_file(file_path: str | Path) LintResult
Lint a YAML file.
- Args:
file_path: Path to the YAML file
- Returns:
LintResult containing all validation results
Submodules
- plexus.linting.data_source_rules module
- plexus.linting.rules module
- plexus.linting.schema_validator module
- plexus.linting.schemas module
- plexus.linting.yaml_linter module