IPython unicode bug
Давным давно в такой замечательной штуке, как IPython существует баг с юникодным вводом. Вместо хорошего и ожидаемого поведения:
>>> u'абвгд'
u'\u0430\u0431\u0432\u0433\u0434'
Этот баг подкладывает нам нехорошую бяку (системная кодировка — UTF-8):
>>> u'абвгд'
u'\xd0\xb0\xd0\xb1\xd0\xb2\xd0\xb3\xd0\xb4'
Пообсуждали мы это дело с Сергеем Кищенко недельки две тому назад, а тут у меня внезапно появилось желание исправить эту ошибку.
Краткий экскурс в исходники показал, что всё плохо — функции по нескольку экранов кода уж никак не позволяют быстро (а также сухо и комфортно) разобраться в происходящем. По-быстрому обмозговав проблему, я поискал по всем исходникам IPython’а строку stdin.encoding. В результате нашёл парочку raw_input().decode() и чудное:
source=source.encode(self.stdin_encoding)
Закомментировал эту строку, и — О, чудо! - всё заработало как надо. Быстрая проверка базовых возможностей шелла показала, что никаких новых багов не появилось. “Ура!” — воскликнул я, и баг-репорт устремился.
Comments
Баг-репорт — это хорошо! Вот только не понятно это пофиксили или нет? Если да — то в какой версии? у меня вроде последняя версия 0.9.1 а проблема на месте…
Этой версии уже очень много времени :) А баг они вроде ещё не пофиксили и особо не собираются, потому что не понимают, из-за чего он происходит.
Понятно :( Еще одно доказательство, что идеального в мире ничего нет :(
Хотя странно — на мой взгляд это мега серьезный баг который делает эту программу не пригодной для использования во сногих случаях…
Ну там есть одно решение даже лучше, чем моё, и работает вроде во всех случаях. Может они его всё-таки будут использовать.
Кажется, всё застряло на том, что разработчики хотят тестов к патчам, а как писать к этому тесты — никто не знает.
Как быстро там баги правят? А то вон в django по 2 года висят.
Так же правят, то есть никак.
Comment form for «IPython unicode bug»