2014-05-12 20 views
19

In questo frammento di codice,Come usare flake8 per Python 3?

def add(x:int, y:int) -> int: 
    return x + y 

ci sono le annotazioni di funzione che sono supportati solo dopo che Python 3.0

Quando eseguo flake8 per questo codice python:

$ flake8 7.3.py -vv 
checking 7.3.py 
def add(x: int, y: int) -> int: 
return x + y 
7.3.py:1:11: E901 SyntaxError: invalid syntax 

ho avuto la sintassi non valida errore, ma dovrebbe essere una sintassi valida. Come posso usare flake8 per verificare la sintassi supportata solo in Python 3.x?

+0

Vedere: https://bugs.launchpad.net/pyflakes/+bug/989203 –

risposta

12

See: https://bugs.launchpad.net/pyflakes/+bug/989203

NB: Anche se questo bug report indica un certo livello di risoluzione, testare l'ultima versione di pyflakes 0.8.1 questa mancanza di Python 3 annotazioni esiste ancora.

Immagino che dovresti presentare una nuova richiesta di funzionalità a Pyflakes.

pyflakes Bugs

$ cat - > foo.py 
def add(x:int, y:int) -> int: 
    return x + y 
^D 
$ pyflakes --version 
0.8.1 

$ pyflakes foo.py 
foo.py:1:10: invalid syntax 
def add(x:int, y:int) -> int: 
     ^

UPDATE (20.140.514):

Come si scopre la risposta reale a questo problema è quello di eseguire pyflakes o flake8 sotto Python 3.x anziché pitone 2.x. Ha senso :)

Quindi fare qualcosa di simile:

/usr/bin/python3 -m pyflakes foo.py 

See: http://codepad.org/9BKxSZaD

+0

Grazie, ho inviato una segnalazione di errore: https://bugs.launchpad.net/pyflakes/+bug/1318497 – Cody

+0

Ho ricevuto il feedback da Pyflakes. Abbiamo bisogno di eseguire pyflakes in Python 3 per eliminare quell'errore. Cioè, pyflakes in python 2 non può essere usato per gli script di fro python 3. – Cody

+0

Questo ha davvero senso! Non sono sicuro del perché non ci ho pensato! Aggiornerò la risposta per includere questo! Grazie! –

1

ho avuto la risposta su reddit (here):

utilizza qualsiasi flake8 è installato nel Python nel tuo percorso.

quindi è necessario installare flake8 da PIP3 (su OSX per me),

pip3 install flake8 

questo funziona per me. :)