python-mergedeep
Port variant v11
Summary Deep merge function for 🐍 (3.11)
Package version 1.3.4
Homepage https://github.com/clarketm/mergedeep
Keywords python
Maintainer Python Automaton
License Not yet specified
Other variants v12
Ravenports Buildsheet | History
Ravensource Port Directory | History
Last modified 09 OCT 2023, 04:40:21 UTC
Port created 01 JAN 2023, 17:21:46 UTC
Subpackage Descriptions
single # [mergedeep] [PyPi release] [PyPi versions] [Downloads] [Conda Version] [Conda Downloads] [Documentation Status] A deep merge function for 🐍. [Check out the mergedeep docs] ## Installation ```bash $ pip install mergedeep ``` ## Usage ```text merge(destination: MutableMapping, *sources: Mapping, strategy: Strategy = Strategy.REPLACE) -> MutableMapping ``` Deep merge without mutating the source dicts. ```python3 from mergedeep import merge a = {"keyA": 1} b = {"keyB": {"sub1": 10}} c = {"keyB": {"sub2": 20}} merged = merge({}, a, b, c) print(merged) # {"keyA": 1, "keyB": {"sub1": 10, "sub2": 20}} ``` Deep merge into an existing dict. ```python3 from mergedeep import merge a = {"keyA": 1} b = {"keyB": {"sub1": 10}} c = {"keyB": {"sub2": 20}} merge(a, b, c) print(a) # {"keyA": 1, "keyB": {"sub1": 10, "sub2": 20}} ``` ### Merge strategies: 1. Replace (*default*) > `Strategy.REPLACE` ```python3 # When `destination` and `source` keys are the same, replace the `destination` value with one from `source` (default). # Note: with multiple sources, the `last` (i.e. rightmost) source value will be what appears in the merged result. from mergedeep import merge, Strategy dst = {"key": [1, 2]} src = {"key": [3, 4]} merge(dst, src, strategy=Strategy.REPLACE) # same as: merge(dst, src) print(dst) # {"key": [3, 4]} ``` 2. Additive > `Strategy.ADDITIVE` ```python3 # When `destination` and `source` values are both the same additive collection type, extend `destination` by adding values from `source`. # Additive collection types include: `list`, `tuple`, `set`, and `Counter` # Note: if the values are not additive collections of the same type, then fallback to a `REPLACE` merge. from mergedeep import merge, Strategy dst = {"key": [1, 2], "count": Counter({"a": 1, "b": 1})} src = {"key": [3, 4], "count": Counter({"a": 1, "c": 1})} merge(dst, src, strategy=Strategy.ADDITIVE) print(dst)
Configuration Switches (platform-specific settings discarded)
PY311 ON Build using Python 3.11 PY312 OFF Build using Python 3.12
Package Dependencies by Type
Build (only) python-pip:single:v11
autoselect-python:single:standard
Build and Runtime python311:single:standard
Download groups
main mirror://PYPIWHL/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a
Distribution File Information
70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307 6354 mergedeep-1.3.4-py3-none-any.whl
Ports that require python-mergedeep:v11
python-mkdocs:v11 Project documentation with Markdown (3.11)