A PEP 8 (disponível aqui), é um guia de estilo para escrever códigos Python, ou seja como escrever código Python de forma Pythonica.
A forma Pythonica está definida no poema da PEP 20 (disponível aqui).
Eu que estou começando a programar em Python achei bem interessante ter uma PEP específica regras e padrões para escrita de um código Python tornando mais agradável de visualizar.
Quem já tentou definir padrão para escrita de código, independente da linguagem, sabe que esta tarefa é árdua, difícil e muitas vezes mau vista por alguns desenvolvedores.
Validação da PEP8
Se você estiver utilizando a IDE PyCharm, ele automaticamente já utilza e valida o seu código fonte com a PEP8.
Mas se você estiver utilizando um editor de texto comum ou utiliza integração continua como o TeamCity e deseja validar o seu código fonte com a PEP8, instale as ferramenta pycodestyle (GitHub), pep8-naming (GitHub) e flake8 (GitHub).
O pycodestyle é uma ferramenta para verificar seu código Python em relação a algumas das convenções de estilo do PEP 8, lista completa de validações disponível aqui. Abaixo listagem dos tópicos de cada validação.
- E1xx - Indentação;
- E2xx - Espaço em branco;
- E3xx - Linha em branco;
- E4xx - Importação;
- E5xx - Tamanho de linha;
- E7xx - Instruções;
- E9xx - Tempo de Execução (Runtime);
- W2xx - Alertas de espaço em branco;
- W3xx - Alerta de linha em branco;
- W5xx - Alerta de quebra de linha;
- W6xx - Alerta de suspensão de uso (Exemplo: funções).
O pep8-naming é uma ferramenta para validar convenções de nomenclatura da PEP8.
Já o flake8, é uma ferramenta que utiliza a pycodestyle e pep8-naming internamente, possibilitando em um comando rodar as duas bibliotecas.
Para instalar as ferramentas execute os comandos abaixo no terminal:
pip install pycodestyle pip install pep8-naming pip install flake8
Utilizando as ferramentas
Vamos utilizar este exemplo simples para validar a PEP8 com as ferramentas pycodestyle, pep8-naming e flake8.
No terminal, execute:
flake8 pep8.py
O resultado será:
pep8.py:3:1: W293 blank line contains whitespace pep8.py:4:1: E302 expected 2 blank lines, found 1 pep8.py:4:8: N801 class name 'sum_two_values' should use CapWords convention pep8.py:5:9: W292 no newline at end of file
Os erros da linha 3, 4 e 5 são erros de formatação no código fonte. Este erros indicam, que existem espaços em branco em uma linha em branco e que era esperado 2 linhas em branco depois da linha 4 e tem somente uma e deveria ter duas linhas em branco e não existe uma linha nova no final do arquivo, respectivamente.
Já o erro da linha 4, colkuna 8, indica que a classe sum_two_values, não está no padrão CamelCase.
Conclusão
Instalando estas 3 ferramentas, você consegue validar o seu código fonte no PEP8 de forma fácil e deixar ele mais "bonito" para manutenções futuras. Além de conseguir utilizar a PEP8 em integrações continuas.