# Deepmerge: merging nested data structures

Deepmerge is a flexible library to handle merging of nested data structures in Python (e.g. lists, dicts).

It is available on pypi, and can be installed via pip:

    pip install deepmerge

## Example

Generic Strategy

    from deepmerge import always_merger

    base = {"foo": ["bar"]}
    next = {"foo": ["baz"]}

    expected_result = {'foo': ['bar', 'baz']}
    result = always_merger.merge(base, next)

    assert expected_result == result

Custom Strategy

    from deepmerge import Merger

    my_merger = Merger(
        # pass in a list of tuple, with the
        # strategies you are looking to apply
        # to each type.
        [
            (list, ["append"]),
            (dict, ["merge"])
        ],
        # next, choose the fallback strategies,
        # applied to all other types:
        ["override"],
        # finally, choose the strategies in
        # the case where the types conflict:
        ["override"]
    )
    base = {"foo": ["bar"]}
    next = {"bar": "baz"}
    my_merger.merge(base, next)
    assert base == {"foo": ["bar"], "bar": "baz"}

Want to get started? see the User Guide

Contents:

- User Guide
  - Simple Usage
  - Merges are Destructive
  - Authoring your own Mergers
  - Built-in Strategies
  - Custom Strategies
- Strategies
  - Authoring your own Strategy
  - Builtin Strategies
- API Reference

# Indices and tables

- Index

- Module Index

- Search Page