def _discover_interfaces(self, interface_package): all_interfaces = [] if interface_package is not None: for interface_module in get_submodules(interface_package).values(): all_interfaces += list(get_members(interface_module, is_interface).values()) all_interfaces += list(get_members(self._module, is_interface).values()) interfaces = {} for interface in all_interfaces: existing_interface = interfaces.get(interface.protocol) if existing_interface is not None: raise RuntimeError( 'The protocol \'{}\' is defined in two interfaces for device \'{}\':\n' ' {} (in {})\n' ' {} (in {})\n' 'One of the protocol names needs to be changed.'.format( interface.protocol, self.name, existing_interface.__name__, existing_interface.__module__, interface.__name__, interface.__module__)) interfaces[interface.protocol] = interface return interfaces
def _discover_interfaces(self, interface_package): all_interfaces = [] if interface_package is not None: for interface_module in get_submodules(interface_package).values(): all_interfaces += list( get_members(interface_module, is_interface).values() ) all_interfaces += list(get_members(self._module, is_interface).values()) interfaces = {} for interface in all_interfaces: existing_interface = interfaces.get(interface.protocol) if existing_interface is not None: raise RuntimeError( "The protocol '{}' is defined in two interfaces for device '{}':\n" " {} (in {})\n" " {} (in {})\n" "One of the protocol names needs to be changed.".format( interface.protocol, self.name, existing_interface.__name__, existing_interface.__module__, interface.__name__, interface.__module__, ) ) interfaces[interface.protocol] = interface return interfaces
def _discover_devices(self, devices_package): devices = list(get_members(self._module, is_device).values()) if devices_package is None: return devices for module in get_submodules(devices_package).values(): devices += list(get_members(module, is_device).values()) return devices
def test_predicate(self): class Foo(object): bar = 3.0 baz = 'test' members = get_members(Foo(), lambda x: isinstance(x, string_types)) self.assertEqual(len(members), 1) self.assertIn('baz', members)
def __init__(self, module): self._module = module self._device_types = list(get_members(self._module, is_device).values()) submodules = get_submodules(self._module) self._setups = self._discover_setups(submodules.get('setups')) self._interfaces = self._discover_interfaces(submodules.get('interfaces'))
def test_predicate(self): class Foo: bar = 3.0 baz = "test" members = get_members(Foo(), lambda x: isinstance(x, str)) self.assertEqual(len(members), 1) self.assertIn("baz", members)
def test_returns_all_members_if_predicate_is_missing(self): class Foo(object): bar = 3.0 baz = 'test' members = get_members(Foo()) self.assertEqual(len(members), 2) self.assertIn('bar', members) self.assertIn('baz', members)
def test_returns_all_members_if_predicate_is_missing(self): class Foo: bar = 3.0 baz = "test" members = get_members(Foo()) self.assertEqual(len(members), 2) self.assertIn("bar", members) self.assertIn("baz", members)