{"id":23540,"library":"dictknife","title":"dictknife","description":"Utility set for handling dict in Python. Current version 0.14.2, requires Python >=3.10. Release cadence is irregular, with minor version bumps over years.","status":"active","version":"0.14.2","language":"python","source_language":"en","source_url":"https://github.com/podhmo/dictknife","tags":["dict","utilities","merge","walk","csv","json"],"install":[{"cmd":"pip install dictknife","lang":"bash","label":"latest"}],"dependencies":[],"imports":[{"note":"Main class for walking nested dicts.","symbol":"DictWalker","correct":"from dictknife import DictWalker"},{"note":"deep_merge is a top-level function.","wrong":"from dictknife.deep_merge import deep_merge","symbol":"deep_merge","correct":"from dictknife import deep_merge"},{"note":"load_csv is a top-level function.","wrong":"from dictknife.csv import load_csv","symbol":"load_csv","correct":"from dictknife import load_csv"}],"quickstart":{"code":"from dictknife import deep_merge, DictWalker\n\nd1 = {'a': 1, 'b': {'x': 10}}\nd2 = {'b': {'y': 20}, 'c': 3}\nmerged = deep_merge(d1, d2)\nprint(merged)\n# {'a': 1, 'b': {'x': 10, 'y': 20}, 'c': 3}\n\nwalker = DictWalker(d1)\nfor path, value in walker.walk():\n    print(path, value)","lang":"python","description":"Demonstrates deep_merge and DictWalker."},"warnings":[{"fix":"Pass a deepcopy if you need to preserve original: from copy import deepcopy; merged = deep_merge(deepcopy(d1), d2)","message":"deep_merge modifies the first dict in-place. Did not in older versions (<0.14).","severity":"gotcha","affected_versions":">=0.14.0"},{"fix":"Use `from dictknife import load_csv` instead.","message":"Functions from submodules like `dictknife.csv` and `dictknife.json` are moved to top-level. Importing `from dictknife.csv import load_csv` still works but is deprecated.","severity":"deprecated","affected_versions":">=0.14.0"},{"fix":"Upgrade Python to >=3.10 or pin dictknife<0.14.2.","message":"Python 3.10 is now required. Versions <0.14.2 supported Python 3.6+.","severity":"breaking","affected_versions":">=0.14.2"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Upgrade dictknife to latest: pip install --upgrade dictknife","cause":"Old version of dictknife (<0.9) had deep_merge under a different name or not available.","error":"ImportError: cannot import name 'deep_merge' from 'dictknife'"},{"fix":"Remove the 'conflict' argument; merge now always overwrites. See docs for custom conflict resolution.","cause":"Previously deep_merge accepted a 'conflict' argument to resolve conflicts, removed in v0.14.","error":"TypeError: deep_merge() got an unexpected keyword argument 'conflict'"},{"fix":"Use top-level import: from dictknife import load_csv","cause":"Submodule csv was removed in v0.14.0.","error":"ModuleNotFoundError: No module named 'dictknife.csv'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}