Spaces:
Running
Running
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 | |
_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: 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: 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 | |
) | |