Сконфигурируйте pyflakes для работы с объектами "script (python)" Zope в файловой системе - PullRequest
3 голосов
/ 24 июня 2009

Когда я запускаю pyflakes в файле Zope Filesystem Directory View (который часто встречается в plone), он всегда возвращает множество предупреждений о том, что мои параметры и специальные значения, такие как 'context', не определены, что было бы истинно, если бы оно было настоящий скрипт на python, но для скрипта File Directory Directory они определяются волшебными комментариями вверху, например:

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

Это или может быть поддержано pyflakes, pylint или подобными инструментами?

Ответы [ 2 ]

2 голосов
/ 25 июня 2009

Возможный подход, который я только что попробовал, заключается в предварительной обработке сценария zope fspython, чтобы он был vaild. Я использовал несколько вызовов 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

Было бы неплохо заменить это скриптом python, который оборачивается вокруг pyflakes и не изменяет нормальные скрипты python.

1 голос
/ 24 июня 2009

Нет, этот вид питона не используется нигде, кроме Zope, и фактически в настоящее время почти исключительно в Plone. И сообщество Plone отходит от него, потому что у него много недостатков, и это один из них.

Pyflakes не очень настраивается, по крайней мере, документированным способом. Pylint может быть настроен так, чтобы пропустить некоторые сообщения об ошибках, но те, которые вам нужно пропустить, были бы наиболее полезными, так что это, вероятно, также бесполезно.

Итак, краткий ответ: нет, вы не можете проверить их синтаксис. С другой стороны, вам не нужно перезагружать сервер для их запуска, поэтому проверка синтаксиса не сэкономит вам столько времени, как с другим кодом Python в мире Zope.

...