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だと、動かない・・・
うーん。なやましい。
半端なコード送ってごめんなさい