diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d9e92c2..2c01e85 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -57,7 +57,7 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "pypy-3.9", "pypy-3.10"] + python-version: ["3.11", "3.12", "3.13", "3.14", "pypy-3.11"] os: [ubuntu-latest, macos-latest, windows-latest] exclude: # Exclude pypy on windows due to performance issues diff --git a/pyproject.toml b/pyproject.toml index 041f5bb..62021a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,6 @@ dependencies = [ "aiohttp>=3", "aiofiles>=23", "typing-extensions>=4.12.2,<5.0", - "async-timeout>=3.0.0", "websockets>=13.0.0", "firebase-messaging>=0.4.0", ] diff --git a/ring_doorbell/listen/eventlistener.py b/ring_doorbell/listen/eventlistener.py index 660b91c..e0de0a5 100644 --- a/ring_doorbell/listen/eventlistener.py +++ b/ring_doorbell/listen/eventlistener.py @@ -8,7 +8,6 @@ import time from typing import TYPE_CHECKING, Any, Callable -from async_timeout import timeout as asyncio_timeout from firebase_messaging import FcmPushClient, FcmRegisterConfig from ring_doorbell.const import ( @@ -192,7 +191,7 @@ async def start( if self.subscribed: self.add_notification_callback(self._ring._add_event_to_dings_data) # noqa: SLF001 - async with asyncio_timeout(timeout): + async with asyncio.timeout(timeout): await self._receiver.start() self.started = True self.session_refresh_task = asyncio.create_task( diff --git a/ring_doorbell/webrtcstream.py b/ring_doorbell/webrtcstream.py index e25e87c..5df6854 100644 --- a/ring_doorbell/webrtcstream.py +++ b/ring_doorbell/webrtcstream.py @@ -18,7 +18,6 @@ from json import loads as json_loads from typing import TYPE_CHECKING, Any, Callable -from async_timeout import timeout as asyncio_timeout from typing_extensions import TypeAlias from websockets.asyncio.client import connect @@ -121,7 +120,7 @@ async def generate(self, sdp_offer: str) -> str | None: await asyncio.sleep(SDP_ANSWER_TIMEOUT) self.insert_ice_candidates() else: - async with asyncio_timeout(SDP_ANSWER_TIMEOUT): + async with asyncio.timeout(SDP_ANSWER_TIMEOUT): await self._sdp_answer_event.wait() if not self.sdp: @@ -198,7 +197,7 @@ async def _activate(self) -> None: async def on_ice_candidate(self, candidate: str, m_line_index: int) -> None: """Send an ICE candidate.""" - async with asyncio_timeout(10): + async with asyncio.timeout(10): await self._offered_event.wait() assert self.websocket # noqa: S101 diff --git a/uv.lock b/uv.lock index 0bf8d6c..5c968b1 100644 --- a/uv.lock +++ b/uv.lock @@ -1341,7 +1341,6 @@ source = { editable = "." } dependencies = [ { name = "aiofiles" }, { name = "aiohttp" }, - { name = "async-timeout" }, { name = "asyncclick" }, { name = "firebase-messaging" }, { name = "oauthlib" }, @@ -1380,7 +1379,6 @@ dev = [ requires-dist = [ { name = "aiofiles", specifier = ">=23" }, { name = "aiohttp", specifier = ">=3" }, - { name = "async-timeout", specifier = ">=3.0.0" }, { name = "asyncclick", specifier = ">=8.1.7.1" }, { name = "firebase-messaging", specifier = ">=0.4.0" }, { name = "myst-parser", marker = "extra == 'docs'" },