Skip to content

Commit e201ffa

Browse files
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
1 parent 63a4bb3 commit e201ffa

File tree

5 files changed

+42
-32
lines changed

5 files changed

+42
-32
lines changed

jupyter_server_proxy/config.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,11 @@ def _make_proxy_handler(sp: ServerProcess):
5454
Create an appropriate handler with given parameters
5555
"""
5656
if sp.command:
57-
cls = SuperviseAndRawSocketHandler if sp.raw_socket_proxy else SuperviseAndProxyHandler
57+
cls = (
58+
SuperviseAndRawSocketHandler
59+
if sp.raw_socket_proxy
60+
else SuperviseAndProxyHandler
61+
)
5862
args = dict(state={})
5963
elif not (sp.port or isinstance(sp.unix_socket, str)):
6064
warn(
@@ -122,13 +126,7 @@ def make_handlers(base_url, server_processes):
122126
handler = _make_proxy_handler(sp)
123127
if not handler:
124128
continue
125-
handlers.append(
126-
(
127-
ujoin(base_url, sp.name, r"(.*)"),
128-
handler,
129-
handler.kwargs
130-
)
131-
)
129+
handlers.append((ujoin(base_url, sp.name, r"(.*)"), handler, handler.kwargs))
132130
handlers.append((ujoin(base_url, sp.name), AddSlashHandler))
133131
return handlers
134132

@@ -159,9 +157,7 @@ def make_server_process(name, server_process_config, serverproxy_config):
159157
"rewrite_response",
160158
tuple(),
161159
),
162-
update_last_activity=server_process_config.get(
163-
"update_last_activity", True
164-
),
160+
update_last_activity=server_process_config.get("update_last_activity", True),
165161
raw_socket_proxy=server_process_config.get("raw_socket_proxy", False),
166162
)
167163

jupyter_server_proxy/rawsocket.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,17 @@
99

1010
import asyncio
1111

12-
from .handlers import NamedLocalProxyHandler, SuperviseAndProxyHandler
1312
from tornado import web
1413

14+
from .handlers import NamedLocalProxyHandler, SuperviseAndProxyHandler
15+
1516

1617
class RawSocketProtocol(asyncio.Protocol):
1718
"""
1819
A protocol handler for the proxied stream connection.
1920
Sends any received blocks directly as websocket messages.
2021
"""
22+
2123
def __init__(self, handler):
2224
self.handler = handler
2325

@@ -30,14 +32,18 @@ def data_received(self, data):
3032

3133
def connection_lost(self, exc):
3234
"Close the websocket connection."
33-
self.handler.log.info(f"Raw websocket {self.handler.name} connection lost: {exc}")
35+
self.handler.log.info(
36+
f"Raw websocket {self.handler.name} connection lost: {exc}"
37+
)
3438
self.handler.close()
3539

40+
3641
class RawSocketHandler(NamedLocalProxyHandler):
3742
"""
3843
HTTP handler that proxies websocket connections into a backend stream.
3944
All other HTTP requests return 405.
4045
"""
46+
4147
def _create_ws_connection(self, proto: asyncio.BaseProtocol):
4248
"Create the appropriate backend asyncio connection"
4349
loop = asyncio.get_running_loop()
@@ -46,17 +52,21 @@ def _create_ws_connection(self, proto: asyncio.BaseProtocol):
4652
return loop.create_unix_connection(proto, self.unix_socket)
4753
else:
4854
self.log.info(f"RawSocket {self.name} connecting to port {self.port}")
49-
return loop.create_connection(proto, 'localhost', self.port)
55+
return loop.create_connection(proto, "localhost", self.port)
5056

5157
async def proxy(self, port, path):
52-
raise web.HTTPError(405, "this raw_socket_proxy backend only supports websocket connections")
58+
raise web.HTTPError(
59+
405, "this raw_socket_proxy backend only supports websocket connections"
60+
)
5361

5462
async def proxy_open(self, host, port, proxied_path=""):
5563
"""
5664
Open the backend connection. host and port are ignored (as they are in
5765
the parent for unix sockets) since they are always passed known values.
5866
"""
59-
transp, proto = await self._create_ws_connection(lambda: RawSocketProtocol(self))
67+
transp, proto = await self._create_ws_connection(
68+
lambda: RawSocketProtocol(self)
69+
)
6070
self.ws_transp = transp
6171
self.ws_proto = proto
6272
self._record_activity()
@@ -66,8 +76,10 @@ def on_message(self, message):
6676
"Send websocket messages as stream writes, encoding if necessary."
6777
self._record_activity()
6878
if isinstance(message, str):
69-
message = message.encode('utf-8')
70-
self.ws_transp.write(message) # buffered non-blocking. should block (needs new enough tornado)
79+
message = message.encode("utf-8")
80+
self.ws_transp.write(
81+
message
82+
) # buffered non-blocking. should block (needs new enough tornado)
7183

7284
def on_ping(self, message):
7385
"No-op"
@@ -79,6 +91,7 @@ def on_close(self):
7991
if hasattr(self, "ws_transp"):
8092
self.ws_transp.close()
8193

94+
8295
class SuperviseAndRawSocketHandler(SuperviseAndProxyHandler, RawSocketHandler):
8396
async def _http_ready_func(self, p):
8497
# not really HTTP here, just try an empty connection

tests/resources/jupyter_server_config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,12 @@ def my_env():
132132
"python-proxyto54321-no-command": {"port": 54321},
133133
"python-rawsocket-tcp": {
134134
"command": [sys.executable, "./tests/resources/rawsocket.py", "{port}"],
135-
"raw_socket_proxy": True
135+
"raw_socket_proxy": True,
136136
},
137137
"python-rawsocket-unix": {
138138
"command": [sys.executable, "./tests/resources/rawsocket.py", "{unix_socket}"],
139139
"unix_socket": True,
140-
"raw_socket_proxy": True
140+
"raw_socket_proxy": True,
141141
},
142142
}
143143

tests/resources/rawsocket.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#!/usr/bin/env python
22

3-
import os
43
import socket
54
import sys
65

@@ -11,7 +10,7 @@
1110
try:
1211
port = int(where)
1312
family = socket.AF_INET
14-
addr = ('localhost', port)
13+
addr = ("localhost", port)
1514
except ValueError:
1615
family = socket.AF_UNIX
1716
addr = where

tests/test_proxies.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -506,18 +506,20 @@ def test_callable_environment_formatting(
506506
assert r.code == 200
507507

508508

509-
@pytest.mark.parametrize("rawsocket_type", [
510-
"tcp",
511-
pytest.param(
512-
"unix",
513-
marks=pytest.mark.skipif(
514-
sys.platform == "win32", reason="Unix socket not supported on Windows"
509+
@pytest.mark.parametrize(
510+
"rawsocket_type",
511+
[
512+
"tcp",
513+
pytest.param(
514+
"unix",
515+
marks=pytest.mark.skipif(
516+
sys.platform == "win32", reason="Unix socket not supported on Windows"
517+
),
515518
),
516-
),
517-
])
519+
],
520+
)
518521
async def test_server_proxy_rawsocket(
519-
rawsocket_type: str,
520-
a_server_port_and_token: Tuple[int, str]
522+
rawsocket_type: str, a_server_port_and_token: Tuple[int, str]
521523
) -> None:
522524
PORT, TOKEN = a_server_port_and_token
523525
url = f"ws://{LOCALHOST}:{PORT}/python-rawsocket-{rawsocket_type}/?token={TOKEN}"

0 commit comments

Comments
 (0)