csvpath.managers.results.readers.readers

  1import os
  2from abc import ABC, abstractmethod
  3from csvpath.util.class_loader import ClassLoader
  4from csvpath.managers.errors.error import Error
  5
  6
  7class ResultReader(ABC):
  8    def __init__(self):
  9        self._result = None
 10
 11    @property
 12    def result(self) -> str:
 13        return self._result
 14
 15    @result.setter
 16    def result(self, result) -> None:
 17        self._result = result
 18
 19
 20class ErrorsReader(ResultReader):
 21    def __init__(self):
 22        super().__init__()
 23        self._errors = None
 24
 25    @property
 26    @abstractmethod
 27    def errors(self) -> list[Error]:
 28        pass
 29
 30
 31class UnmatchedReader(ResultReader):
 32    def __init__(self):
 33        super().__init__()
 34        self._unmatched = None
 35
 36    @property
 37    @abstractmethod
 38    def unmatched(self) -> list[str]:
 39        pass
 40
 41
 42class LinesReader(ResultReader):
 43    def __init__(self):
 44        super().__init__()
 45        self._lines = None
 46
 47    @property
 48    @abstractmethod
 49    def lines(self) -> list[str]:
 50        pass
 51
 52
 53class PrintoutsReader(ResultReader):
 54    def __init__(self):
 55        super().__init__()
 56        self._printouts = None
 57
 58    @property
 59    @abstractmethod
 60    def printouts(self) -> dict[str, list[str]]:
 61        pass
 62
 63
 64class ResultReadersFacade(ErrorsReader, UnmatchedReader, LinesReader, PrintoutsReader):
 65    #
 66    # as soonn as we get a run_dir and an instance we'll create the
 67    # instance_dir and load the readers
 68    #
 69    def __init__(self, result):
 70        self.result = result
 71        #
 72        # can defer loading at cost of more properties. later.
 73        #
 74        self.errors_reader = None
 75        self.unmatched_reader = None
 76        self.printouts_reader = None
 77        self.lines_reader = None
 78        if result is not None:
 79            self.load_readers()
 80
 81    @property
 82    def run_dir(self) -> str:
 83        return self.result._run_dir
 84
 85    def load_readers(self) -> None:
 86        #
 87        # eventually, probably, look in [readers] for names -> reader classes. assumption is
 88        # that at some point we use some kind of database to store results.
 89        #
 90        loader = ClassLoader()
 91        cmd = "from csvpath.managers.results.readers.file_errors_reader import FileErrorsReader"
 92        r = loader.load(cmd)
 93        r.result = self.result
 94        self.errors_reader = r
 95
 96        cmd = "from csvpath.managers.results.readers.file_printouts_reader import FilePrintoutsReader"
 97        r = loader.load(cmd)
 98        r.result = self.result
 99        self.printouts_reader = r
100
101        cmd = "from csvpath.managers.results.readers.file_lines_reader import FileLinesReader"
102        r = loader.load(cmd)
103        r.result = self.result
104        self.lines_reader = r
105
106        cmd = "from csvpath.managers.results.readers.file_unmatched_reader import FileUnmatchedReader"
107        r = loader.load(cmd)
108        r.result = self.result
109        self.unmatched_reader = r
110
111    @property
112    def errors(self) -> list[Error]:
113        return self.errors_reader.errors
114
115    @property
116    def unmatched(self) -> list[str]:
117        return self.unmatched_reader.unmatched
118
119    @property
120    def lines(self) -> list[str]:
121        return self.lines_reader.lines
122
123    @property
124    def printouts(self) -> dict[str, list[str]]:
125        return self.printouts_reader.printouts
class ResultReader(abc.ABC):
 8class ResultReader(ABC):
 9    def __init__(self):
10        self._result = None
11
12    @property
13    def result(self) -> str:
14        return self._result
15
16    @result.setter
17    def result(self, result) -> None:
18        self._result = result

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

result: str
12    @property
13    def result(self) -> str:
14        return self._result
class ErrorsReader(ResultReader):
21class ErrorsReader(ResultReader):
22    def __init__(self):
23        super().__init__()
24        self._errors = None
25
26    @property
27    @abstractmethod
28    def errors(self) -> list[Error]:
29        pass

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

errors: list[csvpath.managers.errors.error.Error]
26    @property
27    @abstractmethod
28    def errors(self) -> list[Error]:
29        pass
Inherited Members
ResultReader
result
class UnmatchedReader(ResultReader):
32class UnmatchedReader(ResultReader):
33    def __init__(self):
34        super().__init__()
35        self._unmatched = None
36
37    @property
38    @abstractmethod
39    def unmatched(self) -> list[str]:
40        pass

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

unmatched: list[str]
37    @property
38    @abstractmethod
39    def unmatched(self) -> list[str]:
40        pass
Inherited Members
ResultReader
result
class LinesReader(ResultReader):
43class LinesReader(ResultReader):
44    def __init__(self):
45        super().__init__()
46        self._lines = None
47
48    @property
49    @abstractmethod
50    def lines(self) -> list[str]:
51        pass

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

