2014-05-12 27 views
19

W tym fragmencie kodu,Jak korzystać z flake8 dla Python 3?

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

są adnotacje funkcyjne, które są obsługiwane tylko po python 3.0

Kiedy wykonać flake8 dla tego kodu Pythona:

$ 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 

mam nieprawidłową składnię błąd, ale powinna być poprawna składnia. Jak mogę użyć flake8 do sprawdzenia składni obsługiwanej tylko w Pythonie 3.x?

+0

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

Odpowiedz

12

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

UWAGA: Podczas tego raportu o błędzie wskazuje na pewien poziom rozdzielczości, testowanie najnowszej wersji pyflakes 0.8.1 Ten brak Python 3 Adnotacje nadal istnieje.

Zgaduję, że musiałbyś złożyć osobną prośbę o nową funkcję na 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():

Jak się okazuje rzeczywistą odpowiedzią na ten problem jest uruchomienie pyflakes lub flake8 pod Pythona 3.x zamiast Python 2.x. To ma sens :)

więc zrobić coś takiego:

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

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

+0

Dzięki, przesłałem raport o błędzie: https://bugs.launchpad.net/pyflakes/+bug/1318497 – Cody

+0

Mam informacje zwrotne z pyflakes. Musimy wykonać pyflakes w Pythonie 3, aby pozbyć się tego błędu. Oznacza to, że pyflakes w python 2 nie mogą być używane dla skryptów python 3. – Cody

+0

To ma sens! Nie wiem, dlaczego o tym nie myślałem! Zaktualizuję odpowiedź, aby uwzględnić to! Dzięki! –

1

Mam odpowiedź na reddit (here):

Wykorzystuje cokolwiek flake8 jest zainstalowany w Pythonie na twojej ścieżce.

więc trzeba zainstalować flake8 przez pip3 (na OSX dla mnie),

pip3 install flake8 

to działa na mnie. :)