Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 19, 2011 07:59:15

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Интересный глюк версий...

Привет всем.

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

Так вот к чему я… Синтаксически, код полностью был полностью валиден для “двойки” и это не хорошо.
В таких случаях, как мне кажется, надо в начале модуля делать проверку версии с соответствующим эксцепшеном.

Или, может, есть способ собрать один пакет и для “двойки” и для “тройки”, но так, чтобы установилась нужная часть? Я думаю, что setuptools должен это как-то уметь…



Офлайн

#2 Апрель 19, 2011 16:17:53

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Интересный глюк версий...

Как-то умеет.
use_2to3=True
Но если автор не захотел — никто его не заставит. Плюс есть нюансы.



Офлайн

#3 Апрель 19, 2011 18:48:56

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Интересный глюк версий...

Ну и само собой я просто обязан спросить о нюансах!.. :-)
Хотя бы в двух словах.



Офлайн

#4 Апрель 19, 2011 19:33:00

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Интересный глюк версий...

use_2to3 указывается параметром функции setup. При этом фиксеры кода для тройки берутся из lib2to3.fixers. Также можно добавлять свои фиксеры параметром use_2to3_fixers. Там еще есть какие-то параметры с доктестами, но это уже в доке надешь.



Отредактировано (Апрель 19, 2011 19:33:15)

Офлайн

#5 Апрель 20, 2011 21:43:38

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Интересный глюк версий...

Офлайн

#6 Апрель 21, 2011 08:08:58

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Интересный глюк версий...

Спасибо, почитаю.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version