2015-12-14 3 views
0

Я использую доктрины Python для кода, который должен работать с Python 2 и Python 3. Все работает отлично, за исключением случаев, когда я работаю с массивом numpy, содержащим строки. В Python 3, следующий правильно:doctests с numpy массивами в Python 2 и 3

>>> np.array(["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]) # doctest: +NORMALIZE_WHITESPACE 
array(['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 
     'oct', 'nov', 'dec'], 
     dtype='<U3') 

С Python 2, этот результат ожидается:

array(['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 
     'oct', 'nov', 'dec'], 
     dtype='|S3') 

Примечание <U3 против |S3 разница.

Есть ли простой способ настроить мой код, чтобы проходить тесты в обеих версиях Python? Я хочу сделать арендные навязчивые изменения. Поскольку доктрины также нацелены на пользователей (чтобы они могли видеть, как использовать код), я не хочу слишком сложного или вводящего в заблуждение кода, чтобы дать им неправильное представление о правильном использовании.

+1

У меня была аналогичная проблема, и моим решением было сбрасывать доктрины. – wim

+0

related: [Являются ли переносные доктрины для python 2/python 3 возможными?] (Http://stackoverflow.com/q/20805434/674039) – wim

+0

Спасибо. Теперь я немного изменил заголовок, чтобы упомянуть массивы numpy, чтобы он не дублировал связанный вопрос. –

ответ

0

Я не знаю, если это будет приемлемо для вас или нет, но разница видна только в __repr__:

>>> A = np.array(["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]) 
>>> A 
array(['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 
     'oct', 'nov', 'dec'], 
     dtype='|S3') 

Итак, если вы измените doctests проверить распечатки массива , он должен быть совместимым.

>>> print(A) 
['jan' 'feb' 'mar' 'apr' 'may' 'jun' 'jul' 'aug' 'sep' 'oct' 'nov' 'dec'] 

Это Hacky обходной путь в лучшем случае, но doctests очень ограничивающими и не гибок для питона совместимости 2/Python 3.

 Смежные вопросы

  • Нет связанных вопросов^_^