Skip to content

Commit

Permalink
move RequestResponse to its own submodule
Browse files Browse the repository at this point in the history
this should be only used by xknx.io.Tunnel and tests
  • Loading branch information
farmio committed Mar 27, 2021
1 parent 63d2630 commit c445259
Show file tree
Hide file tree
Showing 15 changed files with 37 additions and 31 deletions.
3 changes: 2 additions & 1 deletion examples/example_disconnect.py
Expand Up @@ -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():
Expand Down
3 changes: 2 additions & 1 deletion test/io_tests/connect_test.py
Expand Up @@ -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,
Expand Down
3 changes: 2 additions & 1 deletion test/io_tests/connectionstate_test.py
Expand Up @@ -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,
Expand Down
3 changes: 2 additions & 1 deletion test/io_tests/disconnect_test.py
Expand Up @@ -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,
Expand Down
11 changes: 8 additions & 3 deletions test/io_tests/request_response_test.py
Expand Up @@ -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


Expand Down Expand Up @@ -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()
Expand All @@ -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()
Expand Down
3 changes: 2 additions & 1 deletion test/io_tests/tunnelling_test.py
Expand Up @@ -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,
Expand Down
3 changes: 1 addition & 2 deletions test/xknx_test.py
Expand Up @@ -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."""

Expand Down
7 changes: 1 addition & 6 deletions xknx/io/__init__.py
Expand Up @@ -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__ = [
Expand Down
10 changes: 10 additions & 0 deletions 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
3 changes: 1 addition & 2 deletions xknx/io/connect.py → xknx/io/request_response/connect.py
Expand Up @@ -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.."""
Expand Down
@@ -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."""
Expand Down
Expand Up @@ -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."""
Expand Down
Expand Up @@ -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

Expand Down
Expand Up @@ -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."""
Expand Down
5 changes: 1 addition & 4 deletions xknx/io/tunnel.py
Expand Up @@ -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:
Expand Down

0 comments on commit c445259

Please sign in to comment.