Drkcore

07 06 2011 Python Tweet

PythonistaにPEP8の御加護を

pep8ってコマンドが便利すぎてちょくちょく叩くんだけど、それでも叩くの面倒になったりすることはある。正直、こういうチェッカーは空気を読んで走って欲しいですね。

ユニットテストに組み込んでるのを見つけて、おーいいじゃん素敵じゃんとか思ってたんだけどもうちょい身近に感じたいなぁと。

で、Growlの出番。セーブするたびにpep8チェックが走って結果が通知されるようにした。

pep8notify

でもこの通知はすぐに消える(はやすぎ)。どこがおかしいのかよく見ようとすると消えてしまってちょっと困る。逆にstickyをTrueにすると消えずに残っているのでそれはそれでうざい。

神の御加護ってのはそんなもんなのかなぁと思った。あと、アイコンをPythonの蛇ロゴにしたほうがいいかなぁと。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env python
# -*- encoding:utf-8 -*-

import os
from time import sleep
import sys
import commands
import Growl

def get_mtime(f):
    return os.stat(f).st_mtime

def notify(dirname):
    g = Growl.GrowlNotifier(
        applicationName='PEP8 Notify', notifications=['Error'])
    g.register()

    pyfiles = [f for f in os.listdir(dirname) if ".py" in f]
    pystat = dict([[pyfile, get_mtime(pyfile)] for pyfile in pyfiles])

    while 1:
        sleep(1)
        for f in pyfiles:
            new_mtime = get_mtime(f)
            if pystat[f] != new_mtime:
                pystat[f] = new_mtime
                result = commands.getoutput("pep8 %s" % os.path.abspath(f))
                if result == '':
                    result = 'pep8 OK!!!'
                g.notify(
                    noteType='Error',
                    title='PEP8',
                    description=result,
                    sticky=False
                    )

if __name__ == '__main__':
    dirname = os.path.abspath(os.curdir)
    if len(sys.argv) > 2:
        dirname = sys.argv[1]
    notify(dirname)

で、pep8走らせると長いStringが長すぎ!ってよく怒られるんだけど、長いURLとかしょうがないじゃん、無理して分割しても読みにくくなるじゃんと思うんだけどどうしたらよいんだろうか?

ProductName エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス / 3780円 ( 2010-05-28 )


About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021