Repository navigation
zavod #54: Рукописные уроки 113–120 - #41
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 26c115eb31
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| _term( | ||
| "async-gather-timeouts", | ||
| "Сколько результатов вернёт gather для трёх задач?", | ||
| ["3", "три", "3 результата"], | ||
| "`gather` возвращает по результату на каждую задачу, даже если часть " | ||
| "из них завершилась таймаутом.", |
There was a problem hiding this comment.
Model timeout failures before claiming gather returns results
When any child operation raises an uncaught TimeoutError, asyncio.gather propagates that exception instead of returning one result per task; wrapping the whole gather in a timeout can also cancel the group. Therefore the answer “3” and its explanation teach incorrect behavior unless the lesson first specifies that every child catches its own timeout and returns a sentinel value.
Useful? React with 👍 / 👎.
| _code( | ||
| "capstones-notes-app", | ||
| "Напиши `search_notes(notes, query)`: верни заголовки заметок, у " | ||
| "которых `query` встречается в заголовке или тексте без учёта " | ||
| "регистра. Порядок заметок сохраняется.", | ||
| "def search_notes(notes, query):\n # найди подходящие заголовки\n pass\n", |
There was a problem hiding this comment.
Preserve JSON persistence in the notes capstone
This replacement reduces lesson 118 to an in-memory text search, while the course definition in app/extended_curriculum.py:1343-1348 specifies “Файл, JSON и поиск” and serialization. Because handwritten lessons replace the generated theory and questions wholesale, learners now complete this capstone without reading, writing, or serializing notes; the exercise should retain a file/JSON persistence requirement.
Useful? React with 👍 / 👎.
| _code( | ||
| "capstones-api-client", | ||
| "Напиши `fetch_all(get_page)`: вызывай `get_page(1)`, `get_page(2)` и " | ||
| "так далее, пока страница не пустая, и склей все элементы в один " | ||
| "список.", | ||
| "def fetch_all(get_page):\n # собери все страницы\n pass\n", |
There was a problem hiding this comment.
Restore the API-client contract instead of reteaching pagination
The course definition for lesson 119 requires requests, errors, and caching (app/extended_curriculum.py:1351-1357), but this exercise only iterates over pages supplied by a callback. Pagination is already the dedicated http-pagination lesson, so the handwritten override removes all practice of successful/error responses and cache behavior from the API-client capstone.
Useful? React with 👍 / 👎.
| _code( | ||
| "capstones-release", | ||
| "Напиши `release_notes(changes)`: собери строки `'feat: …'` в раздел " | ||
| "«Новое:», а `'fix: …'` — в «Исправлено:». Каждый пункт начинается с " | ||
| "`'- '`, пустой раздел не выводится.", | ||
| "def release_notes(changes):\n # собери текст релиза\n pass\n", |
There was a problem hiding this comment.
Keep the final capstone about packaging and verification
Lesson 120 is defined in app/extended_curriculum.py:1360-1366 as the final assembly covering project structure, tests, README, installation, and launch, but this replacement turns it into a changelog-formatting function. Since the handwritten content replaces the original subtitle, theory, and questions, the course now ends without exercising any of its intended release-readiness workflow.
Useful? React with 👍 / 👎.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HdAtUFHuCYJ3tWqyvJHqGt
Рукописные уроки 113–120
Круг: 2
Критерии
Изменённые файлы
app/handwritten/lessons_async_capstones.pytests/test_handwritten_async_capstones.pyПредложения новых задач