All Versions
Latest Version
Avg Release Cycle
170 days
Latest Release

Changelog History
Page 1

  • v2.1.0 Changes

    ๐Ÿš€ Unreleased

    • โšก๏ธ Update Click dependency to >= 8.0.
  • v2.0.2 Changes

    ๐Ÿš€ Unreleased

    • Fix type annotation for teardown_* methods. :issue:4093
    • Fix type annotation for before_request and before_app_request decorators. :issue:4104
    • ๐Ÿ›  Fixed the issue where typing requires template global decorators to accept functions with no arguments. :issue:4098
    • ๐Ÿ‘ Support View and MethodView instances with async handlers. :issue:4112
    • โœจ Enhance typing of app.errorhandler decorator. :issue:4095
    • ๐Ÿ–จ Fix registering a blueprint twice with differing names. :issue:4124
    • Fix the type of static_folder to accept pathlib.Path. :issue:4150
    • jsonify handles decimal.Decimal by encoding to str. :issue:4157
    • Correctly handle raising deferred errors in CLI lazy loading. :issue:4096
    • The CLI loader handles **kwargs in a create_app function. :issue:4170
  • v2.0.1 Changes

    ๐Ÿš€ Released 2021-05-21

    • Re-add the filename parameter in send_from_directory. The filename parameter has been renamed to path, the old name is deprecated. :pr:4019
    • Mark top-level names as exported so type checking understands imports in user projects. :issue:4024
    • Fix type annotation for g and inform mypy that it is a namespace object that has arbitrary attributes. :issue:4020
    • Fix some types that weren't available in Python 3.6.0. :issue:4040
    • Improve typing for send_file, send_from_directory, and get_send_file_max_age. :issue:4044, :pr:4026
    • ๐Ÿ–จ Show an error when a blueprint name contains a dot. The . has special meaning, it is used to separate (nested) blueprint names and the endpoint name. :issue:4041
    • ๐Ÿ–จ Combine URL prefixes when nesting blueprints that were created with a url_prefix value. :issue:4037
    • Roll back a change to the order that URL matching was done. The URL is again matched after the session is loaded, so the session is available in custom URL converters. :issue:4053
    • ๐Ÿ—„ Re-add deprecated Config.from_json, which was accidentally removed early. :issue:4078
    • Improve typing for some functions using Callable in their type signatures, focusing on decorator factories. :issue:4060
    • ๐Ÿ–จ Nested blueprints are registered with their dotted name. This allows different blueprints with the same name to be nested at different locations. :issue:4069
    • ๐Ÿ–จ register_blueprint takes a name option to change the (pre-dotted) name the blueprint is registered with. This allows the same blueprint to be registered multiple times with unique names for url_for. Registering the same blueprint with the same name multiple times is deprecated. :issue:1091
    • Improve typing for stream_with_context. :issue:4052
  • v2.0.0 Changes

    ๐Ÿš€ Released 2021-05-11

    • ๐Ÿ‘ Drop support for Python 2 and 3.5.
    • Bump minimum versions of other Pallets projects: Werkzeug >= 2, Jinja2 >= 3, MarkupSafe >= 2, ItsDangerous >= 2, Click >= 8. Be sure to check the change logs for each project. For better compatibility with other applications (e.g. Celery) that still require Click 7, there is no hard dependency on Click 8 yet, but using Click 7 will trigger a DeprecationWarning and Flask 2.1 will depend on Click 8.
    • ๐Ÿ‘ JSON support no longer uses simplejson. To use another JSON module, override app.json_encoder and json_decoder. :issue:3555
    • ๐Ÿ—„ The encoding option to JSON functions is deprecated. :pr:3562
    • ๐Ÿ—„ Passing script_info to app factory functions is deprecated. This was not portable outside the flask command. Use click.get_current_context().obj if it's needed. :issue:3552
    • ๐Ÿ‘ The CLI shows better error messages when the app failed to load when looking up commands. :issue:2741
    • Add :meth:sessions.SessionInterface.get_cookie_name to allow setting the session cookie name dynamically. :pr:3369
    • Add :meth:Config.from_file to load config using arbitrary file loaders, such as toml.load or json.load. :meth:Config.from_json is deprecated in favor of this. :pr:3398
    • The flask run command will only defer errors on reload. Errors present during the initial call will cause the server to exit with the traceback immediately. :issue:3431
    • :func:send_file raises a :exc:ValueError when passed an :mod:io object in text mode. Previously, it would respond with 200 OK and an empty file. :issue:3358
    • When using ad-hoc certificates, check for the cryptography library instead of PyOpenSSL. :pr:3492
    • When specifying a factory function with FLASK_APP, keyword argument can be passed. :issue:3553
    • When loading a .env or .flaskenv file, the current working directory is no longer changed to the location of the file. :pr:3560
    • When returning a (response, headers) tuple from a view, the headers replace rather than extend existing headers on the response. For example, this allows setting the Content-Type for jsonify(). Use response.headers.extend() if extending is desired. :issue:3628
    • The Scaffold class provides a common API for the Flask and Blueprint classes. Blueprint information is stored in attributes just like Flask, rather than opaque lambda functions. This is intended to improve consistency and maintainability. :issue:3215
    • Include samesite and secure options when removing the session cookie. :pr:3726
    • ๐Ÿ‘ Support passing a pathlib.Path to static_folder. :pr:3579
    • send_file and send_from_directory are wrappers around the implementations in werkzeug.utils. :pr:3828
    • Some send_file parameters have been renamed, the old names are deprecated. attachment_filename is renamed to download_name. cache_timeout is renamed to max_age. add_etags is renamed to etag. :pr:3828, 3883
    • send_file passes download_name even if as_attachment=False by using Content-Disposition: inline. :pr:3828
    • send_file sets conditional=True and max_age=None by default. Cache-Control is set to no-cache if max_age is not set, otherwise public. This tells browsers to validate conditional requests instead of using a timed cache. :pr:3828
    • ๐Ÿ—„ helpers.safe_join is deprecated. Use werkzeug.utils.safe_join instead. :pr:3828
    • The request context does route matching before opening the session. This could allow a session interface to change behavior based on request.endpoint. :issue:3776
    • Use Jinja's implementation of the |tojson filter. :issue:3881
    • Add route decorators for common HTTP methods. For example,"/login") is a shortcut for @app.route("/login", methods=["POST"]). :pr:3907
    • ๐Ÿ‘ Support async views, error handlers, before and after request, and teardown functions. :pr:3412
    • ๐Ÿ–จ Support nesting blueprints. :issue:593, 1548, :pr:3923
    • 0๏ธโƒฃ Set the default encoding to "UTF-8" when loading .env and .flaskenv files to allow to use non-ASCII characters. :issue:3931
    • 0๏ธโƒฃ flask shell sets up tab and history completion like the default python shell if readline is installed. :issue:3941
    • ๐Ÿ—„ helpers.total_seconds() is deprecated. Use timedelta.total_seconds() instead. :pr:3962
    • Add type hinting. :pr:3973.
  • v1.2.0 Changes

    ๐Ÿš€ Unreleased

    • Add :meth:sessions.SessionInterface.get_cookie_name to allow setting the session cookie name dynamically. :pr:3369
    • Add :meth:Config.from_file to load config using arbitrary file loaders, such as toml.load or json.load. :meth:Config.from_json is deprecated in favor of this. :pr:3398
    • The flask run command will only defer errors on reload. Errors present during the initial call will cause the server to exit with the traceback immediately. :issue:3431
    • :func:send_file raises a :exc:ValueError when passed an :mod:io object in text mode. Previously, it would respond with 200 OK and an empty file. :issue:3358
    • When using ad-hoc certificates, check for the cryptography library instead of PyOpenSSL. :pr:3492
  • v1.1.4 Changes

    ๐Ÿš€ Released 2021-05-13

    • Update static_folder to use _compat.fspath instead of os.fspath to continue supporting Python < 3.6 :issue:4050
  • v1.1.3 Changes

    ๐Ÿš€ Released 2021-05-13

    • Set maximum versions of Werkzeug, Jinja, Click, and ItsDangerous. :issue:4043
    • ๐Ÿ‘ Re-add support for passing a pathlib.Path for static_folder. :pr:3579
  • v1.1.2 Changes

    April 03, 2020

    ๐Ÿšš 1.1.x is the last version to support Python 2.7 and Python 3.5. It also contains deprecation warnings for code that will be removed in 2.0. Please pay attention to deprecation warnings in your project!

    ๐Ÿš€ This release contains a couple bug fixes.

  • v1.1.0 Changes

    July 09, 2019

    ๐Ÿš€ Released 2019-07-04

    • Bump minimum Werkzeug version to >= 0.15.
    • ๐Ÿ‘ Drop support for Python 3.4.
    • Error handlers for InternalServerError or 500 will always be passed an instance of InternalServerError. If they are invoked due to an unhandled exception, that original exception is now available as e.original_exception rather than being passed directly to the handler. The same is true if the handler is for the base HTTPException. This makes error handler behavior more consistent. :pr:3266

      • :meth:Flask.finalize_request is called for all unhandled exceptions even if there is no 500 error handler.
    • :attr:Flask.logger takes the same name as (the value passed as Flask(import_name). This reverts 1.0's behavior of always logging to "", in order to support multiple apps in the same process. A warning will be shown if old configuration is detected that needs to be moved. :issue:2866

    • :meth:flask.RequestContext.copy includes the current session object in the request context copy. This prevents session pointing to an out-of-date object. :issue:2935

    • ๐Ÿ–จ Using built-in RequestContext, unprintable Unicode characters in Host header will result in a HTTP 400 response and not HTTP 500 as previously. :pr:2994

    • ๐Ÿ‘ :func:send_file supports :class:~os.PathLike objects as described in PEP 0519, to support :mod:pathlib in Python 3. :pr:3059

    • ๐Ÿ‘ :func:send_file supports :class:~io.BytesIO partial content. :issue:2957

    • :func:open_resource accepts the "rt" file mode. This still does the same thing as "r". :issue:3163

    • The :attr:MethodView.methods attribute set in a base class is used by subclasses. :issue:3138

    • :attr:Flask.jinja_options is a dict instead of an ImmutableDict to allow easier configuration. Changes must still be made before creating the environment. :pr:3190

    • Flask's JSONMixin for the request and response wrappers was moved into Werkzeug. Use Werkzeug's version with Flask-specific support. This bumps the Werkzeug dependency to >= 0.15. :issue:3125

    • The flask command entry point is simplified to take advantage of Werkzeug 0.15's better reloader support. This bumps the Werkzeug dependency to >= 0.15. :issue:3022

    • Support static_url_path that ends with a forward slash. :issue:3134

    • ๐Ÿ‘ Support empty static_folder without requiring setting an empty static_url_path as well. :pr:3124

    • ๐Ÿ‘ :meth:jsonify supports :class:dataclasses.dataclass objects. :pr:3195

    • Allow customizing the :attr:Flask.url_map_class used for routing. :pr:3069

    • The development server port can be set to 0, which tells the OS to pick an available port. :issue:2926

    • The return value from :meth:cli.load_dotenv is more consistent with the documentation. It will return False if python-dotenv is not installed, or if the given path isn't a file. :issue:2937

    • ๐Ÿšฆ Signaling support has a stub for the connect_via method when the Blinker library is not installed. :pr:3208

    • Add an --extra-files option to the flask run CLI command to specify extra files that will trigger the reloader on change. :issue:2897

    • Allow returning a dictionary from a view function. Similar to how returning a string will produce a text/html response, returning a dict will call jsonify to produce a application/json response. :pr:3111

    • ๐Ÿ–จ Blueprints have a cli Click group like app.cli. CLI commands registered with a blueprint will be available as a group under the flask command. :issue:1357.

    • โœ… When using the test client as a context manager (with client:), all preserved request contexts are popped when the block exits, ensuring nested contexts are cleaned up correctly. :pr:3157

    • ๐Ÿ‘ Show a better error message when the view return type is not supported. :issue:3214

    • โœ… flask.testing.make_test_environ_builder() has been deprecated in favour of a new class flask.testing.EnvironBuilder. :pr:3232

    • The flask run command no longer fails if Python is not built with SSL support. Using the --cert option will show an appropriate error message. :issue:3211

    • URL matching now occurs after the request context is pushed, rather than when it's created. This allows custom URL converters to access the app and request contexts, such as to query a database for an id. :issue:3088