diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 1e402d3f..2a13b5f0 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,6 +14,7 @@ Changed ------- * Relax ``async-timeout`` version to support different installations. Merged #1009. * ``unpair`` function of ``BleakClient`` in WinRT backend can be called without being connected to remove stored device information +* Use relative imports internally. Merged #1007. `0.17.0`_ (2022-09-12) ====================== @@ -49,7 +50,7 @@ Fixed Removed ------- -- Removed ``BLEDeviceCoreBluetooth`` type from CoreBluetooth backend. Merged #977. +* Removed ``BLEDeviceCoreBluetooth`` type from CoreBluetooth backend. Merged #977. `0.16.0`_ (2022-08-31) ====================== diff --git a/bleak/__init__.py b/bleak/__init__.py index 180727ab..61d4b8a5 100644 --- a/bleak/__init__.py +++ b/bleak/__init__.py @@ -5,15 +5,15 @@ __author__ = """Henrik Blidh""" __email__ = "henrik.blidh@gmail.com" -import os -import sys +import asyncio import logging +import os import platform -import asyncio +import sys from warnings import warn -from bleak.__version__ import __version__ # noqa: F401 -from bleak.exc import BleakError +from .__version__ import __version__ # noqa: F401 +from .exc import BleakError _on_rtd = os.environ.get("READTHEDOCS") == "True" @@ -30,31 +30,31 @@ if _on_rtd: pass elif os.environ.get("P4A_BOOTSTRAP") is not None: - from bleak.backends.p4android.scanner import ( # noqa: F401 - BleakScannerP4Android as BleakScanner, - ) - from bleak.backends.p4android.client import ( # noqa: F401 + from .backends.p4android.client import ( # noqa: F401 BleakClientP4Android as BleakClient, ) -elif platform.system() == "Linux": - from bleak.backends.bluezdbus.scanner import ( # noqa: F401 - BleakScannerBlueZDBus as BleakScanner, + from .backends.p4android.scanner import ( # noqa: F401 + BleakScannerP4Android as BleakScanner, ) - from bleak.backends.bluezdbus.client import ( # noqa: F401 +elif platform.system() == "Linux": + from .backends.bluezdbus.client import ( # noqa: F401 BleakClientBlueZDBus as BleakClient, ) + from .backends.bluezdbus.scanner import ( # noqa: F401 + BleakScannerBlueZDBus as BleakScanner, + ) elif platform.system() == "Darwin": try: from CoreBluetooth import CBPeripheral # noqa: F401 except Exception as ex: raise BleakError("Bleak requires the CoreBluetooth Framework") from ex - from bleak.backends.corebluetooth.scanner import ( # noqa: F401 - BleakScannerCoreBluetooth as BleakScanner, - ) - from bleak.backends.corebluetooth.client import ( # noqa: F401 + from .backends.corebluetooth.client import ( # noqa: F401 BleakClientCoreBluetooth as BleakClient, ) + from .backends.corebluetooth.scanner import ( # noqa: F401 + BleakScannerCoreBluetooth as BleakScanner, + ) elif platform.system() == "Windows": # Requires Windows 10 Creators update at least, i.e. Window 10.0.16299 @@ -71,12 +71,8 @@ "Requires at least Windows 10 version 0.16299 (Fall Creators Update)." ) - from bleak.backends.winrt.scanner import ( # noqa: F401 - BleakScannerWinRT as BleakScanner, - ) - from bleak.backends.winrt.client import ( # noqa: F401 - BleakClientWinRT as BleakClient, - ) + from .backends.winrt.client import BleakClientWinRT as BleakClient # noqa: F401 + from .backends.winrt.scanner import BleakScannerWinRT as BleakScanner # noqa: F401 else: raise BleakError(f"Unsupported platform: {platform.system()}") diff --git a/bleak/backends/bluezdbus/client.py b/bleak/backends/bluezdbus/client.py index 3cffe685..82e85ba2 100644 --- a/bleak/backends/bluezdbus/client.py +++ b/bleak/backends/bluezdbus/client.py @@ -2,33 +2,29 @@ """ BLE Client for BlueZ on Linux """ +import asyncio import inspect import logging -import asyncio import os import warnings from typing import Callable, Optional, Union from uuid import UUID import async_timeout - from dbus_fast.aio import MessageBus from dbus_fast.constants import BusType, ErrorType from dbus_fast.message import Message from dbus_fast.signature import Variant -from bleak.backends.bluezdbus import defs -from bleak.backends.bluezdbus.characteristic import BleakGATTCharacteristicBlueZDBus -from bleak.backends.bluezdbus.manager import get_global_bluez_manager -from bleak.backends.bluezdbus.scanner import BleakScannerBlueZDBus -from bleak.backends.bluezdbus.utils import ( - assert_reply, - extract_service_handle_from_path, -) -from bleak.backends.client import BaseBleakClient -from bleak.backends.device import BLEDevice -from bleak.backends.service import BleakGATTServiceCollection -from bleak.exc import BleakDBusError, BleakError +from ...exc import BleakDBusError, BleakError +from ..client import BaseBleakClient +from ..device import BLEDevice +from ..service import BleakGATTServiceCollection +from . import defs +from .characteristic import BleakGATTCharacteristicBlueZDBus +from .manager import get_global_bluez_manager +from .scanner import BleakScannerBlueZDBus +from .utils import assert_reply, extract_service_handle_from_path from .version import BlueZFeatures logger = logging.getLogger(__name__) diff --git a/bleak/backends/bluezdbus/service.py b/bleak/backends/bluezdbus/service.py index fdc11348..a6563782 100644 --- a/bleak/backends/bluezdbus/service.py +++ b/bleak/backends/bluezdbus/service.py @@ -1,8 +1,8 @@ from typing import List -from bleak.backends.bluezdbus.utils import extract_service_handle_from_path -from bleak.backends.service import BleakGATTService -from bleak.backends.bluezdbus.characteristic import BleakGATTCharacteristicBlueZDBus +from ..service import BleakGATTService +from .characteristic import BleakGATTCharacteristicBlueZDBus +from .utils import extract_service_handle_from_path class BleakGATTServiceBlueZDBus(BleakGATTService): diff --git a/bleak/backends/characteristic.py b/bleak/backends/characteristic.py index fa847174..a9ae5ed3 100644 --- a/bleak/backends/characteristic.py +++ b/bleak/backends/characteristic.py @@ -7,11 +7,11 @@ """ import abc import enum +from typing import Any, List, Union from uuid import UUID -from typing import List, Union, Any -from bleak.backends.descriptor import BleakGATTDescriptor -from bleak.uuids import uuidstr_to_str +from ..uuids import uuidstr_to_str +from .descriptor import BleakGATTDescriptor class GattCharacteristicsFlags(enum.Enum): diff --git a/bleak/backends/client.py b/bleak/backends/client.py index 89deb3c4..a402891e 100644 --- a/bleak/backends/client.py +++ b/bleak/backends/client.py @@ -11,9 +11,9 @@ from typing import Callable, Optional, Union from warnings import warn -from bleak.backends.service import BleakGATTServiceCollection -from bleak.backends.characteristic import BleakGATTCharacteristic -from bleak.backends.device import BLEDevice +from .service import BleakGATTServiceCollection +from .characteristic import BleakGATTCharacteristic +from .device import BLEDevice class BaseBleakClient(abc.ABC): diff --git a/bleak/backends/corebluetooth/PeripheralDelegate.py b/bleak/backends/corebluetooth/PeripheralDelegate.py index 6feab6b1..a6bdf870 100644 --- a/bleak/backends/corebluetooth/PeripheralDelegate.py +++ b/bleak/backends/corebluetooth/PeripheralDelegate.py @@ -22,7 +22,7 @@ CBCharacteristicWriteWithResponse, ) -from bleak.exc import BleakError +from ...exc import BleakError # logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) diff --git a/bleak/backends/corebluetooth/characteristic.py b/bleak/backends/corebluetooth/characteristic.py index 853ea411..09f60729 100644 --- a/bleak/backends/corebluetooth/characteristic.py +++ b/bleak/backends/corebluetooth/characteristic.py @@ -9,10 +9,10 @@ from CoreBluetooth import CBCharacteristic -from bleak.backends.characteristic import BleakGATTCharacteristic -from bleak.backends.corebluetooth.descriptor import BleakGATTDescriptorCoreBluetooth -from bleak.backends.corebluetooth.utils import cb_uuid_to_str -from bleak.backends.descriptor import BleakGATTDescriptor +from ..characteristic import BleakGATTCharacteristic +from ..descriptor import BleakGATTDescriptor +from .descriptor import BleakGATTDescriptorCoreBluetooth +from .utils import cb_uuid_to_str class CBCharacteristicProperties(Enum): diff --git a/bleak/backends/corebluetooth/client.py b/bleak/backends/corebluetooth/client.py index 2ca54916..070c4c20 100644 --- a/bleak/backends/corebluetooth/client.py +++ b/bleak/backends/corebluetooth/client.py @@ -9,29 +9,26 @@ import uuid from typing import Callable, Optional, Union -from Foundation import NSArray, NSData from CoreBluetooth import ( - CBCharacteristicWriteWithResponse, CBCharacteristicWriteWithoutResponse, + CBCharacteristicWriteWithResponse, CBPeripheral, CBPeripheralStateConnected, ) +from Foundation import NSArray, NSData -from bleak.backends.client import BaseBleakClient -from bleak.backends.corebluetooth.CentralManagerDelegate import CentralManagerDelegate -from bleak.backends.corebluetooth.characteristic import ( - BleakGATTCharacteristicCoreBluetooth, -) -from bleak.backends.corebluetooth.descriptor import BleakGATTDescriptorCoreBluetooth -from bleak.backends.corebluetooth.PeripheralDelegate import PeripheralDelegate -from bleak.backends.corebluetooth.scanner import BleakScannerCoreBluetooth -from bleak.backends.corebluetooth.service import BleakGATTServiceCoreBluetooth -from bleak.backends.corebluetooth.utils import cb_uuid_to_str -from bleak.backends.device import BLEDevice -from bleak.backends.service import BleakGATTServiceCollection -from bleak.backends.characteristic import BleakGATTCharacteristic - -from bleak.exc import BleakError +from ...exc import BleakError +from ..characteristic import BleakGATTCharacteristic +from ..client import BaseBleakClient +from ..device import BLEDevice +from ..service import BleakGATTServiceCollection +from .CentralManagerDelegate import CentralManagerDelegate +from .characteristic import BleakGATTCharacteristicCoreBluetooth +from .descriptor import BleakGATTDescriptorCoreBluetooth +from .PeripheralDelegate import PeripheralDelegate +from .scanner import BleakScannerCoreBluetooth +from .service import BleakGATTServiceCoreBluetooth +from .utils import cb_uuid_to_str logger = logging.getLogger(__name__) diff --git a/bleak/backends/corebluetooth/descriptor.py b/bleak/backends/corebluetooth/descriptor.py index fcdbb91e..923134dd 100644 --- a/bleak/backends/corebluetooth/descriptor.py +++ b/bleak/backends/corebluetooth/descriptor.py @@ -6,8 +6,8 @@ """ from CoreBluetooth import CBDescriptor -from bleak.backends.corebluetooth.utils import cb_uuid_to_str -from bleak.backends.descriptor import BleakGATTDescriptor +from ..corebluetooth.utils import cb_uuid_to_str +from ..descriptor import BleakGATTDescriptor class BleakGATTDescriptorCoreBluetooth(BleakGATTDescriptor): diff --git a/bleak/backends/corebluetooth/scanner.py b/bleak/backends/corebluetooth/scanner.py index 7d1025d9..5fd4a765 100644 --- a/bleak/backends/corebluetooth/scanner.py +++ b/bleak/backends/corebluetooth/scanner.py @@ -2,24 +2,20 @@ import sys from typing import Any, Dict, List, Optional -import objc -from Foundation import NSArray, NSUUID, NSBundle -from CoreBluetooth import CBPeripheral - if sys.version_info[:2] < (3, 8): from typing_extensions import Literal else: from typing import Literal -from bleak.backends.corebluetooth.CentralManagerDelegate import CentralManagerDelegate -from bleak.backends.corebluetooth.utils import cb_uuid_to_str -from bleak.backends.device import BLEDevice -from bleak.backends.scanner import ( - AdvertisementDataCallback, - BaseBleakScanner, - AdvertisementData, -) -from bleak.exc import BleakError +import objc +from CoreBluetooth import CBPeripheral +from Foundation import NSUUID, NSArray, NSBundle + +from ...exc import BleakError +from ..device import BLEDevice +from ..scanner import AdvertisementData, AdvertisementDataCallback, BaseBleakScanner +from .CentralManagerDelegate import CentralManagerDelegate +from .utils import cb_uuid_to_str logger = logging.getLogger(__name__) diff --git a/bleak/backends/corebluetooth/service.py b/bleak/backends/corebluetooth/service.py index 2441d651..695181c7 100644 --- a/bleak/backends/corebluetooth/service.py +++ b/bleak/backends/corebluetooth/service.py @@ -1,12 +1,10 @@ -from bleak.backends.corebluetooth.utils import cb_uuid_to_str from typing import List from CoreBluetooth import CBService -from bleak.backends.corebluetooth.characteristic import ( - BleakGATTCharacteristicCoreBluetooth, -) -from bleak.backends.service import BleakGATTService +from ..service import BleakGATTService +from .characteristic import BleakGATTCharacteristicCoreBluetooth +from .utils import cb_uuid_to_str class BleakGATTServiceCoreBluetooth(BleakGATTService): diff --git a/bleak/backends/p4android/characteristic.py b/bleak/backends/p4android/characteristic.py index 8c1e1b34..562eb6ea 100644 --- a/bleak/backends/p4android/characteristic.py +++ b/bleak/backends/p4android/characteristic.py @@ -1,11 +1,9 @@ +from typing import List, Union from uuid import UUID -from typing import Union, List - -from bleak.backends.characteristic import BleakGATTCharacteristic -from bleak.backends.descriptor import BleakGATTDescriptor -from bleak.exc import BleakError - +from ...exc import BleakError +from ..characteristic import BleakGATTCharacteristic +from ..descriptor import BleakGATTDescriptor from . import defs diff --git a/bleak/backends/p4android/client.py b/bleak/backends/p4android/client.py index 2f97b0b6..4a04a78b 100644 --- a/bleak/backends/p4android/client.py +++ b/bleak/backends/p4android/client.py @@ -8,19 +8,17 @@ import warnings from typing import Callable, Optional, Union -from bleak.backends.device import BLEDevice -from bleak.backends.service import BleakGATTServiceCollection -from bleak.exc import BleakError -from bleak.backends.client import BaseBleakClient -from bleak.backends.p4android.service import BleakGATTServiceP4Android -from bleak.backends.p4android.characteristic import BleakGATTCharacteristicP4Android -from bleak.backends.p4android.descriptor import BleakGATTDescriptorP4Android - from android.broadcast import BroadcastReceiver from jnius import java_method -from . import defs -from . import utils +from ...exc import BleakError +from ..client import BaseBleakClient +from ..device import BLEDevice +from ..service import BleakGATTServiceCollection +from . import defs, utils +from .characteristic import BleakGATTCharacteristicP4Android +from .descriptor import BleakGATTDescriptorP4Android +from .service import BleakGATTServiceP4Android logger = logging.getLogger(__name__) diff --git a/bleak/backends/p4android/descriptor.py b/bleak/backends/p4android/descriptor.py index 48669555..844316ec 100644 --- a/bleak/backends/p4android/descriptor.py +++ b/bleak/backends/p4android/descriptor.py @@ -1,4 +1,4 @@ -from bleak.backends.descriptor import BleakGATTDescriptor +from ..descriptor import BleakGATTDescriptor class BleakGATTDescriptorP4Android(BleakGATTDescriptor): diff --git a/bleak/backends/p4android/scanner.py b/bleak/backends/p4android/scanner.py index 6b4c6f38..3a02b5c1 100644 --- a/bleak/backends/p4android/scanner.py +++ b/bleak/backends/p4android/scanner.py @@ -3,30 +3,23 @@ import asyncio import logging import sys -from typing import List, Optional import warnings - -import async_timeout +from typing import List, Optional if sys.version_info[:2] < (3, 8): from typing_extensions import Literal else: from typing import Literal -from bleak.backends.scanner import ( - AdvertisementDataCallback, - BaseBleakScanner, - AdvertisementData, -) -from bleak.backends.device import BLEDevice -from bleak.exc import BleakError - +import async_timeout from android.broadcast import BroadcastReceiver -from android.permissions import request_permissions, Permission +from android.permissions import Permission, request_permissions from jnius import cast, java_method -from . import defs -from . import utils +from ...exc import BleakError +from ..device import BLEDevice +from ..scanner import AdvertisementData, AdvertisementDataCallback, BaseBleakScanner +from . import defs, utils logger = logging.getLogger(__name__) diff --git a/bleak/backends/p4android/service.py b/bleak/backends/p4android/service.py index 6c601584..aab1fc27 100644 --- a/bleak/backends/p4android/service.py +++ b/bleak/backends/p4android/service.py @@ -1,7 +1,7 @@ from typing import List -from bleak.backends.service import BleakGATTService -from bleak.backends.p4android.characteristic import BleakGATTCharacteristicP4Android +from ..service import BleakGATTService +from .characteristic import BleakGATTCharacteristicP4Android class BleakGATTServiceP4Android(BleakGATTService): diff --git a/bleak/backends/p4android/utils.py b/bleak/backends/p4android/utils.py index 7c80316c..6dc50b80 100644 --- a/bleak/backends/p4android/utils.py +++ b/bleak/backends/p4android/utils.py @@ -5,7 +5,7 @@ from jnius import PythonJavaClass -from bleak.exc import BleakError +from ...exc import BleakError logger = logging.getLogger(__name__) diff --git a/bleak/backends/scanner.py b/bleak/backends/scanner.py index b5b37cf5..4b7d8fb4 100644 --- a/bleak/backends/scanner.py +++ b/bleak/backends/scanner.py @@ -1,18 +1,12 @@ import abc import asyncio import inspect -from typing import ( - Awaitable, - Callable, - Dict, - List, - Optional, - Tuple, -) +from typing import Awaitable, Callable, Dict, List, Optional, Tuple from warnings import warn + import async_timeout -from bleak.backends.device import BLEDevice +from .device import BLEDevice class AdvertisementData: diff --git a/bleak/backends/service.py b/bleak/backends/service.py index de6f2289..1528ca66 100644 --- a/bleak/backends/service.py +++ b/bleak/backends/service.py @@ -6,14 +6,14 @@ """ import abc -from uuid import UUID -from typing import Dict, List, Optional, Union, Iterator import logging +from typing import Dict, Iterator, List, Optional, Union +from uuid import UUID -from bleak import BleakError -from bleak.uuids import uuidstr_to_str -from bleak.backends.characteristic import BleakGATTCharacteristic -from bleak.backends.descriptor import BleakGATTDescriptor +from ..exc import BleakError +from ..uuids import uuidstr_to_str +from .characteristic import BleakGATTCharacteristic +from .descriptor import BleakGATTDescriptor logger = logging.getLogger(__name__) diff --git a/bleak/backends/winrt/characteristic.py b/bleak/backends/winrt/characteristic.py index 7270eeab..cad9b38d 100644 --- a/bleak/backends/winrt/characteristic.py +++ b/bleak/backends/winrt/characteristic.py @@ -6,8 +6,8 @@ GattCharacteristicProperties, ) -from bleak.backends.characteristic import BleakGATTCharacteristic -from bleak.backends.descriptor import BleakGATTDescriptor +from ..characteristic import BleakGATTCharacteristic +from ..descriptor import BleakGATTDescriptor _GattCharacteristicsPropertiesMap = { diff --git a/bleak/backends/winrt/client.py b/bleak/backends/winrt/client.py index 5564efb3..5edda76c 100644 --- a/bleak/backends/winrt/client.py +++ b/bleak/backends/winrt/client.py @@ -5,14 +5,14 @@ Created on 2020-08-19 by hbldh """ +import asyncio import inspect import logging -import asyncio +import sys import uuid import warnings from functools import wraps -import sys -from typing import Callable, Any, List, Optional, Sequence, Union +from typing import Any, Callable, List, Optional, Sequence, Union import async_timeout @@ -22,22 +22,22 @@ from typing import Literal, TypedDict from bleak_winrt.windows.devices.bluetooth import ( + BluetoothAddressType, + BluetoothCacheMode, BluetoothError, BluetoothLEDevice, - BluetoothCacheMode, - BluetoothAddressType, ) from bleak_winrt.windows.devices.bluetooth.genericattributeprofile import ( GattCharacteristic, + GattCharacteristicProperties, + GattClientCharacteristicConfigurationDescriptorValue, GattCommunicationStatus, GattDescriptor, GattDeviceService, + GattSession, GattSessionStatus, GattSessionStatusChangedEventArgs, GattWriteOption, - GattCharacteristicProperties, - GattClientCharacteristicConfigurationDescriptorValue, - GattSession, ) from bleak_winrt.windows.devices.enumeration import ( DeviceInformation, @@ -48,17 +48,15 @@ from bleak_winrt.windows.foundation import EventRegistrationToken from bleak_winrt.windows.storage.streams import Buffer -from bleak.backends.device import BLEDevice -from bleak.backends.winrt.scanner import BleakScannerWinRT -from bleak.exc import BleakError, PROTOCOL_ERROR_CODES -from bleak.backends.client import BaseBleakClient - -from bleak.backends.characteristic import BleakGATTCharacteristic -from bleak.backends.service import BleakGATTServiceCollection -from bleak.backends.winrt.service import BleakGATTServiceWinRT -from bleak.backends.winrt.characteristic import BleakGATTCharacteristicWinRT -from bleak.backends.winrt.descriptor import BleakGATTDescriptorWinRT - +from ...exc import PROTOCOL_ERROR_CODES, BleakError +from ..characteristic import BleakGATTCharacteristic +from ..client import BaseBleakClient +from ..device import BLEDevice +from ..service import BleakGATTServiceCollection +from .characteristic import BleakGATTCharacteristicWinRT +from .descriptor import BleakGATTDescriptorWinRT +from .scanner import BleakScannerWinRT +from .service import BleakGATTServiceWinRT logger = logging.getLogger(__name__) diff --git a/bleak/backends/winrt/descriptor.py b/bleak/backends/winrt/descriptor.py index 3514ffc1..34a90fba 100644 --- a/bleak/backends/winrt/descriptor.py +++ b/bleak/backends/winrt/descriptor.py @@ -2,7 +2,7 @@ from bleak_winrt.windows.devices.bluetooth.genericattributeprofile import GattDescriptor -from bleak.backends.descriptor import BleakGATTDescriptor +from ..descriptor import BleakGATTDescriptor class BleakGATTDescriptorWinRT(BleakGATTDescriptor): diff --git a/bleak/backends/winrt/service.py b/bleak/backends/winrt/service.py index 27a7ecfa..66fa6253 100644 --- a/bleak/backends/winrt/service.py +++ b/bleak/backends/winrt/service.py @@ -4,8 +4,8 @@ GattDeviceService, ) -from bleak.backends.service import BleakGATTService -from bleak.backends.winrt.characteristic import BleakGATTCharacteristicWinRT +from ..service import BleakGATTService +from ..winrt.characteristic import BleakGATTCharacteristicWinRT class BleakGATTServiceWinRT(BleakGATTService):