Skip to content

Commit 047e794

Browse files
committed
feat: compile async ipc provider
1 parent cc6ac62 commit 047e794

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

faster_web3/providers/persistent/async_ipc.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
)
99
import sys
1010
from typing import (
11+
TYPE_CHECKING,
1112
Any,
1213
Final,
1314
Optional,
@@ -33,27 +34,34 @@
3334
get_default_ipc_path,
3435
)
3536

37+
if sys.platform == "win32":
38+
if TYPE_CHECKING:
39+
from faster_web3._utils.windows import NamedPipe
3640

37-
async def async_get_ipc_socket(
38-
ipc_path: str, read_buffer_limit: int
39-
) -> Tuple[asyncio.StreamReader, asyncio.StreamWriter]:
40-
if sys.platform == "win32":
41+
async def async_get_ipc_socket(
42+
ipc_path: str, read_buffer_limit: int
43+
) -> "NamedPipe":
4144
# On Windows named pipe is used. Simulate socket with it.
42-
from web3._utils.windows import (
45+
from faster_web3._utils.windows import (
4346
NamedPipe,
4447
)
4548

4649
return NamedPipe(ipc_path)
47-
else:
50+
51+
else:
52+
async def async_get_ipc_socket(
53+
ipc_path: str, read_buffer_limit: int
54+
) -> Tuple[asyncio.StreamReader, asyncio.StreamWriter]:
4855
return await asyncio.open_unix_connection(ipc_path, limit=read_buffer_limit)
4956

5057

58+
@final
5159
class AsyncIPCProvider(PersistentConnectionProvider):
52-
logger = logging.getLogger("faster_web3.providers.AsyncIPCProvider")
60+
logger: Final = logging.getLogger("faster_web3.providers.AsyncIPCProvider")
5361

54-
_reader: Optional[asyncio.StreamReader] = None
55-
_writer: Optional[asyncio.StreamWriter] = None
56-
_decoder: json.JSONDecoder = json.JSONDecoder()
62+
_reader: Optional[asyncio.StreamReader]
63+
_writer: Optional[asyncio.StreamWriter]
64+
_decoder: Final[json.JSONDecoder] = json.JSONDecoder()
5765

5866
def __init__(
5967
self,
@@ -71,7 +79,9 @@ def __init__(
7179
raise Web3TypeError("ipc_path must be of type string or pathlib.Path")
7280
self.ipc_path: Final = ipc_path_
7381
super().__init__(**kwargs)
74-
self.read_buffer_limit = read_buffer_limit
82+
self.read_buffer_limit: Final = read_buffer_limit
83+
self._reader = None
84+
self._writer = None
7585

7686
def __str__(self) -> str:
7787
return f"<{self.__class__.__name__} {self.ipc_path}>"

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
"faster_web3/contract/utils.py",
100100
"faster_web3/gas_strategies",
101101
"faster_web3/providers/eth_tester",
102+
"faster_web3/providers/persistent/async_ipc.py",
102103
"faster_web3/providers/persistent/persistent_connection.py",
103104
# "faster_web3/providers/persistent/request_processor.py",
104105
"faster_web3/providers/persistent/subscription_container.py",

0 commit comments

Comments
 (0)