Skip to content
Snippets Groups Projects

WS-507: implemented more tests, which involved refactoring of some classes

Merged Janet Goldstein requested to merge WS-507-ingestion_manifest_creation into main
5 files
+ 172
140
Compare changes
  • Side-by-side
  • Inline
Files
5
""" The ingestion manifest """
from pathlib import Path
import json
# pylint: disable=E0402, R0903, R0913
from typing import Dict
from .utilities import Telescope
@@ -12,7 +13,8 @@ class Parameters:
def __init__(
self,
telescope: Telescope,
ingestion_path: Path,
# for JSON parsing, path must be a string
ingestion_path: str,
additional_metadata: str,
collection_metadata: str,
reingest: bool = False,
@@ -25,6 +27,9 @@ class Parameters:
self.reingest = reingest
self.ngas_ingest = ngas_ingest
def __repr__(self):
return repr(self.__dict__)
class InputGroup:
"""
@@ -38,6 +43,9 @@ class InputGroup:
def __init__(self):
self.science_products = []
def __repr__(self) -> str:
return repr(self.__dict__)
class IngestionManifest:
"""Represents JSON layout of ingestion information, encompassing several potential scenarios.
@@ -47,13 +55,35 @@ class IngestionManifest:
def __init__(self, parameters: Parameters):
self.parameters = parameters
# to be an InputGroup
self.input_group = InputGroup()
# to be an OutputGroup
if self.parameters.additional_metadata:
self.input_group.science_products.append(
json.loads(self.parameters.additional_metadata)
)
self.output_group = OutputGroup()
if self.parameters.collection_metadata:
self.output_group.ancillary_products.append(
json.loads(self.parameters.collection_metadata)
)
self.ingestion_path = self.parameters.ingestion_path
# TODO: what is this, and how do we use it?
self.associate_group = AssociateGroup()
self.ingestion_path = None
self.science_products = []
def content(self) -> Dict:
"""
Accessor for manifest content
:return: manifest as dict
"""
return dict(
input_group=repr(self.input_group),
output_group=repr(self.output_group),
associate_group=repr(self.associate_group),
ingestion_path=repr(self.ingestion_path),
science_products=repr(self.input_group.science_products),
ancillary_products=repr(self.output_group.ancillary_products),
)
class OutputGroup:
@@ -63,6 +93,9 @@ class OutputGroup:
self.science_products = []
self.ancillary_products = []
def __repr__(self):
return repr(self.__dict__)
class AssociateGroup:
"""
@@ -78,3 +111,6 @@ class AssociateGroup:
def __init__(self):
self.science_products = []
def __repr__(self):
return repr(self.__dict__)
Loading