summaryrefslogtreecommitdiff
path: root/lib/python3.11/site-packages/flask/globals.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python3.11/site-packages/flask/globals.py')
-rw-r--r--lib/python3.11/site-packages/flask/globals.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/lib/python3.11/site-packages/flask/globals.py b/lib/python3.11/site-packages/flask/globals.py
new file mode 100644
index 0000000..e9cd4ac
--- /dev/null
+++ b/lib/python3.11/site-packages/flask/globals.py
@@ -0,0 +1,96 @@
+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
+
+ @property
+ 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)