Releases: hbldh/bleak
v3.0.2
v3.0.1
v3.0.0
Migration guide
There are only some small breaking changes, so hopefully most users can upgrade without any changes.
The exception is if your project is handling OS-specific exceptions on the GATT read and write methods. These exceptions are now wrapped in BleakGATTProtocolError to have a consistent cross-platform exception. If you need to support multiple versions of Bleak, you can catch both exceptions.
For example, if you caught BleakDBusError and parsed the string to get the GATT error, you can now catch BleakGATTProtocolError instead and it has a code property to get the actual error code.
Another change of note is the deprecation of the adapter keyword argument. We know there are lots of users of this, so we intend to have a long deprecation cycle for this (several years). If you need to support multiple versions of Bleak, you can pass both the old kwarg adapter="hci0" and the new bluez={"adapter": "hci0"} and optionally suppress the deprecation warning. Otherwise, you can just replace the old arg with the new arg as seen in the previous example.
Changelog
Added
- Added
adapterattribute tobleak.args.bluez.BlueZClientArgsandbleak.args.bluez.BlueZScannerArgs. - Added
bluezkeyword argument toBleakClient. - Added new
bleak.args.bluez.BlueZClientArgsclass. - Added
bleak.exc.BleakGATTProtocolErrorandbleak.exc.BleakGATTProtocolErrorCodeclasses. - Added type hints and documentation for
use_cachedkwarg forread_gatt_char()andread_gatt_descriptor()methods inBleakClient. - Added support for
"use_cached"kwarg toread_gatt_char()andread_gatt_descriptor()methods in BlueZ backend.
Changed
- Deprecated
adapterkeyword argument inBleakScannerandBleakClient. - Changed GATT read and write methods to raise
BleakGATTProtocolErrorwhen a GATT protocol error occurs. - Changed start/stop scanning on CoreBluetooth so that the
isScanningproperty is not checked anymore. - Changed
BleakClient.write_gatt_descriptor()to raiseValueErrorwhen attempting to write to the descriptor 0x2902 (Client Characteristic Configuration Descriptor, CCCD). Usestart_notify()andstop_notify()instead.
Fixed
- Fixed occasional
EOFErrorwhen disconnecting in BlueZ backend. Fixes #1921. - Fixed a potential deadlock when turning off Bluetooth manually while starting scanning on CoreBluetooth.
- Fixed reading descriptors 0x2900, 0x2902 and 0x2903 on CoreBluetooth backend.
- Fixed cyclic references problem in CoreBluetooth backend causing memory leaks.
- Fixed typehint for
BleakScanner.__aexit__().
Removed
- Removed undocumented/deprecated
devicekeyword argument fromBleakScannerBlueZDBusandBleakClientBlueZDBus.
v2.1.1
v2.1.0
Added
- Added
bluezparameter toBleakClient.start_notify()to allow forcing using "StartNotify" instead of "AcquireNotify" on BlueZ backend. Fixes #1885. - Added
bleak.args.SizedBuffertype for better type hinting of buffer protocol parameters.
Fixed
- Fixed calling
logging.debug()in WinRT backend. Fixes #1882. - Fixed calling
logging.warning()in BlueZ backend.
v2.0.0
Added
- Added
bleak.backends.get_default_backend()andBleakBackendenum for a centralized backend detection. - Added
BleakClient().backend_idandBleakScanner().backend_idproperties to identify the backend in use.
Changed
- Use
"AcquireNotify"rather than"StartNotify"for Linux backend on supported characteristics - Allow multiple calls to
disconnect()on Windows to align behavior over all backends. - Raise new
BleakBluetoothNotAvailableErrorwhen Bluetooth is not supported, turned off or permission is denied.
Fixed
- Fixed potential race condition causing timeout while connecting in WinRT backend.
- Fixed file handle leak in BlueZ backend when D-Bus connection is lost and re-established.
- Fixed crash in CoreBluetooth backend if an ObjC delegate callback is called after the asyncio run loop stops.
- Fixed possible deadlock when starting scanning on Windows when Bluetooth is turned off.
- Fixed "Bluetooth device is turned off" Exception on macOS, when a Bluetooth permission request popup is shown to the user by the OS.
Removed
- Removed support for Python 3.9.
- Removed support for macOS < 10.15.
v1.1.1
v1.1.0
Added
- Added support for Pythonista iOS app backend.
- Added
BleakClient.nameproperty for getting the peripheral's name. Fixes #1802.
Fixed
- Fixed
BleakClient.connect()on Android when service characteristics have descriptors. Fixes #1803. - Fixed disconnect callback not called on Windows when Bleak initiates disconnection.
v1.0.1
v1.0.0
Added
- Added
pairparameter toBleakClient()constructor to allow pairing before connecting. Fixes #309. - Added
notification_discriminatorparameter tostart_notify()on CoreBluetooth backend. Merged #1742.
Changed
- Enabled extended advertising scanning in the WinRT backend. Merged #1705.
- Made
responseargument of classBleakClient.write_gatt_char()explicitly optional. Fixes #1730. - Updated Poetry build system version to
>=2.0. Merged #1718. - Log to stderr instead of stdout when
BLEAK_LOGGINGis enabled. Merged #1709. - Updated
winrtbackend to use PyWinRT >= 3.1. - Changed return type of
connect(),disconnect(),pair()andunpair()methods toNone. - Moved backend-specific arg types to new
bleak.argssub-package. BLEDevice.namewill now returnNoneinstead of the address when the name is not available. Merged #1762.- Deprecated
protection_levelkwarg for pairing in WinRT backend. Merged #1770.
Fixed
- Fixed resolvable private address not updated after connecting in BlueZ backend. Fixes #1737.
- Fixed possible
KeyErrorwhen getting services in BlueZ backend. Fixes #1435. - Fix D-Bus connection leak when connecting to a device fails in BlueZ backend. Fixes #1698.
- Fixed possible deadlock when connecting on WinRT backend when device is already connected. Fixes #1757.
- Fixed getting notifications from devices connected to BLE adapters with index >9 (hci10, hci11, ...). Merged #1744.
- Fixed ATT error code 15 description to "Insufficient Encryption". Merged #1746.
Removed
- Removed support for Python 3.8. The minimum supported version is now Python 3.9.
- Removed deprecated parameters, properties and methods.
- Removed support for macOS < 10.13.
- Removed support for BlueZ < 5.55.