配置pyflakes以与文件系统上的Zope的“脚本(python)”对象一起使用
作者:互联网
当我在Zope文件系统目录视图文件上运行pyflakes(在plone中经常发现)时,它总是返回很多警告,提示我的参数和特殊值(例如“ context”)未定义,如果它是真实的python,则为true脚本,但是对于文件系统目录视图脚本,它们由顶部的魔术注释定义,例如:
## Python Script "Name"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=foo, bar, baz
##
from AccessControl import getSecurityManager
user = getSecurityManager().getUser()
from Products.PythonScripts.standard import html_quote
request = container.REQUEST
RESPONSE = request.RESPONSE
return foo + bar + baz
除Zope以外,是否在其他任何地方使用这种python?
是,还是可以由pyflakes,pylint或类似工具支持?
解决方法:
我刚刚尝试过的一种可能方法是对zope fspython脚本进行预处理,以使其有效.我使用了几个sed调用(如下):
#!/bin/bash
sed "s/\(^[^#]\)/ \1/" $1 | \
sed "s/^##bind [a-z]*=\([a-z][a-z]*\)$/import \1/" | \
sed "s/^##parameters=\(.*\)/def foo(\1):/" | pyflakes
最好用环绕pyflakes的python脚本代替它,并且不会改变普通的python脚本.
标签:zope,python 来源: https://codeday.me/bug/20191210/2102796.html