Blog Trac Lyrics for music

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)

Закомментировал эту строку, и — О, чудо! - всё заработало как надо. Быстрая проверка базовых возможностей шелла показала, что никаких новых багов не появилось. “Ура!” — воскликнул я, и баг-репорт устремился.

Add post to: Delicious Reddit Slashdot Digg Technorati Google
(already: 3) Comment post

Comments

23.07.2009 11:34 Dixon

Баг-репорт — это хорошо! Вот только не понятно это пофиксили или нет? Если да — то в какой версии? у меня вроде последняя версия 0.9.1 а проблема на месте…

23.07.2009 13:36 Всеволод Соловьёв

Этой версии уже очень много времени :) А баг они вроде ещё не пофиксили и особо не собираются, потому что не понимают, из-за чего он происходит.

23.07.2009 13:40 Dixon

Понятно :( Еще одно доказательство, что идеального в мире ничего нет :(

Хотя странно — на мой взгляд это мега серьезный баг который делает эту программу не пригодной для использования во сногих случаях…

23.07.2009 13:48 Всеволод Соловьёв

Ну там есть одно решение даже лучше, чем моё, и работает вроде во всех случаях. Может они его всё-таки будут использовать.

23.07.2009 15:26 Andy

Кажется, всё застряло на том, что разработчики хотят тестов к патчам, а как писать к этому тесты — никто не знает.

Comment form for «IPython unicode bug»

Required. 30 chars of fewer.

Required.

Comment post