From a943fda87bcdb1ad3e08016ab47ee3f431434318 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=B8xbro=20Hansen?= Date: Mon, 2 Sep 2024 14:46:52 +0200 Subject: [PATCH] Add no_lazy import --- panel/__init__.py | 10 +++++++++- panel/io/__init__.py | 6 ++++++ panel/layout/__init__.py | 6 ++++++ panel/pane/__init__.py | 11 ++++++----- panel/pane/base.py | 3 +-- panel/widgets/__init__.py | 8 +++++++- 6 files changed, 35 insertions(+), 9 deletions(-) diff --git a/panel/__init__.py b/panel/__init__.py index be50e789cc..e11d0387c0 100644 --- a/panel/__init__.py +++ b/panel/__init__.py @@ -118,7 +118,15 @@ def __getattr__(name: str) -> object: - if name in _attrs: + if name == "no_lazy": + for attr in _attrs: + if attr in ("param"): + continue + mod = __getattr__(attr) + if hasattr(mod, "_attrs"): + getattr(mod._attrs, "no_lazy", None) + return name + elif name in _attrs: import importlib mod_name, _, attr_name = _attrs[name].partition(':') mod = importlib.import_module(mod_name) diff --git a/panel/io/__init__.py b/panel/io/__init__.py index 00ade4cd65..49cdf78753 100644 --- a/panel/io/__init__.py +++ b/panel/io/__init__.py @@ -65,6 +65,12 @@ def _serve_init(): def __getattr__(name: str) -> object: if name == "serve": return _serve_init() + elif name == "no_lazy": + for attr in _attrs: + mod = __getattr__(attr) + if hasattr(mod, "_attrs"): + getattr(mod._attrs, "no_lazy", None) + return name elif name in _attrs: import importlib mod_name, _, attr_name = _attrs[name].partition(':') diff --git a/panel/layout/__init__.py b/panel/layout/__init__.py index 5d42b98929..81d6ef5733 100644 --- a/panel/layout/__init__.py +++ b/panel/layout/__init__.py @@ -72,6 +72,12 @@ } def __getattr__(name: str): + if name == "no_lazy": + for attr in _attrs: + mod = __getattr__(attr) + if hasattr(mod, "_attrs"): + getattr(mod._attrs, "no_lazy", None) + return name if name in _attrs: import importlib mod_name, _, attr_name = _attrs[name].partition(':') diff --git a/panel/pane/__init__.py b/panel/pane/__init__.py index 825fcf5a74..940c4dc5d6 100644 --- a/panel/pane/__init__.py +++ b/panel/pane/__init__.py @@ -111,6 +111,12 @@ } def __getattr__(name: str) -> object: + if name == "no_lazy": + for attr in _attrs: + mod = __getattr__(attr) + if hasattr(mod, "_attrs"): + getattr(mod._attrs, "no_lazy", None) + return name if name in _attrs: import importlib mod_name, _, attr_name = _attrs[name].partition(':') @@ -166,8 +172,3 @@ def __getattr__(name: str) -> object: ) __dir__ = lambda: list(__all__) - - -def _import_lazy_modules(): - for name in _attrs: - __getattr__(name) diff --git a/panel/pane/base.py b/panel/pane/base.py index 11a3e6700d..6870398d09 100644 --- a/panel/pane/base.py +++ b/panel/pane/base.py @@ -34,7 +34,6 @@ from ..viewable import ( Layoutable, ServableMixin, Viewable, Viewer, ) -from . import _import_lazy_modules if TYPE_CHECKING: from bokeh.document import Document @@ -250,7 +249,7 @@ def get_pane_type(cls, obj: Any, **kwargs) -> type['PaneBase']: return type(obj) descendents = [] - _import_lazy_modules() + from . import no_lazy # noqa for p in param.concrete_descendents(PaneBase).values(): if p.priority is None: applies = True diff --git a/panel/widgets/__init__.py b/panel/widgets/__init__.py index b934f1922e..890dd508ad 100644 --- a/panel/widgets/__init__.py +++ b/panel/widgets/__init__.py @@ -160,7 +160,13 @@ def __getattr__(name: str) -> object: - if name in _attrs: + if name == "no_lazy": + for attr in _attrs: + mod = __getattr__(attr) + if hasattr(mod, "_attrs"): + getattr(mod._attrs, "no_lazy", None) + return name + elif name in _attrs: import importlib mod_name, _, attr_name = _attrs[name].partition(':') mod = importlib.import_module(mod_name)