|
"""Utilities for registering and working with themes.""" |
|
|
|
from __future__ import annotations |
|
|
|
import sys |
|
from typing import TYPE_CHECKING, Callable |
|
|
|
from .plugin_registry import PluginRegistry |
|
|
|
if sys.version_info >= (3, 11): |
|
from typing import LiteralString |
|
else: |
|
from typing_extensions import LiteralString |
|
|
|
if TYPE_CHECKING: |
|
from altair.utils.plugin_registry import PluginEnabler |
|
from altair.vegalite.v5.theme import AltairThemes, VegaThemes |
|
|
|
ThemeType = Callable[..., dict] |
|
|
|
|
|
class ThemeRegistry(PluginRegistry[ThemeType, dict]): |
|
def enable( |
|
self, name: LiteralString | AltairThemes | VegaThemes | None = None, **options |
|
) -> PluginEnabler: |
|
""" |
|
Enable a theme by name. |
|
|
|
This can be either called directly, or used as a context manager. |
|
|
|
Parameters |
|
---------- |
|
name : string (optional) |
|
The name of the theme to enable. If not specified, then use the |
|
current active name. |
|
**options : |
|
Any additional parameters will be passed to the theme as keyword |
|
arguments |
|
|
|
Returns |
|
------- |
|
PluginEnabler: |
|
An object that allows enable() to be used as a context manager |
|
|
|
Notes |
|
----- |
|
Default `vega` themes can be previewed at https://vega.github.io/vega-themes/ |
|
""" |
|
return super().enable(name, **options) |
|
|