)]}'
{
  "commit": "5e14aa6aa712e23f4e37c7520d70fa7fdd7bc213",
  "tree": "d2bbe43edbd9f6d0a1ee1dff2bc4716748a02a25",
  "parents": [
    "39498b2bd39642dd6f97dc60f8220c69a422b295"
  ],
  "author": {
    "name": "Jason Rhinelander",
    "email": "jason@imaginary.ca",
    "time": "Thu Aug 17 11:38:05 2017 -0400"
  },
  "committer": {
    "name": "Jason Rhinelander",
    "email": "jason@imaginary.ca",
    "time": "Sat Aug 19 15:30:39 2017 -0400"
  },
  "message": "Allow module-local classes to be loaded externally\n\nThe main point of `py::module_local` is to make the C++ -\u003e Python cast\nunique so that returning/casting a C++ instance is well-defined.\nUnfortunately it also makes loading unique, but this isn\u0027t particularly\ndesirable: when an instance contains `Type` instance there\u0027s no reason\nit shouldn\u0027t be possible to pass that instance to a bound function\ntaking a `Type` parameter, even if that function is in another module.\n\nThis commit solves the issue by allowing foreign module (and global)\ntype loaders have a chance to load the value if the local module loader\nfails.  The implementation here does this by storing a module-local\nloading function in a capsule in the python type, which we can then call\nif the local (and possibly global, if the local type is masking a global\ntype) version doesn\u0027t work.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cdac77de6d694b6fcf946e24c12d0cff87a041f9",
      "old_mode": 33188,
      "old_path": "docs/advanced/classes.rst",
      "new_id": "569102efc5ad5a6931176c4ac74b6b4dab08ccc3",
      "new_mode": 33188,
      "new_path": "docs/advanced/classes.rst"
    },
    {
      "type": "modify",
      "old_id": "a0bc8d338ce725bd0b87f8d0c65bd0590c6ffe0a",
      "old_mode": 33188,
      "old_path": "include/pybind11/cast.h",
      "new_id": "805fea6fb032fb9d36d46c17c940e5a423b6220c",
      "new_mode": 33188,
      "new_path": "include/pybind11/cast.h"
    },
    {
      "type": "modify",
      "old_id": "afa91accd02b8c31bf22e3a2035d888eed568c3d",
      "old_mode": 33188,
      "old_path": "include/pybind11/pybind11.h",
      "new_id": "5c78abee0e15792c52a9fd4357fd141a967377f6",
      "new_mode": 33188,
      "new_path": "include/pybind11/pybind11.h"
    },
    {
      "type": "modify",
      "old_id": "06a56fcd1f925b23348795070d97d4ce69d04804",
      "old_mode": 33188,
      "old_path": "tests/local_bindings.h",
      "new_id": "8f48ed9eb7f617170e0edc54b044ffae9267c963",
      "new_mode": 33188,
      "new_path": "tests/local_bindings.h"
    },
    {
      "type": "modify",
      "old_id": "252f893604ef84bb0436b39ce8afb1007e32e621",
      "old_mode": 33188,
      "old_path": "tests/pybind11_cross_module_tests.cpp",
      "new_id": "2091624464af2a7416c2d813e6bd1708c51d249b",
      "new_mode": 33188,
      "new_path": "tests/pybind11_cross_module_tests.cpp"
    },
    {
      "type": "modify",
      "old_id": "fdb67a1a695ce53e09bdf4f351927e7a5a08a2ef",
      "old_mode": 33188,
      "old_path": "tests/test_local_bindings.cpp",
      "new_id": "359d6c61c91c14c4935ce839ab32c01487ea21de",
      "new_mode": 33188,
      "new_path": "tests/test_local_bindings.cpp"
    },
    {
      "type": "modify",
      "old_id": "3a6ad8b27e4e6dc9b6621d36e150730f9abaec69",
      "old_mode": 33188,
      "old_path": "tests/test_local_bindings.py",
      "new_id": "e9a63ca0f627b49f47089752ab13a3c5b215d77d",
      "new_mode": 33188,
      "new_path": "tests/test_local_bindings.py"
    }
  ]
}
