We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Default IPC path is incorrect on Windows with Anaconda 2023.07
* Version: 6.6.1
* Python: 3.11
* OS: win

I updated my Anaconda to the latest version recently, which uses Python 3.11. 
web3.py is no longer able to set the default IPC path for IPCProvider on Windows. The problem and fix are as follows:

In [ipc.py](https://github.com/ethereum/web3.py/blob/4b509a7d5fce0b9a67dbe93151e8b8a01e83b3cc/web3/providers/ipc.py#L105),  line 105
`ipc_path = os.path.join("\\\\", ".", "pipe", "geth.ipc")`
makes the default IPC path ` '\\\\\\.\\pipe\\geth.ipc'`, which cannot be found with `os.path.exists(ipc_path)` in the next line


### How can it be fixed?
In ipc.py, replace line 105
`ipc_path = os.path.join("\\\\", ".", "pipe", "geth.ipc")`
with
`ipc_path = '\\\.\pipe\geth.ipc'` as is described in the [documentation](https://web3py.readthedocs.io/en/latest/providers.html#web3.providers.ipc.IPCProvider).


```[tasklist]
### Tasks
```


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `web3/providers/ipc.py`
Content:
```
1 from json import (
2     JSONDecodeError,
3 )
4 import logging
5 import os
6 from pathlib import (
7     Path,
8 )
9 import socket
10 import sys
11 import threading
12 from types import (
13     TracebackType,
14 )
15 from typing import (
16     Any,
17     Optional,
18     Type,
19     Union,
20 )
21 
22 from web3._utils.threads import (
23     Timeout,
24 )
25 from web3.types import (
26     RPCEndpoint,
27     RPCResponse,
28 )
29 
30 from .base import (
31     JSONBaseProvider,
32 )
33 
34 
35 def get_ipc_socket(ipc_path: str, timeout: float = 2.0) -> socket.socket:
36     if sys.platform == "win32":
37         # On Windows named pipe is used. Simulate socket with it.
38         from web3._utils.windows import (
39             NamedPipe,
40         )
41 
42         return NamedPipe(ipc_path)
43     else:
44         sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
45         sock.connect(ipc_path)
46         sock.settimeout(timeout)
47         return sock
48 
49 
50 class PersistantSocket:
51     sock = None
52 
53     def __init__(self, ipc_path: str) -> None:
54         self.ipc_path = ipc_path
55 
56     def __enter__(self) -> socket.socket:
57         if not self.ipc_path:
58             raise FileNotFoundError(
59                 f"cannot connect to IPC socket at path: {self.ipc_path!r}"
60             )
61 
62         if not self.sock:
63             self.sock = self._open()
64         return self.sock
65 
66     def __exit__(
67         self,
68         exc_type: Type[BaseException],
69         exc_value: BaseException,
70         traceback: TracebackType,
71     ) -> None:
72         # only close the socket if there was an error
73         if exc_value is not None:
74             try:
75                 self.sock.close()
76             except Exception:
77                 pass
78             self.sock = None
79 
80     def _open(self) -> socket.socket:
81         return get_ipc_socket(self.ipc_path)
82 
83     def reset(self) -> socket.socket:
84         self.sock.close()
85         self.sock = self._open()
86         return self.sock
87 
88 
89 def get_default_ipc_path() -> Optional[str]:
90     if sys.platform == "darwin":
91         ipc_path = os.path.expanduser(
92             os.path.join("~", "Library", "Ethereum", "geth.ipc")
93         )
94         if os.path.exists(ipc_path):
95             return ipc_path
96         return None
97 
98     elif sys.platform.startswith("linux") or sys.platform.startswith("freebsd"):
99         ipc_path = os.path.expanduser(os.path.join("~", ".ethereum", "geth.ipc"))
100         if os.path.exists(ipc_path):
101             return ipc_path
102         return None
103 
104     elif sys.platform == "win32":
105         ipc_path = os.path.join("\\\\", ".", "pipe", "geth.ipc")
106         if os.path.exists(ipc_path):
107             return ipc_path
108         return None
109 
110     else:
111         raise ValueError(
112             f"Unsupported platform '{sys.platform}'.  Only darwin/linux/win32/"
113             "freebsd are supported.  You must specify the ipc_path"
114         )
115 
116 
117 def get_dev_ipc_path() -> Optional[str]:
118     if os.environ.get("WEB3_PROVIDER_URI", ""):
119         ipc_path = os.environ.get("WEB3_PROVIDER_URI")
120         if os.path.exists(ipc_path):
121             return ipc_path
122         return None
123 
124     elif sys.platform == "darwin":
125         tmpdir = os.environ.get("TMPDIR", "")
126         ipc_path = os.path.expanduser(os.path.join(tmpdir, "geth.ipc"))
127         if os.path.exists(ipc_path):
128             return ipc_path
129         return None
130 
131     elif sys.platform.startswith("linux") or sys.platform.startswith("freebsd"):
132         ipc_path = os.path.expanduser(os.path.join("/tmp", "geth.ipc"))
133         if os.path.exists(ipc_path):
134             return ipc_path
135         return None
136 
137     elif sys.platform == "win32":
138         ipc_path = os.path.join("\\\\", ".", "pipe", "geth.ipc")
139         if os.path.exists(ipc_path):
140             return ipc_path
141 
142     else:
143         raise ValueError(
144             f"Unsupported platform '{sys.platform}'.  Only darwin/linux/win32/"
145             "freebsd are supported.  You must specify the ipc_path"
146         )
147 
148 
149 class IPCProvider(JSONBaseProvider):
150     logger = logging.getLogger("web3.providers.IPCProvider")
151     _socket = None
152 
153     def __init__(
154         self,
155         ipc_path: Union[str, Path] = None,
156         timeout: int = 10,
157         *args: Any,
158         **kwargs: Any,
159     ) -> None:
160         if ipc_path is None:
161             self.ipc_path = get_default_ipc_path()
162         elif isinstance(ipc_path, str) or isinstance(ipc_path, Path):
163             self.ipc_path = str(Path(ipc_path).expanduser().resolve())
164         else:
165             raise TypeError("ipc_path must be of type string or pathlib.Path")
166 
167         self.timeout = timeout
168         self._lock = threading.Lock()
169         self._socket = PersistantSocket(self.ipc_path)
170         super().__init__()
171 
172     def __str__(self) -> str:
173         return f"<{self.__class__.__name__} {self.ipc_path}>"
174 
175     def make_request(self, method: RPCEndpoint, params: Any) -> RPCResponse:
176         self.logger.debug(
177             f"Making request IPC. Path: {self.ipc_path}, Method: {method}"
178         )
179         request = self.encode_rpc_request(method, params)
180 
181         with self._lock, self._socket as sock:
182             try:
183                 sock.sendall(request)
184             except BrokenPipeError:
185                 # one extra attempt, then give up
186                 sock = self._socket.reset()
187                 sock.sendall(request)
188 
189             raw_response = b""
190             with Timeout(self.timeout) as timeout:
191                 while True:
192                     try:
193                         raw_response += sock.recv(4096)
194                     except socket.timeout:
195                         timeout.sleep(0)
196                         continue
197                     if raw_response == b"":
198                         timeout.sleep(0)
199                     elif has_valid_json_rpc_ending(raw_response):
200                         try:
201                             response = self.decode_rpc_response(raw_response)
202                         except JSONDecodeError:
203                             timeout.sleep(0)
204                             continue
205                         else:
206                             return response
207                     else:
208                         timeout.sleep(0)
209                         continue
210 
211 
212 # A valid JSON RPC response can only end in } or ] http://www.jsonrpc.org/specification
213 def has_valid_json_rpc_ending(raw_response: bytes) -> bool:
214     stripped_raw_response = raw_response.rstrip()
215     for valid_ending in [b"}", b"]"]:
216         if stripped_raw_response.endswith(valid_ending):
217             return True
218     else:
219         return False
220
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/web3/providers/ipc.py b/web3/providers/ipc.py
--- a/web3/providers/ipc.py
+++ b/web3/providers/ipc.py
@@ -102,7 +102,7 @@
         return None
 
     elif sys.platform == "win32":
-        ipc_path = os.path.join("\\\\", ".", "pipe", "geth.ipc")
+        ipc_path = r"\\.\pipe\geth.ipc"
         if os.path.exists(ipc_path):
             return ipc_path
         return None

{"golden_diff": "diff --git a/web3/providers/ipc.py b/web3/providers/ipc.py\n--- a/web3/providers/ipc.py\n+++ b/web3/providers/ipc.py\n@@ -102,7 +102,7 @@\n         return None\n \n     elif sys.platform == \"win32\":\n-        ipc_path = os.path.join(\"\\\\\\\\\", \".\", \"pipe\", \"geth.ipc\")\n+        ipc_path = r\"\\\\.\\pipe\\geth.ipc\"\n         if os.path.exists(ipc_path):\n             return ipc_path\n         return None\n", "issue": "Default IPC path is incorrect on Windows with Anaconda 2023.07\n* Version: 6.6.1\r\n* Python: 3.11\r\n* OS: win\r\n\r\nI updated my Anaconda to the latest version recently, which uses Python 3.11. \r\nweb3.py is no longer able to set the default IPC path for IPCProvider on Windows. The problem and fix are as follows:\r\n\r\nIn [ipc.py](https://github.com/ethereum/web3.py/blob/4b509a7d5fce0b9a67dbe93151e8b8a01e83b3cc/web3/providers/ipc.py#L105),  line 105\r\n`ipc_path = os.path.join(\"\\\\\\\\\", \".\", \"pipe\", \"geth.ipc\")`\r\nmakes the default IPC path ` '\\\\\\\\\\\\.\\\\pipe\\\\geth.ipc'`, which cannot be found with `os.path.exists(ipc_path)` in the next line\r\n\r\n\r\n### How can it be fixed?\r\nIn ipc.py, replace line 105\r\n`ipc_path = os.path.join(\"\\\\\\\\\", \".\", \"pipe\", \"geth.ipc\")`\r\nwith\r\n`ipc_path = '\\\\\\.\\pipe\\geth.ipc'` as is described in the [documentation](https://web3py.readthedocs.io/en/latest/providers.html#web3.providers.ipc.IPCProvider).\r\n\r\n\n```[tasklist]\n### Tasks\n```\n\n", "before_files": [{"content": "from json import (\n    JSONDecodeError,\n)\nimport logging\nimport os\nfrom pathlib import (\n    Path,\n)\nimport socket\nimport sys\nimport threading\nfrom types import (\n    TracebackType,\n)\nfrom typing import (\n    Any,\n    Optional,\n    Type,\n    Union,\n)\n\nfrom web3._utils.threads import (\n    Timeout,\n)\nfrom web3.types import (\n    RPCEndpoint,\n    RPCResponse,\n)\n\nfrom .base import (\n    JSONBaseProvider,\n)\n\n\ndef get_ipc_socket(ipc_path: str, timeout: float = 2.0) -> socket.socket:\n    if sys.platform == \"win32\":\n        # On Windows named pipe is used. Simulate socket with it.\n        from web3._utils.windows import (\n            NamedPipe,\n        )\n\n        return NamedPipe(ipc_path)\n    else:\n        sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)\n        sock.connect(ipc_path)\n        sock.settimeout(timeout)\n        return sock\n\n\nclass PersistantSocket:\n    sock = None\n\n    def __init__(self, ipc_path: str) -> None:\n        self.ipc_path = ipc_path\n\n    def __enter__(self) -> socket.socket:\n        if not self.ipc_path:\n            raise FileNotFoundError(\n                f\"cannot connect to IPC socket at path: {self.ipc_path!r}\"\n            )\n\n        if not self.sock:\n            self.sock = self._open()\n        return self.sock\n\n    def __exit__(\n        self,\n        exc_type: Type[BaseException],\n        exc_value: BaseException,\n        traceback: TracebackType,\n    ) -> None:\n        # only close the socket if there was an error\n        if exc_value is not None:\n            try:\n                self.sock.close()\n            except Exception:\n                pass\n            self.sock = None\n\n    def _open(self) -> socket.socket:\n        return get_ipc_socket(self.ipc_path)\n\n    def reset(self) -> socket.socket:\n        self.sock.close()\n        self.sock = self._open()\n        return self.sock\n\n\ndef get_default_ipc_path() -> Optional[str]:\n    if sys.platform == \"darwin\":\n        ipc_path = os.path.expanduser(\n            os.path.join(\"~\", \"Library\", \"Ethereum\", \"geth.ipc\")\n        )\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    elif sys.platform.startswith(\"linux\") or sys.platform.startswith(\"freebsd\"):\n        ipc_path = os.path.expanduser(os.path.join(\"~\", \".ethereum\", \"geth.ipc\"))\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    elif sys.platform == \"win32\":\n        ipc_path = os.path.join(\"\\\\\\\\\", \".\", \"pipe\", \"geth.ipc\")\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    else:\n        raise ValueError(\n            f\"Unsupported platform '{sys.platform}'.  Only darwin/linux/win32/\"\n            \"freebsd are supported.  You must specify the ipc_path\"\n        )\n\n\ndef get_dev_ipc_path() -> Optional[str]:\n    if os.environ.get(\"WEB3_PROVIDER_URI\", \"\"):\n        ipc_path = os.environ.get(\"WEB3_PROVIDER_URI\")\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    elif sys.platform == \"darwin\":\n        tmpdir = os.environ.get(\"TMPDIR\", \"\")\n        ipc_path = os.path.expanduser(os.path.join(tmpdir, \"geth.ipc\"))\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    elif sys.platform.startswith(\"linux\") or sys.platform.startswith(\"freebsd\"):\n        ipc_path = os.path.expanduser(os.path.join(\"/tmp\", \"geth.ipc\"))\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    elif sys.platform == \"win32\":\n        ipc_path = os.path.join(\"\\\\\\\\\", \".\", \"pipe\", \"geth.ipc\")\n        if os.path.exists(ipc_path):\n            return ipc_path\n\n    else:\n        raise ValueError(\n            f\"Unsupported platform '{sys.platform}'.  Only darwin/linux/win32/\"\n            \"freebsd are supported.  You must specify the ipc_path\"\n        )\n\n\nclass IPCProvider(JSONBaseProvider):\n    logger = logging.getLogger(\"web3.providers.IPCProvider\")\n    _socket = None\n\n    def __init__(\n        self,\n        ipc_path: Union[str, Path] = None,\n        timeout: int = 10,\n        *args: Any,\n        **kwargs: Any,\n    ) -> None:\n        if ipc_path is None:\n            self.ipc_path = get_default_ipc_path()\n        elif isinstance(ipc_path, str) or isinstance(ipc_path, Path):\n            self.ipc_path = str(Path(ipc_path).expanduser().resolve())\n        else:\n            raise TypeError(\"ipc_path must be of type string or pathlib.Path\")\n\n        self.timeout = timeout\n        self._lock = threading.Lock()\n        self._socket = PersistantSocket(self.ipc_path)\n        super().__init__()\n\n    def __str__(self) -> str:\n        return f\"<{self.__class__.__name__} {self.ipc_path}>\"\n\n    def make_request(self, method: RPCEndpoint, params: Any) -> RPCResponse:\n        self.logger.debug(\n            f\"Making request IPC. Path: {self.ipc_path}, Method: {method}\"\n        )\n        request = self.encode_rpc_request(method, params)\n\n        with self._lock, self._socket as sock:\n            try:\n                sock.sendall(request)\n            except BrokenPipeError:\n                # one extra attempt, then give up\n                sock = self._socket.reset()\n                sock.sendall(request)\n\n            raw_response = b\"\"\n            with Timeout(self.timeout) as timeout:\n                while True:\n                    try:\n                        raw_response += sock.recv(4096)\n                    except socket.timeout:\n                        timeout.sleep(0)\n                        continue\n                    if raw_response == b\"\":\n                        timeout.sleep(0)\n                    elif has_valid_json_rpc_ending(raw_response):\n                        try:\n                            response = self.decode_rpc_response(raw_response)\n                        except JSONDecodeError:\n                            timeout.sleep(0)\n                            continue\n                        else:\n                            return response\n                    else:\n                        timeout.sleep(0)\n                        continue\n\n\n# A valid JSON RPC response can only end in } or ] http://www.jsonrpc.org/specification\ndef has_valid_json_rpc_ending(raw_response: bytes) -> bool:\n    stripped_raw_response = raw_response.rstrip()\n    for valid_ending in [b\"}\", b\"]\"]:\n        if stripped_raw_response.endswith(valid_ending):\n            return True\n    else:\n        return False\n", "path": "web3/providers/ipc.py"}], "after_files": [{"content": "from json import (\n    JSONDecodeError,\n)\nimport logging\nimport os\nfrom pathlib import (\n    Path,\n)\nimport socket\nimport sys\nimport threading\nfrom types import (\n    TracebackType,\n)\nfrom typing import (\n    Any,\n    Optional,\n    Type,\n    Union,\n)\n\nfrom web3._utils.threads import (\n    Timeout,\n)\nfrom web3.types import (\n    RPCEndpoint,\n    RPCResponse,\n)\n\nfrom .base import (\n    JSONBaseProvider,\n)\n\n\ndef get_ipc_socket(ipc_path: str, timeout: float = 2.0) -> socket.socket:\n    if sys.platform == \"win32\":\n        # On Windows named pipe is used. Simulate socket with it.\n        from web3._utils.windows import (\n            NamedPipe,\n        )\n\n        return NamedPipe(ipc_path)\n    else:\n        sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)\n        sock.connect(ipc_path)\n        sock.settimeout(timeout)\n        return sock\n\n\nclass PersistantSocket:\n    sock = None\n\n    def __init__(self, ipc_path: str) -> None:\n        self.ipc_path = ipc_path\n\n    def __enter__(self) -> socket.socket:\n        if not self.ipc_path:\n            raise FileNotFoundError(\n                f\"cannot connect to IPC socket at path: {self.ipc_path!r}\"\n            )\n\n        if not self.sock:\n            self.sock = self._open()\n        return self.sock\n\n    def __exit__(\n        self,\n        exc_type: Type[BaseException],\n        exc_value: BaseException,\n        traceback: TracebackType,\n    ) -> None:\n        # only close the socket if there was an error\n        if exc_value is not None:\n            try:\n                self.sock.close()\n            except Exception:\n                pass\n            self.sock = None\n\n    def _open(self) -> socket.socket:\n        return get_ipc_socket(self.ipc_path)\n\n    def reset(self) -> socket.socket:\n        self.sock.close()\n        self.sock = self._open()\n        return self.sock\n\n\ndef get_default_ipc_path() -> Optional[str]:\n    if sys.platform == \"darwin\":\n        ipc_path = os.path.expanduser(\n            os.path.join(\"~\", \"Library\", \"Ethereum\", \"geth.ipc\")\n        )\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    elif sys.platform.startswith(\"linux\") or sys.platform.startswith(\"freebsd\"):\n        ipc_path = os.path.expanduser(os.path.join(\"~\", \".ethereum\", \"geth.ipc\"))\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    elif sys.platform == \"win32\":\n        ipc_path = r\"\\\\.\\pipe\\geth.ipc\"\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    else:\n        raise ValueError(\n            f\"Unsupported platform '{sys.platform}'.  Only darwin/linux/win32/\"\n            \"freebsd are supported.  You must specify the ipc_path\"\n        )\n\n\ndef get_dev_ipc_path() -> Optional[str]:\n    if os.environ.get(\"WEB3_PROVIDER_URI\", \"\"):\n        ipc_path = os.environ.get(\"WEB3_PROVIDER_URI\")\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    elif sys.platform == \"darwin\":\n        tmpdir = os.environ.get(\"TMPDIR\", \"\")\n        ipc_path = os.path.expanduser(os.path.join(tmpdir, \"geth.ipc\"))\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    elif sys.platform.startswith(\"linux\") or sys.platform.startswith(\"freebsd\"):\n        ipc_path = os.path.expanduser(os.path.join(\"/tmp\", \"geth.ipc\"))\n        if os.path.exists(ipc_path):\n            return ipc_path\n        return None\n\n    elif sys.platform == \"win32\":\n        ipc_path = os.path.join(\"\\\\\\\\\", \".\", \"pipe\", \"geth.ipc\")\n        if os.path.exists(ipc_path):\n            return ipc_path\n\n    else:\n        raise ValueError(\n            f\"Unsupported platform '{sys.platform}'.  Only darwin/linux/win32/\"\n            \"freebsd are supported.  You must specify the ipc_path\"\n        )\n\n\nclass IPCProvider(JSONBaseProvider):\n    logger = logging.getLogger(\"web3.providers.IPCProvider\")\n    _socket = None\n\n    def __init__(\n        self,\n        ipc_path: Union[str, Path] = None,\n        timeout: int = 10,\n        *args: Any,\n        **kwargs: Any,\n    ) -> None:\n        if ipc_path is None:\n            self.ipc_path = get_default_ipc_path()\n        elif isinstance(ipc_path, str) or isinstance(ipc_path, Path):\n            self.ipc_path = str(Path(ipc_path).expanduser().resolve())\n        else:\n            raise TypeError(\"ipc_path must be of type string or pathlib.Path\")\n\n        self.timeout = timeout\n        self._lock = threading.Lock()\n        self._socket = PersistantSocket(self.ipc_path)\n        super().__init__()\n\n    def __str__(self) -> str:\n        return f\"<{self.__class__.__name__} {self.ipc_path}>\"\n\n    def make_request(self, method: RPCEndpoint, params: Any) -> RPCResponse:\n        self.logger.debug(\n            f\"Making request IPC. Path: {self.ipc_path}, Method: {method}\"\n        )\n        request = self.encode_rpc_request(method, params)\n\n        with self._lock, self._socket as sock:\n            try:\n                sock.sendall(request)\n            except BrokenPipeError:\n                # one extra attempt, then give up\n                sock = self._socket.reset()\n                sock.sendall(request)\n\n            raw_response = b\"\"\n            with Timeout(self.timeout) as timeout:\n                while True:\n                    try:\n                        raw_response += sock.recv(4096)\n                    except socket.timeout:\n                        timeout.sleep(0)\n                        continue\n                    if raw_response == b\"\":\n                        timeout.sleep(0)\n                    elif has_valid_json_rpc_ending(raw_response):\n                        try:\n                            response = self.decode_rpc_response(raw_response)\n                        except JSONDecodeError:\n                            timeout.sleep(0)\n                            continue\n                        else:\n                            return response\n                    else:\n                        timeout.sleep(0)\n                        continue\n\n\n# A valid JSON RPC response can only end in } or ] http://www.jsonrpc.org/specification\ndef has_valid_json_rpc_ending(raw_response: bytes) -> bool:\n    stripped_raw_response = raw_response.rstrip()\n    for valid_ending in [b\"}\", b\"]\"]:\n        if stripped_raw_response.endswith(valid_ending):\n            return True\n    else:\n        return False\n", "path": "web3/providers/ipc.py"}]}