a
8g+^ @ s| d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlZddlZddl m
Z
ddlZee
dd ejd
krzdnd ddlmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ G dd deZ G dd dej!Z"G dd dej!Z#G dd d eZ$G d!d" d"ej%ej&Z'dS )#z
pyudev.device._device
=====================
Device class implementation of :mod:`pyudev`.
.. moduleauthor:: Sebastian Wiesner
)absolute_import)division)print_function)unicode_literalsN) timedeltacollections_abccollections) r zcollections.abc)r )DeviceNotFoundAtPathError)DeviceNotFoundByFileError)#DeviceNotFoundByInterfaceIndexError)!DeviceNotFoundByKernelDeviceError)DeviceNotFoundByNameError)DeviceNotFoundByNumberError) DeviceNotFoundInEnvironmentError)ensure_byte_string)ensure_unicode_string)get_device_typestring_to_bool)udev_list_iteratec @ s| e Zd ZdZedd Zedd Zedd Zedd Zed
d Z edd
Z
edd Zedd Zedd Z
dS )DeviceszT
Class for constructing :class:`Device` objects from various kinds of data.
c C s0 | |js$tj|j|tj}| ||S )a
Create a device from a device ``path``. The ``path`` may or may not
start with the ``sysfs`` mount point:
>>> from pyudev import Context, Device
>>> context = Context()
>>> Devices.from_path(context, '/devices/platform')
Device(u'/sys/devices/platform')
>>> Devices.from_path(context, '/sys/devices/platform')
Device(u'/sys/devices/platform')
``context`` is the :class:`Context` in which to search the device.
``path`` is a device path as unicode or byte string.
Return a :class:`Device` object for the device. Raise
:exc:`DeviceNotFoundAtPathError`, if no device was found for ``path``.
.. versionadded:: 0.18
)
startswithsys_pathospathjoinlstripsep
from_sys_path)clscontextr r" 9/usr/lib/python3.9/site-packages/pyudev/device/_device.py from_pathA s zDevices.from_pathc C s( |j |t|}|st|t||S )a
Create a new device from a given ``sys_path``:
>>> from pyudev import Context, Device
>>> context = Context()
>>> Devices.from_sys_path(context, '/sys/devices/platform')
Device(u'/sys/devices/platform')
``context`` is the :class:`Context` in which to search the device.
``sys_path`` is a unicode or byte string containing the path of the
device inside ``sysfs`` with the mount point included.
Return a :class:`Device` object for the device. Raise
:exc:`DeviceNotFoundAtPathError`, if no device was found for
``sys_path``.
.. versionadded:: 0.18
)_libudevZudev_device_new_from_syspathr r
Device)r r! r devicer" r" r# r Z s zDevices.from_sys_pathc C s<