Skip to content

Commit 98fbe9f

Browse files
authored
Fix CI (#88)
Fix uses of asyncio-timeout
1 parent c27feba commit 98fbe9f

File tree

7 files changed

+29
-22
lines changed

7 files changed

+29
-22
lines changed

pyproject.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,16 @@ authors = [
1212
]
1313
readme = "README.md"
1414
license = {text = "GPL-3.0"}
15-
requires-python = ">=3.8"
15+
requires-python = ">=3.9"
1616
dependencies = [
17+
"aiohttp", # Explicit dependency until compatibility with async-timeout is resolved
1718
"click>=8.0.0",
1819
"zigpy>=0.70.0",
1920
"crc",
2021
"bellows>=0.42.0",
2122
'gpiod; platform_system=="Linux"',
2223
"coloredlogs",
23-
"async_timeout",
24+
'async-timeout; python_version<"3.11"',
2425
"typing_extensions",
2526
"pyserial-asyncio-fast",
2627
]

universal_silabs_flasher/common.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,18 @@
77
import functools
88
import logging
99
import re
10+
import sys
1011
import typing
1112

12-
import async_timeout
1313
import click
1414
import crc
1515
import zigpy.serial
1616

17+
if sys.version_info[:2] < (3, 11):
18+
from async_timeout import timeout as asyncio_timeout # pragma: no cover
19+
else:
20+
from asyncio import timeout as asyncio_timeout # pragma: no cover
21+
1722
if typing.TYPE_CHECKING:
1823
from typing_extensions import Self
1924

@@ -121,7 +126,7 @@ async def wait_for_state(self, state: str) -> None:
121126
async def connect_protocol(port, baudrate, factory):
122127
loop = asyncio.get_running_loop()
123128

124-
async with async_timeout.timeout(CONNECT_TIMEOUT):
129+
async with asyncio_timeout(CONNECT_TIMEOUT):
125130
_, protocol = await zigpy.serial.create_serial_connection(
126131
loop=loop,
127132
protocol_factory=factory,

universal_silabs_flasher/cpc.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@
55
import logging
66
import typing
77

8-
import async_timeout
98
from zigpy.serial import SerialProtocol
109
import zigpy.types
1110

1211
from . import cpc_types
13-
from .common import BufferTooShort, Version, crc16_ccitt
12+
from .common import BufferTooShort, Version, asyncio_timeout, crc16_ccitt
1413

1514
_LOGGER = logging.getLogger(__name__)
1615

@@ -354,7 +353,7 @@ async def send_unnumbered_frame(
354353
self.send_data(frame.serialize())
355354

356355
try:
357-
async with async_timeout.timeout(timeout):
356+
async with asyncio_timeout(timeout):
358357
return await asyncio.shield(future)
359358
except asyncio.TimeoutError:
360359
_LOGGER.debug(

universal_silabs_flasher/flasher.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55
import logging
66
import typing
77

8-
import async_timeout
98
import bellows.config
109
import bellows.ezsp
1110
import bellows.types
1211
from zigpy.serial import SerialProtocol
1312

14-
from .common import PROBE_TIMEOUT, Version, connect_protocol, pad_to_multiple
13+
from .common import (
14+
PROBE_TIMEOUT,
15+
Version,
16+
asyncio_timeout,
17+
connect_protocol,
18+
pad_to_multiple,
19+
)
1520
from .const import DEFAULT_BAUDRATES, GPIO_CONFIGS, ApplicationType, ResetTarget
1621
from .cpc import CPCProtocol
1722
from .emberznet import connect_ezsp
@@ -244,11 +249,11 @@ async def enter_bootloader(self) -> None:
244249
pass
245250
elif self.app_type is ApplicationType.CPC:
246251
async with self._connect_cpc(self.app_baudrate) as cpc:
247-
async with async_timeout.timeout(PROBE_TIMEOUT):
252+
async with asyncio_timeout(PROBE_TIMEOUT):
248253
await cpc.enter_bootloader()
249254
elif self.app_type is ApplicationType.SPINEL:
250255
async with self._connect_spinel(self.app_baudrate) as spinel:
251-
async with async_timeout.timeout(PROBE_TIMEOUT):
256+
async with asyncio_timeout(PROBE_TIMEOUT):
252257
await spinel.enter_bootloader()
253258
elif self.app_type is ApplicationType.EZSP:
254259
async with self._connect_ezsp(self.app_baudrate) as ezsp:

universal_silabs_flasher/gecko_bootloader.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@
66
import re
77
import typing
88

9-
import async_timeout
109
from zigpy.serial import SerialProtocol
1110

12-
from .common import PROBE_TIMEOUT, StateMachine, Version
11+
from .common import PROBE_TIMEOUT, StateMachine, Version, asyncio_timeout
1312
from .xmodemcrc import send_xmodem128_crc
1413

1514
_LOGGER = logging.getLogger(__name__)
@@ -68,7 +67,7 @@ def __init__(self) -> None:
6867

6968
async def probe(self) -> Version:
7069
"""Attempt to communicate with the bootloader."""
71-
async with async_timeout.timeout(PROBE_TIMEOUT):
70+
async with asyncio_timeout(PROBE_TIMEOUT):
7271
return await self.ebl_info()
7372

7473
async def ebl_info(self) -> Version:
@@ -93,7 +92,7 @@ async def run_firmware(self) -> None:
9392
self.send_data(GeckoBootloaderOption.RUN_FIRMWARE)
9493

9594
try:
96-
async with async_timeout.timeout(RUN_APPLICATION_DELAY):
95+
async with asyncio_timeout(RUN_APPLICATION_DELAY):
9796
await self._state_machine.wait_for_state(State.IN_MENU)
9897
except asyncio.TimeoutError:
9998
# The menu did not appear so the application must be running
@@ -134,7 +133,7 @@ async def upload_firmware(
134133

135134
# The menu is sometimes sent immediately after upload
136135
try:
137-
async with async_timeout.timeout(MENU_AFTER_UPLOAD_TIMEOUT):
136+
async with asyncio_timeout(MENU_AFTER_UPLOAD_TIMEOUT):
138137
await self._state_machine.wait_for_state(State.IN_MENU)
139138
except asyncio.TimeoutError:
140139
# If not, trigger it manually

universal_silabs_flasher/spinel.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@
55
import logging
66
import typing
77

8-
import async_timeout
98
from zigpy.serial import SerialProtocol
109
import zigpy.types
1110

12-
from .common import Version, crc16_kermit
11+
from .common import Version, asyncio_timeout, crc16_kermit
1312
from .spinel_types import CommandID, HDLCSpecial, PropertyID, ResetReason
1413

1514
_LOGGER = logging.getLogger(__name__)
@@ -210,7 +209,7 @@ async def send_frame(
210209
self.send_data(HDLCLiteFrame(data=new_frame.serialize()).serialize())
211210

212211
try:
213-
async with async_timeout.timeout(timeout):
212+
async with asyncio_timeout(timeout):
214213
return await asyncio.shield(future)
215214
except asyncio.TimeoutError:
216215
_LOGGER.debug(

universal_silabs_flasher/xmodemcrc.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
import logging
66
import typing
77

8-
import async_timeout
98
import zigpy.types
109

11-
from .common import crc16_ccitt
10+
from .common import asyncio_timeout, crc16_ccitt
1211

1312
_LOGGER = logging.getLogger(__name__)
1413

@@ -66,7 +65,7 @@ async def send_xmodem128_crc_data(
6665
await writer.drain()
6766

6867
# And wait for a response
69-
async with async_timeout.timeout(RECEIVE_TIMEOUT):
68+
async with asyncio_timeout(RECEIVE_TIMEOUT):
7069
rsp_byte = await reader.readexactly(1)
7170

7271
_LOGGER.debug("Got response: %r", rsp_byte)

0 commit comments

Comments
 (0)