methaneのブログ

このブログに乗せているサンプルコードはすべてNYSLです。

今週の成果

builtin の compile() 関数に encoding オプションをつけた

IPythonやIDLEといったPythonPythonインタラクティブシェルは、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上でエラーで止まっていた原因を見つけて直してもらった。
ブランチ自体はできるようになったが、その過程で利用した一時ファイルを消せなくてエラーを報告していたのを今日直してパッチを登録しておいた。

qbzrのencoding-selectorをメンテナンス

しばらく放置してしまっていた、qbzrのqdiff等の画面でエンコーディングを選択できるようにする修正を、qbzr最新版にupdateした上で、merge requestを出しておいた。
コールバックの仕組みがPyQtで通常使われるsignal/slotを使ってないので蹴られるかもしれないけど、とりあえず0.15での導入を目指す。