Spec-Zone.ru › Flask

Изменения

Версия 3.1.1

Не выпущена

  • Исправить подсказку типа для cli_runner.invoke. #5645

Версия 3.1.0

Выпущена 2024-11-13

  • Убрать поддержку Python 3.8. #5623
  • Обновить минимальные версии зависимостей до последних релизов функций. Werkzeug >= 3.1, ItsDangerous >= 2.2, Blinker >= 1.9. #5624,5633
  • Предоставить параметр конфигурации для управления автоматическими ответами на опции. #5496
  • Flask.open_resource/open_instance_resource и Blueprint.open_resource принимают параметр encoding, используемый при открытии в текстовом режиме. По умолчанию значение utf-8. #5504
  • Request.max_content_length может быть настраиваемым для каждого запроса вместо настройки только через конфигурацию MAX_CONTENT_LENGTH. Добавлена конфигурация MAX_FORM_MEMORY_SIZE и MAX_FORM_PARTS. Добавлены документация о лимитах ресурсов на страницу безопасности. #5625
  • Добавить поддержку атрибута cookie Partitioned (CHIPS) с помощью конфигурации SESSION_COOKIE_PARTITIONED. #5472
  • -e path имеет приоритет над значениями по умолчанию для файлов .env и .flaskenv. load_dotenv загружает файлы по умолчанию дополнительно к пути, если не передается load_defaults=False. #5628
  • Поддержка вращения ключей с конфигурацией SECRET_KEY_FALLBACKS, списком старых секретных ключей, которые все еще могут использоваться для проверки подписи. Расширениям потребуется добавить поддержку. #5621
  • Исправить взаимодействие установки host_matching=True или subdomain_matching=False с SERVER_NAME. Установка SERVER_NAME больше не ограничивает запросы только этим доменным именем. #5553
  • Request.trusted_hosts проверяется во время маршрутизации и может быть установлено через конфигурацию TRUSTED_HOSTS. #5636

Версия 3.0.3

Выпущена 2024-04-07

  • Значение по умолчанию для hashlib.sha1 может быть недоступно в сборках FIPS. Не обращайтесь к нему во время импорта, чтобы разработчик успел изменить значение по умолчанию. #5448
  • Не инициализируйте атрибут cli в шаблоне sansio, а в конкретном классе Flask. #5270

Версия 3.0.2

Выпущена 2024-02-03

  • Исправить тип для свойства jinja_loader. #5388
  • Исправить ошибку с параметрами командной строки --extra-files и --exclude-patterns. #5391

Версия 3.0.1

Выпущена 2024-01-18

  • Исправить тип аргумента path для send_file. #5336
  • Исправить опечатку в сообщении об ошибке для параметра flask run --key. #5344
  • Данные сессии не помечены без использования встроенных json.loads object_hook. Это позволяет использовать другие поставщики JSON, которые не реализуют это. #5381
  • Обработать больше находок типов при использовании режима mypy strict. #5383

Версия 3.0.0

Выпущена 2023-09-30

  • Удалить ранее устаревший код. #5223
  • Устареть атрибут __version__. Используйте обнаружение функций или importlib.metadata.version("flask") вместо него. #5230
  • Перестроить код таким образом, чтобы классы Flask (app) и Blueprint имели базовые классы Sans-IO. #5127
  • Разрешить self в качестве аргумента url_for. #5264
  • Требовать Werkzeug >= 3.0.0.

Версия 2.3.3

Выпущена 2023-08-21

  • Совместимость с Python 3.12.
  • Требовать Werkzeug >= 2.3.7.
  • Использовать flit_core вместо setuptools в качестве бэкенда сборки.
  • Переработать способ определения корневого и экземплярного путей приложения. #5160

Версия 2.3.2

Выпущена 2023-05-01

  • Установить заголовок Vary: Cookie при обращении, изменении или обновлении сессии.
  • Обновить требование к Werkzeug до >=2.3.3 для применения последних исправлений ошибок.

Версия 2.3.1

Выпущена 2023-04-25

  • Восстановить устаревший from flask import Markup. #5084

Версия 2.3.0

Выпущена 2023-04-25

  • Убрать поддержку Python 3.7. #5072
  • Обновить минимальные требования до последних версий: Werkzeug>=2.3.0, Jinja2>3.1.2, itsdangerous>=2.1.2, click>=8.1.3.
  • Удалить ранее устаревший код. #4995

    • Методы push и pop устаревших объектов _app_ctx_stack и _request_ctx_stack удалены. top все еще существует, чтобы дать расширениям больше времени на обновление, но он будет удален.
    • Переменная среды FLASK_ENV, ключ конфигурации ENV и свойство app.env удалены.
    • Свойства session_cookie_name, send_file_max_age_default, use_x_sendfile, propagate_exceptions и templates_auto_reload объекта app удалены.
    • Ключи конфигурации JSON_AS_ASCII, JSON_SORT_KEYS, JSONIFY_MIMETYPE и JSONIFY_PRETTYPRINT_REGULAR удалены.
    • Декораторы app.before_first_request и bp.before_app_first_request удалены.
    • Атрибуты json_encoder и json_decoder в app и blueprint, а также соответствующие классы json.JSONEncoder и JSONDecoder удалены.
    • Функции json.htmlsafe_dumps и htmlsafe_dump удалены.
    • Вызов методов настройки для blueprint после регистрации является ошибкой, а не предупреждением. #4997
  • Импорт escape и Markup из flask устарел. Импортируйте их напрямую из markupsafe вместо этого. #4996
  • Свойство app.got_first_request устарело. #4997
  • Декоратор locked_cached_property устарел. Используйте блокировку внутри декорированной функции, если требуется блокировка. #4993
  • Сигналы всегда доступны. blinker>=1.6.2 является обязательной зависимостью. Атрибут signals_available устарел. #5056
  • Сигналы поддерживают функции-подписчиков async. #5049
  • Удалить использование блокировок, которые могут вызывать блокировку запросов друг другом очень кратковременно. #4993
  • Использовать современные метаданные упаковки с pyproject.toml вместо setup.cfg. #4947
  • Убедиться, что поддомены применяются с вложенными blueprint. #4834
  • config.from_file может использовать text=False для указания того, что парсеру нужен двоичный файл вместо текстового. #4989
  • Если blueprint создается с пустым именем, генерируется ошибка ValueError. #5010
  • SESSION_COOKIE_DOMAIN не использует SERVER_NAME в качестве обратного преобразования. По умолчанию домен не устанавливается, что современные браузеры интерпретируют как точное совпадение, а не как совпадение по поддомену. Предупреждения о localhost и IP-адресах также удалены. #5051
  • Команда routes показывает subdomain или host каждого правила при использовании сопоставления по домену. #5004
  • Использовать отложенную оценку аннотаций. #5071
END_OF_DOCUMENT_MARKER

Версия 2.2.5

Выпущено 2023-05-02

  • Обновление для совместимости с Werkzeug 2.3.3.
  • Устанавливается заголовок Vary: Cookie при доступе, изменении или обновлении сеанса.

Версия 2.2.4

Выпущено 2023-04-25

  • Обновление для совместимости с Werkzeug 2.3.

Версия 2.2.3

Выпущено 2023-02-15

  • Автоэкранирование включено по умолчанию для .svg шаблонов. #4831
  • Исправлен тип template_folder для принятия pathlib.Path. #4892
  • Добавлен параметр --debug к команде flask run. #4777

Версия 2.2.2

Выпущено 2022-08-08

  • Обновление зависимости Werkzeug до >= 2.2.2. Это включает исправления, связанные с новым более быстрым маршрутизатором, разбором заголовков и сервером разработки. #4754
  • Исправлено значение по умолчанию для app.env на "production". Это свойство остается устаревшим. #4740

Версия 2.2.1

Выпущено 2022-08-03

  • Установка или доступ к json_encoder или json_decoder вызывает предупреждение об устаревании. #4732

Версия 2.2.0

