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.
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.
Inherited Members
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.
Inherited Members
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.
Inherited Members
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.
Inherited Members
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.
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