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
Beispiel #2
0
    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
Beispiel #3
0
    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 _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
Beispiel #5
0
    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 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)
Beispiel #7
0
    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'))
Beispiel #8
0
    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)
Beispiel #9
0
    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(object):
            bar = 3.0
            baz = 'test'

        members = get_members(Foo())

        self.assertEqual(len(members), 2)
        self.assertIn('bar', members)
        self.assertIn('baz', members)
Beispiel #11
0
    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)