Выпущено 2022-08-01

  • Удален ранее устаревший код. #4667

    • Старые имена некоторых параметров send_file были удалены. download_name заменяет attachment_filename, max_age заменяет cache_timeout, а etag заменяет add_etags. Кроме того, path заменяет filename в send_from_directory.
    • Свойство RequestContext.g, возвращающее AppContext.g, удалено.
  • Обновление зависимости Werkzeug до >= 2.2.
  • Контексты приложения и запроса управляются непосредственно с помощью переменных контекста Python, а не через механизм LocalStack Werkzeug. Это должно привести к улучшенной производительности и использованию памяти. #4682

    • Разработчики расширений, обратите внимание, что _app_ctx_stack.top и _request_ctx_stack.top устарели. Храните данные в g, используя уникальный префикс, например, g._extension_name_attr.
  • Переменная среды FLASK_ENV и атрибут app.env устарели, устраняя различие между режимами разработки и отладки. Режим отладки должен контролироваться непосредственно параметром --debug или app.run(debug=True). #4714
  • Некоторые атрибуты, которые проксировали ключи конфигурации в app, устарели: session_cookie_name, send_file_max_age_default, use_x_sendfile, propagate_exceptions и templates_auto_reload. Используйте соответствующие ключи конфигурации вместо них. #4716
  • Добавлены новые точки настройки в объект приложения Flask для многих ранее глобальных поведений.

    • flask.url_for будет вызывать app.url_for. #4568
    • flask.abort будет вызывать app.aborter. Flask.aborter_class и Flask.make_aborter могут использоваться для настройки этого прерывания. #4567
    • flask.redirect будет вызывать app.redirect. #4569
    • flask.json является экземпляром JSONProvider. Можно установить другой поставщик для использования другой библиотеки JSON. flask.jsonify будет вызывать app.json.response, другие функции в flask.json будут вызывать соответствующие функции в app.json. #4692
  • Конфигурация JSON перемещена в атрибуты по умолчанию app.json поставщика. JSON_AS_ASCII, JSON_SORT_KEYS, JSONIFY_MIMETYPE и JSONIFY_PRETTYPRINT_REGULAR устарели. #4692
  • Установка пользовательских классов json_encoder и json_decoder в приложении или в модуле blueprints, а также соответствующих классов json.JSONEncoder и JSONDecoder, устарели. Теперь поведение JSON можно переопределить с помощью интерфейса поставщика app.json. #4692
  • json.htmlsafe_dumps и json.htmlsafe_dump устарели, функция теперь встроена в Jinja. #4692
  • Рефакторинг register_error_handler для консолидации проверки ошибок. Переписаны некоторые сообщения об ошибках для большей согласованности. #4559
  • Использование декораторов и функций Blueprint, предназначенных для настройки после регистрации модуля, выведет предупреждение. В следующей версии это станет ошибкой, как и методы настройки приложения.
  • before_first_request устарело. Выполняйте код настройки при создании приложения вместо этого. #4605
  • Добавлен атрибут класса View.init_every_request. Если подкласс представления установит его в False, представление не будет создавать новый экземпляр при каждом запросе. #2520.
  • Группа Click flask.cli.FlaskGroup может быть вложена как подкоманда в пользовательском CLI.
  • Добавлены параметры --app и --debug в CLI flask, вместо необходимости устанавливать их через переменные среды. #2836
  • Добавлен параметр --env-file в CLI flask. Это позволяет указать файл dotenv для загрузки дополнительно к .env и .flaskenv. #3108
  • Больше не требуется декоратор пользовательских команд CLI в app.cli или blueprint.cli с @with_appcontext, так как контекст приложения будет активен на этом этапе. #2410
  • SessionInterface.get_expiration_time использует значение с учетом часового пояса. #4645
  • Функции представлений могут возвращать генераторы непосредственно, вместо обертки их в Response. #4629
  • Добавлены функции stream_template и stream_template_string для рендеринга шаблона как потока частей. #4629
  • Новая реализация сохранения контекста во время отладки и тестирования. #4666

    • request, g и другие локальные переменные контекста указывают на правильные данные при выполнении кода в консоли интерактивного отладчика. #2836
    • Функции завершения всегда выполняются в конце запроса, даже если контекст сохраняется. Они также выполняются после того, как сохраненный контекст будет извлечен.
    • stream_with_context сохраняет контекст отдельно от блока with client. Он будет очищен при вызове response.get_data() или response.close().
  • Разрешение возвращать список из функции представления для преобразования его в JSON-ответ, как в случае с dict. #4672
  • При проверке типов разрешено возвращать TypedDict из функций представлений. #4695
  • Удалены параметры --eager-loading/--lazy-loading из команды flask run. Приложение всегда загружается в первый раз, а затем загружается по запросу в процессе перезагрузки. Перезагрузчик всегда сразу печатает ошибки, но продолжает обслуживать. Удален внутренний middleware DispatchingApp используемый предыдущей реализацией. #4715

Версия 2.1.3

Выпущено 2022-07-13

  • Встроенные необязательные импорты, которые используются только для определённых команд CLI. #4606
  • Смягчение анотации типа для функций after_request. #4600
  • instance_path для пакетов имен пространств использует путь, наиболее близкий к импортированному подмодулю. #4610
  • Более чёткое сообщение об ошибке, когда render_template и render_template_string используются вне контекста приложения. #4693
END_OF_DOCUMENT_MARKER

Версия 2.1.2

Выпущено 2022-04-28

  • Исправлено аннотация типа для json.loads, она принимает str или bytes. #4519
  • Опции --cert и --key для flask run могут быть указаны в любом порядке. #4459

Версия 2.1.1

Выпущено 2022-03-30

  • Установлена минимальная требуемая версия importlib_metadata 3.6.0, которая необходима для Python < 3.10. #4502

Версия 2.1.0

Выпущено 2022-03-28

  • Отказ от поддержки Python 3.6. #4335
  • Обновление зависимости Click до >= 8.0. #4008
  • Удаление ранее устаревшего кода. #4337

    • CLI не передает script_info функциям фабрики приложений.
    • config.from_json заменено на config.from_file(name, load=json.load).
    • json функции больше не принимают параметр encoding.
    • safe_join удалено, используйте werkzeug.utils.safe_join вместо него.
    • total_seconds удалено, используйте timedelta.total_seconds вместо него.
    • Один и тот же Blueprint не может быть зарегистрирован с тем же именем. Используйте name= при регистрации, чтобы указать уникальное имя.
    • Параметр as_tuple тестового клиента удален. Используйте response.request.environ вместо него. #4417
  • Некоторые параметры в send_file и send_from_directory были переименованы в 2.0. Срок устаревания старых имен продлён до 2.2. Убедитесь, что при тестировании включены предупреждения об устаревании.

    • attachment_filename переименовано в download_name.
    • cache_timeout переименовано в max_age.
    • add_etags переименовано в etag.
    • filename переименовано в path.
  • Свойство RequestContext.g устарело. Используйте g напрямую или AppContext.g вместо него. #3898
  • copy_current_request_context может декорировать асинхронные функции. #4303
  • CLI использует importlib.metadata вместо pkg_resources для загрузки точек входа команд. #4419
  • Переопределение FlaskClient.open не вызовет ошибку при перенаправлении. #3396
  • Добавлена опция --exclude-patterns к команде CLI flask run для указания шаблонов, которые будут проигнорированы перезагрузчиком. #4188
  • При использовании ленивой загрузки (по умолчанию с отладчиком) контекст Click из команды flask run остается доступным в потоке загрузчика. #4460
  • Удаление куки сессии использует флаг httponly. #4485
  • Расслабление типизации для errorhandler позволяет пользователю использовать более точные типы и несколько раз декорировать одну и ту же функцию. #4095, 4295, 4297
  • Исправление типизации методов __exit__ для лучшей совместимости с ExitStack. #4474
  • Из Werkzeug, для ответов с перенаправлением URL в заголовке Location остаётся относительным по умолчанию и исключает схему и домен. #4496
  • Добавлен Config.from_prefixed_env() для загрузки значений конфигурации из переменных окружения, начинающихся с FLASK_ или другого префикса. По умолчанию парсит значения как JSON и позволяет задавать ключи в вложенных словарях. #4479

Версия 2.0.3

Выпущено 2022-02-14

  • Параметр as_tuple тестового клиента устарел и будет удалён в Werkzeug 2.1. Теперь он также устарел в Flask, чтобы быть удалённым в Flask 2.1, оставаясь совместимым с обоими в 2.0.x. Используйте response.request.environ вместо него. #4341
  • Исправлено аннотация типа для декоратора errorhandler. #4295
  • Отменено изменение в CLI, которое привело к скрытию ImportError строк отслеживания при импорте приложения. #4307
  • app.json_encoder и json_decoder передаются только в dumps и loads, если они имеют специальное поведение. Это улучшает производительность, в основном на PyPy. #4349
  • Более понятное сообщение об ошибке при использовании after_this_request вне контекста запроса. #4333

Версия 2.0.2

