Причесать вывод CLI: формат предупреждений и бэкенд в шапке транскрипта #7

Open
opened 2026-08-12 12:52:17 +03:00 by ddmitry · 0 comments
Owner

Что сделать

Привести в порядок два места пользовательского вывода. Оба существовали и раньше, но после смены авто-профиля на ONNX их видит большинство пользователей, а не только те, кто задавал --device вручную.

1. Предупреждения печатаются служебным форматом Python.

warnings.warn выводит вместе с текстом путь к файлу, номер строки и саму строку кода. Для CLI это выглядит как обломок трейсбека:

C:\...\backends\onnx_asr.py:214: UserWarning: Язык 'en' не поддерживается моделью
'gigaam-v3-e2e-rnnt' (поддерживаются: ru). Результат может быть некорректным. ...
  self._warn_if_language_unsupported(language)

Так выводятся все пять предупреждений проекта: несовместимый язык (backends/onnx_asr.py), неизвестное расширение файла (utils.py), неизвестные ключи конфига (config.py) и два предупреждения о переходе с GPU на CPU (transcriber.py).

Механизм менять не нужно: warnings.warn остаётся точкой вызова, потому что он же используется в тестах через pytest.warns. Достаточно, чтобы CLI устанавливал собственный warnings.showwarning и печатал предупреждения через rich-консоль одной строкой, без пути и исходного кода.

2. В шапке транскрипта ONNX-бэкенд подписан как CPU.

_format_device_info в cli.py знает про CUDA и OpenVINO, а всё остальное сводит к CPU. Транскрипт, сделанный через ONNX, и транскрипт, сделанный через faster-whisper на CPU, в шапке неразличимы, хотя это разные движки с разным качеством. Бэкенд косвенно опознаётся по имени модели, но это догадка, а не запись.

Критерии приёмки

[ ] Предупреждения CLI печатаются без пути к файлу, номера строки и строки исходного кода; текст самих сообщений не меняется.
[ ] Предупреждение видно и во время работы rich-спиннера, и в батч-режиме.
[ ] Поведение библиотечного кода не меняется: warnings.warn остаётся, существующие тесты с pytest.warns продолжают работать.
[ ] В шапке транскрипта ONNX отличается от faster-whisper CPU.
[ ] Автоматические проверки покрывают формат вывода предупреждения и обозначение устройства для всех бэкендов.
[ ] Затронутые примеры шапки в README и PRD обновлены.

Вне задачи

Переход на logging, изменение текстов самих предупреждений по существу, перестройка остальной шапки транскрипта.

Границы коммитов

  1. Рендер предупреждений в CLI.
  2. Обозначение бэкенда в шапке транскрипта и правка примеров в документации.

Заблокировано

Ничем. Источник: наблюдения при контрольном прогоне ветки feature/4-openvino-2026-3 (PR #6).

## Что сделать Привести в порядок два места пользовательского вывода. Оба существовали и раньше, но после смены авто-профиля на ONNX их видит большинство пользователей, а не только те, кто задавал `--device` вручную. **1. Предупреждения печатаются служебным форматом Python.** `warnings.warn` выводит вместе с текстом путь к файлу, номер строки и саму строку кода. Для CLI это выглядит как обломок трейсбека: ``` C:\...\backends\onnx_asr.py:214: UserWarning: Язык 'en' не поддерживается моделью 'gigaam-v3-e2e-rnnt' (поддерживаются: ru). Результат может быть некорректным. ... self._warn_if_language_unsupported(language) ``` Так выводятся все пять предупреждений проекта: несовместимый язык (`backends/onnx_asr.py`), неизвестное расширение файла (`utils.py`), неизвестные ключи конфига (`config.py`) и два предупреждения о переходе с GPU на CPU (`transcriber.py`). Механизм менять не нужно: `warnings.warn` остаётся точкой вызова, потому что он же используется в тестах через `pytest.warns`. Достаточно, чтобы CLI устанавливал собственный `warnings.showwarning` и печатал предупреждения через `rich`-консоль одной строкой, без пути и исходного кода. **2. В шапке транскрипта ONNX-бэкенд подписан как `CPU`.** `_format_device_info` в `cli.py` знает про CUDA и OpenVINO, а всё остальное сводит к `CPU`. Транскрипт, сделанный через ONNX, и транскрипт, сделанный через faster-whisper на CPU, в шапке неразличимы, хотя это разные движки с разным качеством. Бэкенд косвенно опознаётся по имени модели, но это догадка, а не запись. ## Критерии приёмки [ ] Предупреждения CLI печатаются без пути к файлу, номера строки и строки исходного кода; текст самих сообщений не меняется. [ ] Предупреждение видно и во время работы rich-спиннера, и в батч-режиме. [ ] Поведение библиотечного кода не меняется: `warnings.warn` остаётся, существующие тесты с `pytest.warns` продолжают работать. [ ] В шапке транскрипта ONNX отличается от faster-whisper CPU. [ ] Автоматические проверки покрывают формат вывода предупреждения и обозначение устройства для всех бэкендов. [ ] Затронутые примеры шапки в README и PRD обновлены. ## Вне задачи Переход на `logging`, изменение текстов самих предупреждений по существу, перестройка остальной шапки транскрипта. ## Границы коммитов 1. Рендер предупреждений в CLI. 2. Обозначение бэкенда в шапке транскрипта и правка примеров в документации. ## Заблокировано Ничем. Источник: наблюдения при контрольном прогоне ветки `feature/4-openvino-2026-3` (PR #6).
ddmitry added the ready-for-agent label 2026-08-12 12:52:17 +03:00
Sign in to join this conversation.