Configure pyflakes para que funcione con el script de Zope & # 8220; (python) & # 8221; objetos en el sistema de archivos

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

  •  10-07-2019
  •  | 
  •  

Pregunta

Cuando ejecuto pyflakes en un archivo Zope Filesystem Directory View (como se encuentra mucho en plone) siempre devuelve muchas advertencias de que mis parámetros y valores especiales como 'contexto' no están definidos, lo que sería cierto si fuera un script de Python real, pero para un script de Vista de directorio del sistema de archivos, se definen mediante comentarios mágicos en la parte superior, por ejemplo:

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

¿Este tipo de pitón se usa en cualquier lugar excepto Zope?

¿Es o puede ser compatible con pyflakes, pylint o herramientas similares?

¿Fue útil?

Solución

Un posible enfoque que acabo de probar es preprocesar el script zope fspython para que sea vaild. He usado algunas llamadas a sed (abajo):

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

Sería bueno reemplazar esto con una secuencia de comandos de Python que envuelva Pyflakes y no altere las secuencias de comandos normales de Python.

Otros consejos

No, ese tipo de pitón no se usa en ninguna parte excepto Zope, y de hecho casi exclusivamente en Plone hoy en día. Y la comunidad de Plone se está alejando porque tiene muchos inconvenientes, siendo este uno de ellos.

Pyflakes no es muy configurable, al menos no de manera documentada. Pylint se puede configurar para omitir algunos mensajes de error, pero los que debe omitir serían los más útiles, por lo que probablemente tampoco sea útil.

Entonces, la respuesta corta es: No, no puede verificar la sintaxis. Por otro lado, no necesita reiniciar el servidor para ejecutarlos, por lo que la verificación de sintaxis no le ahorrará mucho tiempo, lo que hará con otro código de Python en el mundo de Zope.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top