Implementation#

In the previous sections, we explained how the framework separates configuration and logic into two distinct layers: a CheckConfig class to declare and validate parameters, and a Check class to implement the actual validation logic.

You also learned how the registry and factory work together to dynamically resolve and instantiate checks based on configuration. This plugin-based design does not only apply to built-in checks — it is intentionally built to be extensible. You can define your own custom checks in the same way, and use them declaratively via YAML, JSON, or Python dictionaries — exactly like the built-in ones.

In this section, you will learn:

  • How to write your own row-level or aggregate check

  • How to connect it to a CheckConfig class

  • How to register it using @register_check_config and load_config_module

  • How to use it via declarative configuration and the CheckFactory

Once registered, your custom check becomes a first-class citizen in the framework — fully compatible with the factory, the engine, and all standard tooling.