1010from time import time , sleep
1111import typing
1212
13- import can # pylint: disable=unused-import
13+ if typing .TYPE_CHECKING :
14+ import can
1415
1516from .generic import BaseIOHandler
1617from .asc import ASCReader
@@ -49,21 +50,22 @@ class LogReader(BaseIOHandler):
4950 def __new__ (cls , filename : "can.typechecking.PathLike" , * args , ** kwargs ):
5051 """
5152 :param filename: the filename/path of the file to read from
53+ :raises ValueError: if the filename's suffix is of an unknown file type
5254 """
5355 suffix = pathlib .PurePath (filename ).suffix
5456
55- if suffix == ".asc" :
56- return ASCReader ( filename )
57- if suffix == ".blf" :
58- return BLFReader ( filename )
59- if suffix == ".csv" :
60- return CSVReader ( filename )
61- if suffix == ".db" :
62- return SqliteReader (filename , * args , ** kwargs )
63- if suffix == ".log" :
64- return CanutilsLogReader (filename )
65-
66- raise NotImplementedError ( f" No read support for this log format: { filename } " )
57+ lookup = {
58+ ".asc" : ASCReader ,
59+ ".blf" : BLFReader ,
60+ ".csv" : CSVReader ,
61+ ".db" : SqliteReader ,
62+ ".log" : CanutilsLogReader ,
63+ }
64+ suffix = pathlib . PurePath (filename ). suffix
65+ try :
66+ return lookup [ suffix ] (filename , * args , ** kwargs )
67+ except KeyError :
68+ raise ValueError ( f' No read support for this unknown log format " { suffix } "' )
6769
6870
6971class MessageSync : # pylint: disable=too-few-public-methods
@@ -81,7 +83,8 @@ def __init__(
8183 """Creates an new **MessageSync** instance.
8284
8385 :param messages: An iterable of :class:`can.Message` instances.
84- :param timestamps: Use the messages' timestamps. If False, uses the *gap* parameter as the time between messages.
86+ :param timestamps: Use the messages' timestamps. If False, uses the *gap* parameter
87+ as the time between messages.
8588 :param gap: Minimum time between sent messages in seconds
8689 :param skip: Skip periods of inactivity greater than this (in seconds).
8790 """
0 commit comments