Configurez pyflakes pour qu'il fonctionne avec les objets «script (python)» de Zope sur le système de fichiers

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

  •  10-07-2019
  •  | 
  •  

Question

Lorsque j'exécute pyflakes sur un fichier Zope Filesystem Directory View (comme on en trouve beaucoup dans plone), il renvoie toujours de nombreux avertissements indiquant que mes paramètres et mes valeurs spéciales, tels que 'context', ne sont pas définis. un vrai script python, mais pour un script d'affichage de système de fichiers, ils sont définis par des commentaires magiques en haut, par exemple:

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

Ce genre de python est-il utilisé n'importe où sauf Zope?

S'agit-il ou peut-il être soutenu par pyflakes, pylint ou des outils similaires?

Était-ce utile?

La solution

Une approche possible que je viens d’essayer consiste à prétraiter le script zope fspython afin qu’il soit validé. J'ai utilisé quelques appels sur 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 remplacer ceci par un script python qui entoure pyflakes et ne modifie pas les scripts python normaux.

Autres conseils

Non, ce type de python n’est utilisé nulle part sauf Zope, et en fait presque exclusivement à Plone de nos jours. Et la communauté Plone s'en éloigne car elle présente de nombreux inconvénients, dont celui-ci.

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 éviter sont ceux qui sont les plus utiles. Ce n'est donc probablement pas utile.

La réponse courte est donc: Non, vous ne pouvez pas vérifier leur syntaxe. D'autre part, vous n'avez pas besoin de redémarrer le serveur pour les exécuter. La vérification de la syntaxe ne vous fera donc pas gagner beaucoup de temps, contrairement aux autres codes Python du monde Zope.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top