Выпущено 2021-10-04

  • Исправлена аннотация типа для методов teardown_*. #4093
  • Исправлены аннотации типа для декораторов before_request и before_app_request. #4104
  • Исправлена проблема, когда типизация требует, чтобы глобальные декораторы шаблонов принимали функции без аргументов. #4098
  • Поддержка экземпляров View и MethodView с асинхронными обработчиками. #4112
  • Улучшена типизация декоратора app.errorhandler. #4095
  • Исправлена регистрация Blueprint дважды с разными именами. #4124
  • Исправлен тип static_folder для приема pathlib.Path. #4150
  • jsonify обрабатывает decimal.Decimal, кодируя в str. #4157
  • Правильная обработка поднятия отложенных ошибок в ленивой загрузке CLI. #4096
  • Загрузчик CLI обрабатывает **kwargs в функции create_app. #4170
  • Исправлен порядок before_request и других обратных вызовов, которые срабатывают до возврата представления. Они вызываются снизу вверх от приложения к самому внутреннему вложенному blueprint. #4229
END_OF_DOCUMENT_MARKER

Версия 2.0.1

Выпущено 2021-05-21

  • Добавлен параметр filename в send_from_directory. Параметр filename переименован в path, старое имя устарело. #4019
  • Отмечены имена верхнего уровня как экспортируемые, чтобы проверка типов понимала импорты в пользовательских проектах. #4024
  • Исправлена аннотация типа для g и сообщено mypy, что это объект пространства имен с произвольными атрибутами. #4020
  • Исправлены некоторые типы, которые были недоступны в Python 3.6.0. #4040
  • Улучшена типизация для send_file, send_from_directory, и get_send_file_max_age. #4044, #4026
  • Отображение ошибки, когда имя блейнкрипта содержит точку. . имеет специальное значение, используется для разделения (вложенных) имён блейнкрипта и имени конечной точки. #4041
  • Объединение префиксов URL при вложении блейнкритов, созданных со значением url_prefix. #4037
  • Откат изменения порядка выполнения сопоставления URL. URL снова сопоставляется после загрузки сессии, поэтому сессия доступна в пользовательских преобразователях URL. #4053
  • Добавлен устаревший параметр Config.from_json, который был случайно удалён ранее. #4078
  • Улучшена типизация некоторых функций, использующих Callable в своих сигнатурах типов, с фокусом на фабриках декораторов. #4060
  • Вложенные блейнкриты регистрируются с их имён с точками. Это позволяет различным блейнкритам с одинаковым именем быть вложенными в разных местах. #4069
  • register_blueprint принимает опцию name для изменения имени блейнкрита (до добавления точек), с которым он зарегистрирован. Это позволяет зарегистрировать один и тот же блейнкрит несколько раз с уникальными именами для url_for. Регистрация одного и того же блейнкрита с одинаковым именем несколько раз устарела. #1091
  • Улучшена типизация для stream_with_context. #4052

Версия 2.0.0

Выпущено 2021-05-11

  • Отказ от поддержки Python 2 и 3.5.
  • Повышение минимальных версий других проектов Pallets: Werkzeug >= 2, Jinja2 >= 3, MarkupSafe >= 2, ItsDangerous >= 2, Click >= 8. Обязательно ознакомьтесь с журналом изменений каждого проекта. Для лучшей совместимости с другими приложениями (например, Celery), которые всё ещё требуют Click 7, жёсткой зависимости от Click 8 пока нет, но использование Click 7 вызовет DeprecationWarning, а Flask 2.1 будет зависеть от Click 8.
  • Поддержка JSON больше не использует simplejson. Чтобы использовать другой модуль JSON, переопределите app.json_encoder и json_decoder. #3555
  • Опция encoding для функций JSON устарела. #3562
  • Передача script_info в функции фабрики приложения устарела. Это не было переносимым за пределами команды flask. Используйте click.get_current_context().obj если это необходимо. #3552
  • Интерфейс командной строки отображает более информативные сообщения об ошибках, когда приложение не загрузилось при поиске команд. #2741
  • Добавлен SessionInterface.get_cookie_name для динамического изменения имени cookie сессии. #3369
  • Добавлен Config.from_file для загрузки конфигурации с использованием произвольных загрузчиков файлов, таких как toml.load или json.load. Config.from_json устарело в пользу этого. #3398
  • Команда flask run будет откладывать ошибки только при перезагрузке. Ошибки, присутствующие во время первоначального вызова, приведут к немедленному завершению сервера с отслеживанием ошибок. #3431
  • send_file вызывает ValueError при передаче объекта io в текстовом режиме. Раньше он отвечал 200 OK и пустым файлом. #3358
  • При использовании самодельных сертификатов проверяется библиотека cryptography вместо PyOpenSSL. #3492
  • При указании функции фабрики с FLASK_APP, можно передать именованные аргументы. #3553
  • При загрузке файла .env или .flaskenv, текущая рабочая директория больше не изменяется на расположение файла. #3560
  • При возвращении кортежа (response, headers) из представления, заголовки заменяют, а не расширяют существующие заголовки ответа. Например, это позволяет установить Content-Type для jsonify(). Используйте response.headers.extend() если требуется расширение. #3628
  • Класс Scaffold предоставляет общий API для классов Flask и Blueprint. Информация Blueprint хранится в атрибутах так же, как и Flask, а не в неявных лямбда-функциях. Это направлено на повышение согласованности и поддерживаемости. #3215
  • Включить samesite и secure опции при удалении cookie сессии. #3726
  • Поддержка передачи pathlib.Path в static_folder. #3579
  • send_file и send_from_directory являются обёртками над реализациями в werkzeug.utils. #3828
  • Некоторые параметры send_file были переименованы, старые имена устарели. attachment_filename переименован в download_name. cache_timeout переименован в max_age. add_etags переименован в etag. #3828, 3883
  • send_file передает download_name даже если as_attachment=False используя Content-Disposition: inline. #3828
  • send_file устанавливает conditional=True и max_age=None по умолчанию. Cache-Control устанавливается в no-cache если max_age не установлено, иначе public. Это сообщает браузерам проверять условные запросы вместо использования кэширования с таймерами. #3828
  • helpers.safe_join устарело. Используйте werkzeug.utils.safe_join вместо него. #3828
  • Контекст запроса выполняет сопоставление маршрутов перед открытием сессии. Это может позволить интерфейсу сессии изменять поведение на основе request.endpoint. #3776
  • Используйте реализацию Jinja фильтра |tojson. #3881
  • Добавлены декораторы маршрутов для общих HTTP-методов. Например, @app.post("/login") является сокращением для @app.route("/login", methods=["POST"]). #3907
  • Поддержка асинхронных представлений, обработчиков ошибок, до и после запроса, и функций завершения. #3412
  • Поддержка вложения блейнкритов. #593, 1548, #3923
  • Установите кодировку по умолчанию в «UTF-8» при загрузке .env и .flaskenv файлов, чтобы разрешить использование символов не ASCII. #3931
  • flask shell настраивает табуляцию и автодополнение истории, как в стандартной оболочке python если readline установлен. #3941
  • helpers.total_seconds() устарело. Используйте timedelta.total_seconds() вместо него. #3962
  • Добавлены подсказки типов. #3973.

Версия 1.1.4

Выпущено 2021-05-13

  • Обновлен static_folder для использования _compat.fspath вместо os.fspath для продолжения поддержки Python < 3.6 #4050
END_OF_DOCUMENT_MARKER

Версия 1.1.3

Выпущено 2021-05-13

  • Установлены максимальные версии Werkzeug, Jinja, Click и ItsDangerous. #4043
  • Добавлена поддержка передачи pathlib.Path для static_folder. #3579

Версия 1.1.2

Выпущено 2020-04-03

  • Решение проблемы при запуске команды flask с внешним отладчиком в Windows. #3297
  • Статическая маршрутизация не будет обрабатывать все URL, если аргумент Flask static_folder заканчивается слешем. #3452

Версия 1.1.1

Выпущено 2019-07-08

  • Флаг flask.json_available был добавлен обратно для совместимости с некоторыми расширениями. При использовании он будет вызывать предупреждение о устаревании и будет удален в версии 2.0.0. #3288

Версия 1.1.0

