csvpath.managers.results.readers.file_lines_reader

 1import os
 2import csv
 3from abc import ABC, abstractmethod
 4from .readers import LinesReader
 5from csvpath.util.line_spooler import LineSpooler, CsvLineSpooler
 6from typing import NewType
 7
 8
 9FileContent = NewType("FileContent", list[list[str]] | LineSpooler)
10
11
12class FileLinesReader(LinesReader):
13    def __init__(self) -> None:
14        super().__init__()
15        self._lines: LineSpooler = None
16
17    @property
18    def lines(self) -> FileContent:
19        if self.result is None:
20            raise Exception("Result cannot be None")
21        if self._lines is None:
22            self._lines = CsvLineSpooler(self.result)
23        return self._lines
FileContent = FileContent
class FileLinesReader(csvpath.managers.results.readers.readers.LinesReader):
13class FileLinesReader(LinesReader):
14    def __init__(self) -> None:
15        super().__init__()
16        self._lines: LineSpooler = None
17
18    @property
19    def lines(self) -> FileContent:
20        if self.result is None:
21            raise Exception("Result cannot be None")
22        if self._lines is None:
23            self._lines = CsvLineSpooler(self.result)
24        return self._lines

Helper class that provides a standard way to create an ABC using inheritance.

lines: FileContent
18    @property
19    def lines(self) -> FileContent:
20        if self.result is None:
21            raise Exception("Result cannot be None")
22        if self._lines is None:
23            self._lines = CsvLineSpooler(self.result)
24        return self._lines