Comment puis-je déterminer de manière statique si un fichier source Python prend en charge Python 3?Comment déterminer statiquement si un fichier source supporte python 3, pour flake8?
La question est peut-être impossible de répondre comme il est dit là-bas, donc je vais être plus précis:
Ma demande est de choisir une version de flake8 pour exécuter qui ne donnera pas SyntaxErrors parasites. Pour cette raison, je cherche (au moins) une heuristique qui me dira si je devrais exécuter une copie Python 3 de flake8, ou une copie de Python 2. J'utilise flake8 de mon éditeur, ce qui me montre des erreurs de lint comme je tape, et je suis plus préoccupé par le fait que parfois je perds les erreurs de nommage (comme F821), comme un effet secondaire de pyflakes/flake8 pense que quelque chose est une erreur de syntaxe qui est en fait une syntaxe correcte: quand il rencontre une erreur de syntaxe, il semble (compréhensible) qu'il abandonne des choses comme des erreurs de nommage.
Ceci est presque impossible. Il y a trop de chemins de code à tester. –
'si re.findall (" print [^ (] + ['\ "], file_text)> 0: affiche" PY2 "' ... bien que cela ne garantira probablement pas que c'est toujours correct ... –
@JoranBeasley: 'from __future__ import print_function', ou simplement quelqu'un qui utilise' print (...) 'pour des valeurs simples, bien sûr –