Changelog¶
0.24.3¶
Recommended development release: Fedora 40
0.24.2¶
Recommended development release: Fedora 40
- Update release infrastructure: https://github.com/pyudev/pyudev/pull/508 
- Tidies and Maintenance: https://github.com/pyudev/pyudev/pull/507 https://github.com/pyudev/pyudev/pull/506 https://github.com/pyudev/pyudev/pull/505 https://github.com/pyudev/pyudev/pull/503 https://github.com/pyudev/pyudev/pull/498 https://github.com/pyudev/pyudev/pull/497 https://github.com/pyudev/pyudev/pull/492 https://github.com/pyudev/pyudev/pull/491 https://github.com/pyudev/pyudev/pull/489 
0.24.1¶
Recommended development release: Fedora 37
- Add support for PySide6: https://github.com/pyudev/pyudev/pull/487 
- Add missing ‘priority’ argument for GLib.to_add_watch() https://github.com/pyudev/pyudev/pull/479 
- Tidies and Maintenance: https://github.com/pyudev/pyudev/pull/486 https://github.com/pyudev/pyudev/pull/485 https://github.com/pyudev/pyudev/pull/484 https://github.com/pyudev/pyudev/pull/481 https://github.com/pyudev/pyudev/pull/480 https://github.com/pyudev/pyudev/pull/477 https://github.com/pyudev/pyudev/pull/474 
0.24.0¶
Recommended development release: Fedora 36
- Remove a bunch of Python 2 code: https://github.com/pyudev/pyudev/pull/468 https://github.com/pyudev/pyudev/pull/460 https://github.com/pyudev/pyudev/pull/455 https://github.com/pyudev/pyudev/pull/358 
- Tidies and Maintenance: https://github.com/pyudev/pyudev/pull/471 https://github.com/pyudev/pyudev/pull/466 https://github.com/pyudev/pyudev/pull/465 https://github.com/pyudev/pyudev/pull/464 https://github.com/pyudev/pyudev/pull/462 https://github.com/pyudev/pyudev/pull/461 https://github.com/pyudev/pyudev/pull/459 https://github.com/pyudev/pyudev/pull/458 https://github.com/pyudev/pyudev/pull/456 https://github.com/pyudev/pyudev/pull/454 https://github.com/pyudev/pyudev/pull/447 https://github.com/pyudev/pyudev/pull/445 
0.23.2¶
Recommended development release: Fedora 35
- New release: 0.23.2: https://github.com/pyudev/pyudev/pull/444 
- Tidies and Maintenance: https://github.com/pyudev/pyudev/pull/445 https://github.com/pyudev/pyudev/pull/443 https://github.com/pyudev/pyudev/pull/442 
0.23.1¶
Recommended development release: Fedora 34
- Update to version 0.23.1: https://github.com/pyudev/pyudev/pull/440 
- Check for existence of _hasattr attribute in Context.__del__ method: https://github.com/pyudev/pyudev/issues/421 https://github.com/pyudev/pyudev/pull/439 
- Tidies and Maintenance: https://github.com/pyudev/pyudev/pull/438 
0.23.0¶
Recommended development release: Fedora 34
- Update to version 0.23.0: https://github.com/pyudev/pyudev/pull/427 
- Officially drop support for Python 2: https://github.com/pyudev/pyudev/pull/414 
- Remove external mock dependency: https://github.com/pyudev/pyudev/pull/409 
- Enable GLib unit tests: https://github.com/pyudev/pyudev/pull/400 
- Switch to new style gi.repository.GLib imports: https://github.com/pyudev/pyudev/pull/399 
- Tidies and Maintenance: https://github.com/pyudev/pyudev/pull/432 https://github.com/pyudev/pyudev/pull/430 https://github.com/pyudev/pyudev/pull/429 https://github.com/pyudev/pyudev/pull/428 https://github.com/pyudev/pyudev/pull/424 https://github.com/pyudev/pyudev/pull/423 https://github.com/pyudev/pyudev/pull/418 https://github.com/pyudev/pyudev/pull/415 https://github.com/pyudev/pyudev/pull/413 
0.22.0 (Jan, 2020)¶
- Add a six-enabled move for collections move imports: https://github.com/pyudev/pyudev/pull/386 
- Fix any newly introduced pylint errors 
- Numerous improvements or updates to the test infrastructure 
- A number of test updates 
- Require yapf 0.21.0 for Python formatting 
- Various documentation fixes and updates 
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.Monitorto avoid blocking on receiving the device
- #63: Set proper flags on pipe fds. 
- #65: Handle irregular polling events properly. 
- #50: Add - pyudev.wx.MonitorObserverand deprecate- pyudev.wx.WxUDevMonitorObserver
- #50: Add - pyudev.glib.MonitorObserverand deprecate- pyudev.glib.GUDevMonitorObserver
- #50: Add - pyudev.pyqt4.MonitorObserverand deprecate- pyudev.pyqt4.QUDevMonitorObserver
- #50: Add - pyudev.pyside.MonitorObserverand deprecate- pyudev.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 of- pyudev.Device.ancestors.
- #47: Deprecate - pyudev.Monitor.receive_device()in favor of- pyudev.Monitor.poll.
- #47: Deprecate - pyudev.Monitor.enable_receivingin favor of- pyudev.Monitor.start.
- #47: Deprecate - pyudev.Monitor.__iter__in favor of explicit looping or- pyudev.MonitorObserver.
- #49: Deprecate - event_handlerto- pyudev.MonitorObserverin favour of- callbackargument.
- #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 - callbackargument to- pyudev.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.EINVALfrom underlying libudev functions causes- ValueErrorinstead of- EnvironmentError.
- pyudev.MonitorObservercalls- pyudev.Monitor.enable_receiving()when started.
- #20: - pyudev.Monitor.filter_by()and- pyudev.Monitor.filter_by_tag()can be called after- pyudev.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.WxUDevMonitorObserverfor wxPython (thanks to Tobias Eberle).
- Add - pyudev.MonitorObserver.
- Add - pyudev.glib.GUDevMonitorObserver.enabled,- pyudev.pyqt4.QUDevMonitorObserver.enabledand- pyudev.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 - parentkeyword argument to- pyudev.Enumerator.match().
- #31: Add - pyudev.Enumerator.match_attribute().
- Add - nomatchargument to- pyudev.Enumerator.match_subsystem()and- pyudev.Enumerator.match_attribute().
- Remove - pyudev.Enumerator.match_children()in favour of- pyudev.Enumerator.match_parent().
- #34: - pyudev.Device.tagsreturns a- pyudev.Tagsobject.
- pyudev.Device.childrenrequires 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.Deviceand- pyudev.Monitorcan directly be passed to- ctypes-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.contextand- pyudev.Monitor.contextare part of the public API.
- #9: Add - pyudev.Device.driver.
- #12: Add - pyudev.Device.from_name().
- Rename - pyudev.NoSuchDeviceErrorto- pyudev.DeviceNotFoundError.
- pyudev.Device.from_sys_path()raises- pyudev.DeviceNotFoundAtPathError.
- #13: Fix - AttributeErrorin- pyudev.Device.device_node.
- Improve and extend documentation. 
- Add more tests. 
0.4 (Aug 23, 2010)¶
API changes¶
- #3: Rename - udevto- pyudev.
- #3: Rename - qudevto- pyudev.pyqt4.
- Add - pyudev.Device.from_path().
- pyudev.Device.from_sys_path()raises- pyudev.NoSuchDeviceError.
- pyudev.Monitor.receive_device()raises- EnvironmentError.
- errno,- strerrorand- filenameattributes of- EnvironmentErrorexceptions have meaningful content.
- Fix - NameErrorin- pyudev.Monitor.from_socket()
- subsystemargument to- pyudev.Monitor.filter_by()is mandatory.
- Delete underlying C objects if - pyudev.Deviceis 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 - TypeErrorif- udev.Deviceare 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.