(self, index: int)
| 461 | return self.log_files[0], index |
| 462 | |
| 463 | def index_to_span(self, index: int) -> tuple[LogFile, int, int]: |
| 464 | log_file, index = self.get_log_file_from_index(index) |
| 465 | line_breaks = self._line_breaks.setdefault(log_file, []) |
| 466 | scan_start = 0 if self._merge_lines else self._scan_start |
| 467 | if not line_breaks: |
| 468 | return (log_file, scan_start, self._scan_start) |
| 469 | index = clamp(index, 0, len(line_breaks)) |
| 470 | if index == 0: |
| 471 | return (log_file, scan_start, line_breaks[0]) |
| 472 | start = line_breaks[index - 1] |
| 473 | end = ( |
| 474 | line_breaks[index] |
| 475 | if index < len(line_breaks) |
| 476 | else max(0, self._scanned_size - 1) |
| 477 | ) |
| 478 | return (log_file, start, end) |
| 479 | |
| 480 | def get_line_from_index_blocking(self, index: int) -> str | None: |
| 481 | with self._lock: |
no test coverage detected