Skip to content

Commit 22bd9bd

Browse files
committed
refactor: Move preset checking into ui.Theme()
1 parent 9e8211c commit 22bd9bd

File tree

2 files changed

+8
-14
lines changed

2 files changed

+8
-14
lines changed

shiny/ui/_theme.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,11 @@ def server(input):
131131

132132
def __init__(
133133
self,
134-
preset: ShinyThemePreset = "shiny",
134+
preset: str | None = None,
135135
name: Optional[str] = None,
136136
include_paths: Optional[str | pathlib.Path | list[str | pathlib.Path]] = None,
137137
):
138-
check_is_valid_preset(preset)
139-
self._preset: ShinyThemePreset = preset
138+
self._preset: ShinyThemePreset = check_is_valid_preset(preset or "shiny")
140139
self.name = name
141140
# 2024-06-21: `version` is not exposed because we currently support only BS 5.
142141
# In the future, the Bootstrap version could be chosen by the user on init.
@@ -556,13 +555,15 @@ def path_pkg_preset(preset: ShinyThemePreset, *args: str) -> str:
556555
return pathlib.Path(path).as_posix()
557556

558557

559-
def check_is_valid_preset(preset: ShinyThemePreset) -> None:
558+
def check_is_valid_preset(preset: str | None) -> ShinyThemePreset:
560559
if preset not in shiny_theme_presets:
561560
raise ValueError(
562561
f"Invalid preset '{preset}'.\n"
563562
+ f"""Expected one of: "{'", "'.join(shiny_theme_presets)}".""",
564563
)
565564

565+
return preset
566+
566567

567568
def check_theme_pkg_installed(pkg: str, spec: str | None = None) -> None:
568569
import importlib.util

shiny/ui/_theme_brand.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
from .._versions import bootstrap as v_bootstrap
1313
from ._theme import Theme
14-
from ._theme_presets import ShinyThemePreset, shiny_theme_presets
1514
from .css import CssUnit, as_css_unit
1615

1716
YamlScalarType = Union[str, int, bool, float, None]
@@ -185,7 +184,7 @@ class BrandBootstrapConfig:
185184
def __init__(
186185
self,
187186
version: Any = v_bootstrap,
188-
preset: Any = "shiny",
187+
preset: str | None = None,
189188
functions: str | None = None,
190189
defaults: dict[str, YamlScalarType] | None = None,
191190
mixins: str | None = None,
@@ -208,14 +207,8 @@ def __init__(
208207
)
209208
v_major = bs_major
210209

211-
if not isinstance(preset, str) or preset not in shiny_theme_presets:
212-
raise ValueError(
213-
f"{preset!r} is not a valid Bootstrap preset provided by Shiny. "
214-
f"Valid presets are {shiny_theme_presets}."
215-
)
216-
217210
self.version = v_major
218-
self.preset: ShinyThemePreset = preset
211+
self.preset = preset
219212
self.functions = functions
220213
self.defaults = defaults
221214
self.mixins = mixins
@@ -236,7 +229,7 @@ def from_brand(cls, brand: Brand):
236229

237230
return cls(
238231
version=d_shiny.version or d_bootstrap.version or v_bootstrap,
239-
preset=d_shiny.preset or d_bootstrap.preset or "shiny",
232+
preset=d_shiny.preset or d_bootstrap.preset,
240233
functions=d_shiny.functions,
241234
defaults=defaults,
242235
mixins=d_shiny.mixins,

0 commit comments

Comments
 (0)