2010年9月25日土曜日

Python初心者が3.xに手を出したらhttplib2でハマった理由

Dive Into Python 3 日本語版」でお勧めされていたhttplib2モジュールを試してみたら、

  1. Python 3で追加されたhttp.client.HTTPExceptionではなく、既に存在しないhttplib.HTTPException を捕捉しようとしている箇所でNameErrorが発生する。
  2. HTTPConnectionWithTimeoutクラスのconnect()メソッドでUnboundLocalErrorが発生する。

という2つの問題が発生した。


本家サイトではそれぞれIssue 79Issue 80で報告されている問題と同じ問題のようだが、currentでも完全には修正されていなかったので、currentに対するpatchを作ってみた。


Issue 79の対策は、Python 3のsocket.create_connection()がtimeout属性に対応済みなので、そちらを使うようにしてみたが、timeout属性のデフォルトがHTTPConnectionWithTimeout.connect()はNone、socket.create_connection()は_GLOBAL_DEFAULT_TIMEOUTという違いがあったので、素人なりに一応配慮してみた。
Issue 80の方は標準モジュールの名前が違っていただけなので特に問題はないはず。

patchをあてるのが面倒な方は、下記の修正済みのファイルをお手元の httplib2/python3/httplib2 の同名ファイルと置換してみてください。

それにしても、httplib2は「Dive into Python 3」で紹介されるぐらいには有名なモジュールのはずなのに、ちょっと使えばすぐ発生する程度のエラーが、報告があったにも関わらず放置されている様子をみると、Python 3を実際に使ってる開発者はPython初心者の私が想像していた以上に少ないんだろうなーと思わざるを得ない。

結局、このエントリのタイトルの「Python初心者が3.xに手を出したらhttplib2でハマった理由」をたった一つ挙げるとすれば、「Python 3.xを使ってる開発者がほとんどいないから」という事になるのかもしれない。

1 件のコメント:

  1. It as soon as} skilled a “coal rush” when coal was used as a serious nationwide energy supply in the course of the Seventies to 1980s. The Kangwon province had skilled devastating economic downturns since coal was replaced by gasoline and oil within the 90s. The Korean authorities tried to introduce quantity of} options to revitalize the native financial system, but the community repeatedly and vigorously requested a domestic on line casino, and it became licensed in December 1995. According to the Korea Center on Gambling Problems, which was established by the federal government in 2012, the prevalence of gambling habit is two-to-three times larger in Korea than in different main countries. While it’s unclear how those statistics are compiled, the notion that Koreans are uniquely susceptible to gambling habit is a widespread social theory that informs the laws surrounding the issue. The attorney pointed out the prevalence of stories within the Korean news media highlighting folks whose lives have been damaged by gambling 온라인카지노 habit.

    返信削除