)]}'
{
  "commit": "2b6c185cbb32dc49b78a50b25c594726aaf699b9",
  "tree": "6ac783e0c3616804eb0899e917ce1525abc88f94",
  "parents": [
    "72456c968a144f8fe2a6073848195c5c7b9e0663"
  ],
  "author": {
    "name": "Matt Moore",
    "email": "mattmoor@google.com",
    "time": "Fri Sep 22 23:40:27 2017 +0000"
  },
  "committer": {
    "name": "Matt Moore",
    "email": "mattmoor@google.com",
    "time": "Thu Nov 16 22:07:01 2017 +0000"
  },
  "message": "This adds support for \"extras\".\n\n\"Extras\" are additional dependencies of a given library, which are consumed by passing the \"extra\" name in brackets after the distribution name, for example:\n```\nmock[docs]\u003d\u003d1.0.1\n```\n\nWe see this in the dependencies of several Google Cloud libraries, which depend on: `googleapis_common_protos[grpc]`\n\nI\u0027ve added a simple test that the dependency structure we synthesize for this kind of thing is correct via an \"extras\" test that has a `requirements.txt` of:\n```\ngoogle-cloud-language\u003d\u003d0.27.0\n```\n\nFixes: https://github.com/bazelbuild/rules_python/issues/12\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a6a87109cb173374d154b14f30b9598eb0117383",
      "old_mode": 33188,
      "old_path": "README.md",
      "new_id": "aea05d57ab533b07a61d58ff556e6bc63b39d2a4",
      "new_mode": 33188,
      "new_path": "README.md"
    },
    {
      "type": "modify",
      "old_id": "0f205befecfc80793f050c9f00fa147e77776e0b",
      "old_mode": 33188,
      "old_path": "WORKSPACE",
      "new_id": "430dfe7f07b6068f7b3f99a4f1daa2fe1d32c696",
      "new_mode": 33188,
      "new_path": "WORKSPACE"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "94880ce47c7a8b06d43905ca8ef0e6497f6aef89",
      "new_mode": 33188,
      "new_path": "examples/extras/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3ad249d5a0930ab78cc2223a18a4a56b20649e7b",
      "new_mode": 33188,
      "new_path": "examples/extras/extras_test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "743bbe7921260da2acac45c1819a8d84327053c3",
      "new_mode": 33188,
      "new_path": "examples/extras/requirements.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9b469b76d3c11b462608c6f8972f248a5fe19b6e",
      "new_mode": 33188,
      "new_path": "examples/extras/version_test.py"
    },
    {
      "type": "modify",
      "old_id": "f7827ed51f23e2b47ce1d3646c2b398d516d445d",
      "old_mode": 33188,
      "old_path": "python/whl.bzl",
      "new_id": "7a19947c5f7e31ca3f3ed0c269cec784c7db20d7",
      "new_mode": 33188,
      "new_path": "python/whl.bzl"
    },
    {
      "type": "modify",
      "old_id": "08aca7e5304d9bb3ff1a833ecc17ff2e6dd725bd",
      "old_mode": 33188,
      "old_path": "rules_python/BUILD",
      "new_id": "e0bf79667eddae32e93b7436c2621c9b7e5e6c17",
      "new_mode": 33188,
      "new_path": "rules_python/BUILD"
    },
    {
      "type": "modify",
      "old_id": "98dfce9c48a73208bf2ffabd2427a90d02090506",
      "old_mode": 33188,
      "old_path": "rules_python/piptool.py",
      "new_id": "f5d504aa87807df3d30b90c74bc2be06a2e8b006",
      "new_mode": 33188,
      "new_path": "rules_python/piptool.py"
    },
    {
      "type": "modify",
      "old_id": "14d775a778c0a1c52b07f6d8274312d0d42b35d5",
      "old_mode": 33188,
      "old_path": "rules_python/whl.py",
      "new_id": "e3829bd9d6b3d96bcf8b6600232fdb3b356b2c15",
      "new_mode": 33188,
      "new_path": "rules_python/whl.py"
    },
    {
      "type": "modify",
      "old_id": "e1483282751ebbd885d49f850e85f12147ee3f2a",
      "old_mode": 33188,
      "old_path": "rules_python/whl_test.py",
      "new_id": "c56a4e997d60fc117a84e6e495935e2bca5f74ab",
      "new_mode": 33188,
      "new_path": "rules_python/whl_test.py"
    },
    {
      "type": "modify",
      "old_id": "29b12897705a30a87ca4d1581b8cc4b75f8b26d5",
      "old_mode": 33261,
      "old_path": "tools/piptool.par",
      "new_id": "41019234d328d7386de51298be6152601e1dd311",
      "new_mode": 33261,
      "new_path": "tools/piptool.par"
    }
  ]
}
