From 1046c8c50cb388e6550a93de8f5aeb053f0703e0 Mon Sep 17 00:00:00 2001 From: Felix Divo <4403130+felixdivo@users.noreply.github.com> Date: Wed, 21 Dec 2022 16:20:16 +0100 Subject: [PATCH 1/5] Tiny type narrowing --- can/interfaces/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/can/interfaces/__init__.py b/can/interfaces/__init__.py index 755e8675c..bb206e72b 100644 --- a/can/interfaces/__init__.py +++ b/can/interfaces/__init__.py @@ -6,7 +6,7 @@ from typing import Dict, Tuple # interface_name => (module, classname) -BACKENDS: Dict[str, Tuple[str, ...]] = { +BACKENDS: Dict[str, Tuple[str, str]] = { "kvaser": ("can.interfaces.kvaser", "KvaserBus"), "socketcan": ("can.interfaces.socketcan", "SocketcanBus"), "serial": ("can.interfaces.serial.serial_can", "SerialBus"), From 6cb1af1d05561ccce3e7dab03b4fb66472e6883a Mon Sep 17 00:00:00 2001 From: Felix Divo <4403130+felixdivo@users.noreply.github.com> Date: Wed, 21 Dec 2022 16:37:29 +0100 Subject: [PATCH 2/5] Add required cast Apparently, this is required for mypy to accept it .... --- can/interfaces/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/can/interfaces/__init__.py b/can/interfaces/__init__.py index bb206e72b..f686f7633 100644 --- a/can/interfaces/__init__.py +++ b/can/interfaces/__init__.py @@ -6,7 +6,7 @@ from typing import Dict, Tuple # interface_name => (module, classname) -BACKENDS: Dict[str, Tuple[str, str]] = { +BACKENDS: Dict[str, Tuple[str, str]] = cast(Dict[str, Tuple[str, str]], { "kvaser": ("can.interfaces.kvaser", "KvaserBus"), "socketcan": ("can.interfaces.socketcan", "SocketcanBus"), "serial": ("can.interfaces.serial.serial_can", "SerialBus"), @@ -30,7 +30,7 @@ "neousys": ("can.interfaces.neousys", "NeousysBus"), "etas": ("can.interfaces.etas", "EtasBus"), "socketcand": ("can.interfaces.socketcand", "SocketCanDaemonBus"), -} +}) if sys.version_info >= (3, 8): from importlib.metadata import entry_points From e2071431ab544a36c19f3c12b35033e87da8b68d Mon Sep 17 00:00:00 2001 From: felixdivo Date: Wed, 21 Dec 2022 15:38:08 +0000 Subject: [PATCH 3/5] Format code with black --- can/interfaces/__init__.py | 53 ++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/can/interfaces/__init__.py b/can/interfaces/__init__.py index f686f7633..5162360b9 100644 --- a/can/interfaces/__init__.py +++ b/can/interfaces/__init__.py @@ -6,31 +6,34 @@ from typing import Dict, Tuple # interface_name => (module, classname) -BACKENDS: Dict[str, Tuple[str, str]] = cast(Dict[str, Tuple[str, str]], { - "kvaser": ("can.interfaces.kvaser", "KvaserBus"), - "socketcan": ("can.interfaces.socketcan", "SocketcanBus"), - "serial": ("can.interfaces.serial.serial_can", "SerialBus"), - "pcan": ("can.interfaces.pcan", "PcanBus"), - "usb2can": ("can.interfaces.usb2can", "Usb2canBus"), - "ixxat": ("can.interfaces.ixxat", "IXXATBus"), - "nican": ("can.interfaces.nican", "NicanBus"), - "iscan": ("can.interfaces.iscan", "IscanBus"), - "virtual": ("can.interfaces.virtual", "VirtualBus"), - "udp_multicast": ("can.interfaces.udp_multicast", "UdpMulticastBus"), - "neovi": ("can.interfaces.ics_neovi", "NeoViBus"), - "vector": ("can.interfaces.vector", "VectorBus"), - "slcan": ("can.interfaces.slcan", "slcanBus"), - "robotell": ("can.interfaces.robotell", "robotellBus"), - "canalystii": ("can.interfaces.canalystii", "CANalystIIBus"), - "systec": ("can.interfaces.systec", "UcanBus"), - "seeedstudio": ("can.interfaces.seeedstudio", "SeeedBus"), - "cantact": ("can.interfaces.cantact", "CantactBus"), - "gs_usb": ("can.interfaces.gs_usb", "GsUsbBus"), - "nixnet": ("can.interfaces.nixnet", "NiXNETcanBus"), - "neousys": ("can.interfaces.neousys", "NeousysBus"), - "etas": ("can.interfaces.etas", "EtasBus"), - "socketcand": ("can.interfaces.socketcand", "SocketCanDaemonBus"), -}) +BACKENDS: Dict[str, Tuple[str, str]] = cast( + Dict[str, Tuple[str, str]], + { + "kvaser": ("can.interfaces.kvaser", "KvaserBus"), + "socketcan": ("can.interfaces.socketcan", "SocketcanBus"), + "serial": ("can.interfaces.serial.serial_can", "SerialBus"), + "pcan": ("can.interfaces.pcan", "PcanBus"), + "usb2can": ("can.interfaces.usb2can", "Usb2canBus"), + "ixxat": ("can.interfaces.ixxat", "IXXATBus"), + "nican": ("can.interfaces.nican", "NicanBus"), + "iscan": ("can.interfaces.iscan", "IscanBus"), + "virtual": ("can.interfaces.virtual", "VirtualBus"), + "udp_multicast": ("can.interfaces.udp_multicast", "UdpMulticastBus"), + "neovi": ("can.interfaces.ics_neovi", "NeoViBus"), + "vector": ("can.interfaces.vector", "VectorBus"), + "slcan": ("can.interfaces.slcan", "slcanBus"), + "robotell": ("can.interfaces.robotell", "robotellBus"), + "canalystii": ("can.interfaces.canalystii", "CANalystIIBus"), + "systec": ("can.interfaces.systec", "UcanBus"), + "seeedstudio": ("can.interfaces.seeedstudio", "SeeedBus"), + "cantact": ("can.interfaces.cantact", "CantactBus"), + "gs_usb": ("can.interfaces.gs_usb", "GsUsbBus"), + "nixnet": ("can.interfaces.nixnet", "NiXNETcanBus"), + "neousys": ("can.interfaces.neousys", "NeousysBus"), + "etas": ("can.interfaces.etas", "EtasBus"), + "socketcand": ("can.interfaces.socketcand", "SocketCanDaemonBus"), + }, +) if sys.version_info >= (3, 8): from importlib.metadata import entry_points From 6885ca41d8fcaed8a711f5773fa6d847ec6145f4 Mon Sep 17 00:00:00 2001 From: Felix Divo <4403130+felixdivo@users.noreply.github.com> Date: Wed, 21 Dec 2022 16:42:43 +0100 Subject: [PATCH 4/5] Add missing import --- can/interfaces/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/can/interfaces/__init__.py b/can/interfaces/__init__.py index 5162360b9..edb58b228 100644 --- a/can/interfaces/__init__.py +++ b/can/interfaces/__init__.py @@ -3,7 +3,7 @@ """ import sys -from typing import Dict, Tuple +from typing import cast, Dict, Tuple # interface_name => (module, classname) BACKENDS: Dict[str, Tuple[str, str]] = cast( From 41a958d7fad9f6f76cd4e5868d34a5b7322b5487 Mon Sep 17 00:00:00 2001 From: Felix Divo <4403130+felixdivo@users.noreply.github.com> Date: Wed, 21 Dec 2022 17:04:41 +0100 Subject: [PATCH 5/5] Update __init__.py --- can/interfaces/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/can/interfaces/__init__.py b/can/interfaces/__init__.py index edb58b228..9e03b126c 100644 --- a/can/interfaces/__init__.py +++ b/can/interfaces/__init__.py @@ -40,7 +40,7 @@ entries = entry_points().get("can.interface", ()) BACKENDS.update( - {interface.name: tuple(interface.value.split(":")) for interface in entries} + {interface.name: (interface.module, interface.attr) for interface in entries} ) else: from pkg_resources import iter_entry_points