Подобно текстовому редактору PyEdit из главы 11 программа PyMail- GUI служит отличным примером развития программного продукта. Поскольку новые версии помогают документировать функциональные возможности этой системы, а главная цель этого примера состоит в том, чтобы показать принципы разработки программного обеспечения на языке Python, давайте коротко познакомимся с последними изменениями.
Новое в версиях 2.1 и 2.0 (третье издание)
Версия 2.1 программы PyMailGUI, представленная в третьем издании книги, вышедшем в начале 2006 года, все еще в значительной мере присутствует и актуальна для данного четвертого издания, вышедшего в 2010 году. Версия 2.1 лишь несколько расширила функциональные возможности версии 2.0, а версия 2.0 была полностью переписана после выхода версии 1.0 во втором издании, с существенным расширением набора возможностей.
Версия 1.0 этой программы из второго издания, написанная в начале 2000 года, содержала всего 685 строк программного кода (515 строк в основном сценарии реализации графического интерфейса и 170 строк в модуле с утилитами для работы с электронной почтой), без учета примеров, повторно использованных в ней, и всего 60 строк справочного текста. В действительности версия 1.0 была чем-то вроде прототипа (если не игрушкой), написанного, по большому счету, чтобы служить коротким примером в книге.
В версии 2.1 в числе новых PyMailGUI были добавлены (и посейчас входят в арсенал) следующие особенности:
• Поддержка просмотра и составления почтовых сообщений, состоящих из нескольких частей с вложениями.
• Операции отправки почты больше не блокируют работу программы и могут перекрываться во времени.
• Почтовые сообщения могут сохраняться в локальных файлах и обрабатываться без подключения к Интернету.
• Дополнительные части сообщений могут теперь автоматически открываться в графическом интерфейсе.
• Поддерживается возможность выбора нескольких сообщений одновременно для обработки в нескольких окнах.
• Первоначально загружаются только заголовки сообщений — полный текст сообщения извлекается по требованию.
• Заголовки окон просмотра и колонки в окне с оглавлением могут настраиваться.
• Удаление выполняется немедленно, а не откладывается до завершения программы.
• Для большинства операций передачи почты в графическом интерфейсе отображается индикатор хода их выполнения.
• При просмотре выполняется автоматический перенос длинных строк.
• Шрифты и цвета, используемые в окнах просмотра сообщений и оглавления, могут настраиваться пользователем.
• Поддерживается аутентификация на серверах SMTP, требующих указать имя и пароль учетной записи при отправке.
• Отправленные сообщения сохраняются в локальном файле, который можно открыть в графическом интерфейсе.
• При просмотре содержимого сообщения интеллектуально выбирается главная текстовая часть.
• Уже извлеченные заголовки и полные тексты сообщений кэшируются для большей эффективности.
• Строки с датами и адресами в составляемых почтовых сообщениях форматируются должным образом.
• В окнах просмотра сообщений теперь выводятся кнопки для быстрого доступа к вложениям/частям (2.1).
• Ошибки синхронизации ящика входящих сообщений обнаруживаются при выполнении операций удаления, получения оглавления и загрузки сообщений (2.1).
• Загрузка из файла и сохранение электронных писем в файле выполняется в отдельном потоке выполнения, чтобы избежать паузы при обработке больших файлов (2.1).
Последние три пункта в этом списке были добавлены в версии 2.1; остальные относятся к полностью переписанной версии 2.0. Некоторые из этих изменений просто наращивают возможности инструментов в стандартной библиотеке (например, поддержка вложений является прямым следствием появления нового пакета email), но наиболее существенные изменения были внесены в саму программу PyMailGUI. Было также внесено несколько очевидных исправлений: реализован более точный анализ адресов, а формат представления даты в отправляемых сообщениях приведен в соответствие со стандартами — благодаря тому, что для решения этих задач стали использоваться новые инструменты из пакета email.
Новое в версии 3.0 (четвертое издание)
Версия 3.0 программы PyMailGUI, представленная в четвертом издании книги, наследует все улучшения, внесенные в версию 2.1 и описанные в предыдущем разделе, и добавляет множество новых усовершенствований. Изменения в версии 3.0, пожалуй, нельзя назвать внушительными, однако в ней были решены некоторые важные проблемы, связанные с удобством в использовании, что в сумме вполне тянет на то, чтобы присвоить ей новый старший номер версии. Ниже приводится перечень появившихся нововведений:
Пере нос на Py thon 3.X
Реализация была изменена так, что теперь программа выполняется только под управлением Python 3.X — для поддержки версии Python 2.X необходимо вносить изменения в программный код. Для решения одних задач по переносу в Python 3.X в программный код достаточно было внести лишь незначительные поправки, тогда как для других потребовалось вносить более серьезные идиоматические изменения. Новый подход к поддержке Юникода в Python 3.X, например, в значительной степени повлиял на реализацию поддержки интернационализации в этой версии PyMailGUI (обсуждается ниже).
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011