Skip to content

Commit 64ff969

Browse files
authored
🔨 Upgrade typing to 3.10+ (#108)
1 parent 99c56d1 commit 64ff969

File tree

30 files changed

+123
-126
lines changed

30 files changed

+123
-126
lines changed

hyx/bulkhead/api.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import functools
2+
from collections.abc import Sequence
23
from types import TracebackType
3-
from typing import Any, Optional, Sequence, Type, cast
4+
from typing import Any, cast
45

56
from hyx.bulkhead.events import _BULKHEAD_LISTENERS, BulkheadListener
67
from hyx.bulkhead.manager import BulkheadManager
@@ -29,9 +30,9 @@ def __init__(
2930
max_concurrency: int,
3031
max_capacity: int,
3132
*,
32-
name: Optional[str] = None,
33-
listeners: Optional[Sequence[BulkheadListener]] = None,
34-
event_manager: Optional["EventManager"] = None,
33+
name: str | None = None,
34+
listeners: Sequence[BulkheadListener] | None = None,
35+
event_manager: "EventManager | None" = None,
3536
) -> None:
3637
event_dispatcher = EventDispatcher[BulkheadManager, BulkheadListener](
3738
listeners,
@@ -55,10 +56,10 @@ async def __aenter__(self) -> "bulkhead":
5556

5657
async def __aexit__(
5758
self,
58-
exc_type: Optional[Type[BaseException]],
59-
exc_val: Optional[BaseException],
60-
exc_tb: Optional[TracebackType],
61-
) -> Optional[bool]:
59+
exc_type: type[BaseException] | None,
60+
exc_val: BaseException | None,
61+
exc_tb: TracebackType | None,
62+
) -> bool | None:
6263
await self._manager.release()
6364

6465
return None

hyx/bulkhead/events.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import TYPE_CHECKING, Union
1+
from typing import TYPE_CHECKING
22

33
from hyx.events import ListenerFactoryT, ListenerRegistry
44

@@ -12,7 +12,7 @@ class BulkheadListener:
1212
async def on_bulkhead_full(self, bulkhead: "BulkheadManager") -> None: ...
1313

1414

15-
def register_bulkhead_listener(listener: Union[BulkheadListener, ListenerFactoryT]) -> None:
15+
def register_bulkhead_listener(listener: BulkheadListener | ListenerFactoryT) -> None:
1616
"""
1717
Register a listener that will listen to all fallback components in the system
1818
"""

hyx/bulkhead/manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import asyncio
2-
from typing import Any, Optional
2+
from typing import Any
33

44
from hyx.bulkhead.events import BulkheadListener
55
from hyx.bulkhead.exceptions import BulkheadFull
@@ -18,7 +18,7 @@ def __init__(
1818
max_concurrency: int,
1919
max_capacity: int,
2020
event_dispatcher: BulkheadListener,
21-
name: Optional[str] = None,
21+
name: str | None = None,
2222
) -> None:
2323
if max_concurrency <= 0:
2424
raise ValueError(f'max_concurrency should be greater than zero ("{max_concurrency}" given)')

hyx/circuitbreaker/api.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import functools
2+
from collections.abc import Sequence
23
from types import TracebackType
3-
from typing import Any, Optional, Sequence, Type, cast
4+
from typing import Any, cast
45

56
from hyx.circuitbreaker.events import _BREAKER_LISTENERS, BreakerListener
67
from hyx.circuitbreaker.managers import ConsecutiveCircuitBreaker
@@ -48,9 +49,9 @@ def __init__(
4849
failure_threshold: int = 5,
4950
recovery_time_secs: DelayT = 30,
5051
recovery_threshold: int = 3,
51-
listeners: Optional[Sequence[BreakerListener]] = None,
52-
name: Optional[str] = None,
53-
event_manager: Optional["EventManager"] = None,
52+
listeners: Sequence[BreakerListener] | None = None,
53+
name: str | None = None,
54+
event_manager: "EventManager | None" = None,
5455
) -> None:
5556
event_dispatcher = EventDispatcher[ConsecutiveCircuitBreaker, BreakerListener](
5657
listeners,
@@ -80,10 +81,10 @@ async def __aenter__(self) -> "consecutive_breaker":
8081

8182
async def __aexit__(
8283
self,
83-
exc_type: Optional[Type[BaseException]],
84-
exc_val: Optional[BaseException],
85-
exc_tb: Optional[TracebackType],
86-
) -> Optional[bool]:
84+
exc_type: type[BaseException] | None,
85+
exc_val: BaseException | None,
86+
exc_tb: TracebackType | None,
87+
) -> bool | None:
8788
await self._manager.release(exc_val)
8889

8990
return None

hyx/circuitbreaker/context.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import dataclasses
2-
from typing import TYPE_CHECKING, Optional
2+
from typing import TYPE_CHECKING
33

44
from hyx.circuitbreaker.typing import DelayT
55
from hyx.typing import ExceptionsT
@@ -10,7 +10,7 @@
1010

1111
@dataclasses.dataclass
1212
class BreakerContext:
13-
breaker_name: Optional[str]
13+
breaker_name: str | None
1414
exceptions: ExceptionsT
1515
failure_threshold: int
1616
recovery_time_secs: DelayT

hyx/circuitbreaker/events.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import TYPE_CHECKING, Union
1+
from typing import TYPE_CHECKING
22

33
from hyx.circuitbreaker.context import BreakerContext
44
from hyx.circuitbreaker.managers import ConsecutiveCircuitBreaker
@@ -37,7 +37,7 @@ async def on_failing(
3737
async def on_success(self, context: BreakerContext, state: "BreakerState") -> None: ...
3838

3939

40-
def register_breaker_listener(listener: Union[BreakerListener, ListenerFactoryT]) -> None:
40+
def register_breaker_listener(listener: BreakerListener | ListenerFactoryT) -> None:
4141
"""
4242
Register a listener that will listen to all circuit breaker components in the system
4343
"""

hyx/circuitbreaker/managers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import TYPE_CHECKING, Any, Optional
1+
from typing import TYPE_CHECKING, Any
22

33
from hyx.circuitbreaker.context import BreakerContext
44
from hyx.circuitbreaker.states import BreakerState, WorkingState
@@ -48,7 +48,7 @@ async def _transit_state(self, new_state: BreakerState) -> None:
4848
async def acquire(self) -> None:
4949
await self._transit_state(await self._state.before_execution())
5050

51-
async def release(self, exception: Optional[BaseException]) -> None:
51+
async def release(self, exception: BaseException | None) -> None:
5252
if exception and isinstance(exception, self._context.exceptions):
5353
await self._transit_state(await self._state.on_exception())
5454
raise exception

hyx/circuitbreaker/states.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from datetime import datetime, timedelta
2-
from typing import Optional
32

43
from hyx.circuitbreaker.context import BreakerContext
54
from hyx.circuitbreaker.exceptions import BreakerFailing
@@ -110,7 +109,7 @@ def until(self) -> datetime:
110109
return self._failing_until
111110

112111
@property
113-
def remain(self) -> Optional[timedelta]:
112+
def remain(self) -> timedelta | None:
114113
"""
115114
Remaining time the breaker is going to fail
116115
"""

hyx/circuitbreaker/typing.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
from typing import Union
2-
3-
DelayT = Union[float, int]
1+
DelayT = float | int

hyx/events.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import asyncio
22
import traceback
33
import weakref
4-
from typing import Callable, Generic, List, Optional, Protocol, Sequence, TypeVar, Union, cast, runtime_checkable
4+
from collections.abc import Callable, Sequence
5+
from typing import Generic, Protocol, TypeVar, cast, runtime_checkable
56

67
ComponentT = TypeVar("ComponentT")
78
ListenerT = TypeVar("ListenerT")
89

9-
_EVENT_MANAGER: Optional["EventManager"] = None
10+
_EVENT_MANAGER: "EventManager | None" = None
1011

1112

1213
class EventManager:
@@ -61,13 +62,13 @@ class ListenerRegistry(Generic[ComponentT, ListenerT]):
6162
__slots__ = ("_listeners",)
6263

6364
def __init__(self) -> None:
64-
self._listeners: list[Union[ListenerT, ListenerFactoryT]] = []
65+
self._listeners: list[ListenerT | ListenerFactoryT] = []
6566

6667
@property
67-
def listeners(self) -> list[Union[ListenerT, ListenerFactoryT]]:
68+
def listeners(self) -> list[ListenerT | ListenerFactoryT]:
6869
return self._listeners
6970

70-
def register(self, listener: Union[ListenerT, ListenerFactoryT]) -> None:
71+
def register(self, listener: ListenerT | ListenerFactoryT) -> None:
7172
self._listeners.append(listener)
7273

7374

@@ -87,17 +88,17 @@ class EventDispatcher(Generic[ComponentT, ListenerT]):
8788

8889
def __init__(
8990
self,
90-
local_listeners: Optional[Sequence[Union[ListenerT, ListenerFactoryT]]] = None,
91-
global_listener_registry: Optional[ListenerRegistry] = None,
92-
event_manager: Optional["EventManager"] = None,
91+
local_listeners: Sequence[ListenerT | ListenerFactoryT] | None = None,
92+
global_listener_registry: ListenerRegistry | None = None,
93+
event_manager: "EventManager | None" = None,
9394
) -> None:
9495
self._event_manager = event_manager if event_manager else _EVENT_MANAGER
9596

9697
self._local_listeners = local_listeners or []
9798
self._global_listener_registry = global_listener_registry
9899

99-
self._component: Optional[ComponentT] = None
100-
self._inited_listeners: Optional[List[ListenerT]] = None
100+
self._component: ComponentT | None = None
101+
self._inited_listeners: list[ListenerT] | None = None
101102

102103
@property
103104
def as_listener(self) -> ListenerT:
@@ -148,7 +149,7 @@ async def execute_listeners(self, event_handler_name: str, *args, **kwargs) -> N
148149

149150
await asyncio.gather(*listeners_to_wakeup)
150151

151-
async def _get_or_init_listeners(self) -> List[ListenerT]:
152+
async def _get_or_init_listeners(self) -> list[ListenerT]:
152153
if self._inited_listeners is not None:
153154
return self._inited_listeners
154155

@@ -171,7 +172,7 @@ async def _get_or_init_listeners(self) -> List[ListenerT]:
171172
return self._inited_listeners
172173

173174

174-
def get_default_name(func: Optional[Callable] = None) -> str:
175+
def get_default_name(func: Callable | None = None) -> str:
175176
"""
176177
Get the default name of the component based on code context where it's being used
177178
"""

0 commit comments

Comments
 (0)