Changelog¶
0.18 (Dec 1, 2015)¶
- DeviceNotFoundError is no longer a subtype of LookupError
- Added support for pyqt5 monitor observer
- Added discover module, which looks up a device on limited information
- Attributes class no longer extends Mapping, extends object instead
- Attributes class no longer inherits [] operator, Mapping methods
- Attributes class objects are no longer iterable
- Attributes.available_attributes property added
- Attributes.get() method, with usual semantics, defined
- Device.from_* methods are deprecated, uses Devices.from_* methods instead
- Device.from_device_file() now raises DeviceNotFoundByFileError
- Device.from_device_number() now raises DeviceNotFoundByNumberError
- Devices.from_interface_index() method added
- Devices.from_kernel_device() method added
- Numerous testing infrastructure changes
0.17 (Aug 26, 2015)¶
- #52: Remove global libudev object
- #57: Really start the monitor on
pyudev.Monitor.poll()
- #60: Do not use
select.select()
to avoid hitting its file descriptor limit - #58: Force non-blocking IO in
pyudev.Monitor
to avoid blocking on receiving the device - #63: Set proper flags on pipe fds.
- #65: Handle irregular polling events properly.
- #50: Add
pyudev.wx.MonitorObserver
and deprecatepyudev.wx.WxUDevMonitorObserver
- #50: Add
pyudev.glib.MonitorObserver
and deprecatepyudev.glib.GUDevMonitorObserver
- #50: Add
pyudev.pyqt4.MonitorObserver
and deprecatepyudev.pyqt4.QUDevMonitorObserver
- #50: Add
pyudev.pyside.MonitorObserver
and deprecatepyudev.pyside.QUDevMonitorObserver
- Add a wrapper function to retry interruptible system calls.
0.16.1 (Aug 02, 2012)¶
- #53: Fix source distribution
- #54: Fix typo in test
0.16 (Jul 25, 2012)¶
- Remove
pyudev.Monitor.from_socket()
. - Deprecate
pyudev.Device.traverse()
in favor ofpyudev.Device.ancestors
. - #47: Deprecate
pyudev.Monitor.receive_device()
in favor ofpyudev.Monitor.poll
. - #47: Deprecate
pyudev.Monitor.enable_receiving
in favor ofpyudev.Monitor.start
. - #47: Deprecate
pyudev.Monitor.__iter__
in favor of explicit looping orpyudev.MonitorObserver
. - #49: Deprecate
event_handler
topyudev.MonitorObserver
in favour ofcallback
argument. - #46: Continuously test pyudev on Travis-CI.
- Add
pyudev.Device.ancestors
. - Add
pyudev.Device.action
. - #10: Add
pyudev.Device.sequence_number
. - #47: Add
pyudev.Monitor.poll()
. - #47: Add
pyudev.Monitor.started
. - #49: Add
callback
argument topyudev.Monitor
. pyudev.Monitor.start()
can be called repeatedly.- #45: Get rid of 2to3
- #43: Fix test failures on Python 2.6
- Fix signature in declaration of
udev_monitor_set_receive_buffer_size
. - #44: Test wrapped signatures with help of
gccxml
. - Fix compatibility with udev 183 and newer in
pyudev.Context
. pyudev.MonitorObserver.stop()
can be called from the observer thread.
0.15 (Mar 1, 2012)¶
- #20: Add
remove_filter()
. - #40: Add user guide to the documentation.
- #39: Add
pyudev.Device.from_device_file()
. errno.EINVAL
from underlying libudev functions causesValueError
instead ofEnvironmentError
.pyudev.MonitorObserver
callspyudev.Monitor.enable_receiving()
when started.- #20:
pyudev.Monitor.filter_by()
andpyudev.Monitor.filter_by_tag()
can be called afterpyudev.Monitor.enable_receiving()
.
0.14 (Feb 10, 2012)¶
- Host documentation at http://pyudev.readthedocs.org (thanks to the readthedocs.org team for this service)
- #37: Add
pyudev.wx.WxUDevMonitorObserver
for wxPython (thanks to Tobias Eberle). - Add
pyudev.MonitorObserver
. - Add
pyudev.glib.GUDevMonitorObserver.enabled
,pyudev.pyqt4.QUDevMonitorObserver.enabled
andpyudev.pyside.QUDevMonitorObserver.enabled
.
0.13 (Nov 4, 2011)¶
- #36: Add
pyudev.Monitor.set_receive_buffer_size()
(thanks to Rémi Rérolle). - Add
pyudev.Enumerator.match_parent()
. - Add
parent
keyword argument topyudev.Enumerator.match()
. - #31: Add
pyudev.Enumerator.match_attribute()
. - Add
nomatch
argument topyudev.Enumerator.match_subsystem()
andpyudev.Enumerator.match_attribute()
. - Remove
pyudev.Enumerator.match_children()
in favour ofpyudev.Enumerator.match_parent()
. - #34:
pyudev.Device.tags
returns apyudev.Tags
object. pyudev.Device.children
requires udev version 172 now
0.12 (Aug 31, 2011)¶
- #32: Fix memory leak.
- #33: Fix Python 3 support for
pyudev.glib
. - Fix license header in
pyudev._compat
.
0.11 (Jun 26, 2011)¶
- #30: Add
pyudev.Device.sys_number
. - #29: Add
pyudev.Device.from_device_number()
- #29: Add
pyudev.Device.device_number
. - Support PyPy.
0.10 (Apr 20, 2011)¶
- Add
pyudev.__version_info__
- Add
pyudev.Device.device_type
pyudev.Context
,pyudev.Enumerator
,pyudev.Device
andpyudev.Monitor
can directly be passed toctypes
-wrapped functions.- #24: Add
pyudev.Context.run_path
.
0.9 (Mar 09, 2011)¶
- #21: Add
pyudev.Device.find_parent()
. - #22: Add
pyudev.Monitor.filter_by_tag()
. - Add
pyudev.Context.log_priority
. - Improve error reporting, if libudev is missing.
0.8 (Jan 08, 2011)¶
- #16: Add
pyudev.Enumerator.match()
. - Add keyword arguments to
pyudev.Context.list_devices()
. - #19: Add
pyudev.Enumerator.match_sys_name()
. - #18: Add
pyudev.udev_version()
. - #17: Add
pyudev.Device.is_initialized
. - #17: Add
pyudev.Device.time_since_initialized
. - #17: Add
pyudev.Enumerator.match_is_initialized()
- Fix support for earlier releases of udev.
- Document minimum udev version for all affected attributes.
0.7 (Nov 15, 2010)¶
- #15: Add
pyudev.glib.GUDevMonitorObserver
.
0.6 (Oct 03, 2010)¶
- #8: Add
pyudev.Device.tags
. - #8: Add
pyudev.Enumerator.match_tag()
. - #11: Add
pyudev.Device.from_environment()
- #5: Add
pyudev.pyside
- #14: Remove apipkg dependency.
- #14: Require explicit import of
pyudev.pyqt4
. - Fix licence headers in source files.
0.5 (Sep 06, 2010)¶
- Support Python 3.
- #6: Add
pyudev.Device.attributes
(thanks to Daniel Lazzari). - #6: Add
pyudev.Attributes
(thanks to Daniel Lazzari). - #7:
pyudev.Device.context
andpyudev.Monitor.context
are part of the public API. - #9: Add
pyudev.Device.driver
. - #12: Add
pyudev.Device.from_name()
. - Rename
pyudev.NoSuchDeviceError
topyudev.DeviceNotFoundError
. pyudev.Device.from_sys_path()
raisespyudev.DeviceNotFoundAtPathError
.- #13: Fix
AttributeError
inpyudev.Device.device_node
. - Improve and extend documentation.
- Add more tests.
0.4 (Aug 23, 2010)¶
API changes¶
- #3: Rename
udev
topyudev
. - #3: Rename
qudev
topyudev.pyqt4
. - Add
pyudev.Device.from_path()
. pyudev.Device.from_sys_path()
raisespyudev.NoSuchDeviceError
.pyudev.Monitor.receive_device()
raisesEnvironmentError
.errno
,strerror
andfilename
attributes ofEnvironmentError
exceptions have meaningful content.- Fix
NameError
inpyudev.Monitor.from_socket()
subsystem
argument topyudev.Monitor.filter_by()
is mandatory.- Delete underlying C objects if
pyudev.Device
is garbage-collected. - Fix broken signal emitting in
pyudev.pyqt4.QUDevMonitorObserver
.
0.3 (Jul 28, 2010)¶
- #1: Fix documentation to reflect the actual behaviour of the underlying API
- Raise
TypeError
ifudev.Device
are compared with>
,>=
,<
or<=
. - Add
udev.Enumerator.match_children()
. - Add
udev.Device.children
. - Add
qudev.QUDevMonitorObserver.deviceChanged()
. - Add
qudev.QUDevMonitorObserver.deviceMoved()
.
0.2 (Jun 28, 2010)¶
- Add
udev.Monitor
. - Add
udev.Device.asbool()
. - Add
udev.Device.asint()
. - Remove type magic in
udev.Device.__getitem__()
. - Add
qudev
.
0.1 (May 03, 2010)¶
- Initial release.
- Add
udev.Context
. - Add
udev.Device
. - Add
udev.Enumerator
.