)]}'
{
  "log": [
    {
      "commit": "6ad1c8a0ef8697abeaa608ff59f9059365ddc00c",
      "tree": "482b9bbb7ad67624261df0e4e7c5476c2f75459e",
      "parents": [
        "fd093c6704cd6c2cc18ba107d7a6f6d09a95f8b1"
      ],
      "author": {
        "name": "Robert O\u0027Connor",
        "email": "rob@oconnor.ninja",
        "time": "Sat Dec 23 01:59:32 2017 -0500"
      },
      "committer": {
        "name": "Robert O\u0027Connor",
        "email": "rob@oconnor.ninja",
        "time": "Tue Jan 09 22:21:10 2018 -0500"
      },
      "message": "Allow for specifying the page size\n\nDefault to 25\nMax of 100\n\nChange-Id: Ic8dc5986f09ad7be95d37654abd71f89bf3516b0\n"
    },
    {
      "commit": "fd093c6704cd6c2cc18ba107d7a6f6d09a95f8b1",
      "tree": "37492275f72a3b927b68296b19505e5f84fb7f38",
      "parents": [
        "4b42da3061c9871bbbc14b504f3d8c0203451325"
      ],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Wed Dec 20 12:28:43 2017 -0800"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Wed Dec 20 12:28:43 2017 -0800"
      },
      "message": "Add .editorconfig to mostly do the right thing with formatting.\n"
    },
    {
      "commit": "4b42da3061c9871bbbc14b504f3d8c0203451325",
      "tree": "2ad38a1e8795e0b2795cdfddf3a6d8d737522f0b",
      "parents": [
        "d7f9496ab85686fc6451b5363bb43af81000cfd1"
      ],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Wed Dec 20 12:26:50 2017 -0800"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Wed Dec 20 12:26:50 2017 -0800"
      },
      "message": "document the use of yapf for formatting\n"
    },
    {
      "commit": "d7f9496ab85686fc6451b5363bb43af81000cfd1",
      "tree": "0358ba45cac58c7a66abed164647ed9af1a8a94c",
      "parents": [
        "923345d8c276892e29640d77c1010893309bcd36"
      ],
      "author": {
        "name": "Robert O\u0027Connor",
        "email": "rob@oconnor.ninja",
        "time": "Wed Dec 13 01:14:22 2017 -0500"
      },
      "committer": {
        "name": "Robert O\u0027Connor",
        "email": "rob@oconnor.ninja",
        "time": "Tue Dec 19 18:31:28 2017 -0500"
      },
      "message": "Some style improvements.\n\n- Used yapf to clean things up\n- add a flake8 config\n- add .python-version file for pyenv\n- add yapf style config\n\nChange-Id: I1bda89cff8fca2c770fc81b94e76e398dd64662c\n"
    },
    {
      "commit": "923345d8c276892e29640d77c1010893309bcd36",
      "tree": "a7f6adb1efd489740db4e1c819938904207daa86",
      "parents": [
        "f51dbdde3c3798f937e7860026c639a3439cf33a"
      ],
      "author": {
        "name": "Sean Morrison",
        "email": "brlcad@gmail.com",
        "time": "Wed Dec 06 02:37:40 2017 -0500"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Wed Dec 06 10:21:17 2017 -0800"
      },
      "message": "data coming back is unicode, so make sure we encode to utf-8. otherwise errors (e.g., UnicodeEncodeError: \u0027ascii\u0027 codec can\u0027t encode character ...) can be encountered when buffered (e.g., while piping output to less).\n"
    },
    {
      "commit": "f51dbdde3c3798f937e7860026c639a3439cf33a",
      "tree": "a82800552c03603d460ef17a27fe344372780041",
      "parents": [
        "e34ba9ade2bf4f1a9df97610dbbb277ad5138b46"
      ],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Wed Nov 23 13:18:24 2016 -0800"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Wed Nov 23 13:18:24 2016 -0800"
      },
      "message": "Add #!/usr/bin/python line to csv_uploader.\n"
    },
    {
      "commit": "e34ba9ade2bf4f1a9df97610dbbb277ad5138b46",
      "tree": "5e1963a1f16e5b6378323da4be1ba98220a91b41",
      "parents": [
        "0b4284dd7fdd43f48eca126868747a51f74f6fed"
      ],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Thu Nov 03 14:58:42 2016 -0700"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Thu Nov 03 15:21:53 2016 -0700"
      },
      "message": "Minor tidying.\n\nFix long line.\nFix argparse name\nAdd #!/usr/bin/python\n"
    },
    {
      "commit": "0b4284dd7fdd43f48eca126868747a51f74f6fed",
      "tree": "e49c568452d41533f4dc4a870572640be3389f99",
      "parents": [
        "783563d10fcc6bda5f7389d8d0a8316daab7c087"
      ],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Thu Nov 03 14:57:06 2016 -0700"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Thu Nov 03 14:57:06 2016 -0700"
      },
      "message": "Add support for listing task instances\n\nNew client methods:\n  ListTaskInstances\n  GetTaskInstance\n\nNew example script:\n  list_instances.py\n"
    },
    {
      "commit": "783563d10fcc6bda5f7389d8d0a8316daab7c087",
      "tree": "d16343ee483b1a7b94579004deaad3e70408314a",
      "parents": [
        "75504c1d4f912d10c49b1d90cf324fbceb9b1c25"
      ],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Thu Dec 03 20:02:37 2015 -0800"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Thu Dec 03 20:02:37 2015 -0800"
      },
      "message": "Fix lint error.  Improve documentation.\n"
    },
    {
      "commit": "75504c1d4f912d10c49b1d90cf324fbceb9b1c25",
      "tree": "41c4ea76de53197e46b1f0df830a12413772b81a",
      "parents": [
        "d51bb114a65e9f19cd772347961282ad5d2d2889"
      ],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Thu Dec 03 19:57:00 2015 -0800"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Thu Dec 03 19:57:00 2015 -0800"
      },
      "message": "Don\u0027t decode empty response from DELETE\n\nOn success, DELETE returns no data.  Attempting to parse it into JSON causes\na crash.  Check for content before parsing.\n"
    },
    {
      "commit": "d51bb114a65e9f19cd772347961282ad5d2d2889",
      "tree": "e67c8360397a058ba585c47ab93ae20b156f9377",
      "parents": [
        "1134003e38256890d73a454a7c3e40510a75e255"
      ],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Mon Nov 30 16:19:32 2015 -0800"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Mon Nov 30 16:19:32 2015 -0800"
      },
      "message": "Document requests library prereq.\n"
    },
    {
      "commit": "1134003e38256890d73a454a7c3e40510a75e255",
      "tree": "d240ddb9637a706c8a405ef40270b5579df96ebe",
      "parents": [
        "688a2400d112a790b8a891605a87497f152560a6"
      ],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Sat Nov 28 18:17:18 2015 -0800"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Sat Nov 28 18:17:18 2015 -0800"
      },
      "message": "send [] instead of [\u0027\u0027] for empty lists of things.\n\n\u0027\u0027.split(\u0027\u0027) returns [\u0027\u0027], which is not empty.  We actually want [].\n"
    },
    {
      "commit": "688a2400d112a790b8a891605a87497f152560a6",
      "tree": "0bbe4a71e22a54dede1c5af2c53cea82d1e43829",
      "parents": [
        "5a7d59d073b459b50c0dfc1f4b2925ab138883bf"
      ],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Sat Nov 28 18:03:54 2015 -0800"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Sat Nov 28 18:03:54 2015 -0800"
      },
      "message": "enable skipinitialspace on the DictReader\n\nOtherwise the leading whitespace is included in fields (such as the\nemail address) and the API (server side) doesn\u0027t strip it, causing\nissues.  No fields have significant leading/trailing whitespace.\n"
    },
    {
      "commit": "5a7d59d073b459b50c0dfc1f4b2925ab138883bf",
      "tree": "fd74ead0caf0c2f4091b09e1fd1c47d663a55845",
      "parents": [
        "c9a45e24c552d2a59259277cb19a9d9bf166481b"
      ],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Sat Nov 14 14:30:10 2015 -0800"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Sat Nov 14 14:31:06 2015 -0800"
      },
      "message": "Don\u0027t make --url required.\n\nUse the reasonable default of the prod site.\n"
    },
    {
      "commit": "c9a45e24c552d2a59259277cb19a9d9bf166481b",
      "tree": "1db5cad09cc63d389f33526676f7ae0f01e5006e",
      "parents": [],
      "author": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Tue Nov 10 15:27:31 2015 -0800"
      },
      "committer": {
        "name": "Robert Spier",
        "email": "rspier@google.com",
        "time": "Wed Nov 11 16:16:38 2015 -0800"
      },
      "message": "Initial public commit.\n\nContains simple python client, csv uploader example,\nlist tasks example.\n"
    }
  ]
}
