)]}'
{"octavia/api/v1/types/base.py":[{"author":{"_account_id":11546,"name":"Praveen Kumar SM","email":"praveen-sm.kumar@hpe.com","username":"praveen-sm-kumar"},"change_message_id":"f5819b4c259ab0fde799fc9af456d60baa4f0fd5","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            value \u003d getattr(self, attr, None)"},{"line_number":79,"context_line":"            if callable(value):"},{"line_number":80,"context_line":"                continue"},{"line_number":81,"context_line":"            elif isinstance(value, BaseType):"},{"line_number":82,"context_line":"                value \u003d value.to_dict(render_unsets\u003drender_unsets)"},{"line_number":83,"context_line":"            elif isinstance(value, list):"},{"line_number":84,"context_line":"                value \u003d [val.to_dict(render_unsets\u003drender_unsets)"},{"line_number":85,"context_line":"                         if isinstance(val, BaseType) else val"},{"line_number":86,"context_line":"                         for val in value]"},{"line_number":87,"context_line":"            elif isinstance(value, wtypes.UnsetType):"},{"line_number":88,"context_line":"                if render_unsets:"},{"line_number":89,"context_line":"                    value \u003d None"},{"line_number":90,"context_line":"                else:"},{"line_number":91,"context_line":"                    continue"},{"line_number":92,"context_line":"            ret_dict[attr] \u003d value"},{"line_number":93,"context_line":"        return ret_dict"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_570edc32","line":91,"range":{"start_line":79,"start_character":11,"end_line":91,"end_character":28},"updated":"2016-07-24 08:07:34.000000000","message":"Can we have a outer if statement for variable \u0027value\u0027 like below,\n        if value:\n            if callable(value):\n                continue\n            elif isinstance(value, BaseType):\n                value \u003d value.to_dict(render_unsets\u003drender_unsets)\n            elif isinstance(value, list):\n                value \u003d [val.to_dict(render_unsets\u003drender_unsets)\n                         if isinstance(val, BaseType) else val\n                         for val in value]\n            elif isinstance(value, wtypes.UnsetType):\n                if render_unsets:\n                    value \u003d None\n                else:\n                    continue","commit_id":"eed1799905dfb39dab6a6341069bd85ad08e0a01"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"85220b14aab3d7c040f5b5e58b45fa48ee6dfdc6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            value \u003d getattr(self, attr, None)"},{"line_number":79,"context_line":"            if callable(value):"},{"line_number":80,"context_line":"                continue"},{"line_number":81,"context_line":"            elif isinstance(value, BaseType):"},{"line_number":82,"context_line":"                value \u003d value.to_dict(render_unsets\u003drender_unsets)"},{"line_number":83,"context_line":"            elif isinstance(value, list):"},{"line_number":84,"context_line":"                value \u003d [val.to_dict(render_unsets\u003drender_unsets)"},{"line_number":85,"context_line":"                         if isinstance(val, BaseType) else val"},{"line_number":86,"context_line":"                         for val in value]"},{"line_number":87,"context_line":"            elif isinstance(value, wtypes.UnsetType):"},{"line_number":88,"context_line":"                if render_unsets:"},{"line_number":89,"context_line":"                    value \u003d None"},{"line_number":90,"context_line":"                else:"},{"line_number":91,"context_line":"                    continue"},{"line_number":92,"context_line":"            ret_dict[attr] \u003d value"},{"line_number":93,"context_line":"        return ret_dict"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_d3cbbc51","line":91,"range":{"start_line":79,"start_character":11,"end_line":91,"end_character":28},"in_reply_to":"dada55a8_376ec8c9","updated":"2016-07-26 05:38:03.000000000","message":"But, if the value is None, then all statement need to run once. A outer statement can avoid that.","commit_id":"eed1799905dfb39dab6a6341069bd85ad08e0a01"},{"author":{"_account_id":19956,"name":"Yang Li","email":"yang.li@easystack.cn","username":"leonstack"},"change_message_id":"4f6a7f2ecf3d9b75b50002160faabe604840e7d0","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            value \u003d getattr(self, attr, None)"},{"line_number":79,"context_line":"            if callable(value):"},{"line_number":80,"context_line":"                continue"},{"line_number":81,"context_line":"            elif isinstance(value, BaseType):"},{"line_number":82,"context_line":"                value \u003d value.to_dict(render_unsets\u003drender_unsets)"},{"line_number":83,"context_line":"            elif isinstance(value, list):"},{"line_number":84,"context_line":"                value \u003d [val.to_dict(render_unsets\u003drender_unsets)"},{"line_number":85,"context_line":"                         if isinstance(val, BaseType) else val"},{"line_number":86,"context_line":"                         for val in value]"},{"line_number":87,"context_line":"            elif isinstance(value, wtypes.UnsetType):"},{"line_number":88,"context_line":"                if render_unsets:"},{"line_number":89,"context_line":"                    value \u003d None"},{"line_number":90,"context_line":"                else:"},{"line_number":91,"context_line":"                    continue"},{"line_number":92,"context_line":"            ret_dict[attr] \u003d value"},{"line_number":93,"context_line":"        return ret_dict"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_376ec8c9","line":91,"range":{"start_line":79,"start_character":11,"end_line":91,"end_character":28},"in_reply_to":"dada55a8_570edc32","updated":"2016-07-24 08:15:14.000000000","message":"thanks for your review..\nhere the outer if is useless, if value is None, the block below still work well, callable(None), isinstance(None, BaseType), etc. will return False.","commit_id":"eed1799905dfb39dab6a6341069bd85ad08e0a01"},{"author":{"_account_id":11546,"name":"Praveen Kumar SM","email":"praveen-sm.kumar@hpe.com","username":"praveen-sm-kumar"},"change_message_id":"e66e47a6d0519ed910c941c58d00df2f08469881","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            value \u003d getattr(self, attr, None)"},{"line_number":79,"context_line":"            if callable(value):"},{"line_number":80,"context_line":"                continue"},{"line_number":81,"context_line":"            elif isinstance(value, BaseType):"},{"line_number":82,"context_line":"                value \u003d value.to_dict(render_unsets\u003drender_unsets)"},{"line_number":83,"context_line":"            elif isinstance(value, list):"},{"line_number":84,"context_line":"                value \u003d [val.to_dict(render_unsets\u003drender_unsets)"},{"line_number":85,"context_line":"                         if isinstance(val, BaseType) else val"},{"line_number":86,"context_line":"                         for val in value]"},{"line_number":87,"context_line":"            elif isinstance(value, wtypes.UnsetType):"},{"line_number":88,"context_line":"                if render_unsets:"},{"line_number":89,"context_line":"                    value \u003d None"},{"line_number":90,"context_line":"                else:"},{"line_number":91,"context_line":"                    continue"},{"line_number":92,"context_line":"            ret_dict[attr] \u003d value"},{"line_number":93,"context_line":"        return ret_dict"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_e7972e8e","line":91,"range":{"start_line":79,"start_character":11,"end_line":91,"end_character":28},"in_reply_to":"dada55a8_78ebb1dc","updated":"2016-07-29 11:23:06.000000000","message":"Thanks for incorporating the change.","commit_id":"eed1799905dfb39dab6a6341069bd85ad08e0a01"},{"author":{"_account_id":19956,"name":"Yang Li","email":"yang.li@easystack.cn","username":"leonstack"},"change_message_id":"8e0ca08b4cfa5b0101521576724da7d76dfd8b90","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            value \u003d getattr(self, attr, None)"},{"line_number":79,"context_line":"            if callable(value):"},{"line_number":80,"context_line":"                continue"},{"line_number":81,"context_line":"            elif isinstance(value, BaseType):"},{"line_number":82,"context_line":"                value \u003d value.to_dict(render_unsets\u003drender_unsets)"},{"line_number":83,"context_line":"            elif isinstance(value, list):"},{"line_number":84,"context_line":"                value \u003d [val.to_dict(render_unsets\u003drender_unsets)"},{"line_number":85,"context_line":"                         if isinstance(val, BaseType) else val"},{"line_number":86,"context_line":"                         for val in value]"},{"line_number":87,"context_line":"            elif isinstance(value, wtypes.UnsetType):"},{"line_number":88,"context_line":"                if render_unsets:"},{"line_number":89,"context_line":"                    value \u003d None"},{"line_number":90,"context_line":"                else:"},{"line_number":91,"context_line":"                    continue"},{"line_number":92,"context_line":"            ret_dict[attr] \u003d value"},{"line_number":93,"context_line":"        return ret_dict"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_78ebb1dc","line":91,"range":{"start_line":79,"start_character":11,"end_line":91,"end_character":28},"in_reply_to":"dada55a8_d3cbbc51","updated":"2016-07-26 14:10:49.000000000","message":"you are right! thanks for your help.","commit_id":"eed1799905dfb39dab6a6341069bd85ad08e0a01"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"094ccc33d5a80cd2f9106a0fdb33c229beda0bda","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            value \u003d getattr(self, attr, None)"},{"line_number":79,"context_line":"            if value is not None:"},{"line_number":80,"context_line":"                if callable(value):"},{"line_number":81,"context_line":"                    continue"},{"line_number":82,"context_line":"                elif isinstance(value, BaseType):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_d54fad68","line":79,"updated":"2016-08-02 09:36:57.000000000","message":"Given the way callable() and isinstance() work, I think having this \"if value is not None\" check is completely irrelevant. See comment below.","commit_id":"8b67ffa274947f43bc46cc0c72835a3edd43db39"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1013c04ecfc7907751ca148f78f8c0873f2fcc50","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            value \u003d getattr(self, attr, None)"},{"line_number":79,"context_line":"            if value is not None:"},{"line_number":80,"context_line":"                if callable(value):"},{"line_number":81,"context_line":"                    continue"},{"line_number":82,"context_line":"                elif isinstance(value, BaseType):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_7cbe4f00","line":79,"in_reply_to":"bacf61ea_331c3677","updated":"2016-08-03 18:30:39.000000000","message":"Ah, yeah. Got deep into the boolean-ness and forgot the point of this patch.\nIn that case, I wonder if (as Trevor pointed out below), the UnsetType check should be outside this value test, to avoid possibly changing functionality (though I am more a fan of changing functionality by explicitly ALLOWING None to enter that code block)...","commit_id":"8b67ffa274947f43bc46cc0c72835a3edd43db39"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"1cc8591fdc06d44325f5eb90c7c234d12baad4c0","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            value \u003d getattr(self, attr, None)"},{"line_number":79,"context_line":"            if value is not None:"},{"line_number":80,"context_line":"                if callable(value):"},{"line_number":81,"context_line":"                    continue"},{"line_number":82,"context_line":"                elif isinstance(value, BaseType):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_dece3782","line":79,"in_reply_to":"bacf61ea_331c3677","updated":"2016-08-04 07:40:10.000000000","message":"Also, you are correct, the existing \"if value\" would behave very differently than an \"if value is not None\", because of things like empty strings/lists, etc.","commit_id":"8b67ffa274947f43bc46cc0c72835a3edd43db39"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"4cfcdbc0c06efa8df64f347ab28664e8815f39bc","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            value \u003d getattr(self, attr, None)"},{"line_number":79,"context_line":"            if value is not None:"},{"line_number":80,"context_line":"                if callable(value):"},{"line_number":81,"context_line":"                    continue"},{"line_number":82,"context_line":"                elif isinstance(value, BaseType):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_f1ae6f7f","line":79,"in_reply_to":"bacf61ea_57d2fa00","updated":"2016-08-05 18:00:22.000000000","message":"I\u0027ll take a look at the tests if I have time today and see if I can understand why...","commit_id":"8b67ffa274947f43bc46cc0c72835a3edd43db39"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"778b0c2140da5b757a3a584627efcafec6a3e351","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            value \u003d getattr(self, attr, None)"},{"line_number":79,"context_line":"            if value is not None:"},{"line_number":80,"context_line":"                if callable(value):"},{"line_number":81,"context_line":"                    continue"},{"line_number":82,"context_line":"                elif isinstance(value, BaseType):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_331c3677","line":79,"in_reply_to":"bacf61ea_d54fad68","updated":"2016-08-03 01:02:45.000000000","message":"The reason I support the outer if statement is:\n\nif the value is None, then all below statement need to run once. A outer statement can avoid that.\n\nBut looks like \"if value\" do not work the same as \"if value is not None\".","commit_id":"8b67ffa274947f43bc46cc0c72835a3edd43db39"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"971d51f911fb7ee5e6b50365be2b76c4a57c34a4","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if attr.startswith(\u0027_\u0027):"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            value \u003d getattr(self, attr, None)"},{"line_number":79,"context_line":"            if value is not None:"},{"line_number":80,"context_line":"                if callable(value):"},{"line_number":81,"context_line":"                    continue"},{"line_number":82,"context_line":"                elif isinstance(value, BaseType):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_57d2fa00","line":79,"in_reply_to":"bacf61ea_dece3782","updated":"2016-08-05 01:38:00.000000000","message":"But I still can not get why patch set 3 cannot pass the Jenkins job... That one looks more consistent with the old code.","commit_id":"8b67ffa274947f43bc46cc0c72835a3edd43db39"},{"author":{"_account_id":10806,"name":"Trevor Vardeman","email":"tvardema@redhat.com","username":"tvardeman"},"change_message_id":"80ea4a1883eae08d2a876ae3e59b39fa6de486f4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                    value \u003d [val.to_dict(render_unsets\u003drender_unsets)"},{"line_number":86,"context_line":"                             if isinstance(val, BaseType) else val"},{"line_number":87,"context_line":"                             for val in value]"},{"line_number":88,"context_line":"                elif isinstance(value, wtypes.UnsetType):"},{"line_number":89,"context_line":"                    if render_unsets:"},{"line_number":90,"context_line":"                        value \u003d None"},{"line_number":91,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_a67af821","line":88,"updated":"2016-08-01 16:30:32.000000000","message":"Previously this if-block didn\u0027t include a \"value\" non-null check.  Does this remove functionality, or is this solving a bug we didn\u0027t notice previously?","commit_id":"8b67ffa274947f43bc46cc0c72835a3edd43db39"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"4cfcdbc0c06efa8df64f347ab28664e8815f39bc","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                    value \u003d [val.to_dict(render_unsets\u003drender_unsets)"},{"line_number":86,"context_line":"                             if isinstance(val, BaseType) else val"},{"line_number":87,"context_line":"                             for val in value]"},{"line_number":88,"context_line":"                elif isinstance(value, wtypes.UnsetType):"},{"line_number":89,"context_line":"                    if render_unsets:"},{"line_number":90,"context_line":"                        value \u003d None"},{"line_number":91,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_b1b877c9","line":88,"in_reply_to":"bacf61ea_577dda1a","updated":"2016-08-05 18:00:22.000000000","message":"I think so -- those would count as unset, right? Would love for someone else to chime in here too.","commit_id":"8b67ffa274947f43bc46cc0c72835a3edd43db39"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"094ccc33d5a80cd2f9106a0fdb33c229beda0bda","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                    value \u003d [val.to_dict(render_unsets\u003drender_unsets)"},{"line_number":86,"context_line":"                             if isinstance(val, BaseType) else val"},{"line_number":87,"context_line":"                             for val in value]"},{"line_number":88,"context_line":"                elif isinstance(value, wtypes.UnsetType):"},{"line_number":89,"context_line":"                    if render_unsets:"},{"line_number":90,"context_line":"                        value \u003d None"},{"line_number":91,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_e3331e12","line":88,"in_reply_to":"bacf61ea_a67af821","updated":"2016-08-02 09:36:57.000000000","message":"I think technically it doesn\u0027t matter if *any* of these have a \"not None\" check, since isinstance(None, SomeType) will run just fine, and return the result we\u0027d expect. In fact, I think it\u0027d actually be perfectly clean in this case to remove the \"if value is not None\" check completely.","commit_id":"8b67ffa274947f43bc46cc0c72835a3edd43db39"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"5d5f69ab9b7b6d7bb737c046e1ddbda85a143884","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                    value \u003d [val.to_dict(render_unsets\u003drender_unsets)"},{"line_number":86,"context_line":"                             if isinstance(val, BaseType) else val"},{"line_number":87,"context_line":"                             for val in value]"},{"line_number":88,"context_line":"                elif isinstance(value, wtypes.UnsetType):"},{"line_number":89,"context_line":"                    if render_unsets:"},{"line_number":90,"context_line":"                        value \u003d None"},{"line_number":91,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_f86e28fe","line":88,"in_reply_to":"bacf61ea_e3331e12","updated":"2016-08-02 10:09:52.000000000","message":"Interestingly, for this code AND the old code, if value was None, it would make it all the way to line 93 here and set the attr to None in the dict. I\u0027d expect we would want it to follow the same rules as \"render_unsets\", so we might actually explicitly WANT this path to execute on None?\nPossibly remove the none-check above completely, and change this to:\nelif isinstance(value, wtypes.UnsetType) or value is None:","commit_id":"8b67ffa274947f43bc46cc0c72835a3edd43db39"},{"author":{"_account_id":6116,"name":"li,chen","email":"shchenli@cn.ibm.com","username":"chen-li"},"change_message_id":"971d51f911fb7ee5e6b50365be2b76c4a57c34a4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                    value \u003d [val.to_dict(render_unsets\u003drender_unsets)"},{"line_number":86,"context_line":"                             if isinstance(val, BaseType) else val"},{"line_number":87,"context_line":"                             for val in value]"},{"line_number":88,"context_line":"                elif isinstance(value, wtypes.UnsetType):"},{"line_number":89,"context_line":"                    if render_unsets:"},{"line_number":90,"context_line":"                        value \u003d None"},{"line_number":91,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bacf61ea_577dda1a","line":88,"in_reply_to":"bacf61ea_f86e28fe","updated":"2016-08-05 01:38:00.000000000","message":"If the value is a empty string or a empty list, should we also follow the rules as \"render_unsets\" ?","commit_id":"8b67ffa274947f43bc46cc0c72835a3edd43db39"}]}