Выпущено 2019-07-04

  • Повышен минимальный уровень версии Werkzeug до >= 0.15.
  • Отобрана поддержка Python 3.4.
  • Обработчики ошибок для InternalServerError или 500 всегда будут получать экземпляр InternalServerError. Если они вызваны из-за необработанного исключения, то исходное исключение теперь доступно как e.original_exception, а не передаётся непосредственно обработчику. То же самое относится к обработчику базового HTTPException. Это делает поведение обработчиков ошибок более согласованным. #3266

    • Flask.finalize_request вызывается для всех необработанных исключений, даже если нет обработчика ошибок 500.
  • Flask.logger имеет то же имя, что и Flask.name (значение, переданное как Flask(import_name)). Это возвращает поведение 1.0, когда логирование всегда происходит в "flask.app", чтобы поддерживать несколько приложений в одном процессе. Если будет обнаружено старое конфигурирование, которое нужно перенести, будет показано предупреждение. #2866
  • RequestContext.copy включает текущий объект сессии в копию контекста запроса. Это предотвращает ситуацию, когда session указывает на устаревший объект. #2935
  • Используя встроенный RequestContext, непечатаемые символы Unicode в заголовке Host приведут к ответу HTTP 400, а не HTTP 500, как было раньше. #2994
  • send_file поддерживает объекты PathLike, как описано в PEP 519, чтобы поддерживать pathlib в Python 3. #3059
  • send_file поддерживает BytesIO частичное содержимое. #2957
  • open_resource принимает режим файла “rt”. Это всё ещё делает то же самое, что и “r”. #3163
  • Атрибут MethodView.methods в базовом классе используется подклассами. #3138
  • Flask.jinja_options является dict вместо ImmutableDict, чтобы упростить настройку. Изменения всё равно необходимо вносить до создания среды. #3190
  • Обёртки запроса и ответа JSONMixin Flask были перемещены в Werkzeug. Используйте версию Werkzeug с поддержкой Flask. Это увеличивает зависимость от Werkzeug до >= 0.15. #3125
  • Точка входа команды flask упрощена, чтобы использовать улучшенную поддержку перезагрузчика Werkzeug 0.15. Это увеличивает зависимость от Werkzeug до >= 0.15. #3022
  • Поддержка static_url_path, заканчивающегося слешем. #3134
  • Поддержка пустого static_folder без необходимости устанавливать пустое static_url_path. #3124
  • jsonify поддерживает объекты dataclass. #3195
  • Возможность настраивать Flask.url_map_class для маршрутизации. #3069
  • Порт сервера разработки может быть установлен в 0, что сообщает ОС о выборе доступного порта. #2926
  • Возвращаемое значение из cli.load_dotenv согласуется с документацией. Оно вернёт False, если python-dotenv не установлен или указанный путь не является файлом. #2937
  • Поддержка сигнализации имеет заглушку для метода connect_via когда библиотека Blinker не установлена. #3208
  • Добавлен параметр --extra-files к команде flask run CLI для указания дополнительных файлов, которые будут запускать перезагрузчик при изменении. #2897
  • Разрешение возврата словаря из функции представления. Так же как возврат строки создаёт ответ text/html, возврат словаря вызовет jsonify для создания ответа application/json. #3111
  • Планы имеют группу cli Click, подобную app.cli. Команды CLI, зарегистрированные с планом, будут доступны как группа под командой flask. #1357.
  • При использовании тестового клиента как контекстного менеджера (with client:), все сохранённые контексты запросов удаляются при выходе из блока, гарантируя правильную очистку вложенных контекстов. #3157
  • Вывод более подходящего сообщения об ошибке, если тип возвращаемого значения представления не поддерживается. #3214
  • flask.testing.make_test_environ_builder() устарел в пользу нового класса flask.testing.EnvironBuilder. #3232
  • Команда flask run больше не завершается ошибкой, если Python не скомпилирован с поддержкой SSL. Использование параметра --cert отобразит соответствующее сообщение об ошибке. #3211
  • Сопоставление URL теперь происходит после помещения контекста запроса, а не при его создании. Это позволяет пользовательским преобразователям URL получить доступ к контекстам приложения и запроса, например, для запроса данных из базы данных по идентификатору. #3088

Версия 1.0.4

Выпущено 2019-07-04

  • Ключевая информация для BadRequestKeyError больше не очищается вне режима отладки, поэтому обработчики ошибок всё ещё могут к ней получить доступ. Для этого требуется обновление до Werkzeug 0.15.5. #3249
  • send_file экранирует символы “:” и “/” для большей совместимости с UTF-8 именами файлов в некоторых браузерах. #3074
  • Исправления для PEP 451 импортёров и pytest 5.x. #3275
  • Вывод сообщения о dotenv в stderr вместо stdout. #3285

Версия 1.0.3

Выпущено 2019-05-17

  • send_file кодирует имена файлов как ASCII вместо Latin-1 (ISO-8859-1). Это исправляет совместимость с Gunicorn, который более жёстко относится к кодировкам заголовков, чем PEP 3333. #2766
  • Разрешение пользовательских CLIs, использующих FlaskGroup, для установки флага отладки без его перезаписи на основе переменных среды. #2765
  • flask --version выводит версию Werkzeug и упрощает вывод версии Python. #2825
  • send_file обрабатывает attachment_filename, который является строкой Python 2 (байтами) с кодировкой UTF-8. #2933
  • Обработчик ошибок по умолчанию, зарегистрированный для HTTPException, не обрабатывает RoutingException, который используется внутренне при маршрутизации. Это исправляет неожиданное поведение, появившееся в версии 1.0. #2986
  • Передача аргумента json к app.test_client не помещает/удаляет дополнительный контекст приложения. #2900

Версия 1.0.2

Выпущено 2018-05-02

  • Исправлены проблемы обратной совместимости с объединением слешей между префиксом шаблона и маршрутом. #2748
  • Исправлена ошибка с flask routes командой, когда маршрутов нет. #2751

Версия 1.0.1

Выпущено 2018-04-29

  • Исправлена регистрация частичных (без __name__) как функций представлений. #2730
  • Списки, возвращаемые функциями представлений, больше не обрабатываются так же, как кортежи. Только кортежи интерпретируются как данные ответа. #2736
  • Дополнительные слеши между префиксом шаблона и URL маршрута объединяются. Это исправляет некоторые проблемы обратной совместимости с изменениями в версии 1.0. #2731, #2742
  • Логируются только ошибки BadRequestKeyError в отладочном режиме, а не все ошибки BadRequest. Это позволяет abort(400) продолжить работу как ожидается. #2735
  • Переменная среды FLASK_SKIP_DOTENV может быть установлена в 1, чтобы пропустить автоматическую загрузку файлов dotenv. #2722

Версия 1.0

