
Исходный код книги "Violent Python" от TJ O'Connor. Код полностью переведён на Python 3, отформатирован в соответствии со стандартами PEP8 и реорганизован для устранения проблем с зависимостями, связанными с использованием устаревших библиотек.
Исходный код книги «Violent Python» Ти Джей О'Коннора. Код полностью преобразован в Python 3, переформатирован в соответствии со стандартами PEP8 и реорганизован для устранения проблем с зависимостями, связанных с использованием устаревших библиотек.
Аналогичное преобразование было выполнено мною для исходного кода книги «Black Hat Python» Джастина Зейтца. Ознакомьтесь с ним здесь, если вы ещё этого не сделали.
Просто создайте новый каталог (DIR) для проекта, создайте новую
виртуальную среду или venv (рекомендуется), клонируйте этот репозиторий
с помощью git clone и установите зависимости с помощью 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 заменена на argparse
во всём исходном коде. Весь разбор аргументов теперь находится
в области выполнения __main__ для каждого файла. Все аргументы командной строки, которые были
обязательны для выполнения скриптов, но в исходном коде рассматривались как необязательные,
теперь реализованы как позиционные. Для всех скриптов, использующих argparse, теперь доступна подсказка usage при передаче аргумента -h в
CLI. Передача обязанностей как boundary, так и controller
объекта парсеру CLI, безусловно, не является лучшим выбором с точки
зрения архитектуры программного обеспечения, но оставлено как есть из-за
необходимости соответствия замыслу исходного автора.PEP 8: E722 do not use bare except были
переработаны с использованием более конкретных предложений исключений.close() для открытых объектов файлов/баз данных. По
этой
причине все случаи манипуляций с файлами и базами данных были переработаны с
использованием менеджеров контекста.# -*- coding: utf-8 -*-), было исключено из-за
стандартизации UTF-8 в качестве кодировки по умолчанию для Python 3 (заменяет
ASCII из Python 2).