)]}'
{
  "commit": "e06662acb7007c5493dea5f457fdef26108ecd50",
  "tree": "7cc814cf78deb9f4f58ae17b36043b6efe0e47b1",
  "parents": [
    "d8f32cca09747ea4d4d1eac3e6d244d3d0d2f6b6"
  ],
  "author": {
    "name": "Tim Saucer",
    "email": "timsaucer@gmail.com",
    "time": "Fri Sep 04 16:07:49 2026 -0400"
  },
  "committer": {
    "name": "Tim Saucer",
    "email": "timsaucer@gmail.com",
    "time": "Fri Sep 04 16:07:49 2026 -0400"
  },
  "message": "Tidy the loose ends from review of with_extensions\n\nMark `SessionExtensionExportable` `@runtime_checkable` and have\n`with_extensions` check it with `isinstance` rather than `hasattr`, so the\nannotation and the runtime check are the same statement, and callers can ask\nthe question too. Covered by a doctest on the protocol.\n\nReplace the leading-underscore skip in `test_wrapper_coverage` with a named\nallowlist. The pattern also excused `DataFrame._repr_html_`, which a wrapper\ndoes have to provide, so a two-method need was weakening coverage for every\nprivate name. Removing `_install_extensions` from the allowlist fails the test,\nso the entry is load-bearing rather than decorative.\n\nSay in `_CodecOnlyExtension` that retaining the context is what the protocol\ntells real extensions not to do, and that it is kept only so a test can assert\nwhich context the factory was handed.\n\nLet the docstring-example shim in the query planner example accept a config\npositionally, the way the real constructor does. Editing the docstring to\n`SessionContext(config)` now fails as a doctest diff rather than as a\n`TypeError` inside the harness.\n\nCo-Authored-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4ee9b39350f24dad667297235f23a503eed70c8b",
      "old_mode": 33188,
      "old_path": "examples/datafusion-ffi-query-planner-example/python/tests/_test_three_library_query_planner.py",
      "new_id": "ed9e6184a28d8eb0c0b403c24a8534e92cd94bb3",
      "new_mode": 33188,
      "new_path": "examples/datafusion-ffi-query-planner-example/python/tests/_test_three_library_query_planner.py"
    },
    {
      "type": "modify",
      "old_id": "1ea937ac85d150676146dd00b0cd60683299884d",
      "old_mode": 33188,
      "old_path": "python/datafusion/context.py",
      "new_id": "ac453bb72c62885ea60cbb3db3fb40618b7914b2",
      "new_mode": 33188,
      "new_path": "python/datafusion/context.py"
    },
    {
      "type": "modify",
      "old_id": "c12e631ca414f4d7cb2aadda176dc192f8a7b619",
      "old_mode": 33188,
      "old_path": "python/datafusion/extensions.py",
      "new_id": "8e35c720db65670e40fa756aaaed9b25c756c80d",
      "new_mode": 33188,
      "new_path": "python/datafusion/extensions.py"
    },
    {
      "type": "modify",
      "old_id": "ff53c1776e40058418a388d8b4b39b7137e15fbf",
      "old_mode": 33188,
      "old_path": "python/tests/test_context.py",
      "new_id": "0418acde24b9d4de5d34d5c0c0ed1559016998c2",
      "new_mode": 33188,
      "new_path": "python/tests/test_context.py"
    },
    {
      "type": "modify",
      "old_id": "b1afd6832283e838b0cc862baf9fc5682d87d2ab",
      "old_mode": 33188,
      "old_path": "python/tests/test_wrapper_coverage.py",
      "new_id": "7e8bd3f2db64f85794556706d9dfa7897b5243b2",
      "new_mode": 33188,
      "new_path": "python/tests/test_wrapper_coverage.py"
    }
  ]
}
