)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9e292fc204eaa0c0f8861b7a06cd0b0284e8d50f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"in the service layout, and since they don\u0027t care about cells things,"},{"line_number":14,"context_line":"we do some monkeywork here to make them use the SingleCellSimple"},{"line_number":15,"context_line":"fixture instead of a full-blown multi-cell environment."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: If1138331f3a46f5aed87e898ce19879a787d435f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"5a3905b3_84e1612c","line":16,"updated":"2017-01-24 16:24:21.000000000","message":"I\u0027m still not 100% sure about /why/ we ultimately want to do this :) I would guess performance but I\u0027m not 100% sure. Any chance you could enlighten me?","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8c2a18d5bf950f589652ea9fb928657b590f5ba1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"in the service layout, and since they don\u0027t care about cells things,"},{"line_number":14,"context_line":"we do some monkeywork here to make them use the SingleCellSimple"},{"line_number":15,"context_line":"fixture instead of a full-blown multi-cell environment."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: If1138331f3a46f5aed87e898ce19879a787d435f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"5a3905b3_84a4014b","line":16,"in_reply_to":"5a3905b3_84e1612c","updated":"2017-01-24 16:30:15.000000000","message":"It\u0027s because api_samples tests make spawn be a synchronous call, which starves out any other threads from running. They expect an instance to be fully created when the API call returns, which is not at all how the system actually works. Because the CellDatabase fixture relies on switching the global database state to simulate multiple databases, we can\u0027t handle that synchronous call nature, because we end up recursing on the lock and deadlocking ourselves.\n\nI feel like the above says just that, but if you can think of anything else to add, I\u0027ll be glad to.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"}],"nova/test.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ab10c5dd95eef8c1beecb0beabded58e61d2f5bc","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            # NOTE(danms): Full database setup involves a cell0, cell1,"},{"line_number":243,"context_line":"            # and the relevant mappings."},{"line_number":244,"context_line":"            self.useFixture(nova_fixtures.Database(database\u003d\u0027api\u0027))"},{"line_number":245,"context_line":"            self._setup_cells()"},{"line_number":246,"context_line":"            self.useFixture(nova_fixtures.DefaultFlavorsFixture())"},{"line_number":247,"context_line":"        elif not self.USES_DB_SELF:"},{"line_number":248,"context_line":"            # NOTE(danms): If not using the database, we mock out the"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_df425467","line":245,"updated":"2017-01-24 16:55:45.000000000","message":"ah, so this is an important skip.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"}],"nova/tests/functional/api_sample_tests/api_sample_base.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9e292fc204eaa0c0f8861b7a06cd0b0284e8d50f","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class ApiSampleTestBaseV21(testscenarios.WithScenarios,"},{"line_number":58,"context_line":"                          api_samples_test_base.ApiSampleTestBase):"},{"line_number":59,"context_line":"    SUPPORTS_CELLS \u003d False"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    api_major_version \u003d \u0027v2\u0027"},{"line_number":62,"context_line":"    # any additional fixtures needed for this scenario"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_463dc129","line":59,"range":{"start_line":59,"start_character":4,"end_line":59,"end_character":26},"updated":"2017-01-24 16:24:21.000000000","message":"Is there any reason to do this? I can\u0027t see it being overriden in a subclass, which is what I expected to find.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8c2a18d5bf950f589652ea9fb928657b590f5ba1","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class ApiSampleTestBaseV21(testscenarios.WithScenarios,"},{"line_number":58,"context_line":"                          api_samples_test_base.ApiSampleTestBase):"},{"line_number":59,"context_line":"    SUPPORTS_CELLS \u003d False"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    api_major_version \u003d \u0027v2\u0027"},{"line_number":62,"context_line":"    # any additional fixtures needed for this scenario"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_84d5e1e5","line":59,"range":{"start_line":59,"start_character":4,"end_line":59,"end_character":26},"in_reply_to":"5a3905b3_463dc129","updated":"2017-01-24 16:30:15.000000000","message":"This is so we can fix tests piecemeal over time. It was a request from sdague, mirroring our USES_DB type flags.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ab10c5dd95eef8c1beecb0beabded58e61d2f5bc","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"class ApiSampleTestBaseV21(testscenarios.WithScenarios,"},{"line_number":58,"context_line":"                          api_samples_test_base.ApiSampleTestBase):"},{"line_number":59,"context_line":"    SUPPORTS_CELLS \u003d False"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    api_major_version \u003d \u0027v2\u0027"},{"line_number":62,"context_line":"    # any additional fixtures needed for this scenario"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_7aa7aea6","line":59,"range":{"start_line":59,"start_character":4,"end_line":59,"end_character":26},"in_reply_to":"5a3905b3_84d5e1e5","updated":"2017-01-24 16:55:45.000000000","message":"That has worked in the past really well.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9e292fc204eaa0c0f8861b7a06cd0b0284e8d50f","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        # paste and conf before loading all the services, as we can\u0027t"},{"line_number":99,"context_line":"        # change these later."},{"line_number":100,"context_line":"        super(ApiSampleTestBaseV21, self).setUp()"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if not self.SUPPORTS_CELLS:"},{"line_number":103,"context_line":"            self.useFixture(fixtures.Database())"},{"line_number":104,"context_line":"            self.useFixture(fixtures.Database(database\u003d\u0027api\u0027))"},{"line_number":105,"context_line":"            self.useFixture(fixtures.DefaultFlavorsFixture())"},{"line_number":106,"context_line":"            self.useFixture(fixtures.SingleCellSimple())"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        super(ApiSampleTestBaseV21, self)._setup_services()"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.useFixture(test.SampleNetworks(host\u003dself.network.host))"},{"line_number":111,"context_line":"        fake_network.stub_compute_with_ips(self.stubs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_e6aead7f","line":108,"range":{"start_line":101,"start_character":0,"end_line":108,"end_character":59},"updated":"2017-01-24 16:24:21.000000000","message":"nit: All of this would normally be handled by a super class when USE_DB\u003dTrue, right? If so, I\u0027d generally much rather this functionality be dragged out into a function in the base class that we could override instead:\n\n    def _setup_db_fixtures(self):\n        pass\n\n...as it just seems a little hacky to be overriding superclass-provided functionality in this manner. /However/, that\u0027s a much larger refactor and time is tight, so I can overlook it.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8f498f63ed91b92982ef1b77ebe6031e3594463b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        # paste and conf before loading all the services, as we can\u0027t"},{"line_number":99,"context_line":"        # change these later."},{"line_number":100,"context_line":"        super(ApiSampleTestBaseV21, self).setUp()"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if not self.SUPPORTS_CELLS:"},{"line_number":103,"context_line":"            self.useFixture(fixtures.Database())"},{"line_number":104,"context_line":"            self.useFixture(fixtures.Database(database\u003d\u0027api\u0027))"},{"line_number":105,"context_line":"            self.useFixture(fixtures.DefaultFlavorsFixture())"},{"line_number":106,"context_line":"            self.useFixture(fixtures.SingleCellSimple())"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        super(ApiSampleTestBaseV21, self)._setup_services()"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.useFixture(test.SampleNetworks(host\u003dself.network.host))"},{"line_number":111,"context_line":"        fake_network.stub_compute_with_ips(self.stubs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_9528ad87","line":108,"range":{"start_line":101,"start_character":0,"end_line":108,"end_character":59},"in_reply_to":"5a3905b3_3a7a8624","updated":"2017-01-24 17:05:06.000000000","message":"Because we need our parent\u0027s super to be called before we can use the fixtures below, but we cannot start any services until after we have created the cells fixtures, and we can\u0027t actually make spawn synchronous until after the services boot.\n\nIt\u0027s super gross.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ab10c5dd95eef8c1beecb0beabded58e61d2f5bc","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        # paste and conf before loading all the services, as we can\u0027t"},{"line_number":99,"context_line":"        # change these later."},{"line_number":100,"context_line":"        super(ApiSampleTestBaseV21, self).setUp()"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if not self.SUPPORTS_CELLS:"},{"line_number":103,"context_line":"            self.useFixture(fixtures.Database())"},{"line_number":104,"context_line":"            self.useFixture(fixtures.Database(database\u003d\u0027api\u0027))"},{"line_number":105,"context_line":"            self.useFixture(fixtures.DefaultFlavorsFixture())"},{"line_number":106,"context_line":"            self.useFixture(fixtures.SingleCellSimple())"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        super(ApiSampleTestBaseV21, self)._setup_services()"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.useFixture(test.SampleNetworks(host\u003dself.network.host))"},{"line_number":111,"context_line":"        fake_network.stub_compute_with_ips(self.stubs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_3a7a8624","line":108,"range":{"start_line":101,"start_character":0,"end_line":108,"end_character":59},"in_reply_to":"5a3905b3_64763507","updated":"2017-01-24 16:55:45.000000000","message":"Given USES_DB_SELF \u003d True, we need all these, that seems fine.\n\nI am trying to work out why that can\u0027t be done before we call setUp, and avoid overriding _setup_services? There must be some fixture clash or something?","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"73c75f883fb96b98fdefc6a67836603315c0d8e0","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        # paste and conf before loading all the services, as we can\u0027t"},{"line_number":99,"context_line":"        # change these later."},{"line_number":100,"context_line":"        super(ApiSampleTestBaseV21, self).setUp()"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if not self.SUPPORTS_CELLS:"},{"line_number":103,"context_line":"            self.useFixture(fixtures.Database())"},{"line_number":104,"context_line":"            self.useFixture(fixtures.Database(database\u003d\u0027api\u0027))"},{"line_number":105,"context_line":"            self.useFixture(fixtures.DefaultFlavorsFixture())"},{"line_number":106,"context_line":"            self.useFixture(fixtures.SingleCellSimple())"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        super(ApiSampleTestBaseV21, self)._setup_services()"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.useFixture(test.SampleNetworks(host\u003dself.network.host))"},{"line_number":111,"context_line":"        fake_network.stub_compute_with_ips(self.stubs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_15fcbdb6","line":108,"range":{"start_line":101,"start_character":0,"end_line":108,"end_character":59},"in_reply_to":"5a3905b3_9528ad87","updated":"2017-01-24 17:08:58.000000000","message":"Ah its the reverse of where I was digging, its those fixtures depending on the setup. I see now.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8c2a18d5bf950f589652ea9fb928657b590f5ba1","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        # paste and conf before loading all the services, as we can\u0027t"},{"line_number":99,"context_line":"        # change these later."},{"line_number":100,"context_line":"        super(ApiSampleTestBaseV21, self).setUp()"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        if not self.SUPPORTS_CELLS:"},{"line_number":103,"context_line":"            self.useFixture(fixtures.Database())"},{"line_number":104,"context_line":"            self.useFixture(fixtures.Database(database\u003d\u0027api\u0027))"},{"line_number":105,"context_line":"            self.useFixture(fixtures.DefaultFlavorsFixture())"},{"line_number":106,"context_line":"            self.useFixture(fixtures.SingleCellSimple())"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        super(ApiSampleTestBaseV21, self)._setup_services()"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.useFixture(test.SampleNetworks(host\u003dself.network.host))"},{"line_number":111,"context_line":"        fake_network.stub_compute_with_ips(self.stubs)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_64763507","line":108,"range":{"start_line":101,"start_character":0,"end_line":108,"end_character":59},"in_reply_to":"5a3905b3_e6aead7f","updated":"2017-01-24 16:30:15.000000000","message":"This is pretty much identical to the USES_DB stuff in the base class right? We don\u0027t really want to allow any other functional tests to escape having to care about cells, but api_samples tests are special because of the synchronous spawn thing.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"}],"nova/tests/functional/integrated_helpers.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9e292fc204eaa0c0f8861b7a06cd0b0284e8d50f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        return self.start_service(\u0027scheduler\u0027)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _setup_services(self):"},{"line_number":94,"context_line":"        if \u0027cell1\u0027 in self.cell_mappings:"},{"line_number":95,"context_line":"            self.flags(transport_url\u003dself.cell_mappings[\u0027cell1\u0027].transport_url)"},{"line_number":96,"context_line":"        self.conductor \u003d self.start_service(\u0027conductor\u0027)"},{"line_number":97,"context_line":"        self.consoleauth \u003d self.start_service(\u0027consoleauth\u0027)"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_44f779d2","line":95,"range":{"start_line":94,"start_character":8,"end_line":95,"end_character":79},"updated":"2017-01-24 16:24:21.000000000","message":"nit: This code, unlike the rest of this, isn\u0027t that self-explanatory. A small comment would help here","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ab10c5dd95eef8c1beecb0beabded58e61d2f5bc","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        return self.start_service(\u0027scheduler\u0027)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _setup_services(self):"},{"line_number":94,"context_line":"        if \u0027cell1\u0027 in self.cell_mappings:"},{"line_number":95,"context_line":"            self.flags(transport_url\u003dself.cell_mappings[\u0027cell1\u0027].transport_url)"},{"line_number":96,"context_line":"        self.conductor \u003d self.start_service(\u0027conductor\u0027)"},{"line_number":97,"context_line":"        self.consoleauth \u003d self.start_service(\u0027consoleauth\u0027)"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_ff271060","line":95,"range":{"start_line":94,"start_character":8,"end_line":95,"end_character":79},"in_reply_to":"5a3905b3_44f779d2","updated":"2017-01-24 16:55:45.000000000","message":"+1","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ab10c5dd95eef8c1beecb0beabded58e61d2f5bc","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                                          manager\u003dCONF.network_manager)"},{"line_number":101,"context_line":"        self.scheduler \u003d self._setup_scheduler_service()"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        self.compute \u003d self._setup_compute_service()"},{"line_number":104,"context_line":"        self.api_fixture \u003d self.useFixture("},{"line_number":105,"context_line":"            nova_fixtures.OSAPIFixture(self.api_major_version))"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_7f996078","line":103,"updated":"2017-01-24 16:55:45.000000000","message":"not quite sure why we need to move the compute start here, I guess the next patch might make that clearer.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ab10c5dd95eef8c1beecb0beabded58e61d2f5bc","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            self.api \u003d self.api_fixture.api"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if hasattr(self, \u0027microversion\u0027):"},{"line_number":115,"context_line":"            self.api.microversion \u003d self.microversion"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def get_unused_server_name(self):"},{"line_number":118,"context_line":"        servers \u003d self.api.get_servers()"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_dae502dc","line":115,"updated":"2017-01-24 16:55:45.000000000","message":"Not sure why these have moved here, there must be some DB related interaction I haven\u0027t spotted?","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"73c75f883fb96b98fdefc6a67836603315c0d8e0","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            self.api \u003d self.api_fixture.api"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if hasattr(self, \u0027microversion\u0027):"},{"line_number":115,"context_line":"            self.api.microversion \u003d self.microversion"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def get_unused_server_name(self):"},{"line_number":118,"context_line":"        servers \u003d self.api.get_servers()"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_5519e520","line":115,"in_reply_to":"5a3905b3_15e03d28","updated":"2017-01-24 17:08:58.000000000","message":"dang, yeah, of course, after api is started.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8f498f63ed91b92982ef1b77ebe6031e3594463b","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            self.api \u003d self.api_fixture.api"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if hasattr(self, \u0027microversion\u0027):"},{"line_number":115,"context_line":"            self.api.microversion \u003d self.microversion"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def get_unused_server_name(self):"},{"line_number":118,"context_line":"        servers \u003d self.api.get_servers()"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a3905b3_15e03d28","line":115,"in_reply_to":"5a3905b3_dae502dc","updated":"2017-01-24 17:05:06.000000000","message":"It\u0027s because we have to run this after we start the api service, but we haven\u0027t started it in setUp() anymore. So we have to wait until we\u0027ve started it to do the microversion setup, which is here.","commit_id":"5ea65c96abaf350f97a5fe4967906d6b52ef13d4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3d0e0a27fb69cb09b877e32c197011ab1ba1e11b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        return self.start_service(\u0027scheduler\u0027)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def _setup_services(self):"},{"line_number":94,"context_line":"        # NOTE(danms): Set the global MQ connection to that of our first cel"},{"line_number":95,"context_line":"        # for any cells-ignorant code. Normally this is defaulted in the tests"},{"line_number":96,"context_line":"        # which will result in us not doing the right thing."},{"line_number":97,"context_line":"        if \u0027cell1\u0027 in self.cell_mappings:"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a3905b3_d09de20b","line":94,"range":{"start_line":94,"start_character":73,"end_line":94,"end_character":76},"updated":"2017-01-24 17:49:13.000000000","message":"Nit: s/cel/cell/","commit_id":"ecc06e7b2ac66e95a3fcb7358ea70aec2823cabd"}]}
