python-ex-util.el機能追加

python-ex-util.elに機能を追加した。以前に追加したものも含めているけれど、追加した機能は以下のとおり

  • (virtualenvの環境も考慮した)flymakeの設定を追加
    • defaultで機能は無効
  • moduleをinsertできる関数(anything-insert-module)を追加
  • testを書き始めた(chibi-test)

まだ、これらの機能には不満なところがいくつかある。

不満なところ

3つくらいある

import文のサポート不満

moduleのimport文(python)挿入をサポートする機能は作ったけれど、以下の形式にしか対応していない

import foo

まだ以下の形式はサポートしていない。

import foo.bar.baz as bz
from foo import Foo

特にfrom foo import Fooの形式の補完をしたい。たぶん、実際にモジュールをpythonに読み込ませてリストを取得すれば良さそう。
でも、問題があって、djangoのモジュールを読み込むには色々とおまじないが必要(moduleのimport時にdjangoが裏でvalidateを行っているため)

なので現在保留中

virtualenvを利用した環境では実行が遅い。

これはvirtualenvwrapperのworkonを使っているせいもある。
色々は計ってみたところ、直接bin/activateを読み込んだ方が速い。なのでこちらに変えたい。

以下は、pyramidのチュートリアルのファイル(tasks.py)をvirtualenv上のpep8で構文チェックしてみたときの速度の違い。
はじめはvirtualenvwrapperのworkonを使ってる。次は、直接bin/activateを読み込んでいる。

$ time /bin/zsh -c "source ~/.virtualenvwrapperrc  && workon pyramid && pep8 ~/.virtualenvs/pyramid/tutorial/tasks/tasks.py"
/bin/zsh -c   0.48s user 0.07s system 84% cpu 0.653 total

$ time /bin/zsh -c "source ~/.virtualenvs/pyramid/bin/activate && pep8 ~/.virtualenvs/pyramid/tutorial/tasks/tasks.py"
/bin/zsh -c   0.15s user 0.00s system 89% cpu 0.168 total

bin/activateを直接読み込んだ方が速い。

flymakeの部分途中。

たぶん、もう少し無駄を省略できる。

misc

testを書くと頭が整理されて良い。まだ途中。