2009-06-24 2 views
3

Wenn ich pyflakes auf einer Zope Filesystem Directory View-Datei ausführen (wie in plone gefunden), gibt es immer viele Warnungen, dass meine Parameter und spezielle Werte wie ‚Kontext‘ nicht definiert, was aber wahr wäre, wenn es ein echter python-Skript war, aber für eine Dateisystem-Verzeichnisansicht Skript, werden sie durch Magie Kommentare an der Spitze definiert, zum Beispiel:Konfiguriere pyflakes für die Arbeit mit Zopes "script (python)" -Objekten auf dem Dateisystem

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

Ist diese Art von Python überall außer Zope?

Ist es oder kann es durch Pyflakes, Pylint oder ähnliche Werkzeuge unterstützt werden?

Antwort

2

Ein möglicher Ansatz, den ich gerade versucht habe, besteht darin, das Zope-Fspython-Skript so vorzuverarbeiten, dass es gültig ist. Ich habe ein paar Anrufe verwendet sed (unten):

#!/bin/bash 
sed "s/\(^[^#]\)/ \1/" $1 | \ 
sed "s/^##bind [a-z]*=\([a-z][a-z]*\)$/import \1/" | \ 
sed "s/^##parameters=\(.*\)/def foo(\1):/" | pyflakes 

Es wäre gut, dies mit einem Python-Skript zu ersetzen, die Pyflakes umschlingt und verändert nicht normalen Python-Skripte.

+0

Interessanter Ansatz. Erstaunlich, wie wir immer mit Bash-Skripten und Gnu-Utils für viele "unlösbare" Probleme enden ... –

1

Nein, diese Art von Python wird nirgendwo außer Zope und tatsächlich fast ausschließlich in Plone heutzutage verwendet. Und die Plone-Gemeinschaft bewegt sich davon weg, weil sie viele Nachteile hat, darunter auch einer.

Pyflakes ist nicht sehr konfigurierbar, zumindest nicht in einer dokumentierten Weise. Pylint kann so konfiguriert werden, dass einige Fehlermeldungen übersprungen werden, aber diejenigen, die Sie überspringen müssen, sind diejenigen, die am nützlichsten sind, so dass dies wahrscheinlich auch nicht hilfreich ist.

Also die kurze Antwort ist: Nein, Sie können nicht Syntax überprüfen sie. Auf der anderen Seite müssen Sie den Server nicht neu starten, um sie auszuführen, so dass die Syntaxprüfung Sie nicht so viel Zeit sparen wird, was mit anderem Python-Code in der Zope-Welt geschieht.

Verwandte Themen