Основные изменения в PyMailGUI

osnovnye izmeneniya v pymailgui Почтовый клиент PyMailGUI Python

Подобно текстовому редактору 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 была чем-то вроде прототипа (если не игрушкой), написанного, по большому счету, чтобы служить коротким примером в книге.

Хотя и без поддержки возможности обработки интернационализированного содержимого электронных писем и других расширений, появившихся в версии 3.0, тем не менее, версия PyMailGUI 2.1 в третьем издании превратилась в более практичную и более богатую возможностями программу, которую можно использовать для повседневной работы с электронной почты. Ее размер вырос почти в три раза и достиг 1800 строк нового программного кода (плюс 1700 строк во взаимосвязанных модулях и 500 дополнительных строк справочного текста). В сравнении, размер версии 3.0 вырос всего на 30% и достиг 2400 строк нового программного кода, как уже отмечалось выше (плюс 2500 во взаимосвязанных модулях и 1700 строк справочного текста). Кому интересна статистика, могут заглянуть в файл linecounts-prior-version.xls в подкаталоге media, где приводятся точные цифры количества строк по файлам в версии 2.1.

В версии 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

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий