capcat.core.source_system.validation_engine
File: Application/capcat/core/source_system/validation_engine.py
Description
Enhanced configuration validation engine for the source system. Provides comprehensive validation rules and automated testing.
Classes
ValidationResult
Result of a validation check.
Methods
init
def __init__(self, is_valid: bool, message: str, severity: str = 'error', category: str = 'general')
Parameters:
selfis_valid(bool)message(str)severity(str) optionalcategory(str) optional
str
def __str__(self)
Parameters:
self
ValidationEngine
Comprehensive validation engine for source configurations.
Methods
init
def __init__(self)
Parameters:
self
validate_config
def validate_config(self, config: SourceConfig, deep_validation: bool = False) -> List[ValidationResult]
Validate a source configuration.
Args: config: Source configuration to validate deep_validation: Whether to perform deep validation (network requests)
Returns: List of validation results
Parameters:
selfconfig(SourceConfig)deep_validation(bool) optional
Returns: List[ValidationResult]
_validate_basic_fields
def _validate_basic_fields(self, config: SourceConfig) -> List[ValidationResult]
Validate basic required fields.
Parameters:
selfconfig(SourceConfig)
Returns: List[ValidationResult]
_validate_url_format
def _validate_url_format(self, config: SourceConfig) -> List[ValidationResult]
Validate URL format and structure.
Parameters:
selfconfig(SourceConfig)
Returns: List[ValidationResult]
_validate_timing_settings
def _validate_timing_settings(self, config: SourceConfig) -> List[ValidationResult]
Validate timeout and rate limiting settings.
Parameters:
selfconfig(SourceConfig)
Returns: List[ValidationResult]
_is_config_driven_source
def _is_config_driven_source(self, config: SourceConfig) -> bool
Check if this is a config-driven source.
Parameters:
selfconfig(SourceConfig)
Returns: bool
_validate_config_driven_source
def _validate_config_driven_source(self, config: SourceConfig) -> List[ValidationResult]
Validate config-driven source specific settings.
Parameters:
selfconfig(SourceConfig)
Returns: List[ValidationResult]
_validate_custom_source
def _validate_custom_source(self, config: SourceConfig) -> List[ValidationResult]
Validate custom source configuration.
Parameters:
selfconfig(SourceConfig)
Returns: List[ValidationResult]
_validate_css_selectors
def _validate_css_selectors(self, selectors: List[str], field_name: str) -> List[ValidationResult]
Validate CSS selector syntax.
Parameters:
selfselectors(List[str])field_name(str)
Returns: List[ValidationResult]
_validate_network_connectivity
def _validate_network_connectivity(self, config: SourceConfig) -> List[ValidationResult]
Validate network connectivity to the source.
Parameters:
selfconfig(SourceConfig)
Returns: List[ValidationResult]
⚠️ High complexity: 11
_validate_selectors
def _validate_selectors(self, config: SourceConfig) -> List[ValidationResult]
Validate selectors against actual page content.
Parameters:
selfconfig(SourceConfig)
Returns: List[ValidationResult]
⚠️ High complexity: 16
_validate_content_selectors_on_page
def _validate_content_selectors_on_page(self, url: str, content_selectors: List[str]) -> List[ValidationResult]
Validate content selectors on a specific article page.
Parameters:
selfurl(str)content_selectors(List[str])
Returns: List[ValidationResult]
validate_all_sources
def validate_all_sources(self, source_configs: Dict[str, SourceConfig], deep_validation: bool = False) -> Dict[str, List[ValidationResult]]
Validate all source configurations.
Args: source_configs: Dictionary of source configurations deep_validation: Whether to perform deep validation
Returns: Dictionary mapping source names to validation results
Parameters:
selfsource_configs(Dict[str, SourceConfig])deep_validation(bool) optional
Returns: Dict[str, List[ValidationResult]]
generate_validation_report
def generate_validation_report(self, validation_results: Dict[str, List[ValidationResult]]) -> str
Generate a human-readable validation report.
Parameters:
selfvalidation_results(Dict[str, List[ValidationResult]])
Returns: str
⚠️ High complexity: 21