0
CPython解釋器在加載時是否提供了抓取和檢查.py源文件的鉤子?Linting .py文件在Python中加載時的運行時間
我在想如果PEP 666 http://www.python.org/dev/peps/pep-0666/可以用現有的解釋器來實現。人們可以強制額外的源代碼語法檢查,如標籤和空間混合檢查那裏。
我很清楚,最好的做法是使您的源離線,但我只是在玩這個想法,看看是否有可能。
CPython解釋器在加載時是否提供了抓取和檢查.py源文件的鉤子?Linting .py文件在Python中加載時的運行時間
我在想如果PEP 666 http://www.python.org/dev/peps/pep-0666/可以用現有的解釋器來實現。人們可以強制額外的源代碼語法檢查,如標籤和空間混合檢查那裏。
我很清楚,最好的做法是使您的源離線,但我只是在玩這個想法,看看是否有可能。
也許下面的幫助您開始...
import sys
import os
import random
class GrammarNaziError(SyntaxError):
pass
class GrammarNaziImporter(object):
def find_module(self, module_name, package_path):
if package_path:
search_paths = package_path
module_name = module_name.split('.')[-1]
else:
search_paths = sys.path + [ '.' ]
for i in search_paths:
path = os.path.join(i, module_name)
if os.path.isdir(path):
path = os.path.join(path, '__init__.py')
else:
path += '.py'
if os.path.exists(path):
if not self.valid_syntax(path):
raise GrammarNaziError(
"The module %s failed Grammar Nazi Inspection" % path)
break
def valid_syntax(self, path):
return random.randint(0, 10) # substitute with logic of your choice
rest = GrammarNaziImporter()
sys.meta_path.insert(0, rest)
附:祝你好運;)
P.P.S.編輯以便代碼適用於初始化 .py's並且快速找到模塊失敗