Skip to content

Commit 6d5b3f8

Browse files
committed
fix
1 parent c8dd350 commit 6d5b3f8

File tree

2 files changed

+25
-23
lines changed

2 files changed

+25
-23
lines changed

faster_web3/providers/persistent/subscription_manager.py

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import asyncio
2+
import functools
23
import logging
34
from typing import (
45
TYPE_CHECKING,
@@ -139,6 +140,7 @@ async def subscribe(
139140
self, subscriptions: Sequence[EthSubscription[Any]]
140141
) -> List[HexStr]: ...
141142

143+
@functools.singledispatchmethod
142144
async def subscribe(
143145
self, subscriptions: Union[EthSubscription[Any], Sequence[EthSubscription[Any]]]
144146
) -> Union[HexStr, List[HexStr]]:
@@ -149,28 +151,30 @@ async def subscribe(
149151
:type subscriptions: Union[EthSubscription, Sequence[EthSubscription]]
150152
:return:
151153
"""
152-
if isinstance(subscriptions, EthSubscription):
153-
subscriptions.manager = self
154-
self._validate_and_normalize_label(subscriptions)
155-
sub_id = await self._w3.eth._subscribe(*subscriptions.subscription_params)
156-
subscriptions._id = sub_id
157-
self._add_subscription(subscriptions)
158-
self.logger.info(
159-
"Successfully subscribed to subscription:\n label: %s\n id: %s",
160-
subscriptions.label,
161-
sub_id,
162-
)
163-
return sub_id
164-
elif isinstance(subscriptions, Sequence):
165-
if len(subscriptions) == 0:
166-
raise Web3ValueError("No subscriptions provided.")
167-
168-
sub_ids: List[HexStr] = []
169-
for sub in subscriptions:
170-
sub_ids.append(await self.subscribe(sub))
171-
return sub_ids
172154
raise Web3TypeError("Expected a Subscription or a sequence of Subscriptions.")
173155

156+
@subscribe.register(EthSubscription)
157+
async def subscribe(self, subscription: EthSubscription[Any]) -> HexStr:
158+
subscription.manager = self
159+
self._validate_and_normalize_label(subscription)
160+
sub_id = await self._w3.eth._subscribe(*subscription.subscription_params)
161+
subscription._id = sub_id
162+
self._add_subscription(subscription)
163+
self.logger.info(
164+
"Successfully subscribed to subscription:\n label: %s\n id: %s",
165+
subscription.label,
166+
sub_id,
167+
)
168+
return sub_id
169+
170+
@subscribe.register(Sequence)
171+
async def subscribe(
172+
self, subscriptions: Sequence[EthSubscription[Any]]
173+
) -> List[HexStr]:
174+
if len(subscriptions) == 0:
175+
raise Web3ValueError("No subscriptions provided.")
176+
return [await sub for sub in map(self.subscribe, subscriptions)]
177+
174178
@overload
175179
async def unsubscribe(self, subscriptions: EthSubscription[Any]) -> bool: ...
176180

faster_web3/providers/persistent/websocket.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,7 @@ def __init__(
7676
self.use_text_frames: Final = use_text_frames
7777
self._ws: Optional[WebSocketClientProtocol] = None
7878

79-
if not any(
80-
map(endpoint.startswith, VALID_WEBSOCKET_URI_PREFIXES)
81-
):
79+
if not any(map(endpoint.startswith, VALID_WEBSOCKET_URI_PREFIXES)):
8280
raise Web3ValidationError(
8381
"WebSocket endpoint uri must begin with 'ws://' or 'wss://': "
8482
f"{self.endpoint_uri}"

0 commit comments

Comments
 (0)