Para mim não ficou bem claro as vantagens e desvantagem do MyPy e do Flake8, ou seja, as diferenças entre eles.
Onde posso buscar um comparativo?
Para mim não ficou bem claro as vantagens e desvantagem do MyPy e do Flake8, ou seja, as diferenças entre eles.
Onde posso buscar um comparativo?
Oi Leonardo, tudo bem com você?
Essas duas ferramentas possuem objetivos distintos, enquanto o Mypy irá verificar os tipos, o Flake8 verifica o estilo do código com base na PEP8(Guia de Estilo para Código Python).
Como exemplo, imagine o seguinte código, intitulado como main.py
:
No código acima, definimos que a função saudacao
espera receber, um str
e quando chamamos a função estamos passando um argumento do tipo str
. Tudo bem até aqui?
Quando executarmos: mypy main.py
ele nos retornará Success: no issues found in 1 source file
, ou seja, aparentemente não há erro algum. Mas, e se passarmos um valor inteiro para função saudacao
? Dessa forma:
print(saudacao(1))
Nesse caso, quando formos executar novamente mypy main.py
ele nos retornará Argument 1 to "saudacao" has incompatible type "int"; expected "str"
ou seja, há algo de errado, nossa função esperava receber como parâmetro um tipo str e passamos um argumento inteiro.
E é isso que o mypy faz, verifica se estamos fazendo o uso correto das tipagens. Sozinho o python sozinho não consegue verificar os tipos, por isso a utilização do mypy.
Já se executarmos o flake8 em nosso código através do comando flake8 main.py
ele irá nos retornar:
main.py:4:1: E305 expected 2 blank lines after class or function definition, found 1
main.py:5:23: W292 no newline at end of file
E esses erros que ele nos mostra se refere ao estilo do nosso código. Ele diz que é necessário dois espaços em branco após o término da função e também, que precisamos colocar uma linha em branco no final do arquivo. Dessa forma:
Agora, quando executarmos novamente o flake8
ele não nos retornará erro algum.
Consegue notar a diferença entre o mypy e o flake8?
Recomendo a documentação dessas ferramentas:
Fico à disposição para qualquer dúvida. Abraços e bons estudos!