Changelog¶
0.21.0 (July 20, 2016)¶
Deprecate use of Device object as mapping from udev property names to values.
Add a Properties class and a Device.properties() method for udev properties.
Fix places where Device object was incorrectly used in a boolean context.
Return an empty string, not None, if the property value is an empty string.
Exceptions re-raised from libudev calls now have a message string.
Insert a warning about using a Device in a boolean context in docs.
Infrastructure for vagrant tests is removed.
Various internal refactorings.
Extensive test improvements.
Numerous documentation fixes.
0.20.0 (April 29, 2016)¶
Remove parsing code added in previous release.
No longer do CI for Python 2.6.
Eliminate all wildcard imports and __all__ statements.
No longer use deprecated Device.from_sys_path() method.
Minor pylint induced changes.
Documentation fixes.
0.19.0 (Feb 3, 2016)¶
Restore raising KeyError by Attributes.as* methods when attribute not found.
Explicitly require six module.
Never raise a DeviceNotFoundError when iterating over a device enumeration.
Device.subsystem() now returns None if device has no subsystem.
Add DeprecationWarnings to deprecated Device methods.
Replace “/” with “!” in Device.from_name() sys_name parameter.
Add some unstable classes for parsing some kinds of values.
Make version info more like Python’s including micro numbers and levels.
Refactor some internal modules into subdirectories.
Work on tests and reproducers.
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.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.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
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)¶
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()
.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
.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
.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
.