/ / Czy istnieje sposób na sprawdzenie, czy flake8 sprawdza wskazówki dotyczące typów w źródle - python, python-3.x

Czy istnieje sposób, aby flake8 sprawdzić wskazówki typu w źródle - python, python-3.x

Rozpoczynam nowy projekt python (python 3.5+) i chciałbym wymusić wskazówki typu w całym codebase.Czy jest sposób to zrobić z flake8 lub jakiekolwiek inne narzędzie?

Odpowiedzi:

2 dla odpowiedzi № 1

Spojrzeć na mypy.

Ze strony internetowej:

Mypy to eksperymentalny opcjonalny typ statycznychecker dla Pythona, który ma na celu połączenie zalet dynamicznego (lub "kaczego") pisania i pisania statycznego. Mypy łączy w sobie ekspresyjną moc i wygodę Pythona z potężnym systemem typów i sprawdzaniem typu kompilacji. Typ Mypy sprawdza standardowe programy w języku Python; uruchamiać je za pomocą dowolnej maszyny wirtualnej Python z zasadniczo bez nakładu pracy środowiska wykonawczego.

EDYTOWAĆ

Właściwie mypy to sprawdzanie typu, więc domyślnie tosprawdza tylko, czy występują błędy związane z typami, które są sugerowane lub wnioskowane. Aby sprawić, by raportował typy nie zawierające wskazówek, możesz użyć dodatkowych przełączników wiersza poleceń, jak to udokumentowano tutaj.

--disallow-untyped-defs zgłasza błąd po napotkaniu definicji funkcji bez adnotacji typu.

--check-untyped-defs jest mniej dotkliwy niż poprzednia opcja - typsprawdza treść każdej funkcji, niezależnie od tego, czy ma adnotacje typu. (Domyślnie ciała funkcji bez adnotacji nie są sprawdzane). Przyjmuje, że wszystkie argumenty mają typ Any i zawsze określa Any jako typ zwracany.

--disallow-untyped-calls zgłasza błąd, gdy funkcja z adnotacjami typu wywołuje funkcję zdefiniowaną bez adnotacji.

...


1 dla odpowiedzi nr 2

mypy można użyć do sprawdzenia wskazówek dotyczących typów programów w języku Python. Dokumentację można znaleźć tutaj i jest dość wszechstronny.


1 dla odpowiedzi nr 3

Inne wymienione mypy który służy do sprawdzania podpowiedzi typu, ale go ich nie egzekwuje. Aby być bardziej surowym na temat adnotacji typu, musisz włączyć opcję następujące ustawienia konfiguracji:

disallow_untyped_calls (Boolean, default False) blokuje połączenia funkcje bez adnotacji typu z funkcji typu adnotacje.

disallow_untyped_defs (Boolean, domyślne Fałsz) uniemożliwia zdefiniowanie funkcje bez adnotacji typu lub z niekompletnym typem adnotacje.

Możesz też ustawić te ustawienia jako argumenty wiersza polecenia zamiast.


FYI, PyLint nie obsługuje jeszcze wymuszania adnotacji typu, ale istnieje żądanie funkcji. I nie widzę niczego związanego z flake8/pyflakes przód - rozważ otwarcie żądania funkcji.