Commit graph

4208 commits

Author SHA1 Message Date
Grey Li
ec044a24e1 Add tips for using async on Windows on Python 3.8 2021-04-29 10:59:26 +08:00
dependabot[bot]
83b2f8f0f1
Merge pull request #3984 from pallets/dependabot/pip/pre-commit-2.12.1 2021-04-28 20:59:01 +00:00
dependabot[bot]
36e6ec45a9
Bump pre-commit from 2.12.0 to 2.12.1
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 2.12.0 to 2.12.1.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v2.12.0...v2.12.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-28 20:54:53 +00:00
David Lord
0d63f1021d
Merge pull request #3983 from pallets/dependabot/add-v2-config-file
Upgrade to GitHub-native Dependabot
2021-04-28 13:53:29 -07:00
dependabot-preview[bot]
d124214129
Upgrade to GitHub-native Dependabot 2021-04-28 16:46:45 +00:00
David Lord
77db3d5ede
Merge pull request #3972 from ThiefMaster/click-7
Allow using Click 7 with a DeprecationWarning
2021-04-27 07:58:25 -07:00
David Lord
1ccf063f80
Merge pull request #3971 from ThiefMaster/get-root-path
Move get_root_path back to flask.helpers
2021-04-27 07:55:26 -07:00
Adrian Moennich
26a6cc0f94 Allow using Click 7 with a DeprecationWarning
As long as popular libraries (e.g. Celery) require click 7, depending
on Click 8 in Flask makes it hard to test the latest version (and its
other dependencies) in existing applications.
2021-04-27 16:45:06 +02:00
Adrian Moennich
10b0d6b33f Move get_root_path back to flask.helpers
Many libraries use it so the move is somewhat disruptive.
2021-04-27 16:42:16 +02:00
David Lord
1a8549debb
Merge pull request #3973 from pgjones/typing 2021-04-27 07:32:10 -07:00
Grey Li
b8ddd52a0d
Merge pull request #3974 from pallets/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2021-04-27 09:47:43 +08:00
pre-commit-ci[bot]
b373e7a456
[pre-commit.ci] pre-commit autoupdate
updates:
- [github.com/asottile/pyupgrade: v2.12.0 → v2.13.0](https://github.com/asottile/pyupgrade/compare/v2.12.0...v2.13.0)
- [github.com/asottile/reorder_python_imports: v2.4.0 → v2.5.0](https://github.com/asottile/reorder_python_imports/compare/v2.4.0...v2.5.0)
- [github.com/psf/black: 20.8b1 → 21.4b0](https://github.com/psf/black/compare/20.8b1...21.4b0)
2021-04-26 17:21:56 +00:00
pgjones
77237093da Add initial type hints
This should make it easier for users to correctly use Flask. The hints
are from Quart.
2021-04-26 17:29:53 +01:00
pgjones
f405c6f19e Initial typing support
This enables type checking in CI and marks the project as typed.
2021-04-26 17:20:24 +01:00
David Lord
e6e75e5547
changelog for bumped pallets versions 2021-04-24 07:31:16 -07:00
Grey Li
c791f6312b
Fix typo in issue template 2021-04-22 20:34:55 +08:00
David Lord
03db9194d8
Merge pull request #3967 from pgjones/docs 2021-04-17 07:34:56 -07:00
pgjones
f74cce164e Update documentation on asyncio background tasks
This has been an early question from users, so best to explain.
2021-04-17 15:13:33 +01:00
pgjones
1c3b53c5db Update the docs on serving with ASGI
Whilst it has been possible to serve via an ASGI server for a while
(using WSGI to ASGI middleware/adapters) it hasn't added much. Now
though it makes sense to recommend the asgiref adapter as it
integrates with the same event loop used for async route handlers
etc...
2021-04-17 11:30:22 +01:00
David Lord
34eb0dad15
Merge pull request #3965 from pallets/release-2.0.0rc1
Release 2.0.0rc1
2021-04-16 08:52:35 -07:00
David Lord
7df5db7b0c
release version 2.0.0rc1 2021-04-16 08:45:26 -07:00
David Lord
07000942da
update minimum install requirements 2021-04-16 08:45:04 -07:00
David Lord
afda0ed9f2
update deprecated pre-commit hook 2021-04-16 08:44:30 -07:00
David Lord
078a3c3631
update requirements 2021-04-16 08:44:18 -07:00
David Lord
e00a4a4b44
update pallets-sphinx-themes 2021-04-16 08:43:31 -07:00
David Lord
6f09b4b5ed
Merge remote-tracking branch 'origin/1.1.x' into release-2.0.0rc1 2021-04-16 08:37:56 -07:00
David Lord
39887ee4df
Merge pull request #3964 from pgjones/fix
Fix wrapped view function comparison
2021-04-16 06:28:53 -07:00
pgjones
5c6a0f0c12 Fix wrapped view function comparison
Wrapped functions are not comparable, see
https://bugs.python.org/issue3564, therefore a marker is used to note
when the function has been sync wrapped to allow comparison with the
wrapped function instead.

This ensures that multiple route decorators work without raising
exceptions i.e.,

    @app.route("/")
    @app.route("/a")
    async def index():
        ...

works.
2021-04-16 12:34:51 +01:00
David Lord
fab26dcbe9
Merge pull request #3963 from pallets/deprecate-helpers
deprecate `helpers.total_seconds`
2021-04-15 23:18:39 -07:00
David Lord
ec27677f95
remove _os_alt_seps 2021-04-15 23:14:53 -07:00
David Lord
85b430a366
deprecate total_seconds 2021-04-15 23:14:53 -07:00
David Lord
f3ed1322a6
Merge pull request #3962 from pallets/cached-property
locked_cached_property subclasses Werkzeug's cached_property
2021-04-15 23:14:24 -07:00
David Lord
5a7a4ab4c5
locked_cached_property subclasses cached_property 2021-04-15 23:07:28 -07:00
David Lord
8ab4967703
consistent versions and deprecation messages 2021-04-15 15:58:24 -07:00
David Lord
16f51ef799
Merge pull request #3960 from pallets/shell-interactive-hook
shell calls sys.__interativehook__
2021-04-14 10:06:50 -07:00
David Lord
32272da9ac
shell calls sys.__interativehook__
This will set up readline tab and history completion by default.
2021-04-14 10:01:32 -07:00
David Lord
64213fc021
Merge pull request #3923 from pgjones/nested
Nested blueprints
2021-04-14 09:30:48 -07:00
pgjones
f92e820b4b
Nested blueprints
This allows blueprints to be nested within blueprints via a new
Blueprint.register_blueprint method. This should provide a use case
that has been desired for the past ~10 years.

This works by setting the endpoint name to be the blueprint names,
from parent to child delimeted by "." and then iterating over the
blueprint names in reverse order in the app (from most specific to
most general). This means that the expectation of nesting a blueprint
within a nested blueprint is met.
2021-04-14 09:25:42 -07:00
David Lord
85dce2c836
Merge pull request #3957 from pgjones/fix
Bugfix iscoroutinefunction with Python3.7
2021-04-12 11:47:24 -07:00
pgjones
6d5ccdefe2 Bugfix iscoroutinefunction with Python3.7
See this Python bug https://bugs.python.org/issue33261. The
iscoroutinefunction doesn't recognise partially wrapped coroutine
functions as coroutine functions - which is problematic as the
coroutines will be called as if they are sync, which results in
un-awaited coroutines.
2021-04-12 19:38:42 +01:00
David Lord
5f03ad3004
Merge pull request #3958 from pallets/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2021-04-12 10:24:22 -07:00
pre-commit-ci[bot]
08693ae917
[pre-commit.ci] pre-commit autoupdate 2021-04-12 17:12:29 +00:00
David Lord
1a79d2d235
Merge pull request #3412 from pgjones/async
Add `async` support
2021-04-07 05:32:20 -07:00
David Lord
dc3e9c0cc3
update async docs 2021-04-06 15:33:06 -07:00
David Lord
61fbae8664
skip async tests if asgiref isn't installed 2021-04-06 15:33:06 -07:00
pgjones
00f5a3e55c
Alter ensure_sync implementation to support extensions
This allows extensions to override the Flask.ensure_sync method and
have the change apply to blueprints as well. Without this change it is
possible for differing blueprints to have differing ensure_sync
approaches depending on the extension used - which would likely result
in event-loop blocking issues.

This also allows blueprints to have a custom ensure_sync, although
this is a by product rather than an expected use case.
2021-04-06 15:33:06 -07:00
dependabot-preview[bot]
9ddef0144f
Merge pull request #3955 from pallets/dependabot/pip/urllib3-1.26.4 2021-04-06 17:49:45 +00:00
dependabot-preview[bot]
285a873ce9
[Security] Bump urllib3 from 1.26.3 to 1.26.4
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.3 to 1.26.4. **This update includes a security fix.**
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.3...1.26.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-06 17:46:53 +00:00
pgjones
c6c6408c3f
Raise a runtime error if run_async is called without real ContextVars
Werkzeug offers a ContextVar replacement for Python < 3.7, however it
doesn't work across asyncio tasks, hence it makes sense to error out
rather than find there are odd bugs.

Note the docs build requires the latest (dev) Werkzeug due to this
change (to import ContextVar from werkzeug.local).
2021-04-06 09:35:10 -07:00
pgjones
6979265fa6
Add async support
This allows for async functions to be passed to the Flask class
instance, for example as a view function,

    @app.route("/")
    async def index():
        return "Async hello"

this comes with a cost though of poorer performance than using the
sync equivalent.

asgiref is the standard way to run async code within a sync context,
and is used in Django making it a safe and sane choice for this.
2021-04-06 09:35:10 -07:00