Source code for linkml.validator.plugins.validation_plugin
from abc import ABC, abstractmethod
from typing import Iterator
from linkml.validator.report import ValidationResult
from linkml.validator.validation_context import ValidationContext
[docs]class ValidationPlugin(ABC):
"""Abstract base class for validation plugins.
Subclasses must implement a ``process`` method.
"""
def pre_process(self, context: ValidationContext) -> None:
"""A hook that will be called before instances are processed.
:param context: A `ValidationContext` instance which provides
access to the schema, target class, and artifacts generated
from the schema
"""
pass
def post_process(self, context: ValidationContext) -> None:
"""A hook that will be called after instances are processed.
:param context: A `ValidationContext` instance which provides
access to the schema, target class, and artifacts generated
from the schema
"""
pass
@abstractmethod
def process(self, instance: dict, context: ValidationContext) -> Iterator[ValidationResult]:
"""Lazily yield validation results for an instance according to
the validation context.
:param instance: The instance to validate
:param context: A `ValidationContext` instance which provides
access to the schema, target class, and artifacts generated
from the schema
:return: Iterator over validation results
:rtype: Iterator[ValidationResult]
"""
pass