Configurar pyflakes para trabalhar com o Zope “Script (Python)” objetos no sistema de arquivos

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

  •  10-07-2019
  •  | 
  •  

Pergunta

Quando eu executo pyflakes em um arquivo Diretório Ver Zope Filesystem (como são encontrados muito em Plone) ele sempre retorna lotes de advertências que os meus parâmetros e valores especiais como 'contexto' não estão definidos, o que seria verdade se fosse um script python real, mas para um script do Sistema de Arquivos Diretório View, eles são definidos por comentários mágicas no topo, por exemplo:

## 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 python usado em qualquer lugar exceto Zope?

É, ou pode ser apoiado por pyflakes, pylint ou ferramentas similares?

Foi útil?

Solução

Uma possível abordagem que eu apenas tentei é a pré-processar o script fspython Zope de modo que é vaild. Eu usei algumas chamadas para sed (abaixo):

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

Seria bom para substituir isso com um script python que envolve pyflakes e faz scripts python normais não altera.

Outras dicas

Não, esse tipo de python não é usado em qualquer lugar exceto Zope, e na verdade quase que exclusivamente em Plone nos dias de hoje. E a comunidade Plone está se movendo para longe dele porque ele tem muitos inconvenientes, sendo esta uma delas.

pyflakes não é muito configurável, pelo menos não de forma documentada. Pylint pode ser configurado para ignorar algumas mensagens de erro, mas o que você precisa pular seriam aqueles que são mais úteis, de modo que provavelmente não é útil também.

Portanto, a resposta curta é: Não, você não pode sintaxe vê-los. Por outro lado, você não precisa reiniciar o servidor para executá-los, de modo que a verificação de sintaxe não vai poupar muito tempo, que ele vai com outro código Python no mundo Zope.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top