Source code for mt_metadata.transfer_functions.io.emtfxml.metadata.processing_info

# -*- coding: utf-8 -*-
"""
Created on Wed Dec 23 21:30:36 2020

:copyright: 
    Jared Peacock (jpeacock@usgs.gov)

:license: MIT

"""
# =============================================================================
# Imports
# =============================================================================
from mt_metadata.base.helpers import write_lines
from mt_metadata.base import get_schema, Base
from .standards import SCHEMA_FN_PATHS
from . import ProcessingSoftware, RemoteRef, RemoteInfo
from mt_metadata.transfer_functions.io.emtfxml.metadata import helpers
from mt_metadata.utils.mttime import MTime


# =============================================================================
attr_dict = get_schema("processing_info", SCHEMA_FN_PATHS)
attr_dict.add_dict(ProcessingSoftware()._attr_dict, "processing_software")
attr_dict.add_dict(RemoteRef()._attr_dict, "remote_ref")
attr_dict.add_dict(RemoteInfo()._attr_dict, "remote_info")

for key, ad in attr_dict.items():
    if "remote_info" in key:
        ad["required"] = False
# =============================================================================


[docs]class ProcessingInfo(Base): __doc__ = write_lines(attr_dict) def __init__(self, **kwargs): self.remote_ref = RemoteRef() self.processing_software = ProcessingSoftware() self.remote_info = RemoteInfo() self._process_date = MTime() self._order = [ "sign_convention", "remote_ref", "remote_info", "processed_by", "process_date", "processing_software", "processing_tag", ] super().__init__(attr_dict=attr_dict, **kwargs) @property def process_date(self): return self._process_date.date @process_date.setter def process_date(self, value): self._process_date.parse(value)
[docs] def read_dict(self, input_dict): """ :param input_dict: DESCRIPTION :type input_dict: TYPE :return: DESCRIPTION :rtype: TYPE """ try: processing_dict = input_dict["processing_info"] except KeyError: return if "field_notes" in processing_dict.keys(): processing_dict.pop("field_notes") for key in ["remote_ref", "remote_info", "processing_software"]: try: pop_dict = {key: processing_dict.pop(key)} getattr(self, key).read_dict(pop_dict) except KeyError: self.logger.debug(f"No {key} information in xml.") helpers._read_element(self, input_dict, "processing_info")
[docs] def to_xml(self, string=False, required=True): """ :param string: DESCRIPTION, defaults to False :type string: TYPE, optional :param required: DESCRIPTION, defaults to True :type required: TYPE, optional :return: DESCRIPTION :rtype: TYPE """ return helpers.to_xml( self, string=string, required=required, order=self._order, )