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 import contextvars
from collections.abc import Iterator, Mapping from collections.abc import Iterator
from contextlib import contextmanager from contextlib import contextmanager
from typing import Any, Optional, TypeVar, Union from typing import TypeVar
from flask import Flask, g, has_request_context from flask import Flask, g, has_request_context
@ -11,9 +11,7 @@ T = TypeVar("T")
@contextmanager @contextmanager
def flask_context_manager( def flask_context_manager(
flask_app: Flask, flask_app: Flask,
context_vars: Optional[ context_vars: contextvars.Context,
Union[Mapping[contextvars.ContextVar[T], Any], dict[contextvars.ContextVar[Any], Any]]
] = None,
) -> Iterator[None]: ) -> Iterator[None]:
""" """
A context manager that handles: A context manager that handles:
@ -27,14 +25,14 @@ def flask_context_manager(
Args: Args:
flask_app: The Flask application instance 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: Yields:
None None
Example: Example:
```python ```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 # Code that needs Flask app context and context variables
# Current user will be preserved if available # Current user will be preserved if available
``` ```

Loading…
Cancel
Save