pythonのslack関連のパッケージはどの辺りを見れば良いか調べた

pythonのslack関連のパッケージはどの辺りを見れば良いか調べた。古の記憶ではslackbotが有名だった。

過去の自分はえらいので以前にpytestのpluginについて調べたものと同様の方法を使えば良さそう。

pypistatsとか名前忘れていた。正直。

試す

だいたい以下の感じで進めれば良い

  1. pip search でテキトーに関連しそうなパッケージの一覧を探す
  2. pypistatsでテキトーにデータを取ってくる
  3. 月間ダウンロード数あたりでソート。
  4. 上位N件くらいを見る

はい。

実際にやってみる

手順は以下のMakefileがすべて。00から順に実行していけば良い。pypistatsとjqfpyは必要。

Makefile

# 一覧取得
00:
  pip search slack | cut -d " " -f 1 | grep -v django | tee $@.txt
  pip search slackbot | cut -d " " -f 1 | grep -v django | grep -v markov_slackbot >> $@.txt

# pypistatsにアクセス
01:
  for i in `cat 00.txt`; do pypistats recent $$i -f json; done | tee $@.json

# 月間ダウンロード数でソート
02:
  cat 01.json | jqfpy --slurp 'sorted(get(), key=lambda x: x["data"]["last_month"], reverse=True)' --squash -c | tee $@.json

# gistで見る分にはCSVが便利
03:
  echo package,download_last_month > 03.csv
  cat 02.json | jqfpy --slurp '[print(f"""{d["package"]},{d["data"]["last_month"]}""") for d in get()]; None' >> 03.csv

# markdownでみたいよね
04:
  dictknife cat -o md 03.csv | tee $@.md

はい。こういうことが10分くらいでできたので良い。

結果

結果は、slackbotはやっぱり強くてslack-webhook-cliとslack,dagster-slack, slack-webhook, celey-slack, slack-cli辺りを見ておけば十分そう。

詳しくはこういう感じ。途中で切った。

package download_last_month
slack-webhook-cli 53994
slackbot 18247
slack 9564
pytest-slack 9475
slack-logger 5790
dagster-slack 3088
slack-webhook 2077
celery-slack 1833
slack-cli 1646
fabric-slack-tools 1590
slack-entities 842
slack-client 825

追記

価値がありそうなのは以下くらいかも

  • slackbot -- Based on slack Real Time Messaging API な所だけ注意だけれど。やっぱりコレが無難そう。単にpostするだけならrequestsで十分かも。
  • python-slack-logger -- loggerと繋げてるだけだけど。場合によっては便利かもしれない。ちょっとしたhighlight付きなので。
  • dagster-slack -- そもそもdagsterが何者?という感じなので後で調べる必要はある。覗いてみても良いかもくらい。
  • slack-cli -- 人によってはCLIとして便利なことはあるかも。ちょっとした装飾を付けたい場合にも参考にするのはあり(中のコード覗いて無いけど)。

細々と想ったこと

ここからは細々とおもったこと

monthlyのダウンロードだけだとだるいかも?

けっこうgithubのstar数とはかけ離れていそう。けっこうスター数0のものがある。できれば1個は付いていて欲しい(?)。 あと、dagster-slackとか本体の方のスター数が見えるんだなー。pypi上での遷移先では。

あと、release_historyも欲しい。直近の更新がない場合は基本的に切るので(ただ月次のダウンロード数が多い状況なら安定しているのかもしれない)。

pip search?

なるほどと想ったのは、pip search slack でslackbotが含まれないこと。へー。と思ったりした。

$ pip -V
pip 19.3.1 from $HOME/venvs/my/lib/python3.8/site-packages/pip (python 3.8)
$ pip search slack | grep slackbot | wc
      0       0       0
$ pip search slackbot | grep slackbot | wc
     23     242    1965

pypistats

キャッシュは効くものの1回1秒程度は掛かる。もう少し頻繁にこの種の作業をするとしたらpypistatsを雑にCLIで使うという行為は卒業しても良いかもしれない。今はまだ大丈夫だと思っている。

URL

(追記:) こういう記事を書くのはあまり意味が無いと思ったけれど。リンク先をポチポチとクリックして遷移できるのはけっこう便利だった。

pypistatsの詳細ページのリンクもあると嬉しいかもしれない。例えば

そしてpypiにreadmeを載せていないページもあるのでホームページのリンクもあると良いかもしれない。次回の話。

gist

gist

https://gist.github.com/podhmo/b841bac22e75b6fa8acc3d8f3503ff67