MCPcopy
hub / github.com/commaai/openpilot / __init__

Method __init__

tools/lib/logreader.py:90–120  ·  view source on GitHub ↗
(self, fn, only_union_types=False, sort_by_time=False, dat=None)

Source from the content-addressed store, hash-verified

88
89class _LogFileReader:
90 def __init__(self, fn, only_union_types=False, sort_by_time=False, dat=None):
91 self.data_version = None
92 self._only_union_types = only_union_types
93
94 ext = None
95 if not dat:
96 _, ext = os.path.splitext(urllib.parse.urlparse(fn).path)
97 if ext not in ('', '.bz2', '.zst'):
98 # old rlogs weren't compressed
99 raise ValueError(f"unknown extension {ext}")
100
101 with FileReader(fn) as f:
102 dat = f.read()
103
104 if ext == ".bz2" or dat.startswith(b'BZh9'):
105 dat = bz2.decompress(dat)
106 elif ext == ".zst" or dat.startswith(b'\x28\xB5\x2F\xFD'):
107 # https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#zstandard-frames
108 dat = decompress_stream(dat)
109
110 ents = capnp_log.Event.read_multiple_bytes(dat)
111
112 self._ents = []
113 try:
114 for e in ents:
115 self._ents.append(CachedEventReader(e))
116 except capnp.KjException:
117 warnings.warn("Corrupted events detected", RuntimeWarning, stacklevel=1)
118
119 if sort_by_time:
120 self._ents.sort(key=lambda x: x.logMonoTime)
121
122 def __iter__(self) -> Iterator[capnp._DynamicStructReader]:
123 for ent in self._ents:

Callers

nothing calls this directly

Calls 5

FileReaderFunction · 0.90
decompress_streamFunction · 0.85
CachedEventReaderClass · 0.85
appendMethod · 0.80
readMethod · 0.45

Tested by

no test coverage detected