)]}'
{
  "commit": "82587ce71bbbdc80d3ef6386e07c892f309697a3",
  "tree": "e30cfe6d33e166d1a325e1e118666f71ca355ff1",
  "parents": [
    "328aaa626fbbc3d664086b6dd4bde11bd71f9d5d"
  ],
  "author": {
    "name": "Bobby R. Bruce",
    "email": "bbruce@ucdavis.edu",
    "time": "Mon Jun 12 14:09:15 2023 -0700"
  },
  "committer": {
    "name": "Bobby Bruce",
    "email": "bbruce@ucdavis.edu",
    "time": "Thu Jun 15 20:14:55 2023 +0000"
  },
  "message": "stdlib: Refactor gem5 Vision/gem5-resources code\n\nThis patch includes several changes to the gem5 tools interface to the\ngem5-resources infrastructure. These are:\n\n* The old download and JSON query functions have been removed from the\n  downloader module. These functions were used for directly downloading\n  and inspecting the resource JSON file, hosted at\n  https://resources.gem5.org/resources. This information is now obtained\n  via `gem5.client`. If a resources JSON file is specified as a client,\n  it should conform to the new schema:\n  https//resources.gem5.org/gem5-resources-schema.json. The old schema\n  (pre-v23.0) is no longer valid. Tests have been updated to reflect\n  this change. Those which tested these old functions have been removed.\n* Unused imports have been removed.\n* For the resource query functions, and those tasked with obtaining the\n  resources, the parameter `gem5_version` has been added. In all cases\n  it does the same thing:\n    * It will filter results based on compatibility to the\n      `gem5_version` specified. If no resources are compatible the\n      latest version of that resource is chosen (though a warning is\n      thrown).\n    * By default it is set to the current gem5 version.\n    * It is optional. If `None`, this filtering functionality is not\n      carried out.\n    * Tests have been updated to fix the version to “develop” so the\n      they do not break between versions.\n* The `gem5_version` parameters will filter using a logic which will\n  base compatibility on the specificity of the gem5-version specified in\n  a resource’s data. If a resource has a compatible gem5-version of\n  “v18.4” it will be compatible with any minor/hotfix version within the\n  v18.4 release (this can be seen as matching on “v18.4.*.*”.) Likewise,\n  if a resource has a compatible gem5-version of “v18.4.1” then it’s\n  only compatible with the v18.4.1 release but any of it’s hot fix\n  releases (“v18.4.1.*”).\n* The ‘list_resources’ function has been updated to use the\n  “gem5.client” APIs to get resource information from the clients\n  (MongoDB or a JSON file). This has been designed to remain backwards\n  compatible to as much as is possible, though, due to schema changes,\n  the function does search across all versions of gem5.\n* `get_resources` function was added to the `AbstractClient`. This is a\n   more general function than `get_resource_by_id`. It was\n  primarily created to handle the `list_resources` update but is a\n  useful update to the API. The `get_resource_by_id` function has been\n  altered to function as a wrapped to the `get_resources` function.\n* Removed “GEM5_RESOURCE_JSON” code has been removed. This is no longer\n  used.\n* Tests have been cleaned up a little bit to be easier to read.\n* Some docstrings have been updated.\n\nThings that are left TODO with this code:\n\n* The client_wrapper/client/abstract_client abstractions are rather\n  pointless. In particular the client_wrapper and client classes could\n  be merged.\n* The downloader module no longer does much and should have its\n  functions merged into other modules.\n* With the addition of the `get_resources` function, much of the code in\n  the `AbstractClient` could be simplified.\n\nChange-Id: I0ce48e88b93a2b9db53d4749861fa0b5f9472053\nReviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/71506\nReviewed-by: Kunal Pai \u003ckunpai@ucdavis.edu\u003e\nMaintainer: Jason Lowe-Power \u003cpower.jg@gmail.com\u003e\nTested-by: kokoro \u003cnoreply+kokoro@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bd473eb03882ed0a2abe649cfe0df14351959908",
      "old_mode": 33188,
      "old_path": "src/python/gem5/resources/client.py",
      "new_id": "ab8262bf922c8b9eafb4df81d1909f05fefa3693",
      "new_mode": 33188,
      "new_path": "src/python/gem5/resources/client.py"
    },
    {
      "type": "modify",
      "old_id": "74a513fc561b064a8f4826df1bf147d9649c9f50",
      "old_mode": 33188,
      "old_path": "src/python/gem5/resources/client_api/abstract_client.py",
      "new_id": "7f8ad6166ecf0911a295f10e03a432e1407c2f68",
      "new_mode": 33188,
      "new_path": "src/python/gem5/resources/client_api/abstract_client.py"
    },
    {
      "type": "modify",
      "old_id": "4a6e5cf691d5e93aec330cef8fa8265f394fbbe2",
      "old_mode": 33188,
      "old_path": "src/python/gem5/resources/client_api/atlasclient.py",
      "new_id": "7d2a27c3f7aadad99687e941b325e932954881b0",
      "new_mode": 33188,
      "new_path": "src/python/gem5/resources/client_api/atlasclient.py"
    },
    {
      "type": "modify",
      "old_id": "74ee831c1f5216f89ebd14089bea6b4a9320d03e",
      "old_mode": 33188,
      "old_path": "src/python/gem5/resources/client_api/client_wrapper.py",
      "new_id": "ebf1b8ec2ba8b131be7bb946d4719fdad6153468",
      "new_mode": 33188,
      "new_path": "src/python/gem5/resources/client_api/client_wrapper.py"
    },
    {
      "type": "modify",
      "old_id": "225126e2a880517f67abd98a49123e369f97dc63",
      "old_mode": 33188,
      "old_path": "src/python/gem5/resources/client_api/jsonclient.py",
      "new_id": "9e837131b0c406b15db3ab453249c0dc895b35ae",
      "new_mode": 33188,
      "new_path": "src/python/gem5/resources/client_api/jsonclient.py"
    },
    {
      "type": "modify",
      "old_id": "0781d9b15aa52a42eed55192b0db88b87cf06efd",
      "old_mode": 33188,
      "old_path": "src/python/gem5/resources/downloader.py",
      "new_id": "bb5ca84cc0ac4eacacb9aeaa9c196f4bee213faa",
      "new_mode": 33188,
      "new_path": "src/python/gem5/resources/downloader.py"
    },
    {
      "type": "modify",
      "old_id": "22adf15670c81208bce20e46b1e8c5b5e0cfdab9",
      "old_mode": 33188,
      "old_path": "src/python/gem5/resources/resource.py",
      "new_id": "bc9f4480baa6547d781c7e573a2e2b89b9cecb1a",
      "new_mode": 33188,
      "new_path": "src/python/gem5/resources/resource.py"
    },
    {
      "type": "modify",
      "old_id": "148ab3f35a86e3a8d3fa48115b7ad52027de7fa7",
      "old_mode": 33188,
      "old_path": "src/python/gem5/resources/workload.py",
      "new_id": "0798b891ab166dbd4c8715eebb6ea85a3c49a59d",
      "new_mode": 33188,
      "new_path": "src/python/gem5/resources/workload.py"
    },
    {
      "type": "modify",
      "old_id": "decc62c2d79e261a9f76be54c25a97dbde9fa014",
      "old_mode": 33188,
      "old_path": "tests/gem5/configs/download_check.py",
      "new_id": "2180f4f26afd63dc0e6de2fce236a490d4991e81",
      "new_mode": 33188,
      "new_path": "tests/gem5/configs/download_check.py"
    },
    {
      "type": "modify",
      "old_id": "344f67b8b09fc84cff3d371806baa1f2bb0a677a",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/pyunit_client_wrapper_checks.py",
      "new_id": "f190b1ed5f00f2f27e4d7e62f25b6acde1ae9f74",
      "new_mode": 33188,
      "new_path": "tests/pyunit/stdlib/resources/pyunit_client_wrapper_checks.py"
    },
    {
      "type": "rename",
      "old_id": "19169e480ea4f7feee7ad895b39f1a44a8699766",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/pyunit_downloader_checks.py",
      "new_id": "88db3d4967deab98b24f3c57393b5d524a8eef60",
      "new_mode": 33188,
      "new_path": "tests/pyunit/stdlib/resources/pyunit_json_client_checks.py",
      "score": 87
    },
    {
      "type": "modify",
      "old_id": "791d96c1f143b838cd665e0d94cfa5b2d24e05f2",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/pyunit_obtain_resources_check.py",
      "new_id": "b1eda4e6ed2f258164265ecbcb0e79668f2d6137",
      "new_mode": 33188,
      "new_path": "tests/pyunit/stdlib/resources/pyunit_obtain_resources_check.py"
    },
    {
      "type": "delete",
      "old_id": "8f6674ff0d93b1c431f0770dab5d54472486fdb6",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/pyunit_resource_download_checks.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "5c22a7341e4d5b6b93fd717148c9037fbe5da661",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/pyunit_resource_specialization.py",
      "new_id": "f2088db8ef75b12c7ab94dff3408d39ec8ec89dc",
      "new_mode": 33188,
      "new_path": "tests/pyunit/stdlib/resources/pyunit_resource_specialization.py"
    },
    {
      "type": "modify",
      "old_id": "b898faeb794e3b77fb3d612d99c5d8e65779ef45",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/pyunit_workload_checks.py",
      "new_id": "b59e09d4fe9028d570559ffd1cf8fe8422e40da1",
      "new_mode": 33188,
      "new_path": "tests/pyunit/stdlib/resources/pyunit_workload_checks.py"
    },
    {
      "type": "modify",
      "old_id": "b6376cc5e41960506fe82e2a2eb83fd1c8f30eba",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/refs/mongo-mock.json",
      "new_id": "e2fb058ff7b78562033264be540892bed43e58c4",
      "new_mode": 33188,
      "new_path": "tests/pyunit/stdlib/resources/refs/mongo-mock.json"
    },
    {
      "type": "modify",
      "old_id": "fac95e106ab66c7dab014f1ba79dececfe545896",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/refs/obtain-resource.json",
      "new_id": "9125bf4ae66a750c4b8671a90900a0487246ae8a",
      "new_mode": 33188,
      "new_path": "tests/pyunit/stdlib/resources/refs/obtain-resource.json"
    },
    {
      "type": "modify",
      "old_id": "1129f1bd05e70638af5d20d401c03e26436ea667",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/refs/resource-specialization.json",
      "new_id": "414bf73b11d1d26f787086b562f03009f609dc19",
      "new_mode": 33188,
      "new_path": "tests/pyunit/stdlib/resources/refs/resource-specialization.json"
    },
    {
      "type": "modify",
      "old_id": "812caeff43b286ef81342ad89a96eddf32475cc3",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/refs/resources.json",
      "new_id": "56930f37d5d3a85272500bc728ecc769eb6bf004",
      "new_mode": 33188,
      "new_path": "tests/pyunit/stdlib/resources/refs/resources.json"
    },
    {
      "type": "delete",
      "old_id": "a7e9c9d84f9cfa41c250df9262bfaa53a0e46c2d",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/refs/workload-checks-custom-workload.json",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "d41001d26c14aa96659ebba90740efe31d90da0b",
      "old_mode": 33188,
      "old_path": "tests/pyunit/stdlib/resources/refs/workload-checks.json",
      "new_id": "dcb8577619e469d5020ec39f80e2efad5772e37c",
      "new_mode": 33188,
      "new_path": "tests/pyunit/stdlib/resources/refs/workload-checks.json"
    }
  ]
}
