Переход на Werkzeug 1.0
В Werkzeug изначально была волшебная система импорта, которая позволяла импортировать всё из одного модуля и при этом загружать фактические реализации по мере необходимости. К сожалению, это оказалось медленным и ненадежным на альтернативных реализациях Python и на App Engine от Google.
Начиная с версии 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-сервера, а не middleware.
© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/0.15.x/transition/