curriculum: add actionable assertion messages to generators checks - #152
Ali-Nawaz-devt wants to merge 6 commits into
Conversation
…h 2) (abhiksark#139) * curriculum: add assertion message to checks/oop_advanced/oop_advanced7.py * curriculum: add assertion message to checks/oop_advanced/oop_advanced8.py * curriculum: add assertion message to checks/oop_advanced/oop_advanced9.py * curriculum: add assertion message to checks/oop_advanced/oop_advanced10.py * curriculum: add assertion message to checks/oop_advanced/oop_advanced11.py * curriculum: add assertion message to checks/oop_advanced/oop_advanced12.py * fix(curriculum): normalize advanced OOP checks --------- Co-authored-by: Abhik Sarkar <abhiksark@gmail.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (34)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📜 Recent review details🧰 Additional context used📓 Path-based instructions (6)Maintain Python 3.9 compatibility.📄 CodeRabbit inference engine (AGENTS.md) Files:
Preserve learner-edited exercises during workspace updates.📄 CodeRabbit inference engine (AGENTS.md) Files:
Before editing `docs-site/**` or `pythonlings/docs/**`, read the corresponding nested `AGENTS.md` in that directory.📄 CodeRabbit inference engine (CLAUDE.md) Files:
Checks must use bare assertions with actionable, beginner-facing messages.📄 CodeRabbit inference engine (AGENTS.md) Files:
Before editing `docs-site/**`, also read `docs-site/AGENTS.md`.📄 CodeRabbit inference engine (AGENTS.md) Files:
This guide applies to `docs-site/**`.📄 CodeRabbit inference engine (docs-site/AGENTS.md) Files:
🪛 Ruff (0.16.5)checks/pathlib/pathlib3.py[error] 3-3: Undefined name (F821) [error] 4-4: Undefined name (F821) [error] 6-6: Undefined name (F821) [error] 7-7: Undefined name (F821) checks/enums/enums2.py[error] 1-1: Undefined name (F821) [error] 3-3: Undefined name (F821) [error] 5-5: Undefined name (F821) [error] 7-7: Undefined name (F821) checks/itertools/itertools6.py[error] 1-1: Undefined name (F821) [error] 3-3: Undefined name (F821) checks/oop_advanced/oop_advanced12.py[error] 2-2: Undefined name (F821) checks/itertools/itertools7.py[error] 1-1: Undefined name (F821) [error] 3-3: Undefined name (F821) checks/enums/enums6.py[error] 1-1: Undefined name (F821) [error] 4-4: Undefined name (F821) checks/itertools/itertools5.py[error] 1-1: Undefined name (F821) [error] 3-3: Undefined name (F821) checks/generators/generators10.py[error] 2-2: Undefined name (F821) [error] 3-3: Undefined name (F821) [error] 4-4: Undefined name (F821) [error] 5-5: Undefined name (F821) [error] 6-6: Undefined name (F821) checks/pathlib/pathlib1.py[error] 3-3: Undefined name (F821) [error] 4-4: Undefined name (F821) [error] 6-6: Undefined name (F821) [error] 7-7: Undefined name (F821) checks/enums/enums3.py[error] 1-1: Undefined name (F821) [error] 2-2: Undefined name (F821) [error] 4-4: Undefined name (F821) [error] 5-5: Undefined name (F821) checks/generators/generators1.py[error] 2-2: Undefined name (F821) [error] 3-3: Undefined name (F821) [error] 4-4: Undefined name (F821) checks/oop_advanced/oop_advanced10.py[error] 1-1: Undefined name (F821) [error] 1-1: Undefined name (F821) [error] 2-2: Undefined name (F821) checks/itertools/itertools4.py[error] 1-1: Undefined name (F821) [error] 6-6: Undefined name (F821) checks/pathlib/pathlib6.py[error] 3-3: Undefined name (F821) [error] 4-4: Undefined name (F821) [error] 6-6: Undefined name (F821) [error] 7-7: Undefined name (F821) checks/enums/enums1.py[error] 1-1: Undefined name (F821) [error] 2-2: Undefined name (F821) [error] 4-4: Undefined name (F821) [error] 5-5: Undefined name (F821) [error] 7-7: Undefined name (F821) [error] 7-7: Undefined name (F821) [error] 8-8: Undefined name (F821) checks/itertools/itertools8.py[error] 1-1: Undefined name (F821) [error] 3-3: Undefined name (F821) [error] 5-5: Undefined name (F821) [error] 7-7: Undefined name (F821) checks/pathlib/pathlib4.py[error] 3-3: Undefined name (F821) [error] 5-5: Undefined name (F821) checks/pathlib/pathlib2.py[error] 3-3: Undefined name (F821) [error] 4-4: Undefined name (F821) checks/generators/generators7.py[error] 4-4: Undefined name (F821) [error] 8-8: Undefined name (F821) checks/generators/generators3.py[error] 2-2: Undefined name (F821) [error] 3-3: Undefined name (F821) [error] 4-4: Undefined name (F821) checks/generators/generators9.py[error] 2-2: Undefined name (F821) [error] 3-3: Undefined name (F821) [error] 4-4: Undefined name (F821) [error] 5-5: Undefined name (F821) checks/enums/enums4.py[error] 1-1: Undefined name (F821) [error] 2-2: Undefined name (F821) checks/oop_advanced/oop_advanced9.py[error] 1-1: Undefined name (F821) [error] 2-2: Undefined name (F821) [error] 3-3: Undefined name (F821) checks/oop_advanced/oop_advanced7.py[error] 1-1: Undefined name (F821) [error] 4-4: Undefined name (F821) checks/pathlib/pathlib5.py[error] 3-3: Undefined name (F821) [error] 4-4: Undefined name (F821) checks/itertools/itertools3.py[error] 1-1: Undefined name (F821) [error] 8-8: Undefined name (F821) checks/enums/enums5.py[error] 1-1: Undefined name (F821) [error] 1-1: Undefined name (F821) [error] 4-4: Undefined name (F821) [error] 4-4: Undefined name (F821) [error] 7-7: Undefined name (F821) [error] 7-7: Undefined name (F821) checks/generators/generators8.py[error] 2-2: Undefined name (F821) [error] 3-3: Undefined name (F821) [error] 4-4: Undefined name (F821) [error] 5-5: Undefined name (F821) checks/generators/generators6.py[error] 2-2: Undefined name (F821) [error] 3-3: Undefined name (F821) [error] 5-5: Undefined name (F821) [error] 5-5: Undefined name (F821) 🔇 Additional comments (34)
📝 WalkthroughWalkthroughThe change adds descriptive failure messages to assertions across curriculum checks. It preserves assertion conditions and success output. Documentation now explains automatic checks in the built-in editor and manual checks for external editors. ChangesAssertion diagnostics
Editor workflow documentation
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~15 minutes Change: Other · Severity of issue fixed: Low Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 3❌ Failed checks (2 warnings, 1 inconclusive)
✅ Passed checks (4 passed)
Full details: Out of Scope Changes checkExplanation The changes include unrelated enum, itertools, OOP, pathlib, and documentation files. The stated objectives limit the pull request to seven generator check files and explicitly exclude documentation and other curriculum files. Full details: Linked Issues checkExplanation The generator changes address the 24 targeted bare assertions in the seven files named by [ Full details: Out of Scope Changes checkExplanation The pull request changes files outside the scope of [
✨ Finishing Touches🧪 Generate unit tests (beta)
Warning Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. I twitch my nose at messages bright, Comment |
Closes #90
Closes #91
Summary
Adds actionable assertion messages to all 24 currently bare assertions across the 7 generators check files (14 from #90, 10 from #91). Preserves every assertion predicate, execution order, helper statement, and success print. Two asserts (
next(c) == 0,next(c) == 1in generators9.py) use static messages rather than echoing the actual value, sinceCounteris a stateful iterator and re-callingnext(c)inside the message would advance it and corrupt the rest of the test sequence.Validation
python -m pytest tests/integration/test_solution_verify.py -q— 1 passedpython -m pytest -q— 215 passedpythonlings --root tests/fixtures/passing_curriculum verify— passing1, passing2 passedSummary by CodeRabbit
Tests
Documentation