The Pallets team is pleased to announce that the next major versions for our six core projects have been released!
This represents two years of work by the Pallets team and community, there are a significant number of changes and exciting new features. Check out the logs for every project to see what's new. Flask depends on the five other libraries, be sure to read them all if you're upgrading Flask.
Install from PyPI with pip. For example, for Flask:
pip install -U Flask
The projects have all dropped support for Python 2 and 3.5, requiring Python 3.6 as the minimum supported version. We plan to follow CPython's supported versions as our supported versions.
Some less common parts of the projects, or parts that we've determined are better served by external implementations, have been deprecated. Previously deprecated code has also been removed. Testing tools such as pytest enable showing deprecation warnings automatically, and can turn them into errors so that you can see early what you may need to change in your project.
While we strive to avoid compatibility issues, there may turn out to be incompatibilities either directly or through other dependencies your project uses, such as Flask extensions. Over the next few weeks, the ecosystem around our projects will continue to update to improve compatibility as necessary. We encourage you to use tools such as pip-compile and Dependabot to pin and control upgrades to your dependencies to avoid unexpected changes.
We are joining the PSF, CPython, and Django, among many other projects, in renaming the default branch of our repositories to "main". GitHub makes this transition easy, see their documentation about how it works for maintainers and users.
If you have a local copy of the repository you'll need to rename its branch to "main".
$ git branch -m master main
$ git fetch origin
$ git branch -u origin/main main
$ git remote set-head origin -a
If you were installing from a GitHub archive URL such as
https://github.com/pallets/flask/archive/refs/heads/master.zip
, you'll
need to rename that link to use "main".
These are a few of the great new features and changes to be aware of in the projects. Check out the linked changelogs for the full lists of changes.
async def
. Regular sync views continue to work
unchanged. ASGI features such as web sockets are not supported. We
will continue exploring how to add more support for async.@app.post("/login")
is a shortcut for
@app.route("/login", methods=["POST"])
.Config.from_file
function to load config from any file
format.flask shell
command enables tab completion like the regular
python
shell does.multipart/form-data
has been optimized and shows a 15x
speedup, especially for large file uploads.ContextVar
to allow working across async
coroutines instead of only threads.Request
and Response
classes are becoming sans-io. This will allow us to better support
sync and async use cases in the future.Response
class that includes a
reference to the original request, environ, and any redirects that
were followed.datetime
objects returned by some headers and functions are
timezone-aware.ws://
and wss://
schemes and will
route appropriately. While there is no direct support for
websockets, this allows other projects to use Werkzeug's routing.send_file
and
send_from_directory
to Werkzeug.0.0.0.0
and warns about
not running in production.required
.if
blocks and ternary statements
can be undefined at runtime. Tests have been added to check if a
filter or test is available, to allow optionally using them.pgettext
and npgettext
.NativeEnvironment
supports enable_async
mode.style
supports 256 and RGB color codes supported by modern
terminals, as well as the strikethrough, italic, and overline
styles.multiple=True
or nargs
don't require setting a
default
, and properly validate the format of a default if it's
given.*.txt
and ~/config.json
, since the Windows terminal does not
support this automatically.gettext
.datetime
objects are timezone-aware.Follow our blog RSS feed or our Twitter @PalletsTeam to get future updates. We also have an official Discord server https://discord.gg/pallets for chatting, asking questions, and contributing to the projects.
If you're interested in contributing, each project has a guide showing how to get started with a development environment and the tools we use. Check out the issue trackers for each project for what to work on. Use the Watch feature on GitHub see new issues, PRs, and the discussions we have around them.
The Pallets organization accepts donations as part of the non-profit Python Software Foundation (PSF). Donations through the PSF support our efforts to maintain the projects and grow the community.
The Pallets team and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use.
We've made amazing progress, both by working through the backlog of issues and PRs, as well as growing the team and community. We have so many more exciting things in store. Look for more updates soon on community projects such as documentation translations and FlaskCon Online 2021! Thank you so much for using, supporting, and contributing to the Pallets projects!