hermes.model.merge.container
Classes
Abstract base class for ld_merge_dict and ld_merge_list, |
|
ld_list wrapper to ensure the 'merge_container'-property does not get lost, while merging. |
|
ld_dict wrapper providing methods to merge an object of this class with an ld_dict object. |
Module Contents
- class hermes.model.merge.container._ld_merge_container
Abstract base class for ld_merge_dict and ld_merge_list, providing the merge containers with an override of
ld_container._to_native_python(). See alsold_dict,ld_listandld_container.- _to_native_python(full_iri: str, ld_value: hermes.model.types.ld_container.EXPANDED_JSON_LD_VALUE | dict[str, hermes.model.types.ld_container.EXPANDED_JSON_LD_VALUE] | list[str] | str) ld_merge_dict | ld_merge_list | hermes.model.types.ld_container.BASIC_TYPE | hermes.model.types.ld_container.TIME_TYPE
Returns a native python version of
ld_valuepretending the value is inselfandfull_iriits key.- Parameters:
full_iri (str) – The expanded iri of the key of
ld_value/self(later if self is not a dictionary).ld_value (EXPANDED_JSON_LD_VALUE | dict[str, EXPANDED_JSON_LD_VALUE] | list[str] | str) – The value thats native python value is requested.
ld_valuehas to be valid expanded JSON-LD if it was embeded inself._data.
- Returns:
The native python value of
ld_value.- Return type:
ld_merge_dict | ld_merge_list | BASIC_TYPE | TIME_TYPE
- class hermes.model.merge.container.ld_merge_list(data: list[str] | list[dict[str, hermes.model.types.ld_container.EXPANDED_JSON_LD_VALUE]], prov_doc: hermes.model.provenance.ld_prov.ld_prov_list = None, prov_objects: list[hermes.model.types.ld_dict] = 3 * [None], *, parent: hermes.model.types.ld_container | None = None, key: str | None = None, index: int | None = None, context: list[str | hermes.model.types.ld_container.JSON_LD_CONTEXT_DICT] | None = None, strategies: dict[str | None, dict[str | None, hermes.model.merge.action.MergeAction]] = {})
Bases:
_ld_merge_container,hermes.model.types.ld_listld_list wrapper to ensure the ‘merge_container’-property does not get lost, while merging. See also
ld_listandld_merge_container.- strategies
The strategies used inside the child ld_merge_dicts.
- Type:
dict[str | None, dict[str | None, MergeAction]]
- class hermes.model.merge.container.ld_merge_dict(data: list[dict[str, hermes.model.types.ld_container.EXPANDED_JSON_LD_VALUE]], prov_doc: hermes.model.provenance.ld_prov.ld_prov_list = None, prov_objects: list[hermes.model.types.ld_dict] = 3 * [None], *, parent: hermes.model.types.ld_dict | hermes.model.types.ld_list | None = None, key: str | None = None, index: int | None = None, context: list[str | hermes.model.types.ld_container.JSON_LD_CONTEXT_DICT] | None = None, strategies: dict[str | None, dict[str | None, hermes.model.merge.action.MergeAction]] = {})
Bases:
_ld_merge_container,hermes.model.types.ld_dictld_dict wrapper providing methods to merge an object of this class with an ld_dict object. See also
ld_dictandld_merge_container.- strategies
The strategies for merging different types of values in the ld_dicts.
- Type:
dict[str | None, dict[str | None, MergeAction]]
- update_context(other_context: list[str | hermes.model.types.ld_container.JSON_LD_CONTEXT_DICT] | None) None
Updates
selfs context withother_context. JSON-LD processing prioritizes the context values in order (first least important, last most important).- Parameters:
other_context (list[str | JSON_LD_CONTEXT_DICT] | None) – The context object that is added to
selfs context.- Return type:
None
- update(other: hermes.model.types.ld_dict) None
Updates/ Merges
selfwith the given ld_dictother. Note that this overwritesld_dict.update(), and may cause unexpected behavior if not used carefully.- Parameters:
other (ld_dict) – The ld_container that is merged into
self.- Return type:
None
- add_strategy(strategy: dict[str | None, dict[str | None, hermes.model.merge.action.MergeAction]]) None
Adds
strategyto theself.strategies.- Parameters:
strategy (dict[str | None, dict[str | None, MergeAction]]) – The object describing how which object types are supposed to be merged.
- Return type:
None
- __setitem__(key: str, value: hermes.model.types.ld_container.JSON_LD_VALUE | hermes.model.types.ld_container.BASIC_TYPE | hermes.model.types.ld_container.TIME_TYPE | hermes.model.types.ld_dict | hermes.model.types.ld_list) None
Creates the new entry for
self[key]usingself.strategieson the values inself[key]andvalue. Note that this overwritesld_dict.__setitem__()and may cause unexpected behavior if not used carefully.
- match(key: str, value: hermes.model.types.ld_container.BASIC_TYPE | hermes.model.types.ld_container.TIME_TYPE | hermes.model.types.ld_dict | hermes.model.types.ld_list, match: Callable[[Any, Any], bool]) hermes.model.types.ld_container.BASIC_TYPE | hermes.model.types.ld_container.TIME_TYPE | ld_merge_dict | ld_merge_list
Returns the first item in
self[key]for whichmatch(item, value)returnsTrue. If no such item is foundNoneis returned instead.- Parameters:
- Returns:
The item in
self[key]that is a match for``value`` if one exists otherwiseNone.- Return type:
BASIC_TYPE | TIME_TYPE | ld_merge_dict | ld_merge_list
- _merge_item(key: str, value: hermes.model.types.ld_container.BASIC_TYPE | hermes.model.types.ld_container.TIME_TYPE | hermes.model.types.ld_dict | hermes.model.types.ld_list) hermes.model.types.ld_container.BASIC_TYPE | hermes.model.types.ld_container.TIME_TYPE | ld_merge_dict | ld_merge_list
Applies the most suitable merge strategy to merge
self[key]and value and then returns the result.- Parameters:
- Returns:
The result of the merge from
self[key]withvalue.- Return type:
BASIC_TYPE | TIME_TYPE | ld_merge_dict | ld_merge_list
- Raises:
MergeError – If there is no strategy for this key.
Adds an entry for
reltoselfcontaining which key and value is affected.
- reject(key: str, value: hermes.model.types.ld_container.BASIC_TYPE | hermes.model.types.ld_container.TIME_TYPE | hermes.model.types.ld_dict | hermes.model.types.ld_list) None
Adds an entry to
selfcontaining containing information that the key, value pairkey,valuehas been rejected in the merge. For further information seeld_merge_dict._add_related().
- replace(key: str, value: hermes.model.types.ld_container.BASIC_TYPE | hermes.model.types.ld_container.TIME_TYPE | hermes.model.types.ld_dict | hermes.model.types.ld_list) None
Adds an entry to
selfcontaining containing information that the key, value pairkey,valuewas replaced in the merge. For further information seeld_merge_dict._add_related().