• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

hardbyte / python-can / 16550730660

27 Jul 2025 11:41AM UTC coverage: 71.445% (+0.05%) from 71.398%
16550730660

Pull #1962

github

web-flow
Merge 0fec9c40d into afb1204c0
Pull Request #1962: Minor Typing Improvements

95 of 103 new or added lines in 21 files covered. (92.23%)

2 existing lines in 2 files now uncovered.

7909 of 11070 relevant lines covered (71.45%)

15.62 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

63.33
/can/logconvert.py
1
"""
24✔
2
Convert a log file from one format to another.
3
"""
4

5
import argparse
24✔
6
import errno
24✔
7
import sys
24✔
8
from typing import TYPE_CHECKING, NoReturn
24✔
9

10
from can import Logger, LogReader, SizedRotatingLogger
24✔
11

12
if TYPE_CHECKING:
24✔
NEW
13
    from can.io.generic import MessageWriter
×
14

15

16
class ArgumentParser(argparse.ArgumentParser):
24✔
17
    def error(self, message: str) -> NoReturn:
24✔
18
        self.print_help(sys.stderr)
24✔
19
        self.exit(errno.EINVAL, f"{self.prog}: error: {message}\n")
24✔
20

21

22
def main() -> None:
24✔
23
    parser = ArgumentParser(
24✔
24
        description="Convert a log file from one format to another.",
25
    )
26

27
    parser.add_argument(
24✔
28
        "-s",
29
        "--file_size",
30
        dest="file_size",
31
        type=int,
32
        help="Maximum file size in bytes. Rotate log file when size threshold is reached.",
33
        default=None,
34
    )
35

36
    parser.add_argument(
24✔
37
        "input",
38
        metavar="INFILE",
39
        type=str,
40
        help="Input filename. The type is dependent on the suffix, see can.LogReader.",
41
    )
42

43
    parser.add_argument(
24✔
44
        "output",
45
        metavar="OUTFILE",
46
        type=str,
47
        help="Output filename. The type is dependent on the suffix, see can.Logger.",
48
    )
49

50
    args = parser.parse_args()
24✔
51

52
    with LogReader(args.input) as reader:
×
53
        if args.file_size:
×
NEW
54
            logger: MessageWriter = SizedRotatingLogger(
×
55
                base_filename=args.output, max_bytes=args.file_size
56
            )
57
        else:
58
            logger = Logger(filename=args.output)
×
59

60
        with logger:
×
61
            try:
×
62
                for m in reader:
×
63
                    logger(m)
×
64
            except KeyboardInterrupt:
×
65
                sys.exit(1)
×
66

67

68
if __name__ == "__main__":
24✔
69
    main()
24✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc