)]}'
{"openstack/baremetal/v1/_proxy.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ec0cb5f00fe7bb81db62e500163d1bb566356499","unresolved":true,"context_lines":[{"line_number":204,"context_line":"        :raises: :class:`~openstack.exceptions.ResourceNotFound` when no"},{"line_number":205,"context_line":"            driver matching the name could be found."},{"line_number":206,"context_line":"        \"\"\""},{"line_number":207,"context_line":"        driver \u003d self.get_driver(driver)"},{"line_number":208,"context_line":"        return driver.list_vendor_passthru(self)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def call_driver_vendor_passthru(self, driver, vendor_method,"}],"source_content_type":"text/x-python","patch_set":10,"id":"22656f79_251d4f45","line":207,"updated":"2021-04-15 08:45:54.000000000","message":"You don\u0027t need to fetch the complete Driver object to make a call, you can use self._get_resource as done with nodes below.","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ec0cb5f00fe7bb81db62e500163d1bb566356499","unresolved":true,"context_lines":[{"line_number":208,"context_line":"        return driver.list_vendor_passthru(self)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def call_driver_vendor_passthru(self, driver, vendor_method,"},{"line_number":211,"context_line":"                                    http_method, body\u003dNone):"},{"line_number":212,"context_line":"        \"\"\"Call driver\u0027s vendor_passthru method."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        :param driver: The value can be the name of a driver or a"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f253d1c_bd4ef4d3","line":211,"updated":"2021-04-15 08:45:54.000000000","message":"For consistency with the node passthru work happening in parallel, could you call these \"verb\" (HTTP verb) and \"method\" (passthru method).","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":33344,"name":"cenne","email":"cennedee+opendev@protonmail.com","username":"cenne.d","status":"effervescent bubbling"},"change_message_id":"0c87db85982f54f86f6b96629c6162725dfd9e4f","unresolved":true,"context_lines":[{"line_number":208,"context_line":"        return driver.list_vendor_passthru(self)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def call_driver_vendor_passthru(self, driver, vendor_method,"},{"line_number":211,"context_line":"                                    http_method, body\u003dNone):"},{"line_number":212,"context_line":"        \"\"\"Call driver\u0027s vendor_passthru method."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        :param driver: The value can be the name of a driver or a"}],"source_content_type":"text/x-python","patch_set":10,"id":"772e7bb2_a91bb1fc","line":211,"in_reply_to":"3f253d1c_bd4ef4d3","updated":"2021-04-15 22:56:44.000000000","message":"On most ~official/major sites (MDN, Wikipedia, RFCs, IANA) I see them mentioned mainly as request methods/methods. Some sites I find do mention \u0027verb\u0027 but mostly as a secondary name. (Is \u0027verb\u0027 an old/conventional term?)\n\nThe list endpoint also returns them as \u0027http_methods\u0027 [https://docs.openstack.org/api-ref/baremetal/?expanded\u003dlist-drivers-detail#id151]\nSo I think \u0027verb\u0027 could be confusing. (or inconsistent with the list endpoint atleast).\n\n\nchanged it now for consistency with the other work though.","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8acec59ccc26f3944a883520dbf89b7cdf8b76d7","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        return driver.list_vendor_passthru(self)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def call_driver_vendor_passthru(self, driver, method,"},{"line_number":211,"context_line":"                                    verb, body\u003dNone):"},{"line_number":212,"context_line":"        \"\"\"Call driver\u0027s vendor_passthru method."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        :param driver: The value can be the name of a driver or a"}],"source_content_type":"text/x-python","patch_set":11,"id":"f0dfa813_c5b1a55f","line":211,"updated":"2021-04-20 11:32:41.000000000","message":"Could you swap verb and method for a more natural order?","commit_id":"4e26f652380e7a85725a8c3dd55dba337de907cb"}],"openstack/baremetal/v1/driver.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"337dad7f30d8420aa49965b065bcd310bc2373b4","unresolved":true,"context_lines":[{"line_number":121,"context_line":"    enabled_vendor_interfaces \u003d resource.Body(\"enabled_vendor_interfaces\")"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"class DriverVendorPassthru(resource.Resource):"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    base_path \u003d \u0027/drivers/%(driver_name)s/vendor_passthru/methods\u0027"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"f8900292_32195b31","line":124,"updated":"2021-04-12 08:58:01.000000000","message":"I don\u0027t think we really need a new resource, let\u0027s add it as a method to Driver","commit_id":"0137726a65b8d2a25914d76bd14bf319119ae39e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"337dad7f30d8420aa49965b065bcd310bc2373b4","unresolved":true,"context_lines":[{"line_number":151,"context_line":"        type\u003dtyping.Dict[str, vendor_method_info_type])"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"def call_vendor_method(session, driver_name: str, method_name: str,"},{"line_number":155,"context_line":"                       http_method: str, payload: dict, resource: dict \u003d {}):"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    \"\"\"Call a vendor specific passthru method"}],"source_content_type":"text/x-python","patch_set":5,"id":"2fbf65d7_487724ff","line":154,"updated":"2021-04-12 08:58:01.000000000","message":"This should be a Driver method, something like Driver.call_vendor_passthru","commit_id":"0137726a65b8d2a25914d76bd14bf319119ae39e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ec0cb5f00fe7bb81db62e500163d1bb566356499","unresolved":true,"context_lines":[{"line_number":121,"context_line":"    #: Introduced in API microversion 1.30."},{"line_number":122,"context_line":"    enabled_vendor_interfaces \u003d resource.Body(\"enabled_vendor_interfaces\")"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    def list_vendor_passthru(self, session, driver_name\u003dNone):"},{"line_number":125,"context_line":"        \"\"\"Fetch vendor specific methods exposed by driver"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        :param session: The session to use for making this request."}],"source_content_type":"text/x-python","patch_set":10,"id":"58669ae5_957aaaa9","line":124,"updated":"2021-04-15 08:45:54.000000000","message":"driver_name not needed, we always have self.name","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ec0cb5f00fe7bb81db62e500163d1bb566356499","unresolved":true,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def call_vendor_passthru(self, session, method_name,"},{"line_number":155,"context_line":"                             http_method: str, body: dict \u003d None,"},{"line_number":156,"context_line":"                             driver_name\u003dNone):"},{"line_number":157,"context_line":"        \"\"\"Call a vendor specific passthru method"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        Contents of body are params passed to the hardware driver"}],"source_content_type":"text/x-python","patch_set":10,"id":"476e1927_516a21e1","line":156,"updated":"2021-04-15 08:45:54.000000000","message":"Same re argument names and driver_name","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ec0cb5f00fe7bb81db62e500163d1bb566356499","unresolved":true,"context_lines":[{"line_number":170,"context_line":"            GET, POST, PUT, DELETE"},{"line_number":171,"context_line":"        :return: response of method call."},{"line_number":172,"context_line":"        \"\"\""},{"line_number":173,"context_line":"        if http_method not in [\u0027GET\u0027, \u0027PUT\u0027, \u0027POST\u0027, \u0027DELETE\u0027]:"},{"line_number":174,"context_line":"            raise ValueError(\u0027Invalid http_method: {:str}\u0027.format(http_method))"},{"line_number":175,"context_line":"        if not body:"},{"line_number":176,"context_line":"            body \u003d {}"}],"source_content_type":"text/x-python","patch_set":10,"id":"aeb7cbee_a8938d40","line":173,"updated":"2021-04-15 08:45:54.000000000","message":"Let\u0027s also accept lower case verbs (i.e. convert verb to upper or lower case before validation)","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ec0cb5f00fe7bb81db62e500163d1bb566356499","unresolved":true,"context_lines":[{"line_number":173,"context_line":"        if http_method not in [\u0027GET\u0027, \u0027PUT\u0027, \u0027POST\u0027, \u0027DELETE\u0027]:"},{"line_number":174,"context_line":"            raise ValueError(\u0027Invalid http_method: {:str}\u0027.format(http_method))"},{"line_number":175,"context_line":"        if not body:"},{"line_number":176,"context_line":"            body \u003d {}"},{"line_number":177,"context_line":"        if not driver_name:"},{"line_number":178,"context_line":"            driver_name \u003d self.name"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"2d7665d3_57862938","line":176,"updated":"2021-04-15 08:45:54.000000000","message":"No body is not the same as {} body. Just leave it as None, the session will do the right thing.","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ec0cb5f00fe7bb81db62e500163d1bb566356499","unresolved":true,"context_lines":[{"line_number":180,"context_line":"        session \u003d self._get_session(session)"},{"line_number":181,"context_line":"        request \u003d self._prepare_request()"},{"line_number":182,"context_line":"        request.url \u003d utils.urljoin("},{"line_number":183,"context_line":"            request.url, driver_name, \u0027vendor_passthru?method\u003d\u0027, method_name)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        if http_method \u003d\u003d \u0027GET\u0027:"},{"line_number":186,"context_line":"            response \u003d session.get("}],"source_content_type":"text/x-python","patch_set":10,"id":"d10ee2e2_d1bac90f","line":183,"updated":"2021-04-15 08:45:54.000000000","message":"I suspect request.url will include the name already (or can be made to include the name).","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ec0cb5f00fe7bb81db62e500163d1bb566356499","unresolved":true,"context_lines":[{"line_number":182,"context_line":"        request.url \u003d utils.urljoin("},{"line_number":183,"context_line":"            request.url, driver_name, \u0027vendor_passthru?method\u003d\u0027, method_name)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        if http_method \u003d\u003d \u0027GET\u0027:"},{"line_number":186,"context_line":"            response \u003d session.get("},{"line_number":187,"context_line":"                request.url, headers\u003drequest.headers,"},{"line_number":188,"context_line":"                retriable_status_codes\u003d_common.RETRIABLE_STATUS_CODES)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fb1a5f50_a83e6a7d","line":185,"updated":"2021-04-15 08:45:54.000000000","message":"better:\n\n call \u003d getattr(session, verb)\n response \u003d call(request.url, ...)","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":33344,"name":"cenne","email":"cennedee+opendev@protonmail.com","username":"cenne.d","status":"effervescent bubbling"},"change_message_id":"0c87db85982f54f86f6b96629c6162725dfd9e4f","unresolved":true,"context_lines":[{"line_number":182,"context_line":"        request.url \u003d utils.urljoin("},{"line_number":183,"context_line":"            request.url, driver_name, \u0027vendor_passthru?method\u003d\u0027, method_name)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        if http_method \u003d\u003d \u0027GET\u0027:"},{"line_number":186,"context_line":"            response \u003d session.get("},{"line_number":187,"context_line":"                request.url, headers\u003drequest.headers,"},{"line_number":188,"context_line":"                retriable_status_codes\u003d_common.RETRIABLE_STATUS_CODES)"}],"source_content_type":"text/x-python","patch_set":10,"id":"18fb9c69_8641f7ce","line":185,"in_reply_to":"fb1a5f50_a83e6a7d","updated":"2021-04-15 22:56:44.000000000","message":"had initially tried something like that, but then realized that post/put take body while get doesn\u0027t..\nWasn\u0027t sure how get would react if I passed it json\u003dbody, so played it safe. on second thought I think it should get shunted into kwargs and be left unused. \n\nrewriting it that way now.","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8acec59ccc26f3944a883520dbf89b7cdf8b76d7","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        #:   \u0027attach\u0027: bool, # Is return value  attached to the response object"},{"line_number":145,"context_line":"        #:   \u0027description\u0027: str, # Description of what the method does"},{"line_number":146,"context_line":"        #:   \u0027http_methods\u0027: list # List of HTTP methods supported by function"},{"line_number":147,"context_line":"        #:  }"},{"line_number":148,"context_line":"        return response.json()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def call_vendor_passthru(self, session, method,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3103ada0_de9edd46","line":147,"updated":"2021-04-20 11:32:41.000000000","message":"Could you better move this to the docstring?","commit_id":"4e26f652380e7a85725a8c3dd55dba337de907cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8acec59ccc26f3944a883520dbf89b7cdf8b76d7","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        return response.json()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def call_vendor_passthru(self, session, method,"},{"line_number":151,"context_line":"                             verb: str, body: dict \u003d None):"},{"line_number":152,"context_line":"        \"\"\"Call a vendor specific passthru method"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        Contents of body are params passed to the hardware driver"}],"source_content_type":"text/x-python","patch_set":11,"id":"616057cb_a939bba9","line":151,"updated":"2021-04-20 11:32:41.000000000","message":"same re order","commit_id":"4e26f652380e7a85725a8c3dd55dba337de907cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8acec59ccc26f3944a883520dbf89b7cdf8b76d7","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        :return: response of method call."},{"line_number":166,"context_line":"        \"\"\""},{"line_number":167,"context_line":"        if verb.upper() not in [\u0027GET\u0027, \u0027PUT\u0027, \u0027POST\u0027, \u0027DELETE\u0027]:"},{"line_number":168,"context_line":"            raise ValueError(\u0027Invalid verb: {:str}\u0027.format(verb))"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        session \u003d self._get_session(session)"},{"line_number":171,"context_line":"        request \u003d self._prepare_request()"}],"source_content_type":"text/x-python","patch_set":11,"id":"508f93ef_8924cb17","line":168,"updated":"2021-04-20 11:32:41.000000000","message":"nit: :str not needed, it\u0027s the default","commit_id":"4e26f652380e7a85725a8c3dd55dba337de907cb"}],"openstack/tests/unit/baremetal/v1/test_driver.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ec0cb5f00fe7bb81db62e500163d1bb566356499","unresolved":true,"context_lines":[{"line_number":72,"context_line":"        self.session \u003d mock.Mock(spec\u003dadapter.Adapter)"},{"line_number":73,"context_line":"        sot \u003d driver.Driver(**FAKE)"},{"line_number":74,"context_line":"        sot.list_vendor_passthru(self.session)"},{"line_number":75,"context_line":"        self.assertEqual(dict, type(sot.list_vendor_passthru(self.session)))"},{"line_number":76,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027GET\u0027)"},{"line_number":77,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027PUT\u0027)"},{"line_number":78,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027POST\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"e6140da2_9f530808","line":75,"updated":"2021-04-15 08:45:54.000000000","message":"You won\u0027t get a dict back if you don\u0027t configure the session mock first. Check nodes or other resources for examples.","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ec0cb5f00fe7bb81db62e500163d1bb566356499","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027GET\u0027)"},{"line_number":77,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027PUT\u0027)"},{"line_number":78,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027POST\u0027,"},{"line_number":79,"context_line":"                                 body\u003d{\"something\": \"something\"})"}],"source_content_type":"text/x-python","patch_set":10,"id":"349b6d94_67731de6","line":79,"updated":"2021-04-15 08:45:54.000000000","message":"In addition to just calling things (which may do nothing at all), you need to validate that self.session was called in the right way (again, see other resources for examples).","commit_id":"da58644bfbc7e8dc5461a6bb5e75a4a8f84ffd48"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8acec59ccc26f3944a883520dbf89b7cdf8b76d7","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        self.session \u003d mock.Mock(spec\u003dadapter.Adapter)"},{"line_number":73,"context_line":"        sot \u003d driver.Driver(**FAKE)"},{"line_number":74,"context_line":"        sot.list_vendor_passthru(self.session)"},{"line_number":75,"context_line":"        self.assertEqual(dict, type(sot.list_vendor_passthru(self.session)))"},{"line_number":76,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027GET\u0027)"},{"line_number":77,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027PUT\u0027)"},{"line_number":78,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027POST\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"65dc1df6_8f631122","line":75,"updated":"2021-04-20 11:32:41.000000000","message":"This won\u0027t work. the result is a Mock, it\u0027s not a dict. you need to set up the mock first, so that it returns something, please see node unit tests and https://docs.python.org/3.6/library/unittest.mock.html","commit_id":"4e26f652380e7a85725a8c3dd55dba337de907cb"},{"author":{"_account_id":33344,"name":"cenne","email":"cennedee+opendev@protonmail.com","username":"cenne.d","status":"effervescent bubbling"},"change_message_id":"2fdaf58a345f061c626fcff693429e6e1e216945","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        self.session \u003d mock.Mock(spec\u003dadapter.Adapter)"},{"line_number":73,"context_line":"        sot \u003d driver.Driver(**FAKE)"},{"line_number":74,"context_line":"        sot.list_vendor_passthru(self.session)"},{"line_number":75,"context_line":"        self.assertEqual(dict, type(sot.list_vendor_passthru(self.session)))"},{"line_number":76,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027GET\u0027)"},{"line_number":77,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027PUT\u0027)"},{"line_number":78,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027POST\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"76dee60f_48da12b2","line":75,"in_reply_to":"65dc1df6_8f631122","updated":"2021-04-29 20:30:18.000000000","message":"Thank you! I had thought mock was a custom module here so never considered looking up in python-docs. That link was very helpful","commit_id":"4e26f652380e7a85725a8c3dd55dba337de907cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8acec59ccc26f3944a883520dbf89b7cdf8b76d7","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027GET\u0027)"},{"line_number":77,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027PUT\u0027)"},{"line_number":78,"context_line":"        sot.call_vendor_passthru(self.session, \u0027fake_vendor_method\u0027, \u0027POST\u0027,"},{"line_number":79,"context_line":"                                 body\u003d{\"something\": \"something\"})"}],"source_content_type":"text/x-python","patch_set":11,"id":"e8f43e3d_15567382","line":79,"updated":"2021-04-20 11:32:41.000000000","message":"These three calls don\u0027t test anything. Let\u0027s move them to a separate test method and assert that the session was called correctly - see the mock documentation and other examples here.","commit_id":"4e26f652380e7a85725a8c3dd55dba337de907cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4e1a869c51070451d7bc1334af7ea437a55b23c7","unresolved":true,"context_lines":[{"line_number":87,"context_line":"            \u0027drivers/{driver_name}/vendor_passthru/methods\u0027.format("},{"line_number":88,"context_line":"                driver_name\u003dFAKE[\"name\"]),"},{"line_number":89,"context_line":"            headers\u003dmock.ANY)"},{"line_number":90,"context_line":"        self.assertEqual(dict, type(result))"},{"line_number":91,"context_line":"        self.assertEqual(dict, type(result[\u0027fake_vendor_method\u0027]))"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @mock.patch.object(exceptions, \u0027raise_from_response\u0027, mock.Mock())"}],"source_content_type":"text/x-python","patch_set":17,"id":"83e9bd80_34445f9d","line":90,"updated":"2021-05-03 12:27:56.000000000","message":"Could you compare the actual values instead of the types? You can safe the fake value above to a variable.","commit_id":"2de52eec62a66117b99af9d656c1b614fee436ca"}]}
