)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"77ddce989b3232e10632145671535d099fef2103","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\"fixtures\" and renamed to \"gabbits.py\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This is a small part of ongoing work related to"},{"line_number":22,"context_line":"blueprint bp/placement-extract"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I126ada549d3879f89d1ec64b743da14807a39351"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f7c97a3_c56cbdcf","line":22,"range":{"start_line":22,"start_character":10,"end_line":22,"end_character":13},"updated":"2018-05-14 20:14:17.000000000","message":"nix this so gerrit links it properly.","commit_id":"2b6043aa645374a055fa289890978c7e53ec66e9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"170d7aca5d12a07ac7533b276e311543c505bc24","unresolved":false,"context_lines":[{"line_number":15,"context_line":"placement hierarchy and makes the second role a subclass of the first."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To make this work nicely, existing placement fixtures (in fixtures.py),"},{"line_number":18,"context_line":"used solely for the gabbi tests are moved into a new directly called"},{"line_number":19,"context_line":"\"fixtures\" and renamed to \"gabbits.py\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This is a small part of ongoing work related to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f7c97a3_9f3c1b93","line":18,"range":{"start_line":18,"start_character":53,"end_line":18,"end_character":61},"updated":"2018-06-08 19:34:39.000000000","message":"directory","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4247ed97537eae84f817483c0e032181eaaf32f3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"placement hierarchy and makes the second role a subclass of the first."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To make this work nicely, existing placement fixtures (in fixtures.py),"},{"line_number":18,"context_line":"used solely for the gabbi tests are moved into a new directly called"},{"line_number":19,"context_line":"\"fixtures\" and renamed to \"gabbits.py\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This is a small part of ongoing work related to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f7c97a3_1fa80b76","line":18,"range":{"start_line":18,"start_character":53,"end_line":18,"end_character":61},"in_reply_to":"5f7c97a3_9f3c1b93","updated":"2018-06-08 19:53:29.000000000","message":"oops","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"170d7aca5d12a07ac7533b276e311543c505bc24","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To make this work nicely, existing placement fixtures (in fixtures.py),"},{"line_number":18,"context_line":"used solely for the gabbi tests are moved into a new directly called"},{"line_number":19,"context_line":"\"fixtures\" and renamed to \"gabbits.py\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This is a small part of ongoing work related to"},{"line_number":22,"context_line":"blueprint placement-extract"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f7c97a3_5f4a0327","line":19,"range":{"start_line":19,"start_character":27,"end_line":19,"end_character":34},"updated":"2018-06-08 19:34:39.000000000","message":"gabbi_fixtures.py might be more appropriate.  I thought a \"gabbit\" was a yaml file containing gabbi tests.","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8e8107c6d4c0fb3a359bdf0ed9d509b9d9958bb0","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To make this work nicely, existing placement fixtures (in fixtures.py),"},{"line_number":18,"context_line":"used solely for the gabbi tests are moved into a new directly called"},{"line_number":19,"context_line":"\"fixtures\" and renamed to \"gabbits.py\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This is a small part of ongoing work related to"},{"line_number":22,"context_line":"blueprint placement-extract"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f7c97a3_048f5b2a","line":19,"range":{"start_line":19,"start_character":27,"end_line":19,"end_character":34},"in_reply_to":"5f7c97a3_04651bb5","updated":"2018-06-08 23:47:06.000000000","message":"and sigh, of course that\u0027s a name conflict, so I\u0027m just gonna keep it as is","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4247ed97537eae84f817483c0e032181eaaf32f3","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To make this work nicely, existing placement fixtures (in fixtures.py),"},{"line_number":18,"context_line":"used solely for the gabbi tests are moved into a new directly called"},{"line_number":19,"context_line":"\"fixtures\" and renamed to \"gabbits.py\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This is a small part of ongoing work related to"},{"line_number":22,"context_line":"blueprint placement-extract"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f7c97a3_dfb7f3d7","line":19,"range":{"start_line":19,"start_character":27,"end_line":19,"end_character":34},"in_reply_to":"5f7c97a3_5f4a0327","updated":"2018-06-08 19:53:29.000000000","message":"right it\u0027s a fixture that allows you to run gabbits?","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"add752e009446071321eed05ed5c73afe141df6d","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To make this work nicely, existing placement fixtures (in fixtures.py),"},{"line_number":18,"context_line":"used solely for the gabbi tests are moved into a new directly called"},{"line_number":19,"context_line":"\"fixtures\" and renamed to \"gabbits.py\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This is a small part of ongoing work related to"},{"line_number":22,"context_line":"blueprint placement-extract"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f7c97a3_04651bb5","line":19,"range":{"start_line":19,"start_character":27,"end_line":19,"end_character":34},"in_reply_to":"5f7c97a3_5f5f6340","updated":"2018-06-08 23:40:52.000000000","message":"I\u0027d be okay with \u0027gabbi\u0027, but gabbi_fixtures, in the fixtures directory, seems redundant to me?","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ea397bbe15e39c55ff52967a4e535a9c79971642","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To make this work nicely, existing placement fixtures (in fixtures.py),"},{"line_number":18,"context_line":"used solely for the gabbi tests are moved into a new directly called"},{"line_number":19,"context_line":"\"fixtures\" and renamed to \"gabbits.py\"."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"This is a small part of ongoing work related to"},{"line_number":22,"context_line":"blueprint placement-extract"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f7c97a3_5f5f6340","line":19,"range":{"start_line":19,"start_character":27,"end_line":19,"end_character":34},"in_reply_to":"5f7c97a3_dfb7f3d7","updated":"2018-06-08 20:12:15.000000000","message":"Yeah, I get it, but still prefer gabbi_fixtures.  Non-blocking.","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"}],"nova/tests/fixtures.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"170d7aca5d12a07ac7533b276e311543c505bc24","unresolved":false,"context_lines":[{"line_number":1691,"context_line":"            self.fixture._fake_put(None, url, body, **kwargs))"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":""},{"line_number":1694,"context_line":"class PlacementFixture(placement.PlacementFixture):"},{"line_number":1695,"context_line":"    \"\"\"A fixture to placement operations."},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"    Runs a local WSGI server bound on a free port and having the Placement"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_1f500bd5","line":1694,"range":{"start_line":1694,"start_character":6,"end_line":1694,"end_character":22},"updated":"2018-06-08 19:34:39.000000000","message":"Now we have two things called PlacementFixture?  This one would be more appropriately named ReportClientFixture or similar.","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"add752e009446071321eed05ed5c73afe141df6d","unresolved":false,"context_lines":[{"line_number":1691,"context_line":"            self.fixture._fake_put(None, url, body, **kwargs))"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":""},{"line_number":1694,"context_line":"class PlacementFixture(placement.PlacementFixture):"},{"line_number":1695,"context_line":"    \"\"\"A fixture to placement operations."},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"    Runs a local WSGI server bound on a free port and having the Placement"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_a4d8e751","line":1694,"range":{"start_line":1694,"start_character":6,"end_line":1694,"end_character":22},"in_reply_to":"5f7c97a3_1f2a4b90","updated":"2018-06-08 23:40:52.000000000","message":"No, the value it is providing is that it monkey patches keystoneauth1, which you need to do if that\u0027s the mode by which you choose to speak to placement (which in most cases is what you should probably do).\n\nCalling this ReportClientFixture was overstates the case. It would imply we were providing a full ReportClient of some kind (not sure what that would look like). The patches of report client are out of place, but do muddy the waters.\n\nI\u0027ll go ahead and do what you\u0027re suggesting because I don\u0027t really care. The other (I think better) option is to make a subclass of this which contains the fake_* stuff. But I can\u0027t be bothered.","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4247ed97537eae84f817483c0e032181eaaf32f3","unresolved":false,"context_lines":[{"line_number":1691,"context_line":"            self.fixture._fake_put(None, url, body, **kwargs))"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":""},{"line_number":1694,"context_line":"class PlacementFixture(placement.PlacementFixture):"},{"line_number":1695,"context_line":"    \"\"\"A fixture to placement operations."},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"    Runs a local WSGI server bound on a free port and having the Placement"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_1fc1eb2f","line":1694,"range":{"start_line":1694,"start_character":6,"end_line":1694,"end_character":22},"in_reply_to":"5f7c97a3_1f500bd5","updated":"2018-06-08 19:53:29.000000000","message":"My thinking here was that from within Nova what we care about is having a \"PlacementFixture\" so we can make requests of Placement. It\u0027s not the ReportClientFixture because the report client doesn\u0027t have to be involved.\n\nOnce placement is not in nova, then there\u0027s only one PlacementFixture that nova cares about.","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ea397bbe15e39c55ff52967a4e535a9c79971642","unresolved":false,"context_lines":[{"line_number":1691,"context_line":"            self.fixture._fake_put(None, url, body, **kwargs))"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":""},{"line_number":1694,"context_line":"class PlacementFixture(placement.PlacementFixture):"},{"line_number":1695,"context_line":"    \"\"\"A fixture to placement operations."},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"    Runs a local WSGI server bound on a free port and having the Placement"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_1f2a4b90","line":1694,"range":{"start_line":1694,"start_character":6,"end_line":1694,"end_character":22},"in_reply_to":"5f7c97a3_1fc1eb2f","updated":"2018-06-08 20:12:15.000000000","message":"\u003e It\u0027s not the ReportClientFixture because the report client doesn\u0027t\n \u003e have to be involved.\n\nIf the report client weren\u0027t involved, the test would just use placement.PlacementFixture.  The only value this one adds is that it monkey patches the report client\u0027s request primitives.  Hence ReportClientFixture.\n\nAgain, non-blocking, but preferred.","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c98a5934258665f69ede01a0b8980e263f24e071","unresolved":false,"context_lines":[{"line_number":1691,"context_line":"            self.fixture._fake_put(None, url, body, **kwargs))"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":""},{"line_number":1694,"context_line":"class PlacementFixture(placement.PlacementFixture):"},{"line_number":1695,"context_line":"    \"\"\"A fixture to placement operations."},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"    Runs a local WSGI server bound on a free port and having the Placement"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_04a67bc2","line":1694,"range":{"start_line":1694,"start_character":6,"end_line":1694,"end_character":22},"in_reply_to":"5f7c97a3_a4d8e751","updated":"2018-06-08 23:44:57.000000000","message":"Actually, no, nevermind, not going to change it. I would have to touch 24 files to change it, making this change very noisy. We can do it in a followup if we like.","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"}],"nova/tests/functional/api/openstack/placement/fixtures/placement.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"77ddce989b3232e10632145671535d099fef2103","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    \"\"\"Fixture to patch and restore global CONF."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    This also resets overrides for everything that is patched during"},{"line_number":28,"context_line":"    it\u0027s teardown."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    \"\"\""},{"line_number":31,"context_line":"    # NOTE(cdent): This is intentionally duplicated from nova\u0027s fixtures."}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_aa538e38","line":28,"range":{"start_line":28,"start_character":4,"end_line":28,"end_character":8},"updated":"2018-05-14 20:14:17.000000000","message":"its","commit_id":"2b6043aa645374a055fa289890978c7e53ec66e9"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4247ed97537eae84f817483c0e032181eaaf32f3","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    \"\"\"Fixture to patch and restore global CONF."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    This also resets overrides for everything that is patched during"},{"line_number":28,"context_line":"    it\u0027s teardown."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    \"\"\""},{"line_number":31,"context_line":"    # NOTE(cdent): This is intentionally duplicated from nova\u0027s fixtures."}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_e548d92d","line":28,"range":{"start_line":28,"start_character":4,"end_line":28,"end_character":8},"in_reply_to":"5f7c97a3_aa538e38","updated":"2018-06-08 19:53:29.000000000","message":"fixed, but see commit c7c3cf52494","commit_id":"2b6043aa645374a055fa289890978c7e53ec66e9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ea397bbe15e39c55ff52967a4e535a9c79971642","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    \"\"\"Fixture to patch and restore global CONF."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    This also resets overrides for everything that is patched during"},{"line_number":28,"context_line":"    it\u0027s teardown."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    \"\"\""},{"line_number":31,"context_line":"    # NOTE(cdent): This is intentionally duplicated from nova\u0027s fixtures."}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_fa519d0f","line":28,"range":{"start_line":28,"start_character":4,"end_line":28,"end_character":8},"in_reply_to":"5f7c97a3_e548d92d","updated":"2018-06-08 20:12:15.000000000","message":"copy/paste is no excuse!\n\n(Okay, yes it is.  But thanks for fixing.)","commit_id":"2b6043aa645374a055fa289890978c7e53ec66e9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"77ddce989b3232e10632145671535d099fef2103","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    it\u0027s teardown."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    \"\"\""},{"line_number":31,"context_line":"    # NOTE(cdent): This is intentionally duplicated from nova\u0027s fixtures."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self, **kwargs):"},{"line_number":34,"context_line":"        \"\"\"Constructor"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_2a3d3edc","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":73},"updated":"2018-05-14 20:14:17.000000000","message":"TODO(cdent): Remove this comment once we\u0027re extracted :)","commit_id":"2b6043aa645374a055fa289890978c7e53ec66e9"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4247ed97537eae84f817483c0e032181eaaf32f3","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    it\u0027s teardown."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    \"\"\""},{"line_number":31,"context_line":"    # NOTE(cdent): This is intentionally duplicated from nova\u0027s fixtures."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self, **kwargs):"},{"line_number":34,"context_line":"        \"\"\"Constructor"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_656609c4","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":73},"in_reply_to":"5f7c97a3_2a3d3edc","updated":"2018-06-08 19:53:29.000000000","message":"I have made it even more confusing in the new patch","commit_id":"2b6043aa645374a055fa289890978c7e53ec66e9"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"170d7aca5d12a07ac7533b276e311543c505bc24","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    its teardown."},{"line_number":29,"context_line":"    \"\"\""},{"line_number":30,"context_line":"    # TODO(cdent): This is intentionally duplicated from nova\u0027s fixtures."},{"line_number":31,"context_line":"    # This comment becomes redundant once placement is extracted."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self, **kwargs):"},{"line_number":34,"context_line":"        \"\"\"Constructor"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_608a776a","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":65},"updated":"2018-06-08 19:34:39.000000000","message":"okay, I wasn\u0027t serious :)\n\nBut good.","commit_id":"8fd5e4ec0f55116a6c53ccf71e97b46e7038c4cf"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"170d7aca5d12a07ac7533b276e311543c505bc24","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def __init__(self, **kwargs):"},{"line_number":34,"context_line":"        \"\"\"Constructor"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        :params group: if specified all config options apply to that group."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        :params **kwargs: the rest of the kwargs are processed as a"},{"line_number":39,"context_line":"        set of key/value pairs to be set as configuration override."}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_ff642fbb","line":36,"range":{"start_line":36,"start_character":16,"end_line":36,"end_character":21},"updated":"2018-06-08 19:34:39.000000000","message":"golly, I hope nobody ever creates a conf option named \u0027group\u0027.","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ea397bbe15e39c55ff52967a4e535a9c79971642","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def __init__(self, **kwargs):"},{"line_number":34,"context_line":"        \"\"\"Constructor"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        :params group: if specified all config options apply to that group."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        :params **kwargs: the rest of the kwargs are processed as a"},{"line_number":39,"context_line":"        set of key/value pairs to be set as configuration override."}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_5f0d233c","line":36,"range":{"start_line":36,"start_character":16,"end_line":36,"end_character":21},"in_reply_to":"5f7c97a3_dfdcd319","updated":"2018-06-08 20:12:15.000000000","message":"Oh, yeah, totally; I just happened to notice it here.","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4247ed97537eae84f817483c0e032181eaaf32f3","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def __init__(self, **kwargs):"},{"line_number":34,"context_line":"        \"\"\"Constructor"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        :params group: if specified all config options apply to that group."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        :params **kwargs: the rest of the kwargs are processed as a"},{"line_number":39,"context_line":"        set of key/value pairs to be set as configuration override."}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_dfdcd319","line":36,"range":{"start_line":36,"start_character":16,"end_line":36,"end_character":21},"in_reply_to":"5f7c97a3_ff642fbb","updated":"2018-06-08 19:53:29.000000000","message":"Sure, but this is an issue that predates this change by many years, and if we haven\u0027t hit it yet...","commit_id":"4dd3e441c4d5aa6169d3f9d0539c7f17ceceb320"}]}