Выпущено 2018-04-26

  • Python 2.6 и 3.3 больше не поддерживаются.
  • Увеличены минимальные версии зависимостей до последних стабильных версий: Werkzeug >= 0.14, Jinja >= 2.10, itsdangerous >= 0.24, Click >= 5.1. #2586
  • Пропуск app.run при запуске приложения Flask из командной строки. Это позволяет избежать некоторого поведения, которое было сложно отлаживать.
  • Изменено значение по умолчанию для JSONIFY_PRETTYPRINT_REGULAR на False. ~json.jsonify по умолчанию возвращает компактный формат, а в отладочном режиме — отформатированный с отступами. #2193
  • Flask.__init__ принимает аргумент host_matching и устанавливает его на Flask.url_map. #1559
  • Flask.__init__ принимает аргумент static_host и передает его как аргумент host при определении статического маршрута. #1559
  • send_file поддерживает Unicode в attachment_filename. #2223
  • Передача аргумента _scheme из url_for в Flask.handle_url_build_error. #2017
  • Flask.add_url_rule принимает аргумент provide_automatic_options для отключения добавления метода OPTIONS. #1489
  • MethodView подклассы наследуют обработчики методов от базовых классов. #1936
  • Ошибки, возникшие при открытии сессии в начале запроса, обрабатываются обработчиками ошибок приложения. #2254
  • В Blueprints появились атрибуты Blueprint.json_encoder и Blueprint.json_decoder для переопределения кодировщика и декодера приложения. #1898
  • Flask.make_response выдает TypeError вместо ValueError для неправильных типов ответов. Сообщения об ошибках были улучшены, чтобы описать, почему тип недействителен. #2256
  • Добавлен командный интерфейс routes для вывода зарегистрированных маршрутов приложения. #2259
  • Выводится предупреждение, если домен cookie сессии — это просто имя хоста или IP-адрес, так как в некоторых браузерах (например, Chrome) это может работать некорректно.
  • Разрешение IP-адреса как точного домена cookie сессии. #2282
  • SESSION_COOKIE_DOMAIN устанавливается, если он обнаруживается через SERVER_NAME. #2282
  • Автоматическое распознавание фабрики приложения без аргументов, названной create_app или make_app из FLASK_APP. #2297
  • Функции-фабрики не обязаны принимать параметр script_info для работы с командой flask. Если они принимают один параметр или параметр с именем script_info, будет передан объект ScriptInfo. #2319
  • FLASK_APP может быть установлено на фабрику приложения с аргументами, если это необходимо, например FLASK_APP=myproject.app:create_app('dev'). #2326
  • FLASK_APP может указывать на локальные пакеты, которые не установлены в режиме редактирования, хотя pip install -e по-прежнему предпочтительнее. #2414
  • Атрибут класса View View.provide_automatic_options устанавливается в View.as_view, чтобы быть обнаруженным Flask.add_url_rule. #2316
  • Обработка ошибок будет пытаться использовать обработчики, зарегистрированные для blueprint, code, app, code, blueprint, exception, app, exception. #2314
  • Cookie добавляется в заголовок ответа Vary , если к сессии был обращение в ходе запроса (и она не удалялась). #2288
  • Flask.test_request_context принимает аргументы subdomain и url_scheme для использования при построении базового URL. #1621
  • Значение APPLICATION_ROOT по умолчанию установлено на '/'. Это уже являлось неявным значением по умолчанию при установке на None.
  • TRAP_BAD_REQUEST_ERRORS включено по умолчанию в отладочном режиме. BadRequestKeyError содержит сообщение с неправильным ключом в отладочном режиме вместо общего сообщения о неправильном запросе. #2348
  • Разрешение регистрации новых тегов с TaggedJSONSerializer для поддержки хранения других типов в cookie сессии. #2352
  • Сессия открывается только если запрос еще не добавлен в стек контекста. Это позволяет stream_with_context генераторам получить доступ к той же сессии, что и содержащая view. #2354
  • Добавлен аргумент json для методов запроса клиента для тестирования. Это позволит вывести заданный объект в формате JSON и установить соответствующий тип контента.
  • Обработка JSON вынесена в миксин, применяемый к классам Request и Response. Это добавляет методы Response.is_json и Response.get_json в ответ, что значительно упрощает тестирование JSON-ответов. #2358
  • Удалено кеширование обработчиков ошибок, т.к. это приводило к непредвиденным результатам для некоторых иерархий наследования исключений. Явно регистрируйте обработчики для каждого исключения, если хотите избежать обхода MRO.
  • Исправлено некорректное кодирование JSON для осознанных, не UTC-временных меток.
  • Автоперезагрузка шаблонов будет учитывать отладочный режим даже если Flask.jinja_env уже был вызван.
  • Удалён следующий устаревший код. #2385

    • flask.ext — импорт расширений напрямую по их имени, а не через пространство имён flask.ext. Например, import flask.ext.sqlalchemy становится import flask_sqlalchemy.
    • Flask.init_jinja_globals — расширяйте Flask.create_jinja_environment.
    • Flask.error_handlers — отслеживается Flask.error_handler_spec, используйте Flask.errorhandler для регистрации обработчиков.
    • Flask.request_globals_class — используйте Flask.app_ctx_globals_class вместо него.
    • Flask.static_path — используйте Flask.static_url_path вместо него.
    • Request.module — используйте Request.blueprint вместо него.
  • Свойство Request.json больше не устарело. #1421
  • Поддержка передачи EnvironBuilder или dict в test_client.open. #2412
  • Команда flask и Flask.run будут загружать переменные среды из файлов .env и .flaskenv если установлен python-dotenv. #2416
  • При передаче полного URL клиенту для тестирования используется схема из URL вместо PREFERRED_URL_SCHEME. #2430
  • Flask.logger был упрощен. LOGGER_NAME и LOGGER_HANDLER_POLICY конфигурация была удалена. Логгер всегда называется flask.app. Уровень устанавливается только при первом доступе, он не проверяет Flask.debug каждый раз. Используется только один формат, а не разные в зависимости от Flask.debug. Обработчики не удаляются, и обработчик добавляется только если обработчиков еще нет. #2436
  • Имена функций представления Blueprint не должны содержать точки. #2450
  • Исправлена ошибка ValueError вызванная некорректными запросами Range в некоторых случаях. #2526
  • Сервер разработки по умолчанию использует потоки.
  • Загрузка файлов конфигурации с silent=True игнорирует ошибки ENOTDIR. #2581
  • Передайте параметры --cert и --key в flask run для запуска сервера разработки через HTTPS. #2606
  • Добавлен SESSION_COOKIE_SAMESITE для управления атрибутом SameSite в cookie сессии. #2607
  • Добавлен Flask.test_cli_runner для создания Click runner, который может вызывать команды Flask CLI для тестирования. #2636
  • Сопоставление по доменным именам по умолчанию отключено, и установка SERVER_NAME не включает его неявно. Его можно включить, передав subdomain_matching=True конструктору Flask. #2635
  • Из бланка url_prefix при регистрации его в приложении удаляется одиночный конечный слэш. #2629
  • Request.get_json не кеширует результат, если при разборе произошла ошибка, когда silent равно true. #2651
  • Request.get_json больше не принимает произвольные кодировки. Входящий JSON должен быть закодирован с помощью UTF-8 в соответствии с RFC 8259, но Flask будет автоматически определять UTF-8, -16 или -32. #2691
  • Добавлены MAX_COOKIE_SIZE и Response.max_cookie_size для управления моментами, когда Werkzeug предупреждает о больших куки, которые браузеры могут игнорировать. #2693
  • Тема документации обновлена, чтобы документы выглядели лучше в небольших окнах. #2709
  • Документы учебника и примерный проект переписаны, чтобы помочь новым пользователям избежать распространенных ошибок, используя более структурированный подход. #2676

Версия 0.12.5

Выпущено 2020-02-10

  • Закрепить Werkzeug до < 1.0.0. #3497

Версия 0.12.4

Выпущено 2018-04-29

  • Переупаковать 0.12.3 для исправления проблемы с расположением пакетов. #2728

Версия 0.12.3

Выпущено 2018-04-26

  • Request.get_json больше не принимает произвольные кодировки. Входящий JSON должен быть закодирован с помощью UTF-8 в соответствии с RFC 8259, но Flask будет автоматически определять UTF-8, -16 или -32. #2692
  • Исправлена ошибка Python с предупреждением об импортах при использовании python -m flask. #2666
  • Исправлена ошибка ValueError вызванная некорректными Range запросами в некоторых случаях.

Версия 0.12.2

Выпущено 2017-05-16

  • Исправлена ошибка в safe_join в Windows.

Версия 0.12.1

Выпущено 2017-03-31

  • Предотвращена ситуация, когда flask run отображает NoAppException при возникновении ImportError в импортированном модуле приложения.
  • Исправлено поведение кодирования app.config.from_pyfile для Python 3. #2118
  • Используйте конфигурацию SERVER_NAME если она присутствует, как значения по умолчанию для app.run. #2109, #2152
  • Вызовите ctx.auto_pop с объектом исключения вместо None, в случае возникновения исключения, такого как BaseException типа KeyboardInterrupt в обработчике запроса.

Версия 0.12

Выпущено 2016-12-21, кодовое имя Punsch

  • Команда cli теперь отвечает на --version.
  • Угадывание MIME-типов и генерация ETag для объектов типа file-like в send_file было удалено. #104, :pr`1849`
  • Угадывание MIME-типов в send_file теперь завершается ошибкой и не использует application/octet-stream. #1988
  • Разрешить flask.safe_join объединять несколько путей, как os.path.join #1730
  • Отменить изменение поведения, которое привело к ошибке dev сервера вместо возвращения ошибки Internal Server Error. #2006
  • Правильно вызывать обработчики ответов как для обычного маршрутизирования запросов, так и для обработчиков ошибок.
  • По умолчанию отключать распространение логгера для логгера приложения.
  • Добавить поддержку запросов диапазона в send_file.
  • app.test_client включает предопределённую среду по умолчанию, которую теперь можно непосредственно установить, вместо настроек по client.get.
  • Исправить ошибку при работе под PyPy3. #1814

Версия 0.11.1

Выпущено 2016-06-07

  • Исправлена ошибка, которая мешала работе FLASK_APP=foobar/__init__.py. #1872
END_OF_DOCUMENT_MARKER

Версия 0.11

