Skip to content
Snippets Groups Projects
Commit 963d2f53 authored by Florian Spreckelsen's avatar Florian Spreckelsen
Browse files

WIP: Move to separate converter

parent b44cad88
No related branches found
No related tags found
2 merge requests!178FIX: #96 Better error output for crawl.py script.,!163F dict heuristic
Pipeline #49141 failed
......@@ -810,7 +810,29 @@ class DictElementConverter(Converter):
raise RuntimeError("Element must be a DictElement.")
return match_name_and_value(self.definition, element.name, element.value)
def create_records(self, values: GeneralStore, records: RecordStore, element: StructureElement):
class HeuristicDictConverter(DictElementConverter):
"""Extend the :py:class:`DictElementConverter` by a heuristic to set
property values from the dictionary keys.
"""
def _validate_definition(definition: dict, name: str):
if "record_from_dict" not in definition or definition["record_from_dict"] is None:
raise ValueError(
"You need to specify the (root) record, the properties of "
f"which will be set from the dict in converter {name}."
)
def __init__(self, definition: dict, name: str, converter_registry: dict):
_validate_definition(definition)
super().__init__(definition, name, converter_registry)
def create_records(self, values: GeneralStore, records: RecordStore,
element: StructureElement, referenced_record_callback:
Optional[callable] = None):
keys_modified = []
if "record_from_dict" in self.definition and self.definition["record_from_dict"] is not None:
......@@ -826,7 +848,7 @@ class DictElementConverter(Converter):
class DictConverter(DictElementConverter):
def __init__(self, *args, **kwargs):
warnings.warn(DeprecationWarning(
"This class is depricated. Please use DictConverter."))
"This class is depricated. Please use DictElementConverter."))
super().__init__(*args, **kwargs)
......
......@@ -11,6 +11,9 @@ Date:
Dict:
converter: DictElementConverter
package: caoscrawler.converters
DictHeuristic:
converter: HeuristicDictConverter
package: caoscrawler.converters
FloatElement:
converter: FloatElementConverter
package: caoscrawler.converters
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment