# generate_natvis.py Generate the Natvis debugger visualization file for namespace combinations with up to two ABI tags. The checked-in `nlohmann_json.natvis` covers the default namespace (no ABI tags), every single ABI tag, and every pair of ABI tags, with both versioned and unversioned namespace variants. Configurations that enable three or more ABI tags are not covered by this reduced file. The ABI tag list and the library version are parsed from `include/nlohmann/detail/abi_macros.hpp`, so this script must be re-run (via `make natvis`) whenever an `NLOHMANN_JSON_ABI_TAG_*` macro is added to that file or the library version is bumped — otherwise the committed `nlohmann_json.natvis` drifts from the header it visualizes, and `make check-amalgamation` fails. ## Usage ```shell make natvis ``` `make natvis` sets up a virtual environment `tools/generate_natvis/venv` with the dependencies from `requirements.txt` (Jinja2) and runs the script with it. Alternatively, install the requirements yourself and run: ```shell ./generate_natvis.py [--version X.Y.Z] [repository_root/] ``` `--version` and the output/repository-root directory both default to values derived from this script's own location, so they only need to be given explicitly when generating a Natvis file for a different checkout or a version other than the one in `abi_macros.hpp`.