Zopeの“スクリプト(python)”で動作するようにpyflakesを設定しますファイルシステム上のオブジェクト

StackOverflow https://stackoverflow.com/questions/1038863

  •  10-07-2019
  •  | 
  •  

質問

Zopeファイルシステムのディレクトリビューファイルで(ploneでよく見られるように)pyflakesを実行すると、パラメーターと 'context'などの特別な値が定義されていないという多くの警告が常に返されます。実際のpythonスクリプトですが、Filesystem Directory Viewスクリプトの場合、上部のマジックコメントで定義されます。例:

## 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

この種のpythonはZope以外で使用されていますか?

それか、pyflakes、pylint、または同様のツールでサポートできますか?

役に立ちましたか?

解決

私が試したアプローチの1つは、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スクリプトに置き換えるとよいでしょう。

他のヒント

いいえ、その種のpythonはZope以外では使用されていません。実際、最近ではほとんどPloneのみで使用されています。また、Ploneコミュニティには多くの欠点があるため、Ploneコミュニティから遠ざかりつつあります。これはそのうちの1つです。

Pyflakesは、少なくとも文書化された方法では、あまり設定できません。 Pylintはいくつかのエラーメッセージをスキップするように設定できますが、スキップする必要があるものは最も有用なものであるため、おそらくどちらも役に立たないでしょう。

したがって、簡単な答えは次のとおりです。いいえ、構文チェックはできません。一方、サーバーを再起動してそれらを実行する必要はありません。そのため、構文チェックはそれほど時間を節約しません。これは、Zopeの世界の他のPythonコードと同じです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top