Problem
pyproject.toml ignores ASYNC230 (blocking calls inside async functions) for shortube/voice.py. The async _generate_with_timestamps path performs blocking file I/O, which blocks the event loop and is a latent bug for any future async caller.
Task
Rewrite the async path so no blocking calls run inside the coroutine (or drop async entirely and use a plain function run in a worker). Remove the per-file ignore and the comment in pyproject.toml.
Acceptance criteria
Files
shortube/voice.py
pyproject.toml
tests/test_voice.py
Problem
pyproject.tomlignoresASYNC230(blocking calls inside async functions) forshortube/voice.py. The async_generate_with_timestampspath performs blocking file I/O, which blocks the event loop and is a latent bug for any future async caller.Task
Rewrite the async path so no blocking calls run inside the coroutine (or drop async entirely and use a plain function run in a worker). Remove the per-file ignore and the comment in
pyproject.toml.Acceptance criteria
python -m ruff check shortube testsis clean with the per-file ignore removedtests/test_voice.pypasses unchanged (keep the publicgenerate_voiceoverAPI)Files
shortube/voice.pypyproject.tomltests/test_voice.py