Привет всем.
Вчера напоролся на очень прикольный глюк. Я использую WTForms с полем для даты, использующим dateutils.
Так вот вчера обновил виртуальное окружение и появился глюк: при сохранении поля в dateutils вылезала ошибка, говорящая о том, что некий объект совсем не итерируемый. Т.е. абсолютно. Я полез в код и напоролся на то, что используется __next__ вместо next.
Сначала я растерялся и попробовал создать next (вдруг автор был пьян?), но появился ещё глюк, дальше по коду. Я решил, что это какой-то бред и полез в доку. А там ясно и чётко написано, что начиная с версии 2.0, dateutils портирован на третью ветку питона и если вы всё ещё на второй, то пользуйте старые версии.
Удалив его и написав “python-dateutils<2” в зависимостях, проблема была решена.
Так вот к чему я… Синтаксически, код полностью был полностью валиден для “двойки” и это не хорошо.
В таких случаях, как мне кажется, надо в начале модуля делать проверку версии с соответствующим эксцепшеном.
Или, может, есть способ собрать один пакет и для “двойки” и для “тройки”, но так, чтобы установилась нужная часть? Я думаю, что setuptools должен это как-то уметь…