When it’s ready.

出来るまで出来ない

shaとかhashlibとか

python2.6になって、md5モジュールとshaモジュールをインポートすると

>>> import md5
__main__:1: DeprecationWarning: the md5 module is deprecated; use hashlib instead
>>> import sha
__main__:1: DeprecationWarning: the sha module is deprecated; use the hashlib module instead

ワーニングが出てくる。ワーニングは出るけど、使えない事はない。しかし、これがpython3.0だと

>>> import md5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named md5
>>> import sha
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named sha

そんなもんないよ。とエラーになる。いきなり使えない。
shaとかmd5は、いろんなモジュールで使われてるらしく、WebApiのライブラリはほとんど使っているので、かなりの確率で上記のワーニングが出る。今までは気にしなかったけど、そのうちPython3.0軸足になった時にいきなり使えなくなって、困るのは自分だ。ということで、ちょうど、id:yoshioriさんが公開してくれたhatenadを、python2.6でワーニングでないようにしてみた。

import sha

となっていた所を

from hashlib import sha1 as sha

としてモジュールの読み込み先を変えて

-return '%s %s' % (timestamp, sha.new('%s:%s' % (timestamp, private)).hexdigest())
+return '%s %s' % (timestamp, sha('%s:%s' % (timestamp, private)).hexdigest())

-password_digest = base64.encodestring(sha.new(nonce + post_creation_time + self.passwd).digest()).replace('\n', '')
+password_digest = base64.encodestring(sha(nonce + post_creation_time + self.passwd).digest()).replace('\n', '')

newしなくてもいいぽいので、そこを外す。

とこことまでやって、思わずpullリクエストを送ってしまった。
このコードだと、python2.6以上だと正常動作するが、python2.5だと、動かない・・・

うーん。なやましい。

半端なコード送ってごめんなさい