# -*- 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, dict_to_xml, element_to_string
from mt_metadata.base import get_schema, Base
from .standards import SCHEMA_FN_PATHS
from . import Person
from mt_metadata.transfer_functions.io.emtfxml.metadata import helpers
from mt_metadata.utils.mttime import MTime, get_now_utc
from mt_metadata import __version__
# =============================================================================
attr_dict = get_schema("provenance", SCHEMA_FN_PATHS)
person_dict = get_schema("person", SCHEMA_FN_PATHS)
attr_dict.add_dict(person_dict, "creator")
attr_dict.add_dict(person_dict, "submitter")
# =============================================================================
[docs]class Provenance(Base):
__doc__ = write_lines(attr_dict)
def __init__(self, **kwargs):
self._creation_dt = MTime()
self.submitter = Person()
self.creator = Person()
super().__init__(attr_dict=attr_dict, **kwargs)
@property
def create_time(self):
return self._creation_dt.iso_str
@create_time.setter
def create_time(self, dt_str):
self._creation_dt.parse(dt_str)
[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
"""
self.creating_application = f"mt_metadata {__version__}"
self.create_time = get_now_utc()
element = dict_to_xml(
self.to_dict(nested=True, required=required), self._attr_dict
)
if not string:
return element
else:
return element_to_string(element)
[docs] def read_dict(self, input_dict):
"""
:param input_dict: DESCRIPTION
:type input_dict: TYPE
:return: DESCRIPTION
:rtype: TYPE
"""
helpers._read_element(self, input_dict, "provenance")