Update dependency Flask to v2 [SECURITY] #3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.



This PR contains the following updates:
==1.0.2->==2.2.5GitHub Vulnerability Alerts
CVE-2023-30861
When all of the following conditions are met, a response containing data intended for one client may be cached and subsequently sent by a proxy to other clients. If the proxy also caches
Set-Cookieheaders, it may send one client'ssessioncookie to other clients. The severity depends on the application's use of the session, and the proxy's behavior regarding cookies. The risk depends on all these conditions being met.session.permanent = True.SESSION_REFRESH_EACH_REQUESTis enabled (the default).Cache-Controlheader to indicate that a page is private or should not be cached.This happens because vulnerable versions of Flask only set the
Vary: Cookieheader when the session is accessed or modified, not when it is refreshed (re-sent to update the expiration) without being accessed or modified.Release Notes
pallets/flask (Flask)
v2.2.5Compare Source
Released 2023-05-02
Vary: Cookieheader when the session is accessed, modified, or refreshed.v2.2.4Compare Source
Released 2023-04-25
v2.2.3Compare Source
Released 2023-02-15
.svgtemplate files. :issue:4831template_folderto acceptpathlib.Path. :issue:4892--debugoption to theflask runcommand. :issue:4777v2.2.2Compare Source
Released 2022-08-08
to the new faster router, header parsing, and the development
server. :pr:
4754app.envto be"production". Thisattribute remains deprecated. :issue:
4740v2.2.1Compare Source
Released 2022-08-03
json_encoderorjson_decoderraises adeprecation warning. :issue:
4732v2.2.0Compare Source
Released 2022-08-01
Remove previously deprecated code. :pr:
4667send_fileparameters have been removed.download_namereplacesattachment_filename,max_agereplaces
cache_timeout, andetagreplacesadd_etags.Additionally,
pathreplacesfilenameinsend_from_directory.RequestContext.gproperty returningAppContext.gisremoved.
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 resultin better performance and memory use. :pr:
4682_app_ctx_stack.topand
_request_ctx_stack.topare deprecated. Store data onginstead using a unique prefix, likeg._extension_name_attr.The
FLASK_ENVenvironment variable andapp.envattribute aredeprecated, removing the distinction between development and debug
mode. Debug mode should be controlled directly using the
--debugoption or
app.run(debug=True). :issue:4714Some attributes that proxied config keys on
appare deprecated:session_cookie_name,send_file_max_age_default,use_x_sendfile,propagate_exceptions, andtemplates_auto_reload. Use the relevant config keys instead.:issue:
4716Add new customization points to the
Flaskapp object for manypreviously global behaviors.
flask.url_forwill callapp.url_for. :issue:4568flask.abortwill callapp.aborter.Flask.aborter_classandFlask.make_abortercan be usedto customize this aborter. :issue:
4567flask.redirectwill callapp.redirect. :issue:4569flask.jsonis an instance ofJSONProvider. A differentprovider can be set to use a different JSON library.
flask.jsonifywill callapp.json.response, otherfunctions in
flask.jsonwill call corresponding functions inapp.json. :pr:4692JSON configuration is moved to attributes on the default
app.jsonprovider.JSON_AS_ASCII,JSON_SORT_KEYS,JSONIFY_MIMETYPE, andJSONIFY_PRETTYPRINT_REGULARaredeprecated. :pr:
4692Setting custom
json_encoderandjson_decoderclasses on theapp or a blueprint, and the corresponding
json.JSONEncoderandJSONDecoderclasses, are deprecated. JSON behavior can now beoverridden using the
app.jsonprovider interface. :pr:4692json.htmlsafe_dumpsandjson.htmlsafe_dumpare deprecated,the function is built-in to Jinja now. :pr:
4692Refactor
register_error_handlerto consolidate error checking.Rewrite some error messages to be more consistent. :issue:
4559Use 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:
4571before_first_requestis deprecated. Run setup code when creatingthe application instead. :issue:
4605Added the
View.init_every_requestclass attribute. If a viewsubclass sets this to
False, the view will not create a newinstance on every request. :issue:
2520.A
flask.cli.FlaskGroupClick group can be nested as asub-command in a custom CLI. :issue:
3263Add
--appand--debugoptions to theflaskCLI, insteadof requiring that they are set through environment variables.
:issue:
2836Add
--env-fileoption to theflaskCLI. This allowsspecifying a dotenv file to load in addition to
.envand.flaskenv. :issue:3108It is no longer required to decorate custom CLI commands on
app.cliorblueprint.cliwith@with_appcontext, an appcontext will already be active at that point. :issue:
2410SessionInterface.get_expiration_timeuses a timezone-awarevalue. :pr:
4645View functions can return generators directly instead of wrapping
them in a
Response. :pr:4629Add
stream_templateandstream_template_stringfunctions torender a template as a stream of pieces. :pr:
4629A new implementation of context preservation during debugging and
testing. :pr:
4666request,g, and other context-locals point to thecorrect data when running code in the interactive debugger
console. :issue:
2836even if the context is preserved. They are also run after the
preserved context is popped.
stream_with_contextpreserves context separately from awith clientblock. 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:
4672When type checking, allow
TypedDictto be returned from viewfunctions. :pr:
4695Remove the
--eager-loading/--lazy-loadingoptions from theflask runcommand. The app is always eager loaded the firsttime, then lazily loaded in the reloader. The reloader always prints
errors immediately but continues serving. Remove the internal
DispatchingAppmiddleware used by the previous implementation.:issue:
4715v2.1.3Compare Source
Released 2022-07-13
commands. :pr:
4606after_requestfunctions. :issue:4600instance_pathfor namespace packages uses the path closest tothe imported submodule. :issue:
4610render_templateandrender_template_stringare used outside an application context.:pr:
4693v2.1.2Compare Source
Released 2022-04-28
json.loads, it accepts str or bytes.:issue:
4519--certand--keyoptions onflask runcan be givenin either order. :issue:
4459v2.1.1Compare Source
Released on 2022-03-30
which is required on Python < 3.10. :issue:
4502v2.1.0Compare Source
Released 2022-03-28
Drop support for Python 3.6. :pr:
4335Update Click dependency to >= 8.0. :pr:
4008Remove previously deprecated code. :pr:
4337script_infoto app factory functions.config.from_jsonis replaced byconfig.from_file(name, load=json.load).jsonfunctions no longer take anencodingparameter.safe_joinis removed, usewerkzeug.utils.safe_joininstead.
total_secondsis removed, usetimedelta.total_secondsinstead.
name=when registering to specify a unique name.as_tupleparameter is removed. Useresponse.request.environinstead. :pr:4417Some parameters in
send_fileandsend_from_directorywererenamed in 2.0. The deprecation period for the old names is extended
to 2.2. Be sure to test with deprecation warnings visible.
attachment_filenameis renamed todownload_name.cache_timeoutis renamed tomax_age.add_etagsis renamed toetag.filenameis renamed topath.The
RequestContext.gproperty is deprecated. Usegdirectlyor
AppContext.ginstead. :issue:3898copy_current_request_contextcan decorate async functions.:pr:
4303The CLI uses
importlib.metadatainstead ofpkg_resourcestoload command entry points. :issue:
4419Overriding
FlaskClient.openwill not cause an error on redirect.:issue:
3396Add an
--exclude-patternsoption to theflask runCLIcommand to specify patterns that will be ignored by the reloader.
:issue:
4188When using lazy loading (the default with the debugger), the Click
context from the
flask runcommand remains available in theloader thread. :issue:
4460Deleting the session cookie uses the
httponlyflag.:issue:
4485Relax typing for
errorhandlerto allow the user to use moreprecise types and decorate the same function multiple times.
:issue:
4095, 4295, 4297Fix typing for
__exit__methods for better compatibility withExitStack. :issue:4474From Werkzeug, for redirect responses the
Locationheader URLwill remain relative, and exclude the scheme and domain, by default.
:pr:
4496Add
Config.from_prefixed_env()to load config values fromenvironment variables that start with
FLASK_or another prefix.This parses values as JSON by default, and allows setting keys in
nested dicts. :pr:
4479v2.0.3Compare Source
Released 2022-02-14
as_tupleparameter is deprecated and will beremoved 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. Use
response.request.environinstead. :pr:4341errorhandlerdecorator. :issue:4295ImportErrortracebacks when importing the application. :issue:
4307app.json_encoderandjson_decoderare only passed todumpsandloadsif they have custom behavior. This improvesperformance, mainly on PyPy. :issue:
4349after_this_requestis used outside arequest context. :issue:
4333v2.0.2Compare Source
Released 2021-10-04
teardown_*methods. :issue:4093before_requestandbefore_app_requestdecorators. :issue:
4104decorators to accept functions with no arguments. :issue:
40984112app.errorhandlerdecorator. :issue:40954124static_folderto acceptpathlib.Path.:issue:
4150jsonifyhandlesdecimal.Decimalby encoding tostr.:issue:
4157:issue:
4096**kwargsin acreate_appfunction.:issue:
4170before_requestand other callbacks that triggerbefore the view returns. They are called from the app down to the
closest nested blueprint. :issue:
4229v2.0.1Compare Source
Released 2021-05-21
filenameparameter insend_from_directory. Thefilenameparameter has been renamed topath, the old nameis deprecated. :pr:
4019imports in user projects. :issue:
4024gand inform mypy that it is a namespaceobject that has arbitrary attributes. :issue:
40204040send_file,send_from_directory, andget_send_file_max_age. :issue:4044, :pr:4026.hasspecial meaning, it is used to separate (nested) blueprint names and
the endpoint name. :issue:
4041a
url_prefixvalue. :issue:4037URL is again matched after the session is loaded, so the session is
available in custom URL converters. :issue:
4053Config.from_json, which was accidentallyremoved early. :issue:
4078Callablein their typesignatures, focusing on decorator factories. :issue:
4060different blueprints with the same name to be nested at different
locations. :issue:
4069register_blueprinttakes anameoption 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 namemultiple times is deprecated. :issue:
1091stream_with_context. :issue:4052v2.0.0Compare Source
Released 2021-05-11
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.
override
app.json_encoderandjson_decoder. :issue:3555encodingoption to JSON functions is deprecated. :pr:3562script_infoto app factory functions is deprecated. Thiswas not portable outside the
flaskcommand. Useclick.get_current_context().objif it's needed. :issue:3552when looking up commands. :issue:
2741SessionInterface.get_cookie_nameto allow setting thesession cookie name dynamically. :pr:
3369Config.from_fileto load config using arbitrary fileloaders, such as
toml.loadorjson.load.Config.from_jsonis deprecated in favor of this. :pr:3398flask runcommand will only defer errors on reload. Errorspresent during the initial call will cause the server to exit with
the traceback immediately. :issue:
3431send_fileraises aValueErrorwhen passed anioobjectin text mode. Previously, it would respond with 200 OK and an empty
file. :issue:
3358instead of PyOpenSSL. :pr:
3492FLASK_APP, keywordargument can be passed. :issue:
3553.envor.flaskenvfile, the current workingdirectory is no longer changed to the location of the file.
:pr:
3560(response, headers)tuple from a view, theheaders replace rather than extend existing headers on the response.
For example, this allows setting the
Content-Typeforjsonify(). Useresponse.headers.extend()if extending isdesired. :issue:
3628Scaffoldclass provides a common API for theFlaskandBlueprintclasses.Blueprintinformation is stored inattributes just like
Flask, rather than opaque lambda functions.This is intended to improve consistency and maintainability.
:issue:
3215samesiteandsecureoptions when removing thesession cookie. :pr:
3726pathlib.Pathtostatic_folder. :pr:3579send_fileandsend_from_directoryare wrappers around theimplementations in
werkzeug.utils. :pr:3828send_fileparameters have been renamed, the old names aredeprecated.
attachment_filenameis renamed todownload_name.cache_timeoutis renamed tomax_age.add_etagsisrenamed to
etag. :pr:3828, 3883send_filepassesdownload_nameeven ifas_attachment=Falseby usingContent-Disposition: inline.:pr:
3828send_filesetsconditional=Trueandmax_age=Nonebydefault.
Cache-Controlis set tono-cacheifmax_ageisnot set, otherwise
public. This tells browsers to validateconditional requests instead of using a timed cache. :pr:
3828helpers.safe_joinis deprecated. Usewerkzeug.utils.safe_joininstead. :pr:3828This could allow a session interface to change behavior based on
request.endpoint. :issue:3776|tojsonfilter. :issue:3881@app.post("/login")is a shortcut for@app.route("/login", methods=["POST"]). :pr:3907teardown functions. :pr:
3412593, 1548, :pr:3923.envand.flaskenvfiles to allow to use non-ASCII characters. :issue:3931flask shellsets up tab and history completion like the defaultpythonshell ifreadlineis installed. :issue:3941helpers.total_seconds()is deprecated. Usetimedelta.total_seconds()instead. :pr:39623973.v1.1.4Compare Source
Released 2021-05-13
static_folderto use_compat.fspathinstead ofos.fspathto continue supporting Python < 3.6 :issue:4050v1.1.3Compare Source
Released 2021-05-13
:issue:
4043pathlib.Pathforstatic_folder.:pr:
3579v1.1.2Compare Source
Released 2020-04-03
flaskcommand with anexternal debugger on Windows. :issue:
3297Flaskstatic_folderargument ends with a slash. :issue:3452v1.1.1Compare Source
Released 2019-07-08
flask.json_availableflag was added back for compatibilitywith some extensions. It will raise a deprecation warning when used,
and will be removed in version 2.0.0. :issue:
3288v1.1.0Compare Source
Released 2019-07-04
Bump minimum Werkzeug version to >= 0.15.
Drop support for Python 3.4.
Error handlers for
InternalServerErroror500will always bepassed an instance of
InternalServerError. If they are invokeddue to an unhandled exception, that original exception is now
available as
e.original_exceptionrather than being passeddirectly to the handler. The same is true if the handler is for the
base
HTTPException. This makes error handler behavior moreconsistent. :pr:
3266Flask.finalize_requestis called for all unhandledexceptions even if there is no
500error handler.Flask.loggertakes the same name asFlask.name(the valuepassed as
Flask(import_name). This reverts 1.0's behavior ofalways logging to
"flask.app", in order to support multiple appsin the same process. A warning will be shown if old configuration is
detected that needs to be moved. :issue:
2866RequestContext.copyincludes the current session object in therequest context copy. This prevents
sessionpointing to anout-of-date object. :issue:
2935Using built-in RequestContext, unprintable Unicode characters in
Host header will result in a HTTP 400 response and not HTTP 500 as
previously. :pr:
2994send_filesupportsPathLikeobjects as described in:pep:
519, to supportpathlibin Python 3. :pr:3059send_filesupportsBytesIOpartial content.:issue:
2957open_resourceaccepts the "rt" file mode. This still does thesame thing as "r". :issue:
3163The
MethodView.methodsattribute set in a base class is used bysubclasses. :issue:
3138Flask.jinja_optionsis adictinstead of anImmutableDictto allow easier configuration. Changes must stillbe made before creating the environment. :pr:
3190Flask's
JSONMixinfor the request and response wrappers wasmoved into Werkzeug. Use Werkzeug's version with Flask-specific
support. This bumps the Werkzeug dependency to >= 0.15.
:issue:
3125The
flaskcommand entry point is simplified to take advantageof Werkzeug 0.15's better reloader support. This bumps the Werkzeug
dependency to >= 0.15. :issue:
3022Support
static_url_paththat ends with a forward slash.:issue:
3134Support empty
static_folderwithout requiring setting an emptystatic_url_pathas well. :pr:3124jsonifysupportsdataclassobjects. :pr:3195Allow customizing the
Flask.url_map_classused for routing.:pr:
3069The development server port can be set to 0, which tells the OS to
pick an available port. :issue:
2926The return value from
cli.load_dotenvis more consistent withthe documentation. It will return
Falseif python-dotenv is notinstalled, or if the given path isn't a file. :issue:
2937Signaling support has a stub for the
connect_viamethod whenthe Blinker library is not installed. :pr:
3208Add an
--extra-filesoption to theflask runCLI command tospecify extra files that will trigger the reloader on change.
:issue:
2897Allow returning a dictionary from a view function. Similar to how
returning a string will produce a
text/htmlresponse, returninga dict will call
jsonifyto produce aapplication/jsonresponse. :pr:
3111Blueprints have a
cliClick group likeapp.cli. CLI commandsregistered with a blueprint will be available as a group under the
flaskcommand. :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:
3157Show a better error message when the view return type is not
supported. :issue:
3214flask.testing.make_test_environ_builder()has been deprecated infavour of a new class
flask.testing.EnvironBuilder. :pr:3232The
flask runcommand no longer fails if Python is not builtwith SSL support. Using the
--certoption will show anappropriate error message. :issue:
3211URL 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:
3088v1.0.4Compare Source
Released 2019-07-04
BadRequestKeyErroris no longer clearedoutside debug mode, so error handlers can still access it. This
requires upgrading to Werkzeug 0.15.5. :issue:
3249send_fileurl quotes the ":" and "/" characters for morecompatible UTF-8 filename support in some browsers. :issue:
3074451import loaders and pytest 5.x. :issue:32753285v1.0.3Compare Source
Released 2019-05-17
send_fileencodes 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:2766FlaskGroupto set the debug flag withoutit always being overwritten based on environment variables.
:pr:
2765flask --versionoutputs Werkzeug's version and simplifies thePython version. :pr:
2825send_filehandles anattachment_filenamethat is a nativePython 2 string (bytes) with UTF-8 coded bytes. :issue:
2933HTTPExceptionwill nothandle
RoutingException, which is used internally duringrouting. This fixes the unexpected behavior that had been introduced
in 1.0. :pr:
2986jsonargument toapp.test_clientdoes notpush/pop an extra app context. :issue:
2900Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.