Skip to main content

a toolset to deeply merge python dictionaries.

Project description

https://github.com/toumorokoshi/deepmerge/actions/workflows/python-package.yaml/badge.svg

A tools 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

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-1.0.2a0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

deepmerge-1.0.2a0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file deepmerge-1.0.2a0.tar.gz.

File metadata

  • Download URL: deepmerge-1.0.2a0.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for deepmerge-1.0.2a0.tar.gz
Algorithm Hash digest
SHA256 d5f36965f146c240181632218cd0830305773c6ebd9640571d7bc26d2629cd6c
MD5 4ae1186b3c4c55aebda49ad7cdcde4be
BLAKE2b-256 934096d7500b6804c96f028384f70b9c8eb01f6c31477aa666bcb5a5cb4c8d77

See more details on using hashes here.

File details

Details for the file deepmerge-1.0.2a0-py3-none-any.whl.

File metadata

  • Download URL: deepmerge-1.0.2a0-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for deepmerge-1.0.2a0-py3-none-any.whl
Algorithm Hash digest
SHA256 12c61eac803edab4faa0d7c7ba4301c6bb020ee827c191489f7b6ed2c817b0cb
MD5 c73d9cd95200c45fda388f23947f478f
BLAKE2b-256 ace65b981680fb2af41bf3cf106c1fe84c41d7acbf856799b20af09fa980409d

See more details on using hashes here.

Supported by

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