Переход на Werkzeug 1.0
В Werkzeug изначально была магическая система импорта, которая позволяла импортировать всё из одного модуля, а фактические реализации загружать по мере необходимости. К сожалению, это оказалось медленным и ненадежным на альтернативных реализациях Python и на платформе Google App Engine.
Начиная с версии 0.7, мы рекомендуем отказаться от коротких импортов и настоятельно рекомендуем импортировать функции непосредственно из соответствующего модуля реализации. Werkzeug 1.0 полностью отключит магическую систему импорта.
Поскольку поиск места импорта функций и переписывание их вручную — это болезненная и скучная задача, мы разработали инструмент, который поможет в этом переходе.
Автоматическое переписывание импортов
Например, в Werkzeug версии < 0.7 рекомендуемым способом использования функции escape был:
from werkzeug import escape
В Werkzeug версии 0.7 рекомендуемый способ импорта этой функции — непосредственно из модуля utils (а в версии 1.0 это станет обязательным). Для автоматического переписывания всех импортов можно использовать скрипт werkzeug-import-rewrite.
Его можно использовать, выполнив его с помощью Python и списком папок с кодом на базе Werkzeug. Он выведет файл патча, совместимый с hg/git. Пример создания файла патча:
$ python werkzeug-import-rewrite.py . > new-imports.udiff
Для применения патча подойдут следующие методы:
hg:
hg import new-imports.udiff
git:
git apply new-imports.udiff
patch:
patch -p1 < new-imports.udiff
Устаревший и удаленный код
Некоторые вещи, которые были важны для ядра Werkzeug (работа с WSGI и HTTP), были удалены. Они не использовались широко или лучше обслуживаются специализированными библиотеками.
-
werkzeug.script, заменяйте на Click или другую специализированную библиотеку для командной строки. -
werkzeug.template, заменяйте на Jinja или другую специализированную библиотеку для шаблонов. -
werkzeug.contrib.jsrouting, этот тип генерации URL в JavaScript плохо масштабировался. Вместо этого генерируйте URL при рендеринге шаблонов или добавьте поле URL в JSON-ответ. -
werkzeug.contrib.kickstart, заменяйте на собственный код, если необходимо, API Werkzeug в целом улучшен. Flask — это более высокий уровень версии этого. -
werkzeug.contrib.testtools, не было существенно полезнее по умолчанию. -
werkzeug.contrib.cache, был выделен в cachelib. -
werkzeug.contrib.atom, выходил за рамки основного фокуса Werkzeug, замените на специализированную библиотеку для генерации лент. -
werkzeug.contrib.limiter, ограничение потока лучше обрабатывается библиотекой WSGI-сервера, а не средством.
© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/0.16.x/transition/