Python bindings: add missing on_key_data callback #7

Merged
andrew merged 2 commits from weaselbot/weaseljson:weaselbot/issue-6 into main 2026-06-18 15:01:56 +00:00
2 Commits
Author SHA1 Message Date
weaselbot 7ea2e2362e Apply formatting fixes from cmake-format and black
CI / pre-commit (pull_request) Successful in 51s
CI / build (-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++, clang-arm64, ubuntu-latest-arm64, true) (pull_request) Successful in 51s
CI / build (-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++, gcc-arm64, ubuntu-latest-arm64, false) (pull_request) Successful in 50s
CI / build (-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++, clang-amd64, ubuntu-latest-amd64, true) (pull_request) Successful in 1m28s
CI / build (-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++, gcc-amd64, ubuntu-latest-amd64, false) (pull_request) Successful in 1m22s
Reformat the add_test call in CMakeLists.txt and collapse a
multi-line json.dumps() call in test_python_bindings.py so that
pre-commit passes.
2026-06-18 10:55:18 -04:00
weaselbot 320e03f280 Python bindings: add missing on_key_data callback
CI / build (-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++, clang-arm64, ubuntu-latest-arm64, true) (pull_request) Successful in 52s
CI / pre-commit (pull_request) Failing after 52s
CI / build (-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++, gcc-arm64, ubuntu-latest-arm64, false) (pull_request) Successful in 49s
CI / build (-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++, clang-amd64, ubuntu-latest-amd64, true) (pull_request) Successful in 1m30s
CI / build (-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++, gcc-amd64, ubuntu-latest-amd64, false) (pull_request) Successful in 1m22s
- Insert `on_key_data` into `WeaselJsonCallbacks._fields_` in the same
  order as the C struct (`on_string_data`, then `on_key_data`, then
  `on_begin_array`).
- Add `on_key_data(self, data, done)` to `WeaselJsonCallbacksBase`.
- Add a ctypes wrapper for `on_key_data` and wire it into the global
  `c_callbacks` object.
- Guard the demo code at the bottom of `weaseljson.py` under
  `if __name__ == "__main__"` so the module is safe to import.
- Add `test_python_bindings.py` and a CMake `python_bindings` test that
  verify object keys are delivered to `on_key_data` while string values
  still go to `on_string_data`.

Closes #6
2026-06-18 10:13:02 -04:00