feat: add notebooks IT translation - #18
Conversation
Translate all markdown cells to Italian for the five business question notebooks: - dropout timing - early signals - demographics vs behavior - course comparison - recommendations synthesis.
Verify that each IT notebook mirrors its EN counterpart: - same cell count - same cell types - byte-identical code cells - non-empty markdown cells - ≥80% markdown cells differ from EN.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #18 +/- ##
=======================================
Coverage 93.53% 93.53%
=======================================
Files 9 9
Lines 325 325
=======================================
Hits 304 304
Misses 21 21 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
This PR introduces Italian translations of the project’s analysis notebooks and adds automated tests to ensure the Italian versions remain structurally aligned with the English originals.
Changes:
- Add
notebooks/it/Italian counterparts for the 7 analysis notebooks. - Add pytest-based “structural parity” tests to validate EN/IT notebook alignment (cell count/types, identical code cells, translated markdown).
- Minor NB07 refactor to de-duplicate repeated “Scenario Analysis” header strings.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/test_notebooks_it.py | Adds structural parity tests for Italian notebook translations. |
| notebooks/it/01_eda_student_base.ipynb | Italian translation of notebook 01. |
| notebooks/it/02_eda_engagement_patterns.ipynb | Italian translation of notebook 02. |
| notebooks/it/03_bq1_dropout_timing.ipynb | Italian translation of notebook 03. |
| notebooks/it/04_bq2_early_signals.ipynb | Italian translation of notebook 04. |
| notebooks/it/05_bq3_demographics_vs_behavior.ipynb | Italian translation of notebook 05. |
| notebooks/it/06_bq4_course_comparison.ipynb | Italian translation of notebook 06. |
| notebooks/it/07_bq5_recommendations_synthesis.ipynb | Italian translation of notebook 07. |
| notebooks/07_bq5_recommendations_synthesis.ipynb | Introduces a shared constant for the repeated “Scenario Analysis” print header. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
zip() silently truncates when iterables differ in length. While test_same_number_of_cells catches mismatches at suite level, individual tests (code-cells-identical, markdown-cells-translated) were not self-consistent when run in isolation. Adding strict=True ensures a ValueError is raised immediately on length mismatch, making each test robust regardless of execution scope.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The glob pattern `notebooks/*.ipynb` only matched top-level notebooks, leaving `notebooks/it/*.ipynb` (and future locales) exposed to E402/E501 failures. Switch to `notebooks/**/*.ipynb` so all subdirectories are covered consistently.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Use `is_file()` instead of `exists()` in parity test to match intent more precisely (verify regular file, not just any path).
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 10 out of 10 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
No description provided.