tools: speed up Route() (#36963)

* tools: speed up Route()

* cleanup
This commit is contained in:
Adeeb Shihadeh
2025-12-28 15:39:20 -08:00
committed by GitHub
parent 883d1232d3
commit adf9ec5360
+14 -13
View File
@@ -23,7 +23,6 @@ class FileName:
class Route:
def __init__(self, name, data_dir=None):
self._metadata = None
self._name = RouteName(name)
self.files = None
if data_dir is not None:
@@ -32,13 +31,6 @@ class Route:
self._segments = self._get_segments_remote()
self.max_seg_number = self._segments[-1].name.segment_num
@property
def metadata(self):
if not self._metadata:
api = CommaApi(get_token())
self._metadata = api.get('v1/route/' + self.name.canonical_name)
return self._metadata
@property
def name(self):
return self._name
@@ -90,7 +82,6 @@ class Route:
url if fn in FileName.DCAMERA else segments[segment_name].dcamera_path,
url if fn in FileName.ECAMERA else segments[segment_name].ecamera_path,
url if fn in FileName.QCAMERA else segments[segment_name].qcamera_path,
self.metadata['url'],
)
else:
segments[segment_name] = Segment(
@@ -101,7 +92,6 @@ class Route:
url if fn in FileName.DCAMERA else None,
url if fn in FileName.ECAMERA else None,
url if fn in FileName.QCAMERA else None,
self.metadata['url'],
)
return sorted(segments.values(), key=lambda seg: seg.name.segment_num)
@@ -167,7 +157,7 @@ class Route:
except StopIteration:
qcamera_path = None
segments.append(Segment(segment, log_path, qlog_path, camera_path, dcamera_path, ecamera_path, qcamera_path, self.metadata['url']))
segments.append(Segment(segment, log_path, qlog_path, camera_path, dcamera_path, ecamera_path, qcamera_path))
if len(segments) == 0:
raise ValueError(f'Could not find segments for route {self.name.canonical_name} in data directory {data_dir}')
@@ -175,10 +165,9 @@ class Route:
class Segment:
def __init__(self, name, log_path, qlog_path, camera_path, dcamera_path, ecamera_path, qcamera_path, url):
def __init__(self, name, log_path, qlog_path, camera_path, dcamera_path, ecamera_path, qcamera_path):
self._events = None
self._name = SegmentName(name)
self.url = f'{url}/{self._name.segment_num}'
self.log_path = log_path
self.qlog_path = qlog_path
self.camera_path = camera_path
@@ -190,6 +179,18 @@ class Segment:
def name(self):
return self._name
@staticmethod
@cache
def _get_route_metadata(route_name: str):
api = CommaApi(get_token())
return api.get(f'v1/route/{route_name}')
@property
def url(self):
route_name = self._name.route_name.canonical_name
metadata = self._get_route_metadata(route_name)
return f'{metadata["url"]}/{self._name.segment_num}'
@property
def events(self):
if not self._events: