Ваше ожидание неверно, согласно официальной документации :
Переносит один абзац в текст (строку), поэтому каждая строка имеет длину не более ширины символов. Возвращает список выходных строк без заключительных символов новой строки.
[...]
Текст предпочтительно переносится в пробелах и сразу после дефиса в переносимых словах; только тогда длинные слова будут разбиты при необходимости, если только TextWrapper.break_long_words
не установлено в false.
Ваш ожидаемый вывод буквально прерывается после 32 символов, тогда как фактический вывод разбивается на сегменты по 30, Длина 8 и 27 символов - прерывается только на пробельные символы в исходной строке.
Второй сегмент намного короче, чем остальные, потому что первая строка плюс следующий цикл без пробелов "key2":
длиннее, чем 32 символа, и этот короткий плюс плюс следующая фраза также длиннее 32 символов. Только когда нет абсолютно никакой возможности разбить пробел или дефис, произойдет разрыв в середине пробела без пробелов.