Выпущено 2016-05-29, кодовое имя Absinthe

  • Добавлена поддержка сериализации массивов верхнего уровня в jsonify. Это вводит риск безопасности в старых браузерах.
  • Добавлен сигнал before_render_template.
  • Добавлен **kwargs в Flask.test_client для поддержки передачи дополнительных ключевых аргументов в конструктор Flask.test_client_class.
  • Добавлен ключ конфигурации SESSION_REFRESH_EACH_REQUEST, который управляет поведением set-cookie. Если установлен в True, постоянная сессия будет обновляться при каждом запросе и срок ее действия будет продлен, если установлен в False, она будет изменена только если сессия фактически изменилась. На непостоянные сессии это не влияет, и они всегда истекают при закрытии окна браузера.
  • Добавлена поддержка Flask для пользовательских MIME-типов JSON для входящих данных.
  • Добавлена поддержка возвращения кортежей в форме (response, headers) из функции представления.
  • Добавлен Config.from_json.
  • Добавлен Flask.config_class.
  • Добавлен Config.get_namespace.
  • Шаблоны больше не перезагружаются автоматически вне режима отладки. Это можно настроить с помощью нового ключа конфигурации TEMPLATES_AUTO_RELOAD.
  • Добавлена обходная проблема для ограничения в загрузчике пространства имен Python 3.3.
  • Добавлена поддержка явных корневых путей при использовании пакетов пространства имен Python 3.3.
  • Добавлены flask и модуль flask.cli для запуска локального сервера отладки через систему командной строки click. Это рекомендуется вместо старого метода flask.run(), так как он работает быстрее и надежнее благодаря другой архитектуре, а также заменяет Flask-Script.
  • Обработчики ошибок, соответствующие конкретным классам, теперь проверяются в первую очередь, что позволяет перехватывать исключения, являющиеся подклассами исключений HTTP (в werkzeug.exceptions). Это позволяет автору расширения создавать исключения, которые по умолчанию приведут к ошибке HTTP по их выбору, но могут быть перехвачены пользовательским обработчиком ошибок при необходимости.
  • Добавлен Config.from_mapping.
  • Flask теперь будет вести журнал по умолчанию, даже если отладка отключена. Формат журнала теперь жестко задан, но обработку журнала по умолчанию можно отключить с помощью ключа конфигурации LOGGER_HANDLER_POLICY.
  • Удалена устаревшая функциональность модуля.
  • Добавлен флаг конфигурации EXPLAIN_TEMPLATE_LOADING, который, если включен, будет инструктировать Flask объяснить, как он находит шаблоны. Это должно помочь пользователям отлаживать, когда загружаются неправильные шаблоны.
  • Обработка модулей bluepring теперь выполняется в порядке их регистрации для загрузки шаблонов.
  • Тестовый набор перенесен на py.test.
  • Устарел request.json в пользу request.get_json().
  • Добавлены определения разделителей «pretty» и «compressed» в методе jsonify(). Уменьшает размер ответа JSON при JSONIFY_PRETTYPRINT_REGULAR=False путем удаления ненужных пробелов, включенных по умолчанию после разделителей.
  • Ответы JSON теперь завершаются символом новой строки, потому что это соглашение, что текстовые файлы UNIX заканчиваются новой строкой, и некоторые клиенты некорректно обрабатывают, когда этой новой строки нет. #1262
  • Автоматически предоставляемый метод OPTIONS теперь правильно отключен, если пользователь зарегистрировал переопределяющее правило с версией с маленькой буквы options. #1288
  • flask.json.jsonify теперь поддерживает тип datetime.date. #1326
  • Не пропускайте информацию об исключении уже перехваченных исключений в обработчики завершения контекста. #1393
  • Разрешить пользовательские подклассы окружения Jinja. #1422
  • Обновлены руководства по разработке расширений.
  • flask.g теперь имеет методы pop() и setdefault.
  • Включить автоматическое экранирование для flask.templating.render_template_string по умолчанию. #1515
  • flask.ext теперь устарел. #1484
  • send_from_directory теперь поднимает BadRequest, если имя файла недействительно в ОС сервера. #1763
  • Добавлена переменная конфигурации JSONIFY_MIMETYPE. #1728
  • Исключения во время обработки завершения больше не оставляют плохих контекстов приложения.
  • Исправлен неработающий тестовый случай test_appcontext_signals().
  • Поднимите AttributeError в helpers.find_package с полезным сообщением, объясняющим, почему он поднят, когда используется импортер PEP 302 без метода is_package().
  • Исправлена проблема, из-за которой исключения, поднятые до входа в контекст запроса или приложения, передавались обработчикам завершения.
  • Исправлена проблема с удалением параметров запроса из запросов в клиенте теста при запросе абсолютных URL-адресов.
  • Сделайте @before_first_request декоратором, как и предполагалось.
  • Исправлена ошибка etags при отправке потоков файлов с именем.
  • Исправлено, что send_from_directory не расширялся до корневого пути приложения правильно.
  • Изменена логика обработчиков перед первым запросом для переключения флага после вызова. Это позволит некоторым потенциально опасным, но, вероятно, допустимым использованиям.
  • Исправлена ошибка Python 3, когда обработчик из app.url_build_error_handlers повторно поднимал BuildError.

Версия 0.10.1

Выпущено 2013-06-14

  • Исправлена проблема, из-за которой |tojson не цитировал одинарные кавычки, что делало фильтр некорректно работающим в атрибутах HTML. Теперь можно использовать этот фильтр в атрибутах с одинарными кавычками. Это должно упростить использование этого фильтра с angular.js.
  • Добавлена поддержка байтовых строк обратно в систему сессий. Это нарушило совместимость с общим случаем, когда люди помещали двоичные данные для проверки токенов в сессию.
  • Исправлена проблема, из-за которой регистрация одного и того же метода дважды для одного и того же конечной точки неверно вызывала исключение.

Версия 0.10

Выпущено 2013-06-13, кодовое имя Limoncello

  • Изменён формат сериализации файлов cookie по умолчанию с pickle на JSON для ограничения последствий, которые может произвести злоумышленник, если секретный ключ утечет.
  • Добавлены методы template_test в дополнение к уже существующей группе методов template_filter.
  • Добавлены методы template_global в дополнение к уже существующей группе методов template_filter.
  • Установлен заголовок content-length для x-sendfile.
  • tojson фильтр больше не экранирует блоки скриптов в парсерах HTML5.
  • tojson в шаблонах теперь безопасны по умолчанию. Это было разрешено из-за разного поведения экранирования.
  • Flask теперь выводит ошибку, если вы пытаетесь зарегистрировать новую функцию на уже используемой конечной точке.
  • Добавлен модуль-обёртку вокруг simplejson и добавлена по умолчанию сериализация объектов datetime. Это позволяет гораздо легче настраивать обработку JSON Flask или любым расширением Flask.
  • Удален устаревший внутренний псевдоним модуля flask.session. Используйте flask.sessions вместо него, чтобы получить модуль сессии. Это не следует путать с flask.session, прокси сессии.
  • Шаблоны теперь могут отображаться без контекста запроса. Поведение немного отличается, так как объекты request, session и g недоступны и контекстные процессоры модулей bluepring не вызываются.
  • Объект конфигурации теперь доступен шаблону как настоящий глобальный, а не через контекстный процессор, что делает его доступным даже в импортированных шаблонах по умолчанию.
  • Добавлена возможность генерировать JSON с кодировкой не-ASCII, что должно привести к передаче меньшего количества байтов по сети. По умолчанию она отключена, чтобы не вводить путаницы в существующие библиотеки, которые могут ожидать, что flask.json.dumps вернёт байты по умолчанию.
  • flask.g теперь хранится в контексте приложения, а не в контексте запроса.
  • flask.g теперь получил метод get() для того, чтобы не выдавать ошибки при запросе несуществующих элементов.
  • flask.g теперь можно использовать с оператором in для проверки того, что определено, и теперь он итерируемый и будет выдавать все сохранённые атрибуты.
  • flask.Flask.request_globals_class был переименован в flask.Flask.app_ctx_globals_class, что лучше отражает его функцию с версии 0.10.
  • request, session и g также были добавлены в качестве прокси в контекст шаблона, что делает их доступными в импортированных шаблонах. Однако следует быть очень осторожным с их использованием, так как использование вне макросов может вызвать кэширование.
  • Flask больше не будет вызывать неправильные обработчики ошибок, если исключение-прокси передаётся через.
  • Добавлена обходная проблема для работы кукисов Chrome в localhost, как и предполагается, с именами доменов.
  • Изменена логика выбора значений по умолчанию для значений cookie из сессий для лучшей работы с Google Chrome.
  • Добавлен сигнал message_flashed для упрощения тестирования флэшей.
  • Добавлена поддержка копирования контекстов запросов для лучшей работы с greenlets.
  • Удалены пользовательские подклассы исключений HTTP JSON. Если вы полагались на них, вы можете легко их снова добавить. Однако использование их настоятельно не рекомендуется, так как интерфейс был несовершенен.
  • Изменены требования к Python: теперь требуется Python 2.6 или 2.7 в подготовке к портированию в Python 3.3.
  • Изменено, как система завершения уведомляется об исключениях. Теперь это более надежно в случае, если что-то обрабатывает исключение в середине процесса обработки ошибок.
  • Сохранение контекста запроса в режиме отладки теперь сохраняет информацию об исключении, что позволяет обработчикам завершения отличать случаи ошибок от успешных.
  • Добавлена переменная конфигурации JSONIFY_PRETTYPRINT_REGULAR.
  • Flask теперь сортирует ключи JSON по умолчанию, чтобы не сломать кэши HTTP из-за разных семян хеширования между разными рабочими процессами.
  • Добавлены сигналы appcontext_pushed и appcontext_popped.
  • Встроенный метод run теперь учитывает SERVER_NAME при выборе порта по умолчанию для запуска.
  • Добавлен flask.request.get_json() в качестве замены старой свойства flask.request.json.

