今週の成果
builtin の compile() 関数に encoding オプションをつけた
IPythonやIDLEといったPython製Pythonインタラクティブシェルは、compile()関数を使ってユーザーが入力したコード片をコンパイルするんだけど、そのコード片をutf-8のコンテキストでコンパイルしていた。
例えば、 compile("u'\x82\xa0'", "", "single") した結果を exec すると、 u"あ" ではなく u"\u0082\u00a0" という扱いになってしまう。逆に compile(u"'あ'", "", "single") だと、出てくるバイト列は 'あ' をutf-8にエンコードしたものになる。
この対策をするために、従来だと compile("#coding:cp932\nu'\x82\xa0'", "", "single") みたいなあまり美しくない対策が必要だった。この対策をIPythonやIDLEに報告したけど、取り込まれていない。
昨日、compile("u'\x82\xa0'", "", "single", encoding='cp932') のようにできるようにするパッチをPythonのバグトラッカに登録しておいた。これが取り込まれなかったら、IDLEやIPython側で上記の対応を導入するようにpushする。
bzr-gitがwindows上でgit:からブランチできるようになった
Windows上でエラーで止まっていた原因を見つけて直してもらった。
ブランチ自体はできるようになったが、その過程で利用した一時ファイルを消せなくてエラーを報告していたのを今日直してパッチを登録しておいた。