)]}'
{"nova/objects/request_spec.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e7d7eb889da3b1745b24f0e377e8110cd0c4e882","unresolved":false,"context_lines":[{"line_number":1154,"context_line":"                \"Only (%(tvals)s) traits are supported. Received \u0027%(val)s\u0027.\","},{"line_number":1155,"context_line":"                {\"tvals\": \u0027, \u0027.join(trait_vals), \"val\": trait_type})"},{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"    def is_empty(self):"},{"line_number":1158,"context_line":"        return not any(("},{"line_number":1159,"context_line":"            self.resources,"},{"line_number":1160,"context_line":"            self.required_traits, self.forbidden_traits,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_83d4a3eb","line":1157,"updated":"2019-12-06 17:46:28.000000000","message":"docstring would be nice","commit_id":"683ffb097cf3f08cfc43712490e13bb00818fb30"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e7d7eb889da3b1745b24f0e377e8110cd0c4e882","unresolved":false,"context_lines":[{"line_number":1156,"context_line":""},{"line_number":1157,"context_line":"    def is_empty(self):"},{"line_number":1158,"context_line":"        return not any(("},{"line_number":1159,"context_line":"            self.resources,"},{"line_number":1160,"context_line":"            self.required_traits, self.forbidden_traits,"},{"line_number":1161,"context_line":"            self.aggregates, self.forbidden_aggregates))"},{"line_number":1162,"context_line":""},{"line_number":1163,"context_line":"    def strip_zeros(self):"},{"line_number":1164,"context_line":"        \"\"\"Remove any resources whose amount is zero.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_e3f47789","line":1161,"range":{"start_line":1159,"start_character":12,"end_line":1161,"end_character":54},"updated":"2019-12-06 17:46:28.000000000","message":"Ack that these all have defaults so we\u0027re OK to just hit them directly and not worry about lazy-load attribute errors.","commit_id":"683ffb097cf3f08cfc43712490e13bb00818fb30"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e7d7eb889da3b1745b24f0e377e8110cd0c4e882","unresolved":false,"context_lines":[{"line_number":1162,"context_line":""},{"line_number":1163,"context_line":"    def strip_zeros(self):"},{"line_number":1164,"context_line":"        \"\"\"Remove any resources whose amount is zero.\"\"\""},{"line_number":1165,"context_line":"        for rclass in list(self.resources):"},{"line_number":1166,"context_line":"            if self.resources[rclass] \u003d\u003d 0:"},{"line_number":1167,"context_line":"                self.resources.pop(rclass)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_e3cb1747","line":1165,"range":{"start_line":1165,"start_character":22,"end_line":1165,"end_character":26},"updated":"2019-12-06 17:46:28.000000000","message":"Did you need to make a copy? I guess so since you\u0027re modifying the dict while iterating over it.","commit_id":"683ffb097cf3f08cfc43712490e13bb00818fb30"}],"nova/scheduler/utils.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e152cefce5a6120d3717fd39e5bcbd80fc5de18e","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    def strip_zeros(self):"},{"line_number":360,"context_line":"        \"\"\"Remove any resources whose amounts are zero.\"\"\""},{"line_number":361,"context_line":"        for rg in self._rg_by_id.values():"},{"line_number":362,"context_line":"            for rclass in list(rg.resources):"},{"line_number":363,"context_line":"                if rg.resources[rclass] \u003d\u003d 0:"},{"line_number":364,"context_line":"                    rg.resources.pop(rclass)"},{"line_number":365,"context_line":"        # Get rid of any empty RequestGroup instances."},{"line_number":366,"context_line":"        for ident, rg in list(self._rg_by_id.items()):"},{"line_number":367,"context_line":"            if rg.is_empty():"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_ea3a4633","line":364,"range":{"start_line":361,"start_character":0,"end_line":364,"end_character":44},"updated":"2019-12-03 16:41:40.000000000","message":"This also feels like something that should be a member function of a RequestGroup.","commit_id":"93e8ae03bd0d00164c35d02a2cc81f4a083d2215"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"77e8b2cf778cd8effd2d490f08d95b3c702c2986","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    def strip_zeros(self):"},{"line_number":360,"context_line":"        \"\"\"Remove any resources whose amounts are zero.\"\"\""},{"line_number":361,"context_line":"        for rg in self._rg_by_id.values():"},{"line_number":362,"context_line":"            for rclass in list(rg.resources):"},{"line_number":363,"context_line":"                if rg.resources[rclass] \u003d\u003d 0:"},{"line_number":364,"context_line":"                    rg.resources.pop(rclass)"},{"line_number":365,"context_line":"        # Get rid of any empty RequestGroup instances."},{"line_number":366,"context_line":"        for ident, rg in list(self._rg_by_id.items()):"},{"line_number":367,"context_line":"            if rg.is_empty():"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_393437ac","line":364,"range":{"start_line":361,"start_character":0,"end_line":364,"end_character":44},"in_reply_to":"3fa7e38b_d64db0c5","updated":"2019-12-03 19:53:18.000000000","message":"Bah, never mind, squashed it in here since I was respinning the series anyway.","commit_id":"93e8ae03bd0d00164c35d02a2cc81f4a083d2215"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a48746f9c66f1d559d390657e2fd6dd96e3cfa0e","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    def strip_zeros(self):"},{"line_number":360,"context_line":"        \"\"\"Remove any resources whose amounts are zero.\"\"\""},{"line_number":361,"context_line":"        for rg in self._rg_by_id.values():"},{"line_number":362,"context_line":"            for rclass in list(rg.resources):"},{"line_number":363,"context_line":"                if rg.resources[rclass] \u003d\u003d 0:"},{"line_number":364,"context_line":"                    rg.resources.pop(rclass)"},{"line_number":365,"context_line":"        # Get rid of any empty RequestGroup instances."},{"line_number":366,"context_line":"        for ident, rg in list(self._rg_by_id.items()):"},{"line_number":367,"context_line":"            if rg.is_empty():"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_d64db0c5","line":364,"range":{"start_line":361,"start_character":0,"end_line":364,"end_character":44},"in_reply_to":"3fa7e38b_ea3a4633","updated":"2019-12-03 19:21:47.000000000","message":"I702cb76d3a8e21a6f4c21e874dee003252f7718d","commit_id":"93e8ae03bd0d00164c35d02a2cc81f4a083d2215"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e7d7eb889da3b1745b24f0e377e8110cd0c4e882","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        for rg in self._rg_by_id.values():"},{"line_number":362,"context_line":"            rg.strip_zeros()"},{"line_number":363,"context_line":"        # Get rid of any empty RequestGroup instances."},{"line_number":364,"context_line":"        for ident, rg in list(self._rg_by_id.items()):"},{"line_number":365,"context_line":"            if rg.is_empty():"},{"line_number":366,"context_line":"                self._rg_by_id.pop(ident)"},{"line_number":367,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_032f53f5","line":364,"range":{"start_line":364,"start_character":25,"end_line":364,"end_character":29},"updated":"2019-12-06 17:46:28.000000000","message":"same, we copy since we\u0027re modifying the thing we\u0027re iterating over","commit_id":"683ffb097cf3f08cfc43712490e13bb00818fb30"}]}
