From bdb754976fab099d16476d2e5c36933a83d7874e Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Fri, 1 May 2020 15:25:45 +0200 Subject: [PATCH] secop.asynconn without pyserial importing secop.asynconn should not fail when pyserial is not available Change-Id: I9d06e66cf4ab9e1ad200e8d176b4a3a0e50496c7 Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/23035 Tested-by: JenkinsCodeReview Reviewed-by: Markus Zolliker --- secop/lib/asynconn.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/secop/lib/asynconn.py b/secop/lib/asynconn.py index 8e68624..b874b31 100644 --- a/secop/lib/asynconn.py +++ b/secop/lib/asynconn.py @@ -32,8 +32,10 @@ import socket import select import time import ast -from serial import Serial - +try: + from serial import Serial +except ImportError: + Serial = None from secop.lib import parseHostPort, tcpSocket, closeSocket from secop.errors import ConfigError, CommunicationFailedError @@ -167,6 +169,7 @@ class AsynTcp(AsynConn): return b'' raise ConnectionClosed() # marks end of connection + AsynTcp.register_scheme('tcp') @@ -189,6 +192,8 @@ class AsynSerial(AsynConn): PARITY_NAMES = {name[0]: name for name in ['NONE', 'ODD', 'EVEN', 'MASK', 'SPACE']} def __init__(self, uri, *args, **kwargs): + if Serial is None: + raise ConfigError('pyserial is not installed') super().__init__(uri, *args, **kwargs) self.uri = uri if uri.startswith('serial://'):