diff --git a/examples/_login.py b/examples/_login.py index eb821e0..5412ac1 100644 --- a/examples/_login.py +++ b/examples/_login.py @@ -1,3 +1,5 @@ +# ruff: noqa: ASYNC230 + import json from pathlib import Path diff --git a/examples/real_airtag.py b/examples/real_airtag.py index 5661e9b..5eeb858 100644 --- a/examples/real_airtag.py +++ b/examples/real_airtag.py @@ -1,6 +1,7 @@ """ Example showing how to fetch locations of an AirTag, or any other FindMy accessory. """ + from __future__ import annotations import logging diff --git a/findmy/__init__.py b/findmy/__init__.py index f0fc461..7431bad 100644 --- a/findmy/__init__.py +++ b/findmy/__init__.py @@ -1,4 +1,5 @@ """A package providing everything you need to work with Apple's FindMy network.""" + from . import errors, keys, reports, scanner from .accessory import FindMyAccessory from .keys import KeyPair diff --git a/findmy/accessory.py b/findmy/accessory.py index d21d4e1..230239a 100644 --- a/findmy/accessory.py +++ b/findmy/accessory.py @@ -3,6 +3,7 @@ Module to interact with accessories that implement Find My. Accessories could be anything ranging from AirTags to iPhones. """ + from __future__ import annotations import logging @@ -64,7 +65,7 @@ class RollingKeyPairSource(ABC): class FindMyAccessory(RollingKeyPairSource): """A findable Find My-accessory using official key rollover.""" - def __init__( # noqa: PLR0913 + def __init__( self, master_key: bytes, skn: bytes, @@ -235,12 +236,10 @@ class AccessoryKeyGenerator(KeyGenerator[KeyPair]): return self._get_keypair(self._iter_ind) @overload - def __getitem__(self, val: int) -> KeyPair: - ... + def __getitem__(self, val: int) -> KeyPair: ... @overload - def __getitem__(self, val: slice) -> Generator[KeyPair, None, None]: - ... + def __getitem__(self, val: slice) -> Generator[KeyPair, None, None]: ... @override def __getitem__(self, val: int | slice) -> KeyPair | Generator[KeyPair, None, None]: diff --git a/findmy/keys.py b/findmy/keys.py index 97a1fda..a5c8932 100644 --- a/findmy/keys.py +++ b/findmy/keys.py @@ -1,4 +1,5 @@ """Module to work with private and public keys as used in FindMy accessories.""" + from __future__ import annotations import base64 @@ -156,13 +157,11 @@ class KeyGenerator(ABC, Generic[K]): @overload @abstractmethod - def __getitem__(self, val: int) -> K: - ... + def __getitem__(self, val: int) -> K: ... @overload @abstractmethod - def __getitem__(self, val: slice) -> Generator[K, None, None]: - ... + def __getitem__(self, val: slice) -> Generator[K, None, None]: ... @abstractmethod def __getitem__(self, val: int | slice) -> K | Generator[K, None, None]: diff --git a/findmy/reports/__init__.py b/findmy/reports/__init__.py index a5c3851..dfba250 100644 --- a/findmy/reports/__init__.py +++ b/findmy/reports/__init__.py @@ -1,4 +1,5 @@ """Code related to fetching location reports.""" + from .account import AppleAccount, AsyncAppleAccount from .anisette import BaseAnisetteProvider, RemoteAnisetteProvider from .state import LoginState diff --git a/findmy/reports/account.py b/findmy/reports/account.py index 5cc5374..59dbe3d 100644 --- a/findmy/reports/account.py +++ b/findmy/reports/account.py @@ -228,8 +228,7 @@ class BaseAppleAccount(Closable, ABC): keys: HasHashedPublicKey, date_from: datetime, date_to: datetime | None, - ) -> MaybeCoro[list[LocationReport]]: - ... + ) -> MaybeCoro[list[LocationReport]]: ... @overload @abstractmethod @@ -238,8 +237,7 @@ class BaseAppleAccount(Closable, ABC): keys: Sequence[HasHashedPublicKey], date_from: datetime, date_to: datetime | None, - ) -> MaybeCoro[dict[HasHashedPublicKey, list[LocationReport]]]: - ... + ) -> MaybeCoro[dict[HasHashedPublicKey, list[LocationReport]]]: ... @overload @abstractmethod @@ -248,8 +246,7 @@ class BaseAppleAccount(Closable, ABC): keys: RollingKeyPairSource, date_from: datetime, date_to: datetime | None, - ) -> MaybeCoro[list[LocationReport]]: - ... + ) -> MaybeCoro[list[LocationReport]]: ... @abstractmethod def fetch_reports( @@ -271,8 +268,7 @@ class BaseAppleAccount(Closable, ABC): self, keys: HasHashedPublicKey, hours: int = 7 * 24, - ) -> MaybeCoro[list[LocationReport]]: - ... + ) -> MaybeCoro[list[LocationReport]]: ... @overload @abstractmethod @@ -280,8 +276,7 @@ class BaseAppleAccount(Closable, ABC): self, keys: Sequence[HasHashedPublicKey], hours: int = 7 * 24, - ) -> MaybeCoro[dict[HasHashedPublicKey, list[LocationReport]]]: - ... + ) -> MaybeCoro[dict[HasHashedPublicKey, list[LocationReport]]]: ... @overload @abstractmethod @@ -289,8 +284,7 @@ class BaseAppleAccount(Closable, ABC): self, keys: RollingKeyPairSource, hours: int = 7 * 24, - ) -> MaybeCoro[list[LocationReport]]: - ... + ) -> MaybeCoro[list[LocationReport]]: ... @abstractmethod def fetch_last_reports( @@ -629,8 +623,7 @@ class AsyncAppleAccount(BaseAppleAccount): keys: HasHashedPublicKey, date_from: datetime, date_to: datetime | None, - ) -> list[LocationReport]: - ... + ) -> list[LocationReport]: ... @overload async def fetch_reports( @@ -638,8 +631,7 @@ class AsyncAppleAccount(BaseAppleAccount): keys: Sequence[HasHashedPublicKey], date_from: datetime, date_to: datetime | None, - ) -> dict[HasHashedPublicKey, list[LocationReport]]: - ... + ) -> dict[HasHashedPublicKey, list[LocationReport]]: ... @overload async def fetch_reports( @@ -647,8 +639,7 @@ class AsyncAppleAccount(BaseAppleAccount): keys: RollingKeyPairSource, date_from: datetime, date_to: datetime | None, - ) -> list[LocationReport]: - ... + ) -> list[LocationReport]: ... @require_login_state(LoginState.LOGGED_IN) @override @@ -672,24 +663,21 @@ class AsyncAppleAccount(BaseAppleAccount): self, keys: HasHashedPublicKey, hours: int = 7 * 24, - ) -> list[LocationReport]: - ... + ) -> list[LocationReport]: ... @overload async def fetch_last_reports( self, keys: Sequence[HasHashedPublicKey], hours: int = 7 * 24, - ) -> dict[HasHashedPublicKey, list[LocationReport]]: - ... + ) -> dict[HasHashedPublicKey, list[LocationReport]]: ... @overload async def fetch_last_reports( self, keys: RollingKeyPairSource, hours: int = 7 * 24, - ) -> list[LocationReport]: - ... + ) -> list[LocationReport]: ... @require_login_state(LoginState.LOGGED_IN) @override @@ -1035,8 +1023,7 @@ class AppleAccount(BaseAppleAccount): keys: HasHashedPublicKey, date_from: datetime, date_to: datetime | None, - ) -> list[LocationReport]: - ... + ) -> list[LocationReport]: ... @overload def fetch_reports( @@ -1044,8 +1031,7 @@ class AppleAccount(BaseAppleAccount): keys: Sequence[HasHashedPublicKey], date_from: datetime, date_to: datetime | None, - ) -> dict[HasHashedPublicKey, list[LocationReport]]: - ... + ) -> dict[HasHashedPublicKey, list[LocationReport]]: ... @overload def fetch_reports( @@ -1053,8 +1039,7 @@ class AppleAccount(BaseAppleAccount): keys: RollingKeyPairSource, date_from: datetime, date_to: datetime | None, - ) -> list[LocationReport]: - ... + ) -> list[LocationReport]: ... @override def fetch_reports( @@ -1072,24 +1057,21 @@ class AppleAccount(BaseAppleAccount): self, keys: HasHashedPublicKey, hours: int = 7 * 24, - ) -> list[LocationReport]: - ... + ) -> list[LocationReport]: ... @overload def fetch_last_reports( self, keys: Sequence[HasHashedPublicKey], hours: int = 7 * 24, - ) -> dict[HasHashedPublicKey, list[LocationReport]]: - ... + ) -> dict[HasHashedPublicKey, list[LocationReport]]: ... @overload def fetch_last_reports( self, keys: RollingKeyPairSource, hours: int = 7 * 24, - ) -> list[LocationReport]: - ... + ) -> list[LocationReport]: ... @override def fetch_last_reports( diff --git a/findmy/reports/anisette.py b/findmy/reports/anisette.py index 7c17722..bcf2bf1 100644 --- a/findmy/reports/anisette.py +++ b/findmy/reports/anisette.py @@ -1,4 +1,5 @@ """Module for Anisette header providers.""" + from __future__ import annotations import base64 diff --git a/findmy/reports/reports.py b/findmy/reports/reports.py index 73defec..3f17be3 100644 --- a/findmy/reports/reports.py +++ b/findmy/reports/reports.py @@ -232,8 +232,7 @@ class LocationReportsFetcher: date_from: datetime, date_to: datetime, device: HasHashedPublicKey, - ) -> list[LocationReport]: - ... + ) -> list[LocationReport]: ... @overload async def fetch_reports( @@ -241,8 +240,7 @@ class LocationReportsFetcher: date_from: datetime, date_to: datetime, device: Sequence[HasHashedPublicKey], - ) -> dict[HasHashedPublicKey, list[LocationReport]]: - ... + ) -> dict[HasHashedPublicKey, list[LocationReport]]: ... @overload async def fetch_reports( @@ -250,8 +248,7 @@ class LocationReportsFetcher: date_from: datetime, date_to: datetime, device: RollingKeyPairSource, - ) -> list[LocationReport]: - ... + ) -> list[LocationReport]: ... async def fetch_reports( self, diff --git a/findmy/reports/state.py b/findmy/reports/state.py index c818a8d..165f5ae 100644 --- a/findmy/reports/state.py +++ b/findmy/reports/state.py @@ -1,4 +1,5 @@ """Account login state.""" + from enum import Enum from typing_extensions import override diff --git a/findmy/reports/twofactor.py b/findmy/reports/twofactor.py index 307a3be..6a51e5b 100644 --- a/findmy/reports/twofactor.py +++ b/findmy/reports/twofactor.py @@ -1,4 +1,5 @@ """Public classes related to handling two-factor authentication.""" + from abc import ABC, abstractmethod from typing import TYPE_CHECKING, Generic, TypeVar diff --git a/findmy/scanner/__init__.py b/findmy/scanner/__init__.py index 944547f..b2c0954 100644 --- a/findmy/scanner/__init__.py +++ b/findmy/scanner/__init__.py @@ -1,4 +1,5 @@ """Utilities related to physically discoverable FindMy-devices.""" + from .scanner import ( NearbyOfflineFindingDevice, OfflineFindingScanner, diff --git a/findmy/scanner/scanner.py b/findmy/scanner/scanner.py index a9ea170..810abbf 100644 --- a/findmy/scanner/scanner.py +++ b/findmy/scanner/scanner.py @@ -139,7 +139,7 @@ class NearbyOfflineFindingDevice(OfflineFindingDevice): """Length of OfflineFinding data payload in bytes.""" return 0x02 # 2 - def __init__( # noqa: PLR0913 + def __init__( self, mac_bytes: bytes, status_byte: int, diff --git a/findmy/util/__init__.py b/findmy/util/__init__.py index 6ed65f1..3f4b47c 100644 --- a/findmy/util/__init__.py +++ b/findmy/util/__init__.py @@ -1,4 +1,5 @@ """Utility functions and classes. Intended for internal use.""" + from .http import HttpResponse, HttpSession from .parsers import decode_plist diff --git a/findmy/util/closable.py b/findmy/util/closable.py index fbac882..d210bdc 100644 --- a/findmy/util/closable.py +++ b/findmy/util/closable.py @@ -1,4 +1,5 @@ """ABC for async classes that need to be cleaned up before exiting.""" + from __future__ import annotations import asyncio diff --git a/findmy/util/http.py b/findmy/util/http.py index 0c941e7..c68ee7f 100644 --- a/findmy/util/http.py +++ b/findmy/util/http.py @@ -1,4 +1,5 @@ """Module to simplify asynchronous HTTP calls.""" + from __future__ import annotations import json diff --git a/findmy/util/parsers.py b/findmy/util/parsers.py index 74b5dae..2f06769 100644 --- a/findmy/util/parsers.py +++ b/findmy/util/parsers.py @@ -1,4 +1,5 @@ """Parsers for various forms of data formats.""" + import plistlib from typing import Any