)]}'
{"HACKING":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"22c6edcaf2ed574a9ebdc7df82976596b5b102dd","unresolved":false,"context_lines":[{"line_number":80,"context_line":"----------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"When dealing with exceptions from underlying libraries, translate those"},{"line_number":83,"context_line":"exceptions to an instance or subclass of ClientException."},{"line_number":84,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":85,"context_line":"Testing"},{"line_number":86,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAOn%2F%2Ffeo%3D","line":83,"updated":"2013-05-07 23:51:41.000000000","message":"could use an extra blank line here.","commit_id":"f24aee996374da237a0096be0c8d8ee5900f9053"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"22c6edcaf2ed574a9ebdc7df82976596b5b102dd","unresolved":false,"context_lines":[{"line_number":85,"context_line":"Testing"},{"line_number":86,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"keystone client uses testtools and testr for its unittest suite and its test"},{"line_number":89,"context_line":"runner. Basic workflow around our use of tox and testr can be found at"},{"line_number":90,"context_line":"http://wiki.openstack.org/testr. If you\u0027d like to learn more in depth:"},{"line_number":91,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"AAAAOn%2F%2Ffek%3D","line":88,"updated":"2013-05-07 23:51:41.000000000","message":"\"keystone client\" is kind of ambiguous to me. change \"keystone client\" to \"python-keystoneclient\" ?","commit_id":"f24aee996374da237a0096be0c8d8ee5900f9053"}],"run_tests.sh":[{"author":{"_account_id":6,"name":"Joe Heck","email":"heckj@mac.com","username":"heckj"},"change_message_id":"8bb89a4be3a5108ae9a56ca5236aa3f668f0df2c","unresolved":false,"context_lines":[{"line_number":169,"context_line":"if [ $coverage -eq 1 ]; then"},{"line_number":170,"context_line":"    echo \"Generating coverage report in covhtml/\""},{"line_number":171,"context_line":"    ${wrapper} cverage combine"},{"line_number":172,"context_line":"    ${wrapper} coverage html --include\u003d\u0027keystoneclient/*\u0027 --omit\u003d\u0027keystoneclient/openstack/common/*\u0027 -d covhtml -i "},{"line_number":173,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":5,"id":"AAAAM3%2F%2Fxp0%3D","line":172,"updated":"2013-01-05 22:33:07.000000000","message":"NIT: extra whitespace","commit_id":"7cf1fc62912856bdcc7d198585af01b111dc621f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"22c6edcaf2ed574a9ebdc7df82976596b5b102dd","unresolved":false,"context_lines":[{"line_number":73,"context_line":"}"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"function run_tests {"},{"line_number":76,"context_line":"  # Cleanup *pyc"},{"line_number":77,"context_line":"  ${wrapper} find . -type f -name \"*.pyc\" -delete"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"  if [ $coverage -eq 1 ]; then"}],"source_content_type":"text/x-sh","patch_set":10,"id":"AAAAOn%2F%2FfeQ%3D","line":76,"updated":"2013-05-07 23:51:41.000000000","message":"change \"*pyc\" to \"*.pyc\"","commit_id":"f24aee996374da237a0096be0c8d8ee5900f9053"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"22c6edcaf2ed574a9ebdc7df82976596b5b102dd","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"function run_tests {"},{"line_number":76,"context_line":"  # Cleanup *pyc"},{"line_number":77,"context_line":"  ${wrapper} find . -type f -name \"*.pyc\" -delete"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"  if [ $coverage -eq 1 ]; then"},{"line_number":80,"context_line":"    # Do not test test_coverage_ext when gathering coverage."}],"source_content_type":"text/x-sh","patch_set":10,"id":"AAAAOn%2F%2FfeA%3D","line":77,"updated":"2013-05-07 23:51:41.000000000","message":"how does with_venv affect find?","commit_id":"f24aee996374da237a0096be0c8d8ee5900f9053"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"68f7d2daf573f0ce43ce756904489493e926c81d","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"function run_tests {"},{"line_number":76,"context_line":"  # Cleanup *pyc"},{"line_number":77,"context_line":"  ${wrapper} find . -type f -name \"*.pyc\" -delete"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"  if [ $coverage -eq 1 ]; then"},{"line_number":80,"context_line":"    # Do not test test_coverage_ext when gathering coverage."}],"source_content_type":"text/x-sh","patch_set":10,"id":"AAAAOn%2F%2FeBY%3D","line":77,"in_reply_to":"AAAAOn%2F%2FfeA%3D","updated":"2013-05-08 18:37:06.000000000","message":"It shouldn\u0027t affect it at all as find is not a python program; however, if find were to exec python programs you would want the wrapper. I think having it here is good for consistency.","commit_id":"f24aee996374da237a0096be0c8d8ee5900f9053"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"22c6edcaf2ed574a9ebdc7df82976596b5b102dd","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"if [ $coverage -eq 1 ]; then"},{"line_number":170,"context_line":"    echo \"Generating coverage report in covhtml/\""},{"line_number":171,"context_line":"    ${wrapper} cverage combine"},{"line_number":172,"context_line":"    ${wrapper} coverage html --include\u003d\u0027keystoneclient/*\u0027 --omit\u003d\u0027keystoneclient/openstack/common/*\u0027 -d covhtml -i"},{"line_number":173,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":10,"id":"AAAAOn%2F%2FfeI%3D","line":171,"updated":"2013-05-07 23:51:41.000000000","message":"typo here? cverage\n\nplease test.","commit_id":"f24aee996374da237a0096be0c8d8ee5900f9053"}],"setup.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"267bc73d6d5f25f4491e0c28caaa158d311efca5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cmdclass\u003dsetup.get_cmdclass(),"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    tests_require\u003dtests_require,"},{"line_number":40,"context_line":"    test_suite\u003d\"nose.collector\","},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    entry_points\u003d{"},{"line_number":43,"context_line":"        \u0027console_scripts\u0027: [\u0027keystone \u003d keystoneclient.shell:main\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FwEs%3D","side":"PARENT","line":40,"updated":"2013-01-07 18:15:31.000000000","message":"does this break \"python setup.py test\"?","commit_id":"55f2cdbe291542c7cb92f16d804957e1bd91be26"}],"tests/test_auth_token_middleware.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"267bc73d6d5f25f4491e0c28caaa158d311efca5","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"ROOTDIR \u003d os.path.dirname(os.path.dirname(os.path.realpath(__file__)))"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"CERTDIR \u003d os.path.join(ROOTDIR, \"examples/pki/certs\")"},{"line_number":38,"context_line":"KEYDIR \u003d os.path.join(ROOTDIR, \"examples/pki/private\")"},{"line_number":39,"context_line":"CMSDIR \u003d os.path.join(ROOTDIR, \"examples/pki/cms\")"},{"line_number":40,"context_line":"SIGNING_CERT \u003d os.path.join(CERTDIR, \u0027signing_cert.pem\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FwD4%3D","line":37,"updated":"2013-01-07 18:15:31.000000000","message":"side note, these should really be:\n\n  CERTDIR \u003d os.path.join(ROOTDIR, \u0027examples\u0027, \u0027pki\u0027, \u0027certs\u0027)","commit_id":"57ca2b87e0c5d42594e44f103baa1e9f3da9b6bc"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7ba8ee75e334d060517ec4693dd4f925e48f0f72","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        self.assertTrue(\u0027keystone.token_info\u0027 in req.environ)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"class NoMemecacheAuthToken(BaseAuthTokenMiddlewareTest):"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def setUp(self):"},{"line_number":510,"context_line":"        super(NoMemecacheAuthToken, self).setUp()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FdzA%3D","line":507,"updated":"2013-01-21 16:43:19.000000000","message":"typo: \"Memecache\" -\u003e \"Memcache\"","commit_id":"6c61d89ae1f980f3a679fdcf295f23bfd93f0048"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"019da9c68dff6d0ee2277103810b6af22ec503f7","unresolved":false,"context_lines":[{"line_number":504,"context_line":"        self.assertTrue(\u0027keystone.token_info\u0027 in req.environ)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"class NoMemecacheAuthToken(BaseAuthTokenMiddlewareTest):"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def setUp(self):"},{"line_number":510,"context_line":"        super(NoMemecacheAuthToken, self).setUp()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FdDI%3D","line":507,"in_reply_to":"AAAAM3%2F%2FdzA%3D","updated":"2013-01-21 22:38:50.000000000","message":"mtaylor: the amount time you spend looking at pictures of cats is starting to affect your code","commit_id":"6c61d89ae1f980f3a679fdcf295f23bfd93f0048"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5dd9ffe26ef1a8e0cabee61cb53cc212d200725f","unresolved":false,"context_lines":[{"line_number":915,"context_line":"        }"},{"line_number":916,"context_line":"        self.assertRaises(Exception, auth_token.AuthProtocol,"},{"line_number":917,"context_line":"                          FakeApp(), conf)"},{"line_number":918,"context_line":"        # test invalue memcache_security_strategy"},{"line_number":919,"context_line":"        conf \u003d {"},{"line_number":920,"context_line":"            \u0027admin_token\u0027: \u0027admin_token1\u0027,"},{"line_number":921,"context_line":"            \u0027auth_host\u0027: \u0027keystone.example.com\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAM3%2F%2FXCU%3D","line":918,"updated":"2013-01-25 17:06:24.000000000","message":"(typo) invalue -\u003e invalid","commit_id":"56b27c14129f2ce74c7bc48de471d0442dcd0b5f"}],"tox.ini":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"6050d5622ab5e7638e0d26221031d30d5ffca030","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"deps \u003d -r{toxinidir}/tools/pip-requires"},{"line_number":13,"context_line":"       -r{toxinidir}/tools/test-requires"},{"line_number":14,"context_line":"commands \u003d python setup.py testr --testr-args\u003d\u0027{posargs}\u0027"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[testenv:pep8]"},{"line_number":17,"context_line":"commands \u003d pep8 --repeat --show-source --ignore\u003dE711,E712,E125,E126 --exclude\u003d.venv,.tox,dist,doc ."}],"source_content_type":"text/x-properties","patch_set":7,"id":"AAAAM3%2F%2FmM4%3D","line":14,"updated":"2013-01-14 17:39:54.000000000","message":"ah, cool","commit_id":"8c255ac32624d345c12ff551b297d7f6e5fff147"}]}
