Source code for seutil.project.ProjectResults

from pathlib import Path
from typing import *

from .. import io, Stream


[docs]class ProjectResults: def __init__(self): self.full_name: str = "UNKNOWN" self.results_dir: Path = None return
[docs] @classmethod def from_base_results_dir(cls, base_results_dir: Path) -> List["ProjectResults"]: full_names = Stream.of_dirs(base_results_dir) return [cls.get_project_results(n, base_results_dir / n) for n in full_names]
[docs] @classmethod def get_project_results(cls, full_name: str, results_dir: Path) -> "ProjectResults": results = cls() results.full_name = full_name results.results_dir = results_dir return results
@property def meta_dir(self) -> Path: meta_dir: Path = self.results_dir / "META" meta_dir.mkdir(parents=True, exist_ok=True) return meta_dir
[docs] def load_meta_result(self, file_name: str, *args, **kwargs) -> Any: return io.load(self.meta_dir / file_name, *args, **kwargs)
[docs] def dump_meta_result(self, file_name: str, data: Any, *args, **kwargs) -> None: io.dump(self.meta_dir / file_name, data, *args, **kwargs)
[docs] def get_revision_dir(self, revision: str) -> Path: revision_dir = self.results_dir / revision revision_dir.mkdir(parents=True, exist_ok=True) return revision_dir
[docs] def load_revision_result( self, revision: str, file_name: str, *args, **kwargs ) -> Any: return io.load(self.get_revision_dir(revision) / file_name, *args, **kwargs)
[docs] def dump_revision_result( self, revision: str, file_name: str, data: Any, *args, **kwargs ) -> None: io.dump(self.get_revision_dir(revision) / file_name, data, *args, **kwargs)