Skip to main content

A toolset for deeply merging Python dictionaries.

Project description

https://img.shields.io/pypi/v/deepmerge.svg https://img.shields.io/pypi/status/deepmerge.svg https://img.shields.io/pypi/pyversions/pillar.svg https://img.shields.io/github/license/toumorokoshi/deepmerge.svg https://github.com/toumorokoshi/deepmerge/actions/workflows/python-package.yaml/badge.svg

A tool to handle merging of nested data structures in Python.

Installation

deepmerge is available on pypi:

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"]),
        (set, ["union"])
    ],
    # 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"}

You can also pass in your own merge functions, instead of a string.

For more information, see the docs

Supported Versions

deepmerge is supported on Python 3.8+.

For older Python versions the last supported version of deepmerge is listed below:

  • 3.7 : 1.1.1

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deepmerge-2.0b0.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

deepmerge-2.0b0-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file deepmerge-2.0b0.tar.gz.

File metadata

  • Download URL: deepmerge-2.0b0.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for deepmerge-2.0b0.tar.gz
Algorithm Hash digest
SHA256 4fc30f679587f0337397a5f01541ad731f7d5f65d52ef7c9dbdf02fa1e16465d
MD5 7ac60a8abf5f469aa69828fbfaccecf4
BLAKE2b-256 9311f152ecfbc9d5ad49f78df9df58ceb53aa449fec9f13285bc489952ad14f9

See more details on using hashes here.

Provenance

File details

Details for the file deepmerge-2.0b0-py3-none-any.whl.

File metadata

  • Download URL: deepmerge-2.0b0-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for deepmerge-2.0b0-py3-none-any.whl
Algorithm Hash digest
SHA256 09894cb89e064879ff86b34dde786eca549b445d8bba888177901564148be2c9
MD5 c2d64b8419844ad96a827f201f585b0e
BLAKE2b-256 94da62db13a103b0f365f72be291c8959177292c65381437d3f14686d90de7a5

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page