Версия 0.9

Выпущено 2012-07-01, кодовое имя Campari

  • Теперь Request.on_json_loading_failed по умолчанию возвращает ответ в формате JSON.
  • Функция url_for теперь может генерировать якоря для сгенерированных ссылок.
  • Функция url_for теперь также может явно генерировать правила URL, специфичные для определенного HTTP-метода.
  • Журнал теперь возвращает только значение настройки отладки, если оно не было явно задано.
  • Отменить циклическую зависимость между окружением WSGI и объектом запроса при завершении запроса. Это означает, что environ werkzeug.request будет None после того, как ответ был возвращен серверу WSGI, но имеет преимущество, что сборщик мусора не нужен в CPython для разборки запроса, если пользователь не создал циклических зависимостей.
  • Сессия теперь сохраняется после обратных вызовов, так что если данные сессии хранятся в сессии, вы все равно можете изменить их в обратном вызове после запроса.
  • Класс Flask будет избегать импорта предоставленного имени импорта, если сможет (необходимый первый параметр), чтобы помочь инструментам, которые программно создают экземпляры Flask. Класс Flask вернётся к использованию импорта на системах с пользовательскими хуками модулей, например, Google App Engine, или когда имя импорта находится внутри zip-архива (обычно egg) до Python 2.7.
  • У Blueprints теперь есть декоратор для добавления пользовательских фильтров шаблонов для всего приложения, Blueprint.app_template_filter.
  • Классы Flask и Blueprint теперь имеют метод, не являющийся декоратором, для добавления пользовательских фильтров шаблонов для всего приложения, Flask.add_template_filter и Flask.add_template_filter.
  • Функция get_flashed_messages теперь позволяет рендерить категории сообщений, отображаемых всплывающими сообщениями, в отдельных блоках, через аргумент category_filter.
  • Метод Flask.run теперь принимает None для аргументов host и port, используя значения по умолчанию, когда None. Это позволяет вызывать run с использованием значений конфигурации, например, app.run(app.config.get('MYHOST'), app.config.get('MYPORT')), с правильным поведением, есть ли файл конфигурации или нет.
  • Метод render_template теперь принимает либо итерируемый список имен шаблонов, либо одно имя шаблона. Ранее он принимал только одно имя шаблона. В случае итерируемого списка, рендерится первый найденный шаблон.
  • Добавлен Flask.app_context, который работает очень похоже на контекст запроса, но предоставляет доступ только к текущему приложению. Это также добавляет поддержку генерации URL без активного контекста запроса.
  • Функции представления теперь могут возвращать кортеж, где первым элементом является экземпляр Response. Это позволяет возвращать jsonify(error="error msg"), 400 из функции представления.
  • Flask и Blueprint теперь предоставляют хук get_send_file_max_age для подклассов, чтобы переопределять поведение при предоставлении статических файлов из Flask при использовании Flask.send_static_file (используется для обработчика статических файлов по умолчанию) и helpers.send_file. Этот хук получает имя файла, что, например, позволяет изменять контроллеры кеша по расширению файла. Максимальный срок действия по умолчанию для send_file и статических файлов может быть настроен через новую переменную конфигурации SEND_FILE_MAX_AGE_DEFAULT, которая используется в реализации get_send_file_max_age по умолчанию.
  • Исправлена ошибка в реализации сессий, которая могла нарушить отображение всплывающих сообщений в реализациях сессий, использующих внешнее хранилище.
  • Изменено поведение значений кортежей, возвращаемых функциями. Они больше не являются аргументами объекта ответа, а теперь имеют определённое значение.
  • Добавлен Flask.request_globals_class для использования конкретного класса при создании экземпляра g каждого запроса.
  • Добавлен атрибут required_methods функциям представления для принудительного добавления методов при регистрации.
  • Добавлен flask.after_this_request.
  • Добавлены flask.stream_with_context и возможность многократного применения контекстов без создания неожиданного поведения.

Версия 0.8.1

Выпущено 2012-07-01

  • Исправлена проблема с недокументированным модулем flask.session , который не работал должным образом на Python 2.5. Его не следует использовать, но он вызвал некоторые проблемы для менеджеров пакетов.

Версия 0.8

Выпущено 2011-09-29, кодовое имя Rakija

  • Рефакторинг поддержки сессий в интерфейс сессий, чтобы реализацию сессий можно было изменить, не переопределяя класс Flask.
  • Теперь пустые куки сессии правильно удаляются автоматически.
  • Функции представления теперь могут отказаться от автоматической реализации OPTIONS.
  • Теперь можно перехватывать HTTP-исключения и ошибки Bad Request, чтобы они нормально отображались в трассировке.
  • Flask в режиме отладки теперь обнаруживает некоторые распространённые проблемы и пытается предупредить вас о них.
  • Flask в режиме отладки теперь будет жаловаться с ошибкой утверждения, если представление было подключено после обработки первого запроса. Это даёт более раннюю обратную связь, когда пользователи забывают импортировать код представления заранее.
  • Добавлена возможность регистрации обратных вызовов, которые срабатывают только один раз в начале первого запроса с помощью Flask.before_first_request.
  • Некорректные данные JSON теперь вызывают исключение HTTP Bad Request вместо ошибки значения, которая обычно приводила к ошибке 500 Internal Server Error, если не обрабатывалась. Это изменение несовместимо со старыми версиями.
  • Теперь приложения имеют не только корневой путь, где расположены ресурсы и модули, но и путь экземпляра, который является назначенным местом для файлов, которые модифицируются во время выполнения (загрузки и т.д.). Также это зависит только от экземпляра и находится вне контроля версий, поэтому это идеальное место для размещения файлов конфигурации и т.д.
  • Добавлена переменная конфигурации APPLICATION_ROOT.
  • Реализация TestClient.session_transaction для лёгкого изменения сессий из тестовой среды.
  • Рефакторинг внутреннего тестового клиента. Переменная конфигурации APPLICATION_ROOT и SERVER_NAME теперь правильно используются тестовым клиентом в качестве значений по умолчанию.
  • Добавлен View.decorators для более простой декорации подключаемых представлений (на основе класса).
  • Исправлена проблема, когда тестовый клиент при использовании с оператором «with» не вызывал обработчики завершения.
  • Добавлен более тонкий контроль параметров куки сессии.
  • HEAD-запросы к представлению метода теперь автоматически перенаправляются к методу get , если обработчик не реализован.
  • Реализован виртуальный пакет flask.ext для импорта расширений.
  • Сохранение контекста при исключениях теперь является неотъемлемой частью Flask, а не тестового клиента. Это упрощает внутреннюю логику и снижает вероятность непрерывных контекстов запросов в тестах.
  • Исправлен метод list_templates среды Jinja2, который не возвращал правильные имена при использовании blueprints или модулей.

Версия 0.7.2

Выпущено 2011-07-06

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

Версия 0.7.1

Выпущено 2011-06-29

  • Добавлен отсутствующий импорт future, который нарушал совместимость с 2.5.
  • Исправлена проблема бесконечного перенаправления с blueprints.

Версия 0.7

Выпущено 2011-06-28, кодовое имя Grappa

  • Добавлен Flask.make_default_options_response, который может использоваться подклассами для изменения стандартного поведения для ответов OPTIONS.
  • Несвязанные локальные переменные теперь генерируют правильное исключение RuntimeError вместо AttributeError.
  • Угадывание MIME-типов и поддержка ETag на основе объектов файлов теперь устарела для send_file из-за ненадежности. Используйте имена файлов вместо них или прикрепляйте свои собственные ETag и предоставляйте правильный MIME-тип вручную.
  • Обработка статических файлов для модулей теперь требует явного указания имени папки с статическими файлами. Предыдущее автоматическое обнаружение не было надёжным и вызывало проблемы в Google App Engine. До версии 1.0 старое поведение будет продолжать работать, но будут выведены предупреждения об устаревших зависимостях.
  • Исправлена проблема работы Flask на jython.
  • Добавлена переменная конфигурации PROPAGATE_EXCEPTIONS, которая может использоваться для изменения настройки распространения исключений, которая ранее была связана только с DEBUG, а теперь связана либо с DEBUG, либо с TESTING.
  • Flask больше не зависит от правил, добавляемых через функцию add_url_rule, и теперь также может принимать обычные правила Werkzeug, добавленные в карту URL.
  • Добавлен метод endpoint к объекту приложения Flask, который позволяет зарегистрировать обратный вызов на произвольный конечный пункт с помощью декоратора.
  • Используется Last-Modified для отправки статических файлов вместо Date, что было неправильно введено в 0.6.
  • Добавлен create_jinja_loader для переопределения процесса создания загрузчика.
  • Реализован флаг безмолвия для config.from_pyfile.
  • Добавлен декоратор teardown_request для функций, которые должны выполняться в конце запроса независимо от того, произошла ли ошибка. Также поведение after_request было изменено. Теперь оно не выполняется, когда возникает исключение.
  • Реализован has_request_context.
  • Устарела функция init_jinja_globals. Используйте метод Flask.create_jinja_environment вместо этого, чтобы добиться той же функциональности.
  • Добавлен safe_join.
  • Автоматическое распаковывание данных запроса в формате JSON теперь проверяет параметр MIME-типа кодировки.
  • Не изменяйте сессию на get_flashed_messages , если в сессии нет сообщений.
  • Обработчики before_request теперь могут прерывать запросы с ошибками.
  • Определение пользовательских обработчиков исключений больше недоступно. Таким образом, вы можете предоставить настраиваемые сообщения об ошибках из централизованного узла для определённых ошибок, которые могут возникнуть во время обработки запроса (например, ошибки подключения к базе данных, таймауты удалённых ресурсов и т.д.).
  • Blueprints могут предоставлять обработчики ошибок, специфичные для blueprints.
  • Реализованы общие представления на основе класса.

Версия 0.6.1

Выпущено 2010-12-31

  • Исправлена проблема, из-за которой ответ OPTIONS по умолчанию не отображал все допустимые методы в заголовке Allow.
  • Синтаксис загрузки шаблонов Jinja2 теперь позволяет использовать «./» перед путём загрузки шаблона. Ранее это вызывало проблемы с настройками модулей.
  • Исправлена проблема, из-за которой настройка поддомена для модулей игнорировалась для папки со статическими файлами.
  • Исправлена проблема безопасности, которая позволяла клиентам загружать произвольные файлы, если хост-сервер работал на операционной системе Windows, и клиент использует обратные слэши для экранирования директории, из которой файлы были предоставлены.
END_OF_DOCUMENT_MARKER

Версия 0.6

Выпущено 2010-07-27, кодовое имя Виски

  • Функции по запросу теперь вызываются в обратном порядке регистрации.
  • OPTIONS теперь автоматически реализуется Flask, если приложение явно не добавляет «OPTIONS» в качестве метода к правилу URL. В этом случае автоматическая обработка OPTIONS не включается.
  • Статические правила теперь применяются даже если для модуля нет статической папки. Это было реализовано для поддержки GAE, которая удалит статическую папку, если она является частью сопоставления в файле .yml.
  • Flask.config теперь доступен в шаблонах как config.
  • Обработчики контекста больше не будут перезаписывать значения, переданные непосредственно функции render.
  • Добавлена возможность ограничивать данные входящего запроса с помощью нового значения конфигурации MAX_CONTENT_LENGTH.
  • Конечная точка для метода Module.add_url_rule теперь является необязательной, чтобы соответствовать функции с тем же именем на объекте приложения.
  • Добавлена функция make_response для упрощения создания экземпляров объектов ответа в представлениях.
  • Добавлена поддержка сигнализации на основе blinker. Эта функция в настоящее время является необязательной и должна использоваться расширениями и приложениями. Если вы хотите использовать её, убедитесь, что установлен blinker.
  • Переработан способ создания адаптеров URL. Этот процесс теперь полностью настраивается с помощью метода Flask.create_url_adapter.
  • Модули теперь могут регистрироваться для поддомена вместо просто префикса URL. Это позволяет привязать весь модуль к настраиваемому поддомену.

Версия 0.5.2

Выпущено 2010-07-15

  • Исправлена другая проблема с загрузкой шаблонов из каталогов при использовании модулей.

Версия 0.5.1

Выпущено 2010-07-06

  • Исправлена проблема с загрузкой шаблонов из каталогов при использовании модулей.

Версия 0.5

Выпущено 2010-07-06, кодовое имя Кальвадос

  • Исправлена ошибка с поддоменами, которая была вызвана невозможностью указать имя сервера. Имя сервера теперь можно установить с помощью ключа конфигурации SERVER_NAME. Этот ключ теперь также используется для установки куки сессии для кросс-поддоменного использования.
  • Автоматическое экранирование больше не активно для всех шаблонов. Вместо этого оно активно только для .html, .htm, .xml и .xhtml. Внутри шаблонов это поведение можно изменить с помощью тега autoescape.
  • Переработан Flask внутри. Теперь он состоит из более чем одного файла.
  • send_file теперь выводит теги etag и имеет встроенную возможность условных ответов.
  • (временно) прекращена поддержка сжатых приложений. Это была редко используемая функция и приводила к некоторому путанице в поведении.
  • Добавлена поддержка папок шаблонов и статических файлов на уровне пакетов.
  • Удалена поддержка create_jinja_loader, которая больше не используется в 0.5 из-за улучшенной поддержки модулей.
  • Добавлена вспомогательная функция для экспорта файлов из любого каталога.

Версия 0.4

Выпущено 2010-06-18, кодовое имя Ракия

  • Добавлена возможность регистрации обработчиков ошибок на уровне приложения из модулей.
  • Flask.after_request обработчики теперь также вызываются, если запрос завершается с ошибкой, и появляется страница обработки ошибок.
  • Клиент тестирования больше не имеет возможности сохранить контекст запроса на немного большее время. Это также можно использовать для запуска пользовательских запросов, которые не удаляют стек запросов для тестирования.
  • Поскольку стандартная библиотека Python кэширует логгеры, имя логгера теперь настраивается для лучшей поддержки unittests.
  • Добавлен переключатель TESTING, который может активировать вспомогательные функции для unit-тестирования.
  • Логгер переключается в режим DEBUG теперь, если включен режим отладки.

Версия 0.3.1

Выпущено 2010-05-28

  • Исправлена ошибка в отчёте об ошибках с Config.from_envvar.
  • Удалены некоторые неиспользуемые фрагменты кода.
  • В релизе больше нет оставшихся файлов разработки (.git папки для тем, сгенерированная документация в zip и pdf файлах и некоторые .pyc файлы)

Версия 0.3

Выпущено 2010-05-28, кодовое имя Шнапс

  • Добавлена поддержка категорий для сообщений о всплывающих сообщениях.
  • Приложение теперь настраивает logging.Handler и будет записывать исключения при обработке запросов в этот логгер, когда режим отладки выключен. Это позволяет получать уведомления по электронной почте о серверных ошибках, например.
  • Добавлена поддержка привязки контекста, которая не требует использования оператора with для работы в консоли.
  • Контекст запроса теперь доступен в операторе with, что позволяет дополнительно добавлять контекст запроса или удалять его.
  • Добавлена поддержка конфигураций.

Версия 0.2

Выпущено 2010-05-12, кодовое имя Й?гермайстер

  • Различные исправления ошибок
  • Встроенная поддержка JSON
  • Добавлена вспомогательная функция get_template_attribute.
  • Flask.add_url_rule теперь также может зарегистрировать функцию представления.
  • Переработана внутренняя диспетчеризация запросов.
  • Сервер теперь по умолчанию прослушивает 127.0.0.1, чтобы исправить проблемы с Chrome.
  • Добавлена поддержка внешних URL.
  • Добавлена поддержка send_file.
  • Поддержка модулей и внутренняя переработка обработки запросов для лучшей поддержки подключаемых приложений.
  • Сессии теперь можно сделать постоянными на основе каждой сессии.
  • Улучшена обработка ошибок при отсутствии секретных ключей.
  • Добавлена поддержка Google App Engine.

Версия 0.1

Выпущено 2010-04-16

  • Первый публичный предварительный выпуск.

© 2010 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/stable/changes/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API