refactor: Refines flask context manager interface

Simplifies the `flask_context_manager` function by requiring a
`contextvars.Context` object instead of an optional mapping of
`ContextVar` instances. This change enhances type safety and
streamlines the function's usage, ensuring a more consistent
and clear interface for managing context variables in Flask
applications.

Signed-off-by: -LAN- <laipz8200@outlook.com>
pull/21061/head
-LAN- 11 months ago
parent 22e945a267
commit 132a0d6683
No known key found for this signature in database
GPG Key ID: 6BA0D108DED011FF

@ -1,7 +1,7 @@
import contextvars
from collections.abc import Iterator, Mapping
from collections.abc import Iterator
from contextlib import contextmanager
from typing import Any, Optional, TypeVar, Union
from typing import TypeVar
from flask import Flask, g, has_request_context
@ -11,9 +11,7 @@ T = TypeVar("T")
@contextmanager
def flask_context_manager(
flask_app: Flask,
context_vars: Optional[
Union[Mapping[contextvars.ContextVar[T], Any], dict[contextvars.ContextVar[Any], Any]]
] = None,
context_vars: contextvars.Context,
) -> Iterator[None]:
"""
A context manager that handles:
@ -27,14 +25,14 @@ def flask_context_manager(
Args:
flask_app: The Flask application instance
context_vars: Optional dictionary mapping ContextVar instances to their values
context_vars: contextvars.Context object containing context variables to be set in the new context
Yields:
None
Example:
```python
with flask_context_manager(flask_app, context_vars={my_var: my_value}):
with flask_context_manager(flask_app, context_vars=context_vars):
# Code that needs Flask app context and context variables
# Current user will be preserved if available
```

Loading…
Cancel
Save