Changelog History
Page 2
-
v2.0.2 Changes
๐ Released 2021-10-04
- Fix type annotation for
teardown_*
methods. :issue:4093
- Fix type annotation for
before_request
andbefore_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 acceptpathlib.Path
. :issue:4150
-
jsonify
handlesdecimal.Decimal
by encoding tostr
. :issue:4157
- Correctly handle raising deferred errors in CLI lazy loading.
:issue:
4096
- The CLI loader handles
**kwargs
in acreate_app
function. :issue:4170
- Fix the order of
before_request
and other callbacks that trigger before the view returns. They are called from the app down to the closest nested blueprint. :issue:4229
- Fix type annotation for
-
v2.0.1 Changes
๐ Released 2021-05-21
- Re-add the
filename
parameter insend_from_directory
. Thefilename
parameter has been renamed topath
, 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
, andget_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 aname
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 forurl_for
. Registering the same blueprint with the same name multiple times is deprecated. :issue:1091
- Improve typing for
stream_with_context
. :issue:4052
- Re-add the
-
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
andjson_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 theflask
command. Useclick.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 astoml.load
orjson.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 theContent-Type
forjsonify()
. Useresponse.headers.extend()
if extending is desired. :issue:3628
- The
Scaffold
class provides a common API for theFlask
andBlueprint
classes.Blueprint
information is stored in attributes just likeFlask
, rather than opaque lambda functions. This is intended to improve consistency and maintainability. :issue:3215
- Include
samesite
andsecure
options when removing the session cookie. :pr:3726
- ๐ Support passing a
pathlib.Path
tostatic_folder
. :pr:3579
-
send_file
andsend_from_directory
are wrappers around the implementations inwerkzeug.utils
. :pr:3828
- Some
send_file
parameters have been renamed, the old names are deprecated.attachment_filename
is renamed todownload_name
.cache_timeout
is renamed tomax_age
.add_etags
is renamed toetag
. :pr:3828, 3883
-
send_file
passesdownload_name
even ifas_attachment=False
by usingContent-Disposition: inline
. :pr:3828
-
send_file
setsconditional=True
andmax_age=None
by default.Cache-Control
is set tono-cache
ifmax_age
is not set, otherwisepublic
. This tells browsers to validate conditional requests instead of using a timed cache. :pr:3828
- ๐
helpers.safe_join
is deprecated. Usewerkzeug.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,
@app.post("/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 defaultpython
shell ifreadline
is installed. :issue:3941
- ๐
helpers.total_seconds()
is deprecated. Usetimedelta.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 astoml.load
orjson.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
- Add :meth:
-
v1.1.4 Changes
๐ Released 2021-05-13
- Update
static_folder
to use_compat.fspath
instead ofos.fspath
to continue supporting Python < 3.6 :issue:4050
- Update
-
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
forstatic_folder
. :pr:3579
- Set maximum versions of Werkzeug, Jinja, Click, and ItsDangerous.
:issue:
-
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.1 Changes
July 09, 2019 -
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
or500
will always be passed an instance ofInternalServerError
. If they are invoked due to an unhandled exception, that original exception is now available ase.original_exception
rather than being passed directly to the handler. The same is true if the handler is for the baseHTTPException
. This makes error handler behavior more consistent. :pr:3266
- :meth:
Flask.finalize_request
is called for all unhandled exceptions even if there is no500
error handler.
- :meth:
:attr:
Flask.logger
takes the same name as :attr:Flask.name
(the value passed asFlask(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 preventssession
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 adict
instead of anImmutableDict
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 emptystatic_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 returnFalse
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 theflask 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 calljsonify
to produce aapplication/json
response. :pr:3111
๐จ Blueprints have a
cli
Click group likeapp.cli
. CLI commands registered with a blueprint will be available as a group under theflask
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 classflask.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 Changes
๐ Not yet released.
- ๐ Officially support passing a :class:
pathlib.Path
forstatic_folder
which stopped working in 1.1.2. :pr:3579
- ๐ Officially support passing a :class: