0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 03:31:50 +02:00

fix: wrap fetching plugin widgets in case of errors

This commit is contained in:
2025-04-15 13:45:18 +02:00
committed by wakonig_k
parent e10f5ec088
commit ef148317de
3 changed files with 72 additions and 61 deletions

View File

@ -5,6 +5,7 @@ from __future__ import annotations
import enum
import inspect
import traceback
from typing import Literal, Optional
from bec_lib.logger import bec_logger
@ -47,6 +48,7 @@ _Widgets = {
}
try:
_plugin_widgets = get_all_plugin_widgets()
plugin_client = get_plugin_client_module()
Widgets = _WidgetsEnumType("Widgets", {name: name for name in _plugin_widgets} | _Widgets)
@ -70,6 +72,8 @@ for plugin_name, plugin_class in inspect.getmembers(plugin_client, inspect.iscla
continue
if plugin_name not in _overlap:
globals()[plugin_name] = plugin_class
except ImportError as e:
logger.error(f"Failed loading plugins: \n{reduce(add, traceback.format_exception(e))}")
class AutoUpdates(RPCBase):

View File

@ -39,6 +39,7 @@ class ClientGenerator:
base_imports = (
"""import enum
import inspect
import traceback
from typing import Literal, Optional
"""
if self._base
@ -107,6 +108,7 @@ _Widgets = {
if self._base:
self.content += """
try:
_plugin_widgets = get_all_plugin_widgets()
plugin_client = get_plugin_client_module()
Widgets = _WidgetsEnumType("Widgets", {name: name for name in _plugin_widgets} | _Widgets)
@ -128,7 +130,8 @@ for plugin_name, plugin_class in inspect.getmembers(plugin_client, inspect.iscla
continue
if plugin_name not in _overlap:
globals()[plugin_name] = plugin_class
except ImportError as e:
logger.error(f"Failed loading plugins: \\n{reduce(add, traceback.format_exception(e))}")
"""
def generate_content_for_class(self, cls):

View File

@ -72,6 +72,7 @@ def test_client_generator_with_black_formatting():
import enum
import inspect
import traceback
from typing import Literal, Optional
from bec_lib.logger import bec_logger
@ -95,6 +96,7 @@ def test_client_generator_with_black_formatting():
}
try:
_plugin_widgets = get_all_plugin_widgets()
plugin_client = get_plugin_client_module()
Widgets = _WidgetsEnumType("Widgets", {name: name for name in _plugin_widgets} | _Widgets)
@ -116,6 +118,8 @@ def test_client_generator_with_black_formatting():
continue
if plugin_name not in _overlap:
globals()[plugin_name] = plugin_class
except ImportError as e:
logger.error(f"Failed loading plugins: \\n{reduce(add, traceback.format_exception(e))}")
class MockBECFigure(RPCBase):
@rpc_call