Source code for dgs.models.submission.submission
"""Base module for generating submission files."""
from dgs.models.modules.named import NamedModule
from dgs.utils.config import DEF_VAL
from dgs.utils.state import State
from dgs.utils.types import Config, FilePath, NodePath, Validations
base_submission_validations: Validations = {
# optional
"submission_file": ["optional", str],
}
[docs]
class SubmissionFile(NamedModule):
"""Base module for generating and handling submission files.
The base module does not create a submission file and acts as the module with format "None".
Params
------
Optional Params
---------------
file (str, optional):
Path to the submission file, within the ``log_dir`` of the respective :class:`.BaseModule`.
Default ``DEF_VAL.submission.file``.
"""
fp: FilePath
format: str
data: any
[docs]
def __init__(self, config: Config, path: NodePath):
super().__init__(config=config, path=path)
self.validate_params(base_submission_validations)
self.fp = self.params.get("file", DEF_VAL["submission"]["file"])
@property
def module_type(self) -> str:
return "submission"
def __call__(self, *args, **kwargs) -> any:
self.append(*args, **kwargs)
[docs]
def append(self, s: State, *_args, **_kwargs) -> None:
"""Append more data to the submission file."""
[docs]
def save(self) -> None:
"""Save the submission data to the submission file."""
[docs]
def terminate(self) -> None:
"""Terminate the submission file creation."""
if self.data:
del self.data
[docs]
def clear(self) -> None:
"""Clear the submission data."""
if self.data:
del self.data
self.data = None