
Código-fonte do livro "Violent Python" de TJ O'Connor. O código foi totalmente convertido para Python 3, reformatado para estar em conformidade com os padrões PEP8 e refatorado para eliminar problemas de dependência envolvendo a implementação de bibliotecas obsoletas.
Código-fonte do livro "Violent Python" de TJ O'Connor. O código foi totalmente convertido para Python 3, reformatado para estar em conformidade com os padrões PEP8 e refatorado para eliminar problemas de dependência envolvendo a implementação de bibliotecas descontinuadas.
Uma conversão semelhante a esta foi disponibilizada por mim no código-fonte do livro "Black Hat Python", de Justin Seitz. Confira aqui se você ainda não o fez.
Basta criar um novo diretório (DIR) para o projeto, criar um novo
ambiente virtual ou venv para ele (recomendado), clonar este repositório
usando git clone e instalar os requisitos usando pip install.
user@host:~/DIR$ git clone https://github.com/EONRaider/violent-python3
user@host:~/DIR$ python3 -m venv venv
user@host:~/DIR$ source venv/bin/activate
(venv) user@host:~/DIR$ pip install -r requirements.txt
optparse, agora obsoleta, foi substituída por argparse em
todo o código-fonte. Todo o parsing de argumentos agora está contido
no escopo de execução __main__ para cada arquivo. Todos os argumentos de CLI que eram
obrigatórios para a execução dos scripts, mas eram tratados como opcionais no
código original, agora são implementados como posicionais. Um prompt de uso agora está
disponível para todos os scripts que usam argparse ao fornecer um argumento -h para
a CLI. Deixar as responsabilidades tanto de boundary quanto de controller
para o parser da CLI definitivamente não é a melhor escolha em termos
de arquitetura de software, mas foi mantido como está devido à
necessidade de conformidade com a intenção do codificador original.PEP 8: E722 do not use bare except foram
refatoradas com cláusulas de exceção mais específicas.close() nos objetos de arquivo/banco de dados abertos. Por
esse
motivo, todas as instâncias de manipulação de arquivos e bancos de dados foram refatoradas
usando gerenciadores de contexto.# -*- coding: utf-8 -*-) foi eliminado devido à
padronização do UTF-8 como codificação padrão para Python 3 (substituindo
o ASCII do Python 2).