Updated the VerseCommentary validation regex pattern to support:
- Apostrophes in book names (e.g., "Solomon's Song")
- Verse ranges (e.g., "Genesis 1:4-5")
This brings the validator in line with other validators in the codebase
and fixes failing data validation tests.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit adds comprehensive validation for all book introduction files
in data/books/ using Pydantic models and JSON Schema.
Changes:
- Added BookIntroduction Pydantic model with nested models:
- OutlineSection: Validates book outline sections
- KeyTheme: Validates key themes with descriptions
- KeyVerse: Validates key verses with references and text
- Added validate_all_books() function to validate all 66 book files
- Added validate_book_file() helper function
- Added --books CLI flag to validate book files separately
- Generated book_introduction.schema.json JSON Schema file
- Fixed KeyVerse model field name from 'verse' to 'reference'
- Added 4 new tests to validate book directory and all 66 books
All 66 book files now validate successfully against the schema.
Test suite updated: 268 tests passing (added 4 book validation tests).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Pydantic models for all 6 main data files:
- bible_metadata.json
- word_studies.json
- study_guides.json
- verse_commentary.json
- featured_verses.json
- resource_slugs.json
- Add BookIntroduction schema for book JSON files
- Create scripts/validate_data.py:
- Validates JSON data using Pydantic models
- Can generate JSON schemas from Pydantic models
- CLI with --verbose and --generate-schemas flags
- Add test suite (tests/test_data_validation.py):
- 12 tests validating data file structure
- Parametrized tests for all data files
- Integrated into existing test suite
All validation tests pass. JSON schemas auto-generated from Pydantic models.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>