Commit graph

4345 commits

Author SHA1 Message Date
pgjones
943009c8ec 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
cba97ff101 changelog for bumped pallets versions 2021-04-24 07:31:16 -07:00
Grey Li
017ea35e27 Fix typo in issue template 2021-04-22 20:34:55 +08:00
David Lord
3b143eb64a Merge pull request #3967 from pgjones/docs 2021-04-17 07:34:56 -07:00
pgjones
65cffeba07 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
bc1fea4e3a 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
aee4ae26ba Merge pull request #3965 from pallets/release-2.0.0rc1
Release 2.0.0rc1
2021-04-16 08:52:35 -07:00
David Lord
c2459c1a9a release version 2.0.0rc1 2021-04-16 08:45:26 -07:00
David Lord
34ad92a379 update minimum install requirements 2021-04-16 08:45:04 -07:00
David Lord
7fab10de25 update deprecated pre-commit hook 2021-04-16 08:44:30 -07:00
David Lord
b2886b8872 update requirements 2021-04-16 08:44:18 -07:00
David Lord
d7d403f4f3 update pallets-sphinx-themes 2021-04-16 08:43:31 -07:00
David Lord
a37c949ff8 Merge remote-tracking branch 'origin/1.1.x' into release-2.0.0rc1 2021-04-16 08:37:56 -07:00
David Lord
93c618f4ef Merge pull request #3964 from pgjones/fix
Fix wrapped view function comparison
2021-04-16 06:28:53 -07:00
pgjones
2fe5f3d65c 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
3e6123f1cb Merge pull request #3963 from pallets/deprecate-helpers
deprecate `helpers.total_seconds`
2021-04-15 23:18:39 -07:00
David Lord
bbed217e2b remove _os_alt_seps 2021-04-15 23:14:53 -07:00
David Lord
96ea4be346 deprecate total_seconds 2021-04-15 23:14:53 -07:00
David Lord
b8c778f322 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
cdbbfda06e locked_cached_property subclasses cached_property 2021-04-15 23:07:28 -07:00
David Lord
d0076a527d consistent versions and deprecation messages 2021-04-15 15:58:24 -07:00
David Lord
41f4af7abf Merge pull request #3960 from pallets/shell-interactive-hook
shell calls sys.__interativehook__
2021-04-14 10:06:50 -07:00
David Lord
962b55b9b6 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
08b192e4b7 Merge pull request #3923 from pgjones/nested
Nested blueprints
2021-04-14 09:30:48 -07:00
pgjones
257c7c5c2a 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
0db61ffbc9 Merge pull request #3957 from pgjones/fix
Bugfix iscoroutinefunction with Python3.7
2021-04-12 11:47:24 -07:00
pgjones
d89398bca9 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
6e67b908cf 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]
2e7c872a38 [pre-commit.ci] pre-commit autoupdate 2021-04-12 17:12:29 +00:00
David Lord
49ce03a85a Merge pull request #3412 from pgjones/async
Add `async` support
2021-04-07 05:32:20 -07:00
David Lord
3053c7a39d update async docs 2021-04-06 15:33:06 -07:00
David Lord
bb02c14740 skip async tests if asgiref isn't installed 2021-04-06 15:33:06 -07:00
pgjones
d65f574bff 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]
eccc69c234 Merge pull request #3955 from pallets/dependabot/pip/urllib3-1.26.4 2021-04-06 17:49:45 +00:00
dependabot-preview[bot]
4a69dc76f7 [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
47e0f2aab8 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
c9f774d650 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
David Lord
8fa1fdfc96 Merge pull request #3952 from pallets/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2021-04-05 10:24:22 -07:00
pre-commit-ci[bot]
c2f01f2086 [pre-commit.ci] pre-commit autoupdate 2021-04-05 17:10:21 +00:00
David Lord
463fc8e698 Merge pull request #3943 from pallets/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2021-03-22 10:50:37 -07:00
pre-commit-ci[bot]
9222815beb [pre-commit.ci] pre-commit autoupdate 2021-03-22 17:04:33 +00:00
David Lord
58c1d14e4b Merge pull request #3939 from kangetsu121/fix_link_and_typo
Docs: fix a broken link
2021-03-16 10:16:59 -07:00
kangetsu121
ae9bd3bd34 fix a broken link 2021-03-16 16:30:54 +00:00
David Lord
8043b91496 Merge pull request #3937 from pallets/pre-commit-ci-update-config
[pre-commit.ci] pre-commit autoupdate
2021-03-15 11:36:59 -07:00
pre-commit-ci[bot]
183cf87f86 [pre-commit.ci] pre-commit autoupdate 2021-03-15 17:00:57 +00:00
David Lord
78e7159e50 Merge pull request #3933 from pallets/more-scaffold
more work on Scaffold base class
2021-03-10 11:02:16 -08:00
David Lord
4421b22db2 only extend on first registration 2021-03-10 10:51:06 -08:00
David Lord
8e0d511d12 remove redundant _register_error_handler 2021-03-10 10:38:17 -08:00
David Lord
9f21e9fe54 remove old note about InternalServerError 2021-03-10 10:38:16 -08:00
David Lord
8bf05e1b1d rewrite Scaffold docs 2021-03-10 10:38:16 -08:00