comicbox.merge

source package comicbox.merge

Recursive merging for containers.

Every Merger merges at the level of the mapping it is handed: none of them knows about the comicbox root tag. Callers holding root-wrapped metadata unwrap it first (see ComicboxMerge._merge_metadata_by_source and ComicboxMetadata._set_computed_merged_metadata). Before, only UpdateMerger reached into ROOT_TAG, so the same merger object meant two different things depending on which call site used it — and handing it the sub-metadata the other mergers take silently dropped the merge.

Classes

source class Merger()

Bases : ABC

Base class for merges.

Methods

  • merge Merge sources into dest, left to right, and return dest.

source staticmethod Merger.merge(dest: MutableMapping, *sources: Mapping)MutableMapping

Merge sources into dest, left to right, and return dest.

Raises

  • NotImplementedError

source class AdditiveMerger()

Bases : Merger

Merge with mergedeep.

Methods

  • merge Merge with mergedeep.

source staticmethod AdditiveMerger.merge(dest: MutableMapping, *sources: Mapping)MutableMapping

Merge with mergedeep.

source class ReplaceMerger()

Bases : Merger

Merge with mergedeep.

Methods

  • merge Merge with mergedeep.

source staticmethod ReplaceMerger.merge(dest: MutableMapping, *sources: Mapping)MutableMapping

Merge with mergedeep.

source class UpdateMerger()

Bases : Merger

Merge with update.

Methods

  • merge Shallowly update dest with each source’s top level keys.

source staticmethod UpdateMerger.merge(dest: MutableMapping, *sources: Mapping)MutableMapping

Shallowly update dest with each source’s top level keys.