From c4452590fdd6a497f9186447ccddd2505d3f5473 Mon Sep 17 00:00:00 2001 From: farmio Date: Sat, 27 Mar 2021 21:15:29 +0100 Subject: [PATCH] move RequestResponse to its own submodule this should be only used by xknx.io.Tunnel and tests --- examples/example_disconnect.py | 3 ++- test/io_tests/connect_test.py | 3 ++- test/io_tests/connectionstate_test.py | 3 ++- test/io_tests/disconnect_test.py | 3 ++- test/io_tests/request_response_test.py | 11 ++++++++--- test/io_tests/tunnelling_test.py | 3 ++- test/xknx_test.py | 3 +-- xknx/io/__init__.py | 7 +------ xknx/io/request_response/__init__.py | 10 ++++++++++ xknx/io/{ => request_response}/connect.py | 3 +-- xknx/io/{ => request_response}/connectionstate.py | 5 ++--- xknx/io/{ => request_response}/disconnect.py | 3 +-- xknx/io/{ => request_response}/request_response.py | 3 +-- xknx/io/{ => request_response}/tunnelling.py | 3 +-- xknx/io/tunnel.py | 5 +---- 15 files changed, 37 insertions(+), 31 deletions(-) create mode 100644 xknx/io/request_response/__init__.py rename xknx/io/{ => request_response}/connect.py (97%) rename xknx/io/{ => request_response}/connectionstate.py (93%) rename xknx/io/{ => request_response}/disconnect.py (96%) rename xknx/io/{ => request_response}/request_response.py (98%) rename xknx/io/{ => request_response}/tunnelling.py (97%) diff --git a/examples/example_disconnect.py b/examples/example_disconnect.py index 71dccf098e..789863d176 100644 --- a/examples/example_disconnect.py +++ b/examples/example_disconnect.py @@ -2,7 +2,8 @@ import asyncio from xknx import XKNX -from xknx.io import ConnectionState, Disconnect, GatewayScanner, UDPClient +from xknx.io import GatewayScanner, UDPClient +from xknx.io.request_response import ConnectionState, Disconnect async def main(): diff --git a/test/io_tests/connect_test.py b/test/io_tests/connect_test.py index ef52d9e2eb..172dbf7307 100644 --- a/test/io_tests/connect_test.py +++ b/test/io_tests/connect_test.py @@ -4,7 +4,8 @@ from unittest.mock import patch from xknx import XKNX -from xknx.io import Connect, UDPClient +from xknx.io import UDPClient +from xknx.io.request_response import Connect from xknx.knxip import ( HPAI, ConnectRequest, diff --git a/test/io_tests/connectionstate_test.py b/test/io_tests/connectionstate_test.py index c2675e1b3d..68d1c3c68d 100644 --- a/test/io_tests/connectionstate_test.py +++ b/test/io_tests/connectionstate_test.py @@ -4,7 +4,8 @@ from unittest.mock import patch from xknx import XKNX -from xknx.io import ConnectionState, UDPClient +from xknx.io import UDPClient +from xknx.io.request_response import ConnectionState from xknx.knxip import ( HPAI, ConnectionStateRequest, diff --git a/test/io_tests/disconnect_test.py b/test/io_tests/disconnect_test.py index 855f15a606..625f670741 100644 --- a/test/io_tests/disconnect_test.py +++ b/test/io_tests/disconnect_test.py @@ -4,7 +4,8 @@ from unittest.mock import patch from xknx import XKNX -from xknx.io import Disconnect, UDPClient +from xknx.io import UDPClient +from xknx.io.request_response import Disconnect from xknx.knxip import ( HPAI, DisconnectRequest, diff --git a/test/io_tests/request_response_test.py b/test/io_tests/request_response_test.py index f172dbd94d..ed22598275 100644 --- a/test/io_tests/request_response_test.py +++ b/test/io_tests/request_response_test.py @@ -4,7 +4,8 @@ from unittest.mock import MagicMock, patch from xknx import XKNX -from xknx.io import RequestResponse, UDPClient +from xknx.io import UDPClient +from xknx.io.request_response import RequestResponse from xknx.knxip import DisconnectResponse, KNXIPBody @@ -39,7 +40,9 @@ def test_create_knxipframe_err(self): self.loop.run_until_complete(request_response.start()) @patch("logging.Logger.debug") - @patch("xknx.io.RequestResponse.send_request", new_callable=AsyncMock) + @patch( + "xknx.io.request_response.RequestResponse.send_request", new_callable=AsyncMock + ) def test_request_response_timeout(self, _send_request_mock, logger_debug_mock): """Test RequestResponse: timeout. No callback shall be left.""" xknx = XKNX() @@ -58,7 +61,9 @@ def test_request_response_timeout(self, _send_request_mock, logger_debug_mock): # Callback was removed again self.assertEqual(udp_client.callbacks, []) - @patch("xknx.io.RequestResponse.send_request", new_callable=AsyncMock) + @patch( + "xknx.io.request_response.RequestResponse.send_request", new_callable=AsyncMock + ) def test_request_response_cancelled(self, _send_request_mock): """Test RequestResponse: task cancelled. No callback shall be left.""" xknx = XKNX() diff --git a/test/io_tests/tunnelling_test.py b/test/io_tests/tunnelling_test.py index a56783a8ee..72b7a512a2 100644 --- a/test/io_tests/tunnelling_test.py +++ b/test/io_tests/tunnelling_test.py @@ -5,7 +5,8 @@ from xknx import XKNX from xknx.dpt import DPTArray -from xknx.io import Tunnelling, UDPClient +from xknx.io import UDPClient +from xknx.io.request_response import Tunnelling from xknx.knxip import ( ErrorCode, KNXIPFrame, diff --git a/test/xknx_test.py b/test/xknx_test.py index 5facb22252..c003834737 100644 --- a/test/xknx_test.py +++ b/test/xknx_test.py @@ -5,11 +5,10 @@ from unittest.mock import MagicMock, patch from xknx import XKNX - -# pylint: disable=too-many-public-methods,invalid-name,useless-super-delegation,protected-access from xknx.io import ConnectionConfig, ConnectionType +# pylint: disable=too-many-public-methods,invalid-name,useless-super-delegation,protected-access class AsyncMock(MagicMock): """Async Mock.""" diff --git a/xknx/io/__init__.py b/xknx/io/__init__.py index 30ad392946..4d757b6bd8 100644 --- a/xknx/io/__init__.py +++ b/xknx/io/__init__.py @@ -4,19 +4,14 @@ - KNXIPInterface is the overall managing class. - GatewayScanner searches for available KNX/IP devices in the local network. - Routing uses UDP/Multicast to communicate with KNX/IP device. -- Tunnelling uses UDP packets and builds a static tunnel with KNX/IP device. +- Tunnel uses UDP packets and builds a static tunnel with KNX/IP device. """ # flake8: noqa -from .connect import Connect -from .connectionstate import ConnectionState from .const import DEFAULT_MCAST_GRP, DEFAULT_MCAST_PORT -from .disconnect import Disconnect from .gateway_scanner import GatewayScanFilter, GatewayScanner from .knxip_interface import ConnectionConfig, ConnectionType, KNXIPInterface -from .request_response import RequestResponse from .routing import Routing from .tunnel import Tunnel -from .tunnelling import Tunnelling from .udp_client import UDPClient __all__ = [ diff --git a/xknx/io/request_response/__init__.py b/xknx/io/request_response/__init__.py new file mode 100644 index 0000000000..23127c85ea --- /dev/null +++ b/xknx/io/request_response/__init__.py @@ -0,0 +1,10 @@ +""" +This package contains all objects for sending Requests and waiting for the corresponding Response +of specific KNX/IP Packets used for tunnelling connections. +""" +# flake8: noqa +from .connect import Connect +from .connectionstate import ConnectionState +from .disconnect import Disconnect +from .request_response import RequestResponse +from .tunnelling import Tunnelling diff --git a/xknx/io/connect.py b/xknx/io/request_response/connect.py similarity index 97% rename from xknx/io/connect.py rename to xknx/io/request_response/connect.py index b84069e5b1..e430683016 100644 --- a/xknx/io/connect.py +++ b/xknx/io/request_response/connect.py @@ -12,10 +12,9 @@ from .request_response import RequestResponse if TYPE_CHECKING: + from xknx.io.udp_client import UDPClient from xknx.xknx import XKNX - from .udp_client import UDPClient - class Connect(RequestResponse): """Class to send a ConnectRequest and wait for ConnectResponse..""" diff --git a/xknx/io/connectionstate.py b/xknx/io/request_response/connectionstate.py similarity index 93% rename from xknx/io/connectionstate.py rename to xknx/io/request_response/connectionstate.py index 8948b8a5b3..2c3ce06105 100644 --- a/xknx/io/connectionstate.py +++ b/xknx/io/request_response/connectionstate.py @@ -1,16 +1,15 @@ """Abstraction to send ConnectonStateRequest and wait for ConnectionStateResponse.""" from typing import TYPE_CHECKING +from xknx.io.const import CONNECTIONSTATE_REQUEST_TIMEOUT from xknx.knxip import HPAI, ConnectionStateRequest, ConnectionStateResponse, KNXIPFrame -from .const import CONNECTIONSTATE_REQUEST_TIMEOUT from .request_response import RequestResponse if TYPE_CHECKING: + from xknx.io.udp_client import UDPClient from xknx.xknx import XKNX - from .udp_client import UDPClient - class ConnectionState(RequestResponse): """Class to send ConnectonStateRequest and wait for ConnectionStateResponse.""" diff --git a/xknx/io/disconnect.py b/xknx/io/request_response/disconnect.py similarity index 96% rename from xknx/io/disconnect.py rename to xknx/io/request_response/disconnect.py index df5bef4097..5f13a1ce80 100644 --- a/xknx/io/disconnect.py +++ b/xknx/io/request_response/disconnect.py @@ -6,10 +6,9 @@ from .request_response import RequestResponse if TYPE_CHECKING: + from xknx.io.udp_client import UDPClient from xknx.xknx import XKNX - from .udp_client import UDPClient - class Disconnect(RequestResponse): """Class to send a DisconnectRequest and wait for a DisconnectResponse.""" diff --git a/xknx/io/request_response.py b/xknx/io/request_response/request_response.py similarity index 98% rename from xknx/io/request_response.py rename to xknx/io/request_response/request_response.py index bef39fe96f..18691e40ce 100644 --- a/xknx/io/request_response.py +++ b/xknx/io/request_response/request_response.py @@ -7,10 +7,9 @@ import logging from typing import TYPE_CHECKING, Optional, Type +from xknx.io.udp_client import UDPClient from xknx.knxip import ErrorCode, KNXIPBodyResponse, KNXIPFrame -from .udp_client import UDPClient - if TYPE_CHECKING: from xknx.xknx import XKNX diff --git a/xknx/io/tunnelling.py b/xknx/io/request_response/tunnelling.py similarity index 97% rename from xknx/io/tunnelling.py rename to xknx/io/request_response/tunnelling.py index 7d04f1ce23..dc0af74ae2 100644 --- a/xknx/io/tunnelling.py +++ b/xknx/io/request_response/tunnelling.py @@ -12,11 +12,10 @@ from .request_response import RequestResponse if TYPE_CHECKING: + from xknx.io.udp_client import UDPClient from xknx.telegram import IndividualAddress, Telegram from xknx.xknx import XKNX - from .udp_client import UDPClient - class Tunnelling(RequestResponse): """Class to TunnelingRequest and wait for TunnelingResponse.""" diff --git a/xknx/io/tunnel.py b/xknx/io/tunnel.py index 3166f03aae..3dead630bd 100644 --- a/xknx/io/tunnel.py +++ b/xknx/io/tunnel.py @@ -19,12 +19,9 @@ ) from xknx.telegram import IndividualAddress, Telegram, TelegramDirection -from .connect import Connect -from .connectionstate import ConnectionState from .const import HEARTBEAT_RATE -from .disconnect import Disconnect from .interface import Interface -from .tunnelling import Tunnelling +from .request_response import Connect, ConnectionState, Disconnect, Tunnelling from .udp_client import UDPClient if TYPE_CHECKING: