Настройте pyflakes для работы с объектами «скрипта (python)» Zope в файловой системе

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

  •  10-07-2019
  •  | 
  •  

Вопрос

Когда я запускаю 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 или подобными инструментами?

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top