)]}'
{
  "commit": "deb6562719c2ca90b5fbdc2974e8a77da8430a96",
  "tree": "8930acee7295640e355c4a957b4919653663ea11",
  "parents": [
    "3774ce42263b947b211c6bb54aea85a00caa561e"
  ],
  "author": {
    "name": "Tristan van Berkom",
    "email": "tristan.vanberkom@codethink.co.uk",
    "time": "Sun Jun 14 21:23:19 2020 +0900"
  },
  "committer": {
    "name": "Tristan Van Berkom",
    "email": "tristan.van.berkom@gmail.com",
    "time": "Tue Jun 16 16:18:21 2020 +0000"
  },
  "message": "_loader: Adding LoadContext\n\nInstead of passing around many details though calling signatures\nthroughout the loader code, create a single LoadContext object\nwhich holds any overall loading state along with any values which\nare constant to a full load process.\n\nOverall this patch does:\n\n  * _frontend/app.py: No need to pass Stream.fetch_subprojects() along anymore\n\n  * _loader/loadelement.pyx: collect_element_no_deps() no longer takes a task argument\n\n  * _loader/loader.py: Now the Loader has a `load_context` member, and no more\n    `_fetch_subprojects` member or `_context` members\n\n    Further, `rewritable` and `ticker` is no longer passed along through all\n    of the recursing calling signatures, and `ticker` itself is finally removed\n    because this has been replaced a long time ago with `Task` API from `State`.\n\n  * _pipeline.py: The load() function no longer has a `rewritable` parameter\n\n  * _project.py: The Project() is responsible for creating the toplevel\n    LoadContext() if one doesn\u0027t exist yet, and this is passed through\n    to the Loader() (and also passed to the Project() constructor by the\n    Loader() when instantiating subprojects).\n\n  * _stream.py: The `Stream._fetch_subprojects()` is now private and set\n    on the project when giving the Project to the Stream in `Stream.set_project()`,\n    also the Stream() sets the `rewritable` state on the `LoadContext` at the\n    earliest opportunity, as the `Stream()` is the one who decides this detail.\n\n    Further, some double underscore private functions are now regular single\n    underscores, there was no reason for this inconsistency.\n\n  * tests/internals/loader.py: Updated for API change\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8d4dd34b13f635aacc0acf31d494b0d7e076e5e1",
      "old_mode": 33188,
      "old_path": "src/buildstream/_frontend/app.py",
      "new_id": "b77cfc130a07930ae3875ff5629f0f9ca448b6c8",
      "new_mode": 33188,
      "new_path": "src/buildstream/_frontend/app.py"
    },
    {
      "type": "modify",
      "old_id": "a2c31796e4ce30f9e266a3e5cce9189389a90634",
      "old_mode": 33188,
      "old_path": "src/buildstream/_loader/__init__.py",
      "new_id": "fd5cac2ae87fd6d792eb121da8935da3421a791f",
      "new_mode": 33188,
      "new_path": "src/buildstream/_loader/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "161be913b0f491b47ebb0ffa3ecba6c260b7b516",
      "new_mode": 33188,
      "new_path": "src/buildstream/_loader/loadcontext.py"
    },
    {
      "type": "modify",
      "old_id": "014f01746c8077ab1ab1ea67116c93da4ae9fc9f",
      "old_mode": 33188,
      "old_path": "src/buildstream/_loader/loadelement.pyx",
      "new_id": "784ab8f7b719fb1f386841eab3971474ebbc8f74",
      "new_mode": 33188,
      "new_path": "src/buildstream/_loader/loadelement.pyx"
    },
    {
      "type": "modify",
      "old_id": "fd9e2ef2dc5f04c9b206a3c323d77c75ad8cf9c0",
      "old_mode": 33188,
      "old_path": "src/buildstream/_loader/loader.py",
      "new_id": "13d8f9f214b9f5c539f9a550fc56d35b4f74f776",
      "new_mode": 33188,
      "new_path": "src/buildstream/_loader/loader.py"
    },
    {
      "type": "modify",
      "old_id": "8de97bea6dc56229484b2072a5a69d6c701547d9",
      "old_mode": 33188,
      "old_path": "src/buildstream/_pipeline.py",
      "new_id": "9edc6f51bd6dc536ce70f3d0d023196ffa20aef2",
      "new_mode": 33188,
      "new_path": "src/buildstream/_pipeline.py"
    },
    {
      "type": "modify",
      "old_id": "3006e2976f8ed62ed00a0ed696cc052e898a7afa",
      "old_mode": 33188,
      "old_path": "src/buildstream/_project.py",
      "new_id": "e0ddf3d410bf1135854ee2da801d34260b54a35e",
      "new_mode": 33188,
      "new_path": "src/buildstream/_project.py"
    },
    {
      "type": "modify",
      "old_id": "b38927e1845b14228d71ba21800a9e390a6e8f60",
      "old_mode": 33188,
      "old_path": "src/buildstream/_stream.py",
      "new_id": "3d646a75673a18c667be405db484db67196f9e4d",
      "new_mode": 33188,
      "new_path": "src/buildstream/_stream.py"
    },
    {
      "type": "modify",
      "old_id": "408813a647e666cdff6f2120d1301e4fbf7cf881",
      "old_mode": 33188,
      "old_path": "tests/internals/loader.py",
      "new_id": "bdce428f0f6bba198fa036f061a3475538a21fd7",
      "new_mode": 33188,
      "new_path": "tests/internals/loader.py"
    }
  ]
}
