2009-06-24 6 views
3

Lorsque j'exécute pyflakes sur un fichier Zope Filesystem View View (comme cela se trouve beaucoup dans plone), il retourne toujours beaucoup d'avertissements que mes paramètres et spéciaux des valeurs comme « contexte » ne sont pas définis, ce qui serait vrai si elle était un vrai script python, mais pour un système de fichier Directory Voir le script, ils sont définis par la magie des commentaires en haut, par exemple:Configurer pyflakes pour travailler avec les objets "script (python)" de Zope sur le système de fichiers

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

est ce genre de python utilisé n'importe où sauf Zope? Est-ce, ou peut-il être supporté par des pyflakes, des pylints ou des outils similaires?

Répondre

2

Une approche possible que je viens d'essayer est de prétraiter le script zope fspython afin qu'il soit vaild. Je l'ai utilisé quelques appels à sed (ci-dessous):

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

Il serait bon de le remplacer par un script python qui enroule autour pyflakes et ne modifie pas les scripts python normales.

+0

Approche intéressante. Incroyable comment nous finissons toujours avec des scripts bash et des utilitaires gnu pour beaucoup de problèmes "insolubles" ... –

1

Non, ce genre de python n'est utilisé nulle part sauf Zope, et en fait presque exclusivement dans Plone de nos jours. Et la communauté Plone s'en éloigne, car elle a de nombreux inconvénients, celui-ci étant l'un d'entre eux.

Pyflakes n'est pas très configurable, du moins pas de manière documentée. Pylint peut être configuré pour ignorer certains messages d'erreur, mais ceux que vous devez ignorer sont ceux qui sont les plus utiles, ce qui n'est probablement pas utile non plus. Donc, la réponse courte est: Non, vous ne pouvez pas vérifier la syntaxe. D'un autre côté, vous n'avez pas besoin de redémarrer le serveur pour les exécuter, donc la vérification de la syntaxe ne vous fera pas gagner autant de temps, ce qui sera le cas avec d'autres codes Python dans le monde de Zope.

Questions connexes