Skip to content

Commit d621a4c

Browse files
Apply changes suggested by the tool pyupgrade
The tool `pyupgrade` was used to modernize the code base given that frequenz-channels is already using python 3.11 as minimum version. The tool was mainly used to replace obsolete types. Also `black` and `isort` tools were both run to format the code base after running `pyupgrade`. Signed-off-by: Daniel Zullo <[email protected]>
1 parent cf1f2c8 commit d621a4c

File tree

11 files changed

+32
-30
lines changed

11 files changed

+32
-30
lines changed

benchmarks/benchmark_anycast.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
import asyncio
77
import csv
88
import timeit
9-
from typing import Any, Coroutine, Dict, List, Tuple
9+
from collections.abc import Coroutine
10+
from typing import Any, Dict, List, Tuple
1011

1112
from frequenz.channels import Anycast, Receiver, Sender
1213

@@ -40,7 +41,7 @@ async def benchmark_anycast(
4041
Returns:
4142
int: Total number of messages received by all channels.
4243
"""
43-
channels: List[Anycast[int]] = [Anycast(buffer_size) for _ in range(num_channels)]
44+
channels: list[Anycast[int]] = [Anycast(buffer_size) for _ in range(num_channels)]
4445
senders = [
4546
asyncio.create_task(send_msg(num_messages, bcast.new_sender()))
4647
for bcast in channels
@@ -68,7 +69,7 @@ async def update_tracker_on_receive(chan: Receiver[int]) -> None:
6869
return recv_trackers[0]
6970

7071

71-
def time_async_task(task: Coroutine[Any, Any, int]) -> Tuple[float, Any]:
72+
def time_async_task(task: Coroutine[Any, Any, int]) -> tuple[float, Any]:
7273
"""Run a task and return the time taken and the result.
7374
7475
Args:
@@ -87,7 +88,7 @@ def run_one(
8788
num_messages: int,
8889
num_receivers: int,
8990
buffer_size: int,
90-
) -> Dict[str, Any]:
91+
) -> dict[str, Any]:
9192
"""Run a single benchmark."""
9293
runtime, total_msgs = time_async_task(
9394
benchmark_anycast(num_channels, num_messages, num_receivers, buffer_size)

benchmarks/benchmark_broadcast.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
import asyncio
77
import csv
88
import timeit
9+
from collections.abc import Callable, Coroutine
910
from functools import partial
10-
from typing import Any, Callable, Coroutine, Dict, List, Tuple
11+
from typing import Any, Dict, List, Tuple
1112

1213
from frequenz.channels import Broadcast, Receiver, Sender
1314

@@ -60,8 +61,8 @@ async def benchmark_broadcast(
6061
Returns:
6162
int: Total number of messages received by all receivers.
6263
"""
63-
channels: List[Broadcast[int]] = [Broadcast("meter") for _ in range(num_channels)]
64-
senders: List[asyncio.Task[Any]] = [
64+
channels: list[Broadcast[int]] = [Broadcast("meter") for _ in range(num_channels)]
65+
senders: list[asyncio.Task[Any]] = [
6566
asyncio.create_task(send_msg(num_messages, bcast.new_sender()))
6667
for bcast in channels
6768
]
@@ -103,7 +104,7 @@ async def benchmark_single_task_broadcast(
103104
Returns:
104105
int: Total number of messages received by all receivers.
105106
"""
106-
channels: List[Broadcast[int]] = [Broadcast("meter") for _ in range(num_channels)]
107+
channels: list[Broadcast[int]] = [Broadcast("meter") for _ in range(num_channels)]
107108
senders = [b.new_sender() for b in channels]
108109
recv_tracker = 0
109110

@@ -122,7 +123,7 @@ async def benchmark_single_task_broadcast(
122123
return recv_tracker
123124

124125

125-
def time_async_task(task: Coroutine[Any, Any, int]) -> Tuple[float, Any]:
126+
def time_async_task(task: Coroutine[Any, Any, int]) -> tuple[float, Any]:
126127
"""Run a task and return the time taken and the result.
127128
128129
Args:
@@ -144,7 +145,7 @@ def run_one(
144145
num_receivers: int,
145146
tasks_used: str,
146147
interval_between_messages: float,
147-
) -> Dict[str, Any]:
148+
) -> dict[str, Any]:
148149
"""Run a single benchmark."""
149150
runtime, total_msgs = time_async_task(
150151
benchmark_method(num_channels, num_messages, num_receivers)

src/frequenz/channels/_anycast.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ def __init__(self, chan: Anycast[T]) -> None:
169169
chan: A reference to the channel that this receiver belongs to.
170170
"""
171171
self._chan = chan
172-
self._next: T | Type[_Empty] = _Empty
172+
self._next: T | type[_Empty] = _Empty
173173

174174
async def ready(self) -> bool:
175175
"""Wait until the receiver is ready with a value or an error.

src/frequenz/channels/_base_classes.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
from __future__ import annotations
77

88
from abc import ABC, abstractmethod
9-
from typing import Callable, Generic, Optional, TypeVar
9+
from collections.abc import Callable
10+
from typing import Generic, Optional, TypeVar
1011

1112
from ._exceptions import ReceiverStoppedError
1213

@@ -145,7 +146,7 @@ class Peekable(ABC, Generic[T]):
145146
"""
146147

147148
@abstractmethod
148-
def peek(self) -> Optional[T]:
149+
def peek(self) -> T | None:
149150
"""Return the latest value that was sent to the channel.
150151
151152
Returns:

src/frequenz/channels/_broadcast.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ def __init__(self, name: str, resend_latest: bool = False) -> None:
8888
self._resend_latest = resend_latest
8989

9090
self.recv_cv: Condition = Condition()
91-
self.receivers: Dict[UUID, weakref.ReferenceType[Receiver[T]]] = {}
91+
self.receivers: dict[UUID, weakref.ReferenceType[Receiver[T]]] = {}
9292
self.closed: bool = False
93-
self._latest: Optional[T] = None
93+
self._latest: T | None = None
9494

9595
async def close(self) -> None:
9696
"""Close the Broadcast channel.
@@ -116,9 +116,7 @@ def new_sender(self) -> Sender[T]:
116116
"""
117117
return Sender(self)
118118

119-
def new_receiver(
120-
self, name: Optional[str] = None, maxsize: int = 50
121-
) -> Receiver[T]:
119+
def new_receiver(self, name: str | None = None, maxsize: int = 50) -> Receiver[T]:
122120
"""Create a new broadcast receiver.
123121
124122
Broadcast receivers have their own buffer, and when messages are not
@@ -346,7 +344,7 @@ def __init__(self, chan: Broadcast[T]) -> None:
346344
"""
347345
self._chan = chan
348346

349-
def peek(self) -> Optional[T]:
347+
def peek(self) -> T | None:
350348
"""Return the latest value that was sent to the channel.
351349
352350
Returns:

src/frequenz/channels/util/_merge.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def __init__(self, *args: Receiver[T]) -> None:
4444
*args: sequence of channel receivers.
4545
"""
4646
self._receivers = {str(id): recv for id, recv in enumerate(args)}
47-
self._pending: Set[asyncio.Task[Any]] = {
47+
self._pending: set[asyncio.Task[Any]] = {
4848
asyncio.create_task(recv.__anext__(), name=name)
4949
for name, recv in self._receivers.items()
5050
}

src/frequenz/channels/util/_merge_named.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from .._exceptions import ReceiverStoppedError
1212

1313

14-
class MergeNamed(Receiver[Tuple[str, T]]):
14+
class MergeNamed(Receiver[tuple[str, T]]):
1515
"""Merge messages coming from multiple named channels into a single stream.
1616
1717
When `MergeNamed` is no longer needed, then it should be stopped using
@@ -25,11 +25,11 @@ def __init__(self, **kwargs: Receiver[T]) -> None:
2525
**kwargs: sequence of channel receivers.
2626
"""
2727
self._receivers = kwargs
28-
self._pending: Set[asyncio.Task[Any]] = {
28+
self._pending: set[asyncio.Task[Any]] = {
2929
asyncio.create_task(recv.__anext__(), name=name)
3030
for name, recv in self._receivers.items()
3131
}
32-
self._results: Deque[Tuple[str, T]] = deque(maxlen=len(self._receivers))
32+
self._results: Deque[tuple[str, T]] = deque(maxlen=len(self._receivers))
3333

3434
def __del__(self) -> None:
3535
"""Cleanup any pending tasks."""
@@ -81,7 +81,7 @@ async def ready(self) -> bool:
8181
asyncio.create_task(self._receivers[name].__anext__(), name=name)
8282
)
8383

84-
def consume(self) -> Tuple[str, T]:
84+
def consume(self) -> tuple[str, T]:
8585
"""Return the latest value once `ready` is complete.
8686
8787
Returns:

src/frequenz/channels/util/_select.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
"""
1010

1111
import asyncio
12-
from typing import Any, AsyncIterator, Generic, TypeGuard, TypeVar
12+
from collections.abc import AsyncIterator
13+
from typing import Any, Generic, TypeGuard, TypeVar
1314

1415
from .._base_classes import Receiver
1516
from .._exceptions import ReceiverStoppedError

tests/test_broadcast.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ async def test_broadcast_overflow() -> None:
117117
big_receiver = bcast.new_receiver("named-recv", big_recv_size)
118118
small_receiver = bcast.new_receiver(None, small_recv_size)
119119

120-
async def drain_receivers() -> Tuple[int, int]:
120+
async def drain_receivers() -> tuple[int, int]:
121121
big_sum = 0
122122
small_sum = 0
123123
while len(big_receiver) > 0:

tests/test_merge.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ async def send(ch1: Sender[int], ch2: Sender[int]) -> None:
2626
senders = asyncio.create_task(send(chan1.new_sender(), chan2.new_sender()))
2727

2828
merge = Merge(chan1.new_receiver(), chan2.new_receiver())
29-
results: List[int] = []
29+
results: list[int] = []
3030
async for item in merge:
3131
results.append(item)
3232
await senders
@@ -37,5 +37,5 @@ async def send(ch1: Sender[int], ch2: Sender[int]) -> None:
3737
# order, where N is the number of channels. This only works in this
3838
# example because the `send` method sends values in immeidate
3939
# succession.
40-
assert set((results[idx : idx + 2])) == {ctr + 1, ctr + 101}
40+
assert set(results[idx : idx + 2]) == {ctr + 1, ctr + 101}
4141
assert results[-1] == 1000

0 commit comments

Comments
 (0)