Spaces:
Runtime error
Runtime error
| from __future__ import annotations | |
| import typing as t | |
| from contextvars import ContextVar | |
| from werkzeug.local import LocalProxy | |
| if t.TYPE_CHECKING: # pragma: no cover | |
| from .app import Flask | |
| from .ctx import _AppCtxGlobals | |
| from .ctx import AppContext | |
| from .ctx import RequestContext | |
| from .sessions import SessionMixin | |
| from .wrappers import Request | |
| class _FakeStack: | |
| def __init__(self, name: str, cv: ContextVar[t.Any]) -> None: | |
| self.name = name | |
| self.cv = cv | |
| def top(self) -> t.Any | None: | |
| import warnings | |
| warnings.warn( | |
| f"'_{self.name}_ctx_stack' is deprecated and will be removed in Flask 2.4." | |
| f" Use 'g' to store data, or '{self.name}_ctx' to access the current" | |
| " context.", | |
| DeprecationWarning, | |
| stacklevel=2, | |
| ) | |
| return self.cv.get(None) | |
| _no_app_msg = """\ | |
| Working outside of application context. | |
| This typically means that you attempted to use functionality that needed | |
| the current application. To solve this, set up an application context | |
| with app.app_context(). See the documentation for more information.\ | |
| """ | |
| _cv_app: ContextVar[AppContext] = ContextVar("flask.app_ctx") | |
| __app_ctx_stack = _FakeStack("app", _cv_app) | |
| app_ctx: AppContext = LocalProxy( # type: ignore[assignment] | |
| _cv_app, unbound_message=_no_app_msg | |
| ) | |
| current_app: Flask = LocalProxy( # type: ignore[assignment] | |
| _cv_app, "app", unbound_message=_no_app_msg | |
| ) | |
| g: _AppCtxGlobals = LocalProxy( # type: ignore[assignment] | |
| _cv_app, "g", unbound_message=_no_app_msg | |
| ) | |
| _no_req_msg = """\ | |
| Working outside of request context. | |
| This typically means that you attempted to use functionality that needed | |
| an active HTTP request. Consult the documentation on testing for | |
| information about how to avoid this problem.\ | |
| """ | |
| _cv_request: ContextVar[RequestContext] = ContextVar("flask.request_ctx") | |
| __request_ctx_stack = _FakeStack("request", _cv_request) | |
| request_ctx: RequestContext = LocalProxy( # type: ignore[assignment] | |
| _cv_request, unbound_message=_no_req_msg | |
| ) | |
| request: Request = LocalProxy( # type: ignore[assignment] | |
| _cv_request, "request", unbound_message=_no_req_msg | |
| ) | |
| session: SessionMixin = LocalProxy( # type: ignore[assignment] | |
| _cv_request, "session", unbound_message=_no_req_msg | |
| ) | |
| def __getattr__(name: str) -> t.Any: | |
| if name == "_app_ctx_stack": | |
| import warnings | |
| warnings.warn( | |
| "'_app_ctx_stack' is deprecated and will be removed in Flask 2.4.", | |
| DeprecationWarning, | |
| stacklevel=2, | |
| ) | |
| return __app_ctx_stack | |
| if name == "_request_ctx_stack": | |
| import warnings | |
| warnings.warn( | |
| "'_request_ctx_stack' is deprecated and will be removed in Flask 2.4.", | |
| DeprecationWarning, | |
| stacklevel=2, | |
| ) | |
| return __request_ctx_stack | |
| raise AttributeError(name) | |