Configura pyflakes in modo che funzioni con lo script & # 8220; di Zope (python) & # 8221; oggetti sul filesystem

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

  •  10-07-2019
  •  | 
  •  

Domanda

Quando eseguo pyflakes su un file Zope Filesystem Directory View (come si trova molto in plone) restituisce sempre molti avvisi che i miei parametri e valori speciali come 'contesto' non sono definiti, il che sarebbe vero se fosse un vero script Python, ma per uno script Visualizza directory del filesystem, sono definiti da magici commenti in alto, ad esempio:

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

Questo tipo di pitone è usato ovunque tranne Zope?

Lo è o può essere supportato da pyflakes, pylint o strumenti simili?

È stato utile?

Soluzione

Un possibile approccio che ho appena provato è quello di pre-elaborare lo script zope fspython in modo che sia vaild. Ho usato alcune chiamate per sed (sotto):

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

Sarebbe bene sostituirlo con uno script Python che avvolge pyflakes e non altera i normali script Python.

Altri suggerimenti

No, quel tipo di pitone non è usato da nessuna parte tranne Zope, e in effetti quasi esclusivamente in Plone al giorno d'oggi. E la comunità Plone si sta allontanando da essa perché ha molti inconvenienti, questo è uno di questi.

Pyflakes non è molto configurabile, almeno non in modo documentato. Pylint può essere configurato per saltare alcuni messaggi di errore, ma quelli che devi saltare sarebbero quelli che sono più utili, quindi probabilmente non è utile.

Quindi la risposta breve è: No, non è possibile verificare la sintassi. D'altra parte non è necessario riavviare il server per eseguirli, quindi il controllo della sintassi non ti farà risparmiare molto tempo, cosa che farà con altri codici Python nel mondo Zope.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top