def __new__(mcs, name, bases, kwargs): cls = super().__new__(mcs, name, bases, kwargs) if not cls.name: # not a widget return cls cls.convert_signals() cls.settingsHandler = SettingsHandler.create(cls, template=cls.settingsHandler) return cls
def __new__(mcs, name, bases, dict): from Orange.canvas.registry.description import ( input_channel_from_args, output_channel_from_args) cls = type.__new__(mcs, name, bases, dict) if not cls.name: # not a widget return cls cls.inputs = [input_channel_from_args(inp) for inp in cls.inputs] cls.outputs = [output_channel_from_args(outp) for outp in cls.outputs] for inp in cls.inputs: if not hasattr(cls, inp.handler): raise AttributeError( "missing input signal handler '{}' in {}".format( inp.handler, cls.name)) # TODO Remove this when all widgets are migrated to Orange 3.0 if (hasattr(cls, "settingsToWidgetCallback") or hasattr(cls, "settingsFromWidgetCallback")): raise TypeError("Reimplement settingsToWidgetCallback and " "settingsFromWidgetCallback") cls.settingsHandler = SettingsHandler.create( cls, template=cls.settingsHandler) return cls
def __new__(mcs, name, bases, kwargs): from Orange.canvas.registry.description import ( input_channel_from_args, output_channel_from_args) cls = type.__new__(mcs, name, bases, kwargs) if not cls.name: # not a widget return cls cls.inputs = [input_channel_from_args(inp) for inp in cls.inputs] cls.outputs = [output_channel_from_args(outp) for outp in cls.outputs] for inp in cls.inputs: if not hasattr(cls, inp.handler): raise AttributeError("missing input signal handler '{}' in {}". format(inp.handler, cls.name)) # TODO Remove this when all widgets are migrated to Orange 3.0 if (hasattr(cls, "settingsToWidgetCallback") or hasattr(cls, "settingsFromWidgetCallback")): raise TypeError("Reimplement settingsToWidgetCallback and " "settingsFromWidgetCallback") cls.settingsHandler = SettingsHandler.create(cls, template=cls.settingsHandler) return cls
def __new__(mcs, name, bases, kwargs): cls = super().__new__(mcs, name, bases, kwargs) if not cls.name: # not a widget return cls cls.convert_signals() cls.settingsHandler = \ SettingsHandler.create(cls, template=cls.settingsHandler) return cls
def test_initialization_of_not_declared_provider(self): widget = WidgetWithNoProviderDeclared() handler = SettingsHandler.create(WidgetWithNoProviderDeclared) with warnings.catch_warnings(): warnings.simplefilter("ignore") handler.initialize(widget) handler.initialize(widget.undeclared_component) self.assertIsInstance(widget.undeclared_component.int_setting, int)
def test_create_uses_template_if_provided(self): template = SettingsHandler() template.a = 'a' template.b = 'b' with self.override_default_settings(SimpleWidget): handler = SettingsHandler.create(SimpleWidget, template) self.assertEqual(handler.a, 'a') self.assertEqual(handler.b, 'b') # create should copy the template handler.b = 'B' self.assertEqual(template.b, 'b')
def test_create_uses_template_if_provided(self): template = SettingsHandler() template.read_defaults = lambda: None template.a = 'a' template.b = 'b' handler = SettingsHandler.create(SimpleWidget, template) self.assertEqual(handler.a, 'a') self.assertEqual(handler.b, 'b') # create should copy the template handler.b = 'B' self.assertEqual(template.b, 'b')
def test_create(self, SettingProvider): """:type SettingProvider: unittest.mock.Mock""" with patch.object(SettingsHandler, 'read_defaults'): handler = SettingsHandler.create(SimpleWidget) self.assertEqual(handler.widget_class, SimpleWidget) # create needs to create a SettingProvider which traverses # the widget definition and collects all settings and read # all settings and for widget class SettingProvider.assert_called_once_with(SimpleWidget) SettingsHandler.read_defaults.assert_called_once_with()
def test_create_uses_template_if_provided(self): template = SettingsHandler() template.a = "a" template.b = "b" with self.override_default_settings(SimpleWidget): handler = SettingsHandler.create(SimpleWidget, template) self.assertEqual(handler.a, "a") self.assertEqual(handler.b, "b") # create should copy the template handler.b = "B" self.assertEqual(template.b, "b")
def __new__(mcs, name, bases, dict): from Orange.canvas.registry.description import input_channel_from_args, output_channel_from_args cls = type.__new__(mcs, name, bases, dict) if not cls.name: # not a widget return cls cls.inputs = list(map(input_channel_from_args, cls.inputs)) cls.outputs = list(map(output_channel_from_args, cls.outputs)) # TODO Remove this when all widgets are migrated to Orange 3.0 if hasattr(cls, "settingsToWidgetCallback") or hasattr(cls, "settingsFromWidgetCallback"): raise SystemError("Reimplement settingsToWidgetCallback and " "settingsFromWidgetCallback") cls.settingsHandler = SettingsHandler.create(cls, template=cls.settingsHandler) return cls
def __new__(mcs, name, bases, dict): from Orange.canvas.registry.description import ( input_channel_from_args, output_channel_from_args) cls = type.__new__(mcs, name, bases, dict) if not cls.name: # not a widget return cls cls.inputs = list(map(input_channel_from_args, cls.inputs)) cls.outputs = list(map(output_channel_from_args, cls.outputs)) # TODO Remove this when all widgets are migrated to Orange 3.0 if (hasattr(cls, "settingsToWidgetCallback") or hasattr(cls, "settingsFromWidgetCallback")): raise TypeError("Reimplement settingsToWidgetCallback and " "settingsFromWidgetCallback") cls.settingsHandler = SettingsHandler.create( cls, template=cls.settingsHandler) return cls