mirror of
https://github.com/clinton-hall/nzbToMedia.git
synced 2024-11-14 17:40:24 -08:00
f05b09f349
Updates rarfile to 3.1 Updates stevedore to 3.5.0 Updates appdirs to 1.4.4 Updates click to 8.1.3 Updates decorator to 5.1.1 Updates dogpile.cache to 1.1.8 Updates pbr to 5.11.0 Updates pysrt to 1.1.2 Updates pytz to 2022.6 Adds importlib-metadata version 3.1.1 Adds typing-extensions version 4.1.1 Adds zipp version 3.11.0
69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
import typing as t
|
|
from threading import local
|
|
|
|
if t.TYPE_CHECKING:
|
|
import typing_extensions as te
|
|
from .core import Context
|
|
|
|
_local = local()
|
|
|
|
|
|
@t.overload
|
|
def get_current_context(silent: "te.Literal[False]" = False) -> "Context":
|
|
...
|
|
|
|
|
|
@t.overload
|
|
def get_current_context(silent: bool = ...) -> t.Optional["Context"]:
|
|
...
|
|
|
|
|
|
def get_current_context(silent: bool = False) -> t.Optional["Context"]:
|
|
"""Returns the current click context. This can be used as a way to
|
|
access the current context object from anywhere. This is a more implicit
|
|
alternative to the :func:`pass_context` decorator. This function is
|
|
primarily useful for helpers such as :func:`echo` which might be
|
|
interested in changing its behavior based on the current context.
|
|
|
|
To push the current context, :meth:`Context.scope` can be used.
|
|
|
|
.. versionadded:: 5.0
|
|
|
|
:param silent: if set to `True` the return value is `None` if no context
|
|
is available. The default behavior is to raise a
|
|
:exc:`RuntimeError`.
|
|
"""
|
|
try:
|
|
return t.cast("Context", _local.stack[-1])
|
|
except (AttributeError, IndexError) as e:
|
|
if not silent:
|
|
raise RuntimeError("There is no active click context.") from e
|
|
|
|
return None
|
|
|
|
|
|
def push_context(ctx: "Context") -> None:
|
|
"""Pushes a new context to the current stack."""
|
|
_local.__dict__.setdefault("stack", []).append(ctx)
|
|
|
|
|
|
def pop_context() -> None:
|
|
"""Removes the top level from the stack."""
|
|
_local.stack.pop()
|
|
|
|
|
|
def resolve_color_default(color: t.Optional[bool] = None) -> t.Optional[bool]:
|
|
"""Internal helper to get the default value of the color flag. If a
|
|
value is passed it's returned unchanged, otherwise it's looked up from
|
|
the current context.
|
|
"""
|
|
if color is not None:
|
|
return color
|
|
|
|
ctx = get_current_context(silent=True)
|
|
|
|
if ctx is not None:
|
|
return ctx.color
|
|
|
|
return None
|