)]}'
{
  "commit": "29472463ba601e9c0513eadb19470e435b2601a1",
  "tree": "5dc815bb61bd53c60fd301f429d779994ef07f9b",
  "parents": [
    "c325dc35f621fe24d0460bb14547cdb51e00c00b"
  ],
  "author": {
    "name": "Shawn O. Pearce",
    "email": "sop@google.com",
    "time": "Tue Oct 11 09:24:07 2011 -0700"
  },
  "committer": {
    "name": "Shawn O. Pearce",
    "email": "sop@google.com",
    "time": "Tue Oct 11 09:24:07 2011 -0700"
  },
  "message": "Work around Python 2.7 failure to initialize base class\n\nurllib2 returns a malformed HTTPError object in certain situations.\nFor example, urllib2 has a couple of places where it creates an\nHTTPError object with no fp:\n\n  if self.retried \u003e 5:\n    # retry sending the username:password 5 times before failing.\n    raise HTTPError(req.get_full_url(), 401, \"basic auth failed\",\n                    headers, None)\n\nWhen it does that, HTTPError\u0027s ctor doesn\u0027t call through to\naddinfourl\u0027s ctor:\n\n  # The addinfourl classes depend on fp being a valid file\n  # object.  In some cases, the HTTPError may not have a valid\n  # file object.  If this happens, the simplest workaround is to\n  # not initialize the base classes.\n  if fp is not None:\n    self.__super_init(fp, hdrs, url, code)\n\nWhich means the \u0027headers\u0027 slot in addinfourl is not initialized and\ninfo() fails.  It is completely insane that urllib2 decides not to\ninitialize its own base class sometimes.\n\nChange-Id: I32a0d738f71bdd7d38d86078b71d9001e26f1ec3\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "43f4713cf44a20b90e739e4b744143387705b322",
      "old_mode": 33188,
      "old_path": "project.py",
      "new_id": "76d4d0d5325135f9e6d9f461298c925a3ff414b7",
      "new_mode": 33188,
      "new_path": "project.py"
    }
  ]
}