lines: list[str]
48    @property
49    @abstractmethod
50    def lines(self) -> list[str]:
51        pass
Inherited Members
ResultReader
result
class PrintoutsReader(ResultReader):
54class PrintoutsReader(ResultReader):
55    def __init__(self):
56        super().__init__()
57        self._printouts = None
58
59    @property
60    @abstractmethod
61    def printouts(self) -> dict[str, list[str]]:
62        pass

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

printouts: dict[str, list[str]]
59    @property
60    @abstractmethod
61    def printouts(self) -> dict[str, list[str]]:
62        pass
Inherited Members
ResultReader
result
class ResultReadersFacade(ErrorsReader, UnmatchedReader, LinesReader, PrintoutsReader):
 65class ResultReadersFacade(ErrorsReader, UnmatchedReader, LinesReader, PrintoutsReader):
 66    #
 67    # as soonn as we get a run_dir and an instance we'll create the
 68    # instance_dir and load the readers
 69    #
 70    def __init__(self, result):
 71        self.result = result
 72        #
 73        # can defer loading at cost of more properties. later.
 74        #
 75        self.errors_reader = None
 76        self.unmatched_reader = None
 77        self.printouts_reader = None
 78        self.lines_reader = None
 79        if result is not None:
 80            self.load_readers()
 81
 82    @property
 83    def run_dir(self) -> str:
 84        return self.result._run_dir
 85
 86    def load_readers(self) -> None:
 87        #
 88        # eventually, probably, look in [readers] for names -> reader classes. assumption is
 89        # that at some point we use some kind of database to store results.
 90        #
 91        loader = ClassLoader()
 92        cmd = "from csvpath.managers.results.readers.file_errors_reader import FileErrorsReader"
 93        r = loader.load(cmd)
 94        r.result = self.result
 95        self.errors_reader = r
 96
 97        cmd = "from csvpath.managers.results.readers.file_printouts_reader import FilePrintoutsReader"
 98        r = loader.load(cmd)
 99        r.result = self.result
100        self.printouts_reader = r
101
102        cmd = "from csvpath.managers.results.readers.file_lines_reader import FileLinesReader"
103        r = loader.load(cmd)
104        r.result = self.result
105        self.lines_reader = r
106
107        cmd = "from csvpath.managers.results.readers.file_unmatched_reader import FileUnmatchedReader"
108        r = loader.load(cmd)
109        r.result = self.result
110        self.unmatched_reader = r
111
112    @property
113    def errors(self) -> list[Error]:
114        return self.errors_reader.errors
115
116    @property
117    def unmatched(self) -> list[str]:
118        return self.unmatched_reader.unmatched
119
120    @property
121    def lines(self) -> list[str]:
122        return self.lines_reader.lines
123
124    @property
125    def printouts(self) -> dict[str, list[str]]:
126        return self.printouts_reader.printouts

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

ResultReadersFacade(result)
70    def __init__(self, result):
71        self.result = result
72        #
73        # can defer loading at cost of more properties. later.
74        #
75        self.errors_reader = None
76        self.unmatched_reader = None
77        self.printouts_reader = None
78        self.lines_reader = None
79        if result is not None:
80            self.load_readers()
result: str
12    @property
13    def result(self) -> str:
14        return self._result
errors_reader
unmatched_reader
printouts_reader
lines_reader
run_dir: str
82    @property
83    def run_dir(self) -> str:
84        return self.result._run_dir
def load_readers(self) -> None:
 86    def load_readers(self) -> None:
 87        #
 88        # eventually, probably, look in [readers] for names -> reader classes. assumption is
 89        # that at some point we use some kind of database to store results.
 90        #
 91        loader = ClassLoader()
 92        cmd = "from csvpath.managers.results.readers.file_errors_reader import FileErrorsReader"
 93        r = loader.load(cmd)
 94        r.result = self.result
 95        self.errors_reader = r
 96
 97        cmd = "from csvpath.managers.results.readers.file_printouts_reader import FilePrintoutsReader"
 98        r = loader.load(cmd)
 99        r.result = self.result
100        self.printouts_reader = r
101
102        cmd = "from csvpath.managers.results.readers.file_lines_reader import FileLinesReader"
103        r = loader.load(cmd)
104        r.result = self.result
105        self.lines_reader = r
106
107        cmd = "from csvpath.managers.results.readers.file_unmatched_reader import FileUnmatchedReader"
108        r = loader.load(cmd)
109        r.result = self.result
110        self.unmatched_reader = r
errors: list[csvpath.managers.errors.error.Error]
112    @property
113    def errors(self) -> list[Error]:
114        return self.errors_reader.errors
unmatched: list[str]
116    @property
117    def unmatched(self) -> list[str]:
118        return self.unmatched_reader.unmatched
lines: list[str]
120    @property
121    def lines(self) -> list[str]:
122        return self.lines_reader.lines
printouts: dict[str, list[str]]
124    @property
125    def printouts(self) -> dict[str, list[str]]:
126        return self.printouts_reader.printouts