def device_links(self): """ An iterator, which yields the absolute paths (including the device directory, see :attr:`Context.device_path`) of all symbolic links pointing to the :attr:`device_node` of this device. The paths are unicode strings. UDev can create symlinks to the original device node (see :attr:`device_node`) inside the device directory. This is often used to assign a constant, fixed device node to devices like removeable media, which technically do not have a constant device node, or to map a single device into multiple device hierarchies. The property provides access to all such symbolic links, which were created by UDev for this device. .. warning:: Links are not necessarily resolved by :meth:`Device.from_device_file()`. Hence do *not* rely on ``Device.from_device_file(context, link).device_path == device.device_path`` from any ``link`` in ``device.device_links``. """ devlinks = libudev.udev_device_get_devlinks_list_entry(self) for name, _ in udev_list_iterate(devlinks): yield ensure_unicode_string(name)
def __iter__(self): """ Iterate over all tags. Yield each tag as unicode string. """ tags = libudev.udev_device_get_tags_list_entry(self.device) for tag, _ in udev_list_iterate(tags): yield ensure_unicode_string(tag)
def __len__(self): """ Return the amount of properties defined for this device as integer. """ properties = libudev.udev_device_get_properties_list_entry(self) i = 0 for i, _ in enumerate(udev_list_iterate(properties), start=1): pass return i
def __iter__(self): """ Iterate over the names of all properties defined for this device. Return a generator yielding the names of all properties of this device as unicode strings. """ properties = libudev.udev_device_get_properties_list_entry(self) for name, _ in udev_list_iterate(properties): yield ensure_unicode_string(name)
def __iter__(self): """ Iterate over all matching devices. Yield :class:`Device` objects. """ libudev.udev_enumerate_scan_devices(self) entry = libudev.udev_enumerate_get_list_entry(self) for name, _ in udev_list_iterate(entry): yield Device.from_sys_path(self.context, name)
def _attributes(self): attrs = libudev.udev_device_get_sysattr_list_entry(self.device) for attribute, _ in udev_list_iterate(attrs): yield ensure_unicode_string(attribute)