1import os
2import json
3from csvpath.util.nos import Nos
4from csvpath.util.file_readers import DataFileReader
5from csvpath.util.file_writers import DataFileWriter
6
7
8class ResultFileReader:
9 """@private"""
10 @classmethod
11 def json_file(self, path: str) -> dict | None:
12 if not Nos(path).exists():
13 with DataFileWriter(path=path) as file:
14 json.dump({}, file.sink, indent=2)
15 return {}
16 with DataFileReader(path) as file:
17 d = json.load(file.source)
18 return d
19
20 @classmethod
21 def manifest(self, result_home: str) -> dict | None:
22 mp = os.path.join(result_home, "manifest.json")
23 return ResultFileReader.json_file(mp)
24
25 @classmethod
26 def meta(self, result_home: str) -> dict | None:
27 mp = os.path.join(result_home, "meta.json")
28 return ResultFileReader.json_file(mp)
29
30 @classmethod
31 def vars(self, result_home: str) -> dict | None:
32 mp = os.path.join(result_home, "vars.json")
33 return ResultFileReader.json_file(mp)