Skip to content

Commit 4136b9e

Browse files
committed
satiate mypy
1 parent 7183d0b commit 4136b9e

File tree

3 files changed

+21
-11
lines changed

3 files changed

+21
-11
lines changed

can/io/logger.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from abc import ABC, abstractmethod
88
from datetime import datetime
99
import gzip
10-
from typing import Any, Optional, Callable, Type, Tuple, cast, Dict
10+
from typing import Any, Optional, Callable, Type, Tuple, cast, Dict, Optional
1111

1212
from types import TracebackType
1313

@@ -25,10 +25,13 @@
2525
from .printer import Printer
2626
from ..typechecking import StringPathLike, FileLike, AcceptedIOType
2727

28+
MF4Writer: Optional[Type[MessageWriter]] = None
2829
try:
29-
from .mf4 import MF4Writer
30+
from .mf4 import MF4Writer as _MF4Writer
31+
32+
MF4Writer = _MF4Writer
3033
except ImportError:
31-
MF4Writer = None
34+
pass
3235

3336

3437
class Logger(MessageWriter): # pylint: disable=abstract-method
@@ -58,7 +61,7 @@ class Logger(MessageWriter): # pylint: disable=abstract-method
5861
"""
5962

6063
fetched_plugins = False
61-
message_writers: Dict[str, Type[MessageWriter]] = {
64+
message_writers: Dict[str, Optional[Type[MessageWriter]]] = {
6265
".asc": ASCWriter,
6366
".blf": BLFWriter,
6467
".csv": CSVWriter,

can/io/mf4.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from ..message import Message
1414
from ..listener import Listener
1515
from ..util import channel2int
16-
from .generic import BaseIOHandler
16+
from .generic import MessageReader, MessageWriter
1717

1818
try:
1919
from asammdf import Signal
@@ -76,7 +76,7 @@
7676
logger = logging.getLogger("can.io.mf4")
7777

7878

79-
class MF4Writer(BaseIOHandler, Listener):
79+
class MF4Writer(MessageWriter, Listener):
8080
"""Logs CAN data to an ASAM Measurement Data File v4 (.mf4).
8181
8282
MF4Writer does not support append mode.
@@ -220,7 +220,7 @@ def on_message_received(self, msg):
220220
self._mdf.extend(0, sigs)
221221

222222

223-
class MF4Reader(BaseIOHandler):
223+
class MF4Reader(MessageReader):
224224
"""
225225
Iterator of CAN messages from a MF4 logging file.
226226

can/io/player.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@
1919
from ..typechecking import StringPathLike, FileLike, AcceptedIOType
2020
from ..message import Message
2121

22+
23+
MF4Reader: typing.Optional[typing.Type[MessageReader]] = None
2224
try:
23-
from .mf4 import MF4Reader
25+
from .mf4 import MF4Reader as _MF4Reader
26+
27+
MF4Reader = _MF4Reader
2428
except ImportError:
25-
MF4Reader = None
29+
pass
2630

2731

2832
class LogReader(MessageReader):
@@ -56,7 +60,7 @@ class LogReader(MessageReader):
5660
"""
5761

5862
fetched_plugins = False
59-
message_readers: typing.Dict[str, typing.Type[MessageReader]] = {
63+
message_readers: typing.Dict[str, typing.Optional[typing.Type[MessageReader]]] = {
6064
".asc": ASCReader,
6165
".blf": BLFReader,
6266
".csv": CSVReader,
@@ -91,11 +95,14 @@ def __new__( # type: ignore
9195
if suffix == ".gz":
9296
suffix, file_or_filename = LogReader.decompress(filename)
9397
try:
94-
return LogReader.message_readers[suffix](file_or_filename, *args, **kwargs)
98+
ReaderType = LogReader.message_readers[suffix]
9599
except KeyError:
96100
raise ValueError(
97101
f'No read support for this unknown log format "{suffix}"'
98102
) from None
103+
if ReaderType is None:
104+
raise ImportError(f"failed to import reader for extension {suffix}")
105+
return ReaderType(file_or_filename, *args, **kwargs)
99106

100107
@staticmethod
101108
def decompress(

0 commit comments

Comments
 (0)