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:
@ -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):
|
||||
|
@ -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):
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user