From f8244e504f271c5bc1c0f1b0c563412699a5bba8 Mon Sep 17 00:00:00 2001 From: s0600204 Date: Fri, 3 Jan 2025 21:11:38 +0000 Subject: [PATCH] Expect Dispatcher replies to be tuples, not lists As mentioned in issue 176, according to the documentation one of the ways a callback function may pass a reply back to a client is by returning a message encapsulated thusly: `tuple(
, )`. Whilst the code for the UDP servers does conform to this, the code to TCP servers was expecting `list(
, )` in all cases. This PR resolves that, updating the tests as well. --- pythonosc/osc_tcp_server.py | 8 ++++---- pythonosc/test/test_osc_tcp_server.py | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pythonosc/osc_tcp_server.py b/pythonosc/osc_tcp_server.py index 56e0816..aec674f 100644 --- a/pythonosc/osc_tcp_server.py +++ b/pythonosc/osc_tcp_server.py @@ -75,7 +75,7 @@ def handle(self) -> None: ) # resp = _call_handlers_for_packet(data, self.server.dispatcher) for r in resp: - if not isinstance(r, list): + if not isinstance(r, tuple): r = [r] msg = osc_message_builder.build_msg(r[0], r[1:]) b = struct.pack("!I", len(msg.dgram)) @@ -117,7 +117,7 @@ def handle(self) -> None: p, self.client_address ) for r in resp: - if not isinstance(r, list): + if not isinstance(r, tuple): r = [r] msg = osc_message_builder.build_msg(r[0], r[1:]) self.request.sendall(slip.encode(msg.dgram)) @@ -284,7 +284,7 @@ async def handle1_0( buf, client_address ) for r in result: - if not isinstance(r, list): + if not isinstance(r, tuple): r = [r] msg = osc_message_builder.build_msg(r[0], r[1:]) b = struct.pack("!I", len(msg.dgram)) @@ -319,7 +319,7 @@ async def handle_1_1( p, client_address ) for r in result: - if not isinstance(r, list): + if not isinstance(r, tuple): r = [r] msg = osc_message_builder.build_msg(r[0], r[1:]) writer.write(slip.encode(msg.dgram)) diff --git a/pythonosc/test/test_osc_tcp_server.py b/pythonosc/test/test_osc_tcp_server.py index f1ed2d9..dd1d1d8 100644 --- a/pythonosc/test/test_osc_tcp_server.py +++ b/pythonosc/test/test_osc_tcp_server.py @@ -95,12 +95,12 @@ def respond(*args, **kwargs): def test_response_with_args(self): def respond(*args, **kwargs): - return [ + return ( "/SYNC", 1, "2", 3.0, - ] + ) self.dispatcher.map("/SYNC", respond) mock_sock = mock.Mock() @@ -208,12 +208,12 @@ def respond(*args, **kwargs): def test_response_with_args(self): def respond(*args, **kwargs): - return [ + return ( "/SYNC", 1, "2", 3.0, - ] + ) self.dispatcher.map("/SYNC", respond) mock_sock = mock.Mock() @@ -314,12 +314,12 @@ def respond(*args, **kwargs): async def test_response_with_args(self): def respond(*args, **kwargs): - return [ + return ( "/SYNC", 1, "2", 3.0, - ] + ) self.dispatcher.map("/SYNC", respond) self.mock_reader.read.side_effect = [_SIMPLE_MSG_NO_PARAMS_1_1, b""] @@ -332,12 +332,12 @@ def respond(*args, **kwargs): async def test_async_response_with_args(self): async def respond(*args, **kwargs): - return [ + return ( "/SYNC", 1, "2", 3.0, - ] + ) self.dispatcher.map("/SYNC", respond) self.mock_reader.read.side_effect = [_SIMPLE_MSG_NO_PARAMS_1_1, b""]