/app/app/adapters/eodhd.py:28:from app.adapters.validation import ValidationIssue, ValidationReport, validate_price_bar /app/app/adapters/eodhd.py:86: the good rows are returned. `self.last_price_validation` holds the report.""" /app/app/adapters/eodhd.py:88: report = ValidationReport() /app/app/adapters/eodhd.py:91: clean = validate_price_bar( /app/app/adapters/eodhd.py:106: self.last_price_validation = report /app/app/adapters/eodhd.py:132: `self.last_universe_validation` holds the report.""" /app/app/adapters/eodhd.py:134: report = ValidationReport() /app/app/adapters/eodhd.py:144: self.last_universe_validation = report /app/app/adapters/fmp.py:20:from app.adapters.validation import ValidationReport, validate_line_items, validate_price_bar /app/app/adapters/fmp.py:115: `self.last_statement_validation` holds the report for the most recent call.""" /app/app/adapters/fmp.py:117: report = ValidationReport() /app/app/adapters/fmp.py:126: line_items=validate_line_items( /app/app/adapters/fmp.py:130: self.last_statement_validation = report /app/app/adapters/fmp.py:145: row, not the batch, and record why. `self.last_price_validation` holds the report.""" /app/app/adapters/fmp.py:148: report = ValidationReport() /app/app/adapters/fmp.py:151: clean = validate_price_bar( /app/app/adapters/fmp.py:166: self.last_price_validation = report /app/app/adapters/validation.py:28:rows AND a `ValidationReport` it can log, count, or refuse to proceed on. That is strictly better /app/app/adapters/validation.py:67:class ValidationReport: /app/app/adapters/validation.py:107: value: Any, field_name: str, report: Optional[ValidationReport] = None, /app/app/adapters/validation.py:145:def validate_price_bar( /app/app/adapters/validation.py:146: raw: dict, report: ValidationReport, date_key: str = "date", row_key: Optional[str] = None, /app/app/adapters/validation.py:213:def validate_line_items( /app/app/adapters/validation.py:214: line_items: dict, report: ValidationReport, row_key: Optional[str] = None,