123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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
- )
|