All Versions
37
Latest Version
Avg Release Cycle
170 days
Latest Release
-

Changelog History
Page 1

  • v2.0.0

    ๐Ÿš€ Unreleased

    • ๐Ÿ‘ Drop support for Python 2 and 3.5.
    • ๐Ÿ‘ 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. :pr:3828
    • 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
  • v1.2.0

    ๐Ÿš€ 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.2

    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

    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 :attr:Flask.name (the value passed as Flask(import_name). This reverts 1.0's behavior of always logging to "flask.app", 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

  • v1.1.x

    ๐Ÿš€ Not yet released.

    • ๐Ÿ‘ Officially support passing a :class:pathlib.Path for static_folder which stopped working in 1.1.2. :pr:3579
  • v1.0.4

    July 09, 2019

    ๐Ÿš€ Released 2019-07-04

    • The key information for BadRequestKeyError is no longer cleared outside debug mode, so error handlers can still access it. This requires upgrading to Werkzeug 0.15.5. :issue:3249
    • send_file url quotes the ":" and "/" characters for more compatible UTF-8 filename support in some browsers. :issue:3074
    • โœ… Fixes for PEP451 import loaders and pytest 5.x. :issue:3275
    • Show message about dotenv on stderr instead of stdout. :issue:3285
  • v1.0.3

    July 09, 2019

    ๐Ÿš€ Released 2019-05-17

    • :func:send_file encodes filenames as ASCII instead of Latin-1 (ISO-8859-1). This fixes compatibility with Gunicorn, which is stricter about header encodings than PEP 3333. :issue:2766
    • Allow custom CLIs using FlaskGroup to set the debug flag without it always being overwritten based on environment variables. :pr:2765
    • flask --version outputs Werkzeug's version and simplifies the Python version. :pr:2825
    • :func:send_file handles an attachment_filename that is a native Python 2 string (bytes) with UTF-8 coded bytes. :issue:2933
    • A catch-all error handler registered for HTTPException will not handle RoutingException, which is used internally during routing. This fixes the unexpected behavior that had been introduced in 1.0. :pr:2986
    • โœ… Passing the json argument to app.test_client does not push/pop an extra app context. :issue:2900
  • v1.0.2

    May 02, 2018

    ๐Ÿš€ This release includes bug fixes and minor changes since 1.0.1. See the changelog for details.

    โฌ†๏ธ Install or Upgrade

    Install from PyPI with pip:

    pip install -U Flask
    
  • v1.0.1

    April 30, 2018

    ๐Ÿš€ Released 2018-04-29

    • Fix registering partials (with no __name__) as view functions. :pr:2730
    • Don't treat lists returned from view functions the same as tuples. Only tuples are interpreted as response data. :issue:2736
    • ๐Ÿ–จ Extra slashes between a blueprint's url_prefix and a route URL are merged. This fixes some backwards compatibility issues with the change in 1.0. :issue:2731, :issue:2742
    • Only trap BadRequestKeyError errors in debug mode, not all BadRequest errors. This allows abort(400) to continue working as expected. :issue:2735
    • The FLASK_SKIP_DOTENV environment variable can be set to 1 to skip automatically loading dotenv files. :issue:2722