50 lines
1.4 KiB
Python
Executable File
50 lines
1.4 KiB
Python
Executable File
"""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)
|