Changelog History
Page 1
-
v2.3.0 Changes
๐ Unreleased
-
v2.2.3 Changes
๐ Unreleased
- 0๏ธโฃ Autoescaping is now enabled by default for
.svg
files. Inside templates this behavior can be changed with theautoescape
tag. :issue:4831
- 0๏ธโฃ Autoescaping is now enabled by default for
-
v2.2.2 Changes
๐ Released 2022-08-08
- โก๏ธ Update Werkzeug dependency to >= 2.2.2. This includes fixes related
to the new faster router, header parsing, and the development
server. :pr:
4754
- 0๏ธโฃ Fix the default value for
app.env
to be"production"
. This attribute remains deprecated. :issue:4740
- โก๏ธ Update Werkzeug dependency to >= 2.2.2. This includes fixes related
to the new faster router, header parsing, and the development
server. :pr:
-
v2.2.1 Changes
๐ Released 2022-08-03
- Setting or accessing
json_encoder
orjson_decoder
raises a deprecation warning. :issue:4732
- Setting or accessing
-
v2.2.0 Changes
๐ Released 2022-08-01
๐ Remove previously deprecated code. :pr:
4667
- Old names for some
send_file
parameters have been removed.download_name
replacesattachment_filename
,max_age
replacescache_timeout
, andetag
replacesadd_etags
. Additionally,path
replacesfilename
insend_from_directory
. - The
RequestContext.g
property returningAppContext.g
is removed.
- Old names for some
โก๏ธ Update Werkzeug dependency to >= 2.2.
The app and request contexts are managed using Python context vars directly rather than Werkzeug's
LocalStack
. This should result in better performance and memory use. :pr:4682
- Extension maintainers, be aware that
_app_ctx_stack.top
and_request_ctx_stack.top
are deprecated. Store data ong
instead using a unique prefix, likeg._extension_name_attr
.
- Extension maintainers, be aware that
The
FLASK_ENV
environment variable andapp.env
attribute are deprecated, removing the distinction between development and debug mode. Debug mode should be controlled directly using the--debug
option orapp.run(debug=True)
. :issue:4714
๐ Some attributes that proxied config keys on
app
are deprecated:session_cookie_name
,send_file_max_age_default
,use_x_sendfile
,propagate_exceptions
, andtemplates_auto_reload
. Use the relevant config keys instead. :issue:4716
Add new customization points to the
Flask
app object for many previously global behaviors.-
flask.url_for
will callapp.url_for
. :issue:4568
-
flask.abort
will callapp.aborter
.Flask.aborter_class
andFlask.make_aborter
can be used to customize this aborter. :issue:4567
-
flask.redirect
will callapp.redirect
. :issue:4569
-
flask.json
is an instance ofJSONProvider
. A different provider can be set to use a different JSON library.flask.jsonify
will callapp.json.response
, other functions inflask.json
will call corresponding functions inapp.json
. :pr:4692
-
๐ง JSON configuration is moved to attributes on the default
app.json
provider.JSON_AS_ASCII
,JSON_SORT_KEYS
,JSONIFY_MIMETYPE
, andJSONIFY_PRETTYPRINT_REGULAR
are deprecated. :pr:4692
Setting custom
json_encoder
andjson_decoder
classes on the app or a blueprint, and the correspondingjson.JSONEncoder
andJSONDecoder
classes, are deprecated. JSON behavior can now be overridden using theapp.json
provider interface. :pr:4692
json.htmlsafe_dumps
andjson.htmlsafe_dump
are deprecated, the function is built-in to Jinja now. :pr:4692
Refactor
register_error_handler
to consolidate error checking. Rewrite some error messages to be more consistent. :issue:4559
๐จ Use Blueprint decorators and functions intended for setup after registering the blueprint will show a warning. In the next version, this will become an error just like the application setup methods. :issue:
4571
before_first_request
is deprecated. Run setup code when creating the application instead. :issue:4605
Added the
View.init_every_request
class attribute. If a view subclass sets this toFalse
, the view will not create a new instance on every request. :issue:2520
.A
flask.cli.FlaskGroup
Click group can be nested as a sub-command in a custom CLI. :issue:3263
Add
--app
and--debug
options to theflask
CLI, instead of requiring that they are set through environment variables. :issue:2836
Add
--env-file
option to theflask
CLI. This allows specifying a dotenv file to load in addition to.env
and.flaskenv
. :issue:3108
It is no longer required to decorate custom CLI commands on
app.cli
orblueprint.cli
with@with_appcontext
, an app context will already be active at that point. :issue:2410
SessionInterface.get_expiration_time
uses a timezone-aware value. :pr:4645
View functions can return generators directly instead of wrapping them in a
Response
. :pr:4629
Add
stream_template
andstream_template_string
functions to render a template as a stream of pieces. :pr:4629
A new implementation of context preservation during debugging and testing. :pr:
4666
-
request
,g
, and other context-locals point to the correct data when running code in the interactive debugger console. :issue:2836
- Teardown functions are always run at the end of the request, even if the context is preserved. They are also run after the preserved context is popped.
-
stream_with_context
preserves context separately from awith client
block. It will be cleaned up whenresponse.get_data()
orresponse.close()
is called.
-
Allow returning a list from a view function, to convert it to a JSON response like a dict is. :issue:
4672
When type checking, allow
TypedDict
to be returned from view functions. :pr:4695
๐ Remove the
--eager-loading/--lazy-loading
options from theflask run
command. The app is always eager loaded the first time, then lazily loaded in the reloader. The reloader always prints errors immediately but continues serving. Remove the internalDispatchingApp
middleware used by the previous implementation. :issue:4715
-
v2.1.3 Changes
๐ Released 2022-07-13
- Inline some optional imports that are only used for certain CLI
commands. :pr:
4606
- Relax type annotation for
after_request
functions. :issue:4600
- ๐ฆ
instance_path
for namespace packages uses the path closest to the imported submodule. :issue:4610
- Clearer error message when
render_template
andrender_template_string
are used outside an application context. :pr:4693
- Inline some optional imports that are only used for certain CLI
commands. :pr:
-
v2.1.2 Changes
๐ Released 2022-04-28
- Fix type annotation for
json.loads
, it accepts str or bytes. :issue:4519
- The
--cert
and--key
options onflask run
can be given in either order. :issue:4459
- Fix type annotation for
-
v2.1.1 Changes
๐ Released on 2022-03-30
- ๐ Set the minimum required version of importlib_metadata to 3.6.0,
which is required on Python < 3.10. :issue:
4502
- ๐ Set the minimum required version of importlib_metadata to 3.6.0,
which is required on Python < 3.10. :issue:
-
v2.1.0 Changes
๐ Released 2022-03-28
- ๐ Drop support for Python 3.6. :pr:
4335
- โก๏ธ Update Click dependency to >= 8.0. :pr:
4008
๐ Remove previously deprecated code. :pr:
4337
- The CLI does not pass
script_info
to app factory functions. -
config.from_json
is replaced byconfig.from_file(name, load=json.load)
. -
json
functions no longer take anencoding
parameter. -
safe_join
is removed, usewerkzeug.utils.safe_join
instead. -
total_seconds
is removed, usetimedelta.total_seconds
instead. - The same blueprint cannot be registered with the same name. Use
name=
when registering to specify a unique name. - The test client's
as_tuple
parameter is removed. Useresponse.request.environ
instead. :pr:4417
- The CLI does not pass
Some parameters in
send_file
andsend_from_directory
were renamed in 2.0. The deprecation period for the old names is extended to 2.2. Be sure to test with deprecation warnings visible.-
attachment_filename
is renamed todownload_name
. -
cache_timeout
is renamed tomax_age
. -
add_etags
is renamed toetag
. -
filename
is renamed topath
.
-
๐ The
RequestContext.g
property is deprecated. Useg
directly orAppContext.g
instead. :issue:3898
copy_current_request_context
can decorate async functions. :pr:4303
๐ The CLI uses
importlib.metadata
instead ofsetuptools
to load command entry points. :issue:4419
Overriding
FlaskClient.open
will not cause an error on redirect. :issue:3396
Add an
--exclude-patterns
option to theflask run
CLI command to specify patterns that will be ignored by the reloader. :issue:4188
0๏ธโฃ When using lazy loading (the default with the debugger), the Click context from the
flask run
command remains available in the loader thread. :issue:4460
Deleting the session cookie uses the
httponly
flag. :issue:4485
Relax typing for
errorhandler
to allow the user to use more precise types and decorate the same function multiple times. :issue:4095, 4295, 4297
Fix typing for
__exit__
methods for better compatibility withExitStack
. :issue:4474
From Werkzeug, for redirect responses the
Location
header URL will remain relative, and exclude the scheme and domain, by default. :pr:4496
๐ Add
Config.from_prefixed_env()
to load config values from environment variables that start withFLASK_
or another prefix. This parses values as JSON by default, and allows setting keys in nested dicts. :pr:4479
- ๐ Drop support for Python 3.6. :pr:
-
v2.0.3 Changes
๐ Released 2022-02-14
- โ
The test client's
as_tuple
parameter is deprecated and will be removed in Werkzeug 2.1. It is now also deprecated in Flask, to be removed in Flask 2.1, while remaining compatible with both in 2.0.x. Useresponse.request.environ
instead. :pr:4341
- Fix type annotation for
errorhandler
decorator. :issue:4295
- โช Revert a change to the CLI that caused it to hide
ImportError
tracebacks when importing the application. :issue:4307
-
app.json_encoder
andjson_decoder
are only passed todumps
andloads
if they have custom behavior. This improves performance, mainly on PyPy. :issue:4349
- Clearer error message when
after_this_request
is used outside a request context. :issue:4333
- โ
